From e97fcc71e2d22783d6740b3ea9078d4a859b23b5 Mon Sep 17 00:00:00 2001
From: bob <312777916@qq.com>
Date: Mon, 3 Mar 2025 20:52:33 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0readme?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 280 ++++++++++++++++--
.../nacos_config_export_20250303203503.zip | Bin 0 -> 2868 bytes
doc/image/img_1.png | Bin 0 -> 274781 bytes
doc/image/img_10.png | Bin 0 -> 148476 bytes
doc/image/img_11.png | Bin 0 -> 138552 bytes
doc/image/img_2.png | Bin 0 -> 106883 bytes
doc/image/img_3.png | Bin 0 -> 134802 bytes
doc/image/img_4.png | Bin 0 -> 153318 bytes
doc/image/img_5.png | Bin 0 -> 67753 bytes
doc/image/img_6.png | Bin 0 -> 57136 bytes
doc/image/img_7.png | Bin 0 -> 56823 bytes
doc/image/img_8.png | Bin 0 -> 45725 bytes
doc/image/img_9.png | Bin 0 -> 13309 bytes
doc/image/wx_code.jpg | Bin 0 -> 120923 bytes
doc/image/wx_group.png | Bin 0 -> 437727 bytes
doc/image/wx_sponsorship_code.jpg | Bin 0 -> 76084 bytes
doc/image/zfb_sponsorship_code.jpg | Bin 0 -> 330435 bytes
17 files changed, 261 insertions(+), 19 deletions(-)
create mode 100644 doc/config/nacos/nacos_config_export_20250303203503.zip
create mode 100644 doc/image/img_1.png
create mode 100644 doc/image/img_10.png
create mode 100644 doc/image/img_11.png
create mode 100644 doc/image/img_2.png
create mode 100644 doc/image/img_3.png
create mode 100644 doc/image/img_4.png
create mode 100644 doc/image/img_5.png
create mode 100644 doc/image/img_6.png
create mode 100644 doc/image/img_7.png
create mode 100644 doc/image/img_8.png
create mode 100644 doc/image/img_9.png
create mode 100644 doc/image/wx_code.jpg
create mode 100644 doc/image/wx_group.png
create mode 100644 doc/image/wx_sponsorship_code.jpg
create mode 100644 doc/image/zfb_sponsorship_code.jpg
diff --git a/README.md b/README.md
index 7e96159..c781d45 100644
--- a/README.md
+++ b/README.md
@@ -1,35 +1,277 @@
-# open-anylink-web
+# Open AnyLink
-This template should help get you started developing with Vue 3 in Vite.
+## 简介
-## Recommended IDE Setup
+Open AnyLink是一款面向企业的IM即时通讯解决方案,旨在帮助企业`低成本`、`高效率`地构建`私有`、`安全`、`分布式`、`可定制`的日常办公通讯工具。
-[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).
+## 项目演示地址
-## Customize configuration
+- https://open-anylink.com/login
-See [Vite Configuration Reference](https://vitejs.dev/config/).
+## 项目构成
-## Project Setup
+| 项目 | 项目名 | 地址 | 技术栈 |
+| ------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Web端 | open-anylink-web | [github](https://github.com/GatlinHa/open-anylink-web)
[gitee](https://gitee.com/lijingbo-2021/open-anylink-web) | 框架:`Vue3`
构建打包:`Vite`
UI组件:`Element-Plus` |
+| 服务端 | open-anylink | [github](https://github.com/GatlinHa/open-anylink)
[gitee](https://gitee.com/lijingbo-2021/open-anylink) | 框架:`spring Boot` `spring cloud`
长连接:`Netty`
私有协议:`protobuf`
配置中心:`Nacos Config`
注册中心:`Nacos Discovery`
关系型数据库:`MySQL` `MyBatis-Plus`(driver)
非关系型数据库:`MongoDB`
缓存:`Redis`
消息队列:`Kafka MQ`
对象存储:`Mino` `OSS` |
-```sh
+- 本项目是其中的`Web端`。
+
+## 更新记录
+
+- xx/xx/xx: V1.0.0发布,基本功能见`项目功能清单`
+
+## 项目功能清单(含规划及开发中)
+
+#### 聊天类型
+
+- [x] 单聊
+- [x] 群聊
+
+#### 通话功能
+
+- [ ] 语音通话
+- [ ] 视频通话
+
+#### 消息类型
+
+- [x] 文本
+- [x] 表情
+- [x] 图片
+- [ ] 音频
+- [ ] 视频
+- [ ] 文件
+
+#### 消息功能
+
+- [x] 在线消息
+- [x] 离线消息
+- [x] 消息漫游
+- [x] 多端在线
+- [x] 多端同步
+- [x] 已读未读
+- [ ] 历史消息
+- [ ] @消息
+- [ ] 消息撤回
+- [ ] 消息引用
+- [ ] 消息加入待办
+
+#### 群组功能
+
+- [x] 建群删群
+- [x] 群昵称
+- [x] 群备注
+- [x] 群头像
+- [x] 群公告
+- [x] 群系统消息
+- [x] 群转让
+- [ ] 万人大群
+- [ ] 团队组织群
+- [ ] 公开群
+
+#### 通讯录功能
+
+- [x] 联系人备注
+- [x] 联系人分组
+- [x] 群备注
+- [x] 群分组
+- [ ] 组织管理
+
+#### 会议功能
+
+- [ ] 语音会议
+- [ ] 视频会议
+- [ ] 桌面共享
+- [ ] 桌面远程操控
+- [ ] 会议录制
+- [ ] 会议预约
+
+#### AI接入
+
+- [ ] 个人知识库
+- [ ] 聊天机器人
+- [ ] AI Agent
+- [ ] 智慧培训
+
+#### 其他功能
+
+- [ ] 大文件传输
+- [ ] 待办事项
+
+## 项目预览
+
+
+
+
+
+
+
+
+
+
+
+
+
+## 项目本地安装及运行(Windows)
+
+### Web端
+
+```shell
+# 克隆项目: github
+git clone https://github.com/GatlinHa/open-anylink-web.git
+# 克隆项目: gitee
+git clone https://gitee.com/lijingbo-2021/open-anylink-web.git
+
+# 进入项目根目录,执行安装依赖
pnpm install
-```
-### Compile and Hot-Reload for Development
-
-```sh
+# 开发环境本地运行
pnpm dev
+
+# 编译生产环境版本
+pnpm build:prod
```
-### Compile and Minify for Production
+### 服务端
-```sh
-pnpm build
+#### 拷贝项目
+
+```shell
+# 克隆项目: github
+git clone https://github.com/GatlinHa/open-anylink.git
+# 克隆项目: gitee
+git clone https://gitee.com/lijingbo-2021/open-anylink.git
```
-### Lint with [ESLint](https://eslint.org/)
+#### 安装Minio
-```sh
-pnpm lint
-```
+- 安装过程详见官网指导:https://min.io/download?view=aistor
+- 启动Minio:在安装目录根目录下创建一个bat文件,然后执行启动
+ ```shell
+ set MINIO_ACCESS_KEY=admin # 用户名
+ set MINIO_SECRET_KEY=12345678 # 密码
+ .\exe\minio.exe server .\data --address ":9001" --console-address ":9002"
+ ```
+- 登录minio:http://127.0.0.1:9002/buckets , 账号:admin,密码:12345678
+- 创建一个bucket,Name填:anylink。如果起别的名字要修改nacos配置
+ 
+- 修改bucket的读取权限
+ 
+
+#### 安装MySQL
+
+- 安装MySQL Server社区版8.x: https://dev.mysql.com/downloads/, 详细安装过程请查看官方文档。
+- 注意:nacos的jdbc配置为:localhost:3306,用户名密码是:root/123456。如果安装不一致,请修改nacos配置。
+- 创建一个叫`anylink`的db
+ ```sql
+ CREATE DATABASE anylink
+ CHARACTER SET utf8mb4
+ COLLATE utf8mb4_0900_ai_ci;
+ ```
+- 创建表,分别执行sql文件中的建表语句:
+ - [anylink-groupmng/src/main/resources/db/mysql.sql](anylink-groupmng/src/main/resources/db/mysql.sql)
+ - [anylink-chat/src/main/resources/db/mysql.sql](anylink-chat/src/main/resources/db/mysql.sql)
+ - [anylink-mts/src/main/resources/db/mysql.sql](anylink-mts/src/main/resources/db/mysql.sql)
+ - [anylink-user/src/main/resources/db/mysql.sql](anylink-user/src/main/resources/db/mysql.sql)
+
+#### 安装Redis
+
+- 下载安装包:https://github.com/tporadowski/redis/releases, 安装过程详见官网文档。
+- 注意:请使用默认端口,无密码,如不一致,请同步修改nacos配置。
+
+#### 安装Kafka MQ
+
+- 下载安装包:https://kafka.apache.org/downloads, 安装过程详见官网文档。
+- 安装后进入到目录:`kafka\bin\windows` 下,先启动zookeeper服务,再启动kafka服务
+ ```shell
+ #要先启动zookeeper服务
+ ./zookeeper-server-start.bat ../../config/zookeeper.properties
+ # 再启动kafka服务
+ ./kafka-server-start.bat ../../config/server.properties
+ ```
+
+#### 安装MongoDB
+
+- 安装过程详见官方文档:https://www.mongodb.com/zh-cn/docs/manual/administration/install-community/
+- 注意:请使用默认端口,无密码。如不一致,请同步修改nacos配置。
+
+#### 安装Nacos
+
+- 安装过程详见官网指导:https://nacos.io/docs/next/quickstart/quick-start/
+- 本地以standalone单机模式启动
+ ```shell
+ startup.cmd -m standalone
+ ```
+- 创建命名空间
+ ```shell
+ curl -d 'namespaceId=dev20250303001' -d 'namespaceName=dev' -d 'namespaceDesc=Development Environment' -X POST 'http://127.0.0.1:8848/nacos/v2/console/namespace'
+ ```
+- 浏览器登录nacos: http://127.0.0.1:8848/nacos
+- 导入配置,配置文件在:[doc/config/nacos/nacos_config_export_20250303203503.zip](doc/config/nacos/nacos_config_export_20250303203503.zip)
+ 
+
+- 修改个别配置项:修改这三个配置文件中关于本地IP的配置,改成自己的192.168网段的本地IP,修改完后记得点击`发布`。
+ 
+ 
+
+#### 启动服务端项目
+
+- 编译打包
+ ```shell
+ mvn clean package
+ ```
+- 分别在单独命令窗口依次启动6个微服务
+ ```shell
+ java -jar ./anylink-agw/target/anylink-agw-0.2.0.jar --spring.profiles.active=dev --spring.cloud.nacos.config.namespace=dev20250303001 --spring.cloud.nacos.discovery.namespace=dev20250303001 --spring.cloud.nacos.config.server-addr=localhost:8848 --spring.cloud.nacos.discovery.server-addr=localhost:8848
+ ```
+ ```shell
+ java -jar ./anylink-chat/target/anylink-chat-0.2.0.jar --spring.profiles.active=dev --spring.cloud.nacos.config.namespace=dev20250303001 --spring.cloud.nacos.discovery.namespace=dev20250303001 --dubbo.registry.parameters.namespace=dev20250303001 --spring.cloud.nacos.config.server-addr=localhost:8848 --spring.cloud.nacos.discovery.server-addr=localhost:8848 --dubbo.registry.address=nacos://localhost:8848
+ ```
+ ```shell
+ java -jar ./anylink-groupmng/target/anylink-groupmng-0.2.0.jar --spring.profiles.active=dev --spring.cloud.nacos.config.namespace=dev20250303001 --spring.cloud.nacos.discovery.namespace=dev20250303001 --dubbo.registry.parameters.namespace=dev20250303001 --spring.cloud.nacos.config.server-addr=localhost:8848 --spring.cloud.nacos.discovery.server-addr=localhost:8848 --dubbo.registry.address=nacos://localhost:8848
+ ```
+ ```shell
+ java -jar ./anylink-mts/target/anylink-mts-0.2.0.jar --spring.profiles.active=dev --spring.cloud.nacos.config.namespace=dev20250303001 --spring.cloud.nacos.discovery.namespace=dev20250303001 --spring.cloud.nacos.config.server-addr=localhost:8848 --spring.cloud.nacos.discovery.server-addr=localhost:8848
+ ```
+ ```shell
+ java -jar ./anylink-netty/target/anylink-netty-0.2.0.jar --spring.profiles.active=dev --spring.cloud.nacos.config.namespace=dev20250303001 --spring.cloud.nacos.discovery.namespace=dev20250303001 --dubbo.registry.parameters.namespace=dev20250303001 --spring.cloud.nacos.config.server-addr=localhost:8848 --spring.cloud.nacos.discovery.server-addr=localhost:8848 --dubbo.registry.address=nacos://localhost:8848
+ ```
+ ```shell
+ java -jar ./anylink-user/target/anylink-user-0.2.0.jar --spring.profiles.active=dev --spring.cloud.nacos.config.namespace=dev20250303001 --spring.cloud.nacos.discovery.namespace=dev20250303001 --dubbo.registry.parameters.namespace=dev20250303001 --spring.cloud.nacos.config.server-addr=localhost:8848 --spring.cloud.nacos.discovery.server-addr=localhost:8848 --dubbo.registry.address=nacos://localhost:8848
+ ```
+
+## 开源项目免责声明
+
+1. **项目性质与保证范围**:本 开源项目由本作者开发并在 GitHub 上开源发布,旨在为用户提供面向企业的IM即时通讯解决方案。在法律允许的最大限度内,开发者不对软件的功能性、安全性、适用性作出任何形式的明示或暗示保证,包括但不限于软件无错误、能持续正常运行或完全适配用户特定环境等。
+2. **使用风险承担**:用户明确知悉并同意,使用本软件的全部风险由用户自行承担。软件以 “现状” 及 “现有” 基础提供,不存在任何开发者额外承诺的质量保障或性能优化。开发者不提供任何明示或暗示担保,诸如适销性、适合特定用途以及不侵权等方面的担保。
+3. **责任限制**:无论基于何种法律理论(包括但不限于合同、侵权、疏忽等),在任何情形下,开发者及其关联方、供应商均不对因使用本软件所引发的任何直接、间接、偶然、特殊、惩罚性或后果性损害负责,包括但不限于利润损失、业务中断、数据丢失、个人信息泄露或其他商业损害、损失。
+4. **二次开发与合规责任**:针对基于本项目进行二次开发的用户,需确保将本软件及衍生作品用于合法目的,并自行负责遵循当地法律法规。因二次开发或使用过程中违反法律规定而产生的一切责任、纠纷,均由二次开发者承担,与开发者无关。
+5. **项目变更权利**:开发者保留在任何时间对软件功能、特性进行修改的权利,同时有权修订本免责声明的任何部分。此类修改可能通过软件更新、项目文档更新等形式呈现。用户在软件更新或持续使用项目相关内容时,应及时查看并视作接受最新版本的免责声明及软件变更。
+6. 请用户仔细阅读并充分理解本免责声明。一旦使用本开源项目,即表明用户已接受本免责声明的全部条款。
+7. 该免责声明的最终解释权归开发者所有。
+
+## 交流社群
+
+
+
+## 如何联系我们
+
+- **QQ**:312777916
+- **邮箱**:312777916@qq.com
+- **微信**:wx_open_anylink_2025
+
+
+
+### 最后,如果您觉得还不错,请 `Star`, `Fork`一下本项目,或者“请”作者喝一杯coffee,您的一次小小鼓励将会使我们前进很远很远。
+
+
+
+nYW%U%@
zK&{#(T~VDUFN|>DJmg4Zq2jdEmCX#Zt22}zQbvMFq04t|Hhf&^8XNC%bs1@Cwz# obuH
zq{mT1qt}J~$9GX;1*!x2-a@bunmUUiYAPh+DUNFZRUC;M313?d6PG>_Wwzj;lQ2D`
zdL*_6=0y`Vem}4Ea6~X9On(i6`4s9uEOvQP%3o|oJS?OU3!RXmc{U3u+&s@`kqFZT
zPecMt={R1p#35wQ1WfN#GiN?w+_&-k@r8OF2J<6-zVT#r?}k8k;HNM4FHt=uG~HE5
zESa`&=%d}-woPt*ub%&)(Um|zSlYUMb{ T+B>`D
z_y3x9??8)Q2q=s?6AiBNAjeTx9r_lm<)GKa>kRZjkf&D%HYRBA(t#&rMYrq%`-8n8
zIh?hsNx=7Go?Yu?6zFjZXv_wX`)6t8gBZZ$$eC(|I1h?nC}IuT-tL$LUx{)(fKrwO
zIM!gk2*l!FrYcfeo9VmN42weYcTB*8Ca`h4G<9wne#WHQR{_>aam=T6({dFFF#Hce
zAR?T&hQ_rQ=-$B@H%3XxI#GDf6Y6Ro=_AcT{m4V{7%>--3Dy{1bv5be?#Q{D9%)++
zbIscn7{d5*u&>kfqPg6PH8X=KO(-7E*dfzVFeiXD9f;xO;z}5BLCnXk#s@Bsq`PO$
zDz<1T A$jWb<8WLticD!sJ&TjaX=GUu%AfsYwc#pDC}*9Bk7op43`O
z{mopG&9}HL@o=xaC6+R$pdUc!ys1$bs$}D8Y|yx4CNdDaw$u4)@}o}m=<||M?=HUL
z4%u-o-v9N^8~cXyR~7Zz97fk}4)6jLOua0Yw>=b6#RgF$
z@QzN9AQ3GB)m-ujLgi+oew@IxC3mGrF-JKjjx=$;dDpCCOY&{E(B)VrxUhpVpCCF&
zM}1TxY80VfudVPxvr_drm0b2tiaeNs{1!yNKU5&uP_o6gjtR9na|w_m45^j@NlfvZ
zs}%_t-stU&Uln7yU1vNQVotOMa8jQA%lhPqfF<@cZ%0I1ccTlnITl8>SVO01+)z!M
zhIY|TNr#V7C33^nZJ2q*{ZPp>d0mBQ7~;I0NC>6`2^(Z>q&b0slIPmr0)}g}CE#3h
z>J70GTQ}PJ5LU#)184MN+fR5a=B76zQs>$id}#F+}N{>ZMx@ucg1Xi4}r*Vudc`
zqBX&I{8vDq5ACV$67z!-yNr}6@#Dzl0uVcvh^#K`Lf6JR(-e&0?xrXsmCs5fk%0UQ
zA$DL+-f;K)Yfi#v7QR~X6Db2FZ|v(xTdFck*5gzQ7#S!@t33ZXi<|CKmRT!Z(1>oa
z$itYmp|1t0br^6~RJhSf{?8Ibd&L
zG7MyoWxRqopZ*3w%`Ct}@8kRe*#9a$SO9~5meEha*qYDbWyd~I!&`2&kEgvC%!o$o
zPaZ74S0ws+^KO-Q{6GDpeyMXok389>6~w4Nit5OM7{nDtI}^cMgAo7Ic-$aZa38sB
zsL#An53{fi4RjFh$(9*6*xwuT)4Eo#eTR1g_YRj`Pv3OtQ=41!t5*i+(9X!-%Nj+J
z`PD#IOF*CwAwQ+-QtChEu1#TlW
zhzlVy2TQ>Y_TDB;{_X}n5%|pi(goPzboAiZlUeEXc^gyZS{oI5ABwq**6`z>S5`cZ
zTs^bzjPJ~M!Kc`|2k+Y_-41=nQ-#4(RM-N3JH8m~owYaR_B086cE?vZ^Y0ftI&NY8
zqq=2m_LtPe6F$&_-}#fj4#iC!aGP*CR)hZ&{OC$(=
4Dl(!*93uLT)#{ChcjTs^7LU<@d9{{LykY>4^te_*uLF>+eKX5}M0
zcF^KV1aQD!J^dWu1f^vuJU-S8uutMq&EFvf|3@pn_7d1dQltOR#{U298tb~@_@Xmc
zWZbV(;}HP|81orMV22TVQt$mUCsx?iTJGD<*9zuXt(@}-4SeZpO0iCtulmJ+JXa=m
zOBHR
;vf(@0%uYHf_AzhE<#0Ho;6Ex@dE5f>3Q-rS
z5vwAZf?dE@>7iTCFypW2paPCClbBO;xc`pt%w!Ck2c)FzxToD9iv(UX?WIPIqdu`a
z0YP}bS2Xvby8CA13^4TmjPk*;uBBy}FX)UzxG>M~5GN{Z0#K#VP@r>pC;fkAXe;1f
zaGjd98%Kd%l4s)#DJk5#l4Q!*Aiq@6hJfp_6gEBp{9ty{3