# V-IM Server Pro 项目介绍
## 1. 项目概述
V-IM Server Pro 是一套面向企业内部通信场景的即时通讯后端服务,采用 Spring Boot 构建,结合 T-io WebSocket、Sa-Token 安全体系、Redis/MongoDB/MySQL 等组件,为上层客户端提供私聊、群聊、组织协作、富媒体存储及多种业务插件支持。项目同时
提供与若依 RuoYi-Vue-Plus 体系的桥接实现,便于快速继承既有用户与组织数据。
## 2. 模块划分
- v-im-server:核心服务模块,涵盖通信协议、消息持久化、好友与群组管理、用户配置、日志审计、文件上传等基础能力。
- v-im-server-plugin:插件扩展模块,提供云盘、文件库、视频通话配置、视频会议(LiveKit)、RocketMQ 集群调度、内部邮件、OAuth2 服务、接龙消息等可选能力。
- v-im-server-ry-plus:与 RuoYi-Vue-Plus 的集成实现,负责用户/部门数据同步、验证码登录、密码策略等桥接逻辑,默认使用主从数据源组合。
## 3. 核心功能
### 3.1 身份认证与组织对接
- 支持图形验证码、账号密码登录、注册、登出及登录态检测,所有接口基于 Sa-Token 权限体系。
- 通过 VimBridgeService 抽象与 VimBridgeServiceImpl 具体实现,复用 RuoYi 的 SysUser、SysDept、密码策略、头像设置与雪花 ID 发号,实现跨系统账户、部门同步。
- SysConfig 支持密码首次登录强制修改、有效期校验、正则限制、上传白名单等企业化配置。
### 3.2 实时通信与消息治理
- 使用 T-io 作为 WebSocket 通道层,TioWsMsgHandler、AckServiceImpl 负责消息投递、确认与未读重放,保障点对点消息可靠送达。
- VimMessageServiceImpl 将消息同时写入 Redis 有序集合与 MongoDB 动态集合;首次写入时自动创建索引,并借助 Caffeine 缓存避免重复建索。
- 提供消息撤回、已读回执、离线消息重放、免打扰(ImMessageImmunity)等扩展能力,确保多端同步的一致性体验。
- Chat 列表支持置顶、排序、批量更新与删除,满足复杂会话管理场景。
### 3.3 社交关系管理
- 好友模块覆盖申请、审核、删除、待处理列表、好友关系校验等流程,利用 VimFriendApiService 与 FriendController 实现完整 API。
- 群组模块支持建群、信息维护、快速建群、成员增删、退群、转让以及分批拉取成员,所有敏感操作均校验群主身份并记录操作日志。
- 收藏模块提供富媒体消息收藏、列表筛选、权限校验与删除;设置模块允许控制加好友、私聊、提醒、手机号/邮箱展示等能力。
### 3.4 文件与富媒体支持
- 上传流程包含预上传、HASH 秒传、上传完成通知与实际文件写入,支持大小与格式白名单校验,并预留多种存储实现工厂(如本地、对象存储)。
- 核心文件 ImFile 存入 MongoDB,配合插件 ImFileStore、ImFileDelete 构建个人文件库及回收策略。
- 日志与操作审计(LogAspect、OperLogEvent、LoginLogServiceImpl)统一写入 MongoDB,并通过 AOP 自动脱敏密码参数。
## 4. 插件与扩展能力
- 集群&消息总线:com.vim.plugin.cluster 依赖 RocketMQ,实现节点在线状态缓存、跨节点消息投递、已读回执广播,节点信息通过 vim.clusterMode 与 vim.allNodeId 配置。
- 云盘系统:CloudDiskController 支持个人/团队空间、目录树、排序搜索、秒传、覆盖上传、分享链接、空目录校验等,所有文件/目录元数据存储在 MongoDB。
- 聊天文件中心:ImFileController 提供与聊天消息关联的文档索引、分页检索、扩展名过滤及批量删除,便于用户在历史对话中定位文件。
- 视频通话与会议:VideoController 输出 WebRTC 所需 STUN/TURN/信令配置;MeetingController 提供会议创建、LiveKit Token 获取、参会人邀请、状态更新与待开会议查询。
- 内部邮件(VMail):基于 MongoDB 的收件箱、发件箱、草稿箱、附件、已读标记以及批量删除,兼顾即时消息与邮件通知的混合办公场景。
- OAuth2 服务:整合 Sa-OAuth2,提供授权码/简化模式、客户端注册、Scope 校验、用户信息查询、重定向地址获取,方便对接第三方系统。
- 接龙消息(Solitaire):面向群内“接龙”场景,提供快速记录与回显能力,支持多条内容同批写入。
- 插件配置集中在 src/main/resources/plugins,可按需启用/关闭,方便二次开发或裁剪。
## 5. 技术亮点
- 高性能通信内核:T-io WebSocket + Redis ZSet 实现实时推送与离线堆积,辅以 Ack 重传提升可靠性。
- 冷热混合存储:Redis 缓存 + MongoDB 分表(按会话动态建集合)+ MySQL 结构化数据,实现低延迟读取与长期留档的平衡。
- 插件化架构:业务能力拆分成可热插拔模块,通过 ConditionalOnProperty、配置化开关与统一命名空间快速扩展。
- 灵活桥接:VimBridgeService 使得用户、部门、鉴权、通知等可对接不同主系统;默认实现包含动态多数据源与头像策略。
- 安全与审计:基于 Sa-Token 的登录、权限、踢人能力;操作日志、登录日志统一审计,支持 MongoDB 持久化与异步事件。
- 配置驱动:SysConfig、VimConfig 等配置类涵盖显示开关、上传限制、WebRTC/LiveKit 参数、节点 ID 等,提升运维可配置性。
## 6. 部署与运行要点
- 运行环境建议:JDK 21、Maven 3.9+、MySQL(业务数据)、MongoDB(消息/文件/日志)、Redis(缓存、会话)、RocketMQ(启用集群模式时),视频相关需配置 STUN/TURN/LiveKit。
- 提供 docker-single、docker-master 示例,便于单节点或多节点快速启动;应用打包通过 mvn -pl v-im-server-ry-plus -am clean package。
- WebSocket 端口、节点 ID、插件开关等均可在 application 与插件配置文件中调整,支持单机到集群的平滑扩展。
## 7. 典型应用场景
- 企业内部 IM 与协作平台:覆盖好友、群组、收藏、聊天文件、内部邮件等全流程沟通协作需求。
- 多系统一体化门户:通过 OAuth2、桥接接口与 RuoYi 生态集成,实现统一账户体系与 SSO。
- 扩展型业务平台:利用插件化机制拓展云盘、视频会议、工作流等定制模块,实现按需裁剪与快速迭代。