# mg-im **Repository Path**: dsfsad/mg-im ## Basic Information - **Project Name**: mg-im - **Description**: 企业内网私有化即时通讯系统。包含自研 Spring Boot 后端(单聊/群聊、WebSocket、MinIO 文件)、Vue 3 Web 客户端、Electron 桌面端(Windows/Linux)。支持未读角标、新消息提醒、自动更新、通讯录与群组管理。技术栈:Java 17、MySQL/达梦、Redis、Vue 3、TypeScript、Electron。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-09 - **Last Updated**: 2026-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IM 即时通讯 企业内网私有化即时通讯系统,包含 **Java 后端**、**Vue 3 Web 客户端**、**Electron 桌面端**(Windows / Linux x64 / ARM64)。 > 说明:**当前仓库实现为自研 Spring Boot IM 后端**。Web / 桌面端为 Vue 3 自研 UI,通过 REST + WebSocket 对接后端。 --- ## 功能特性 ### 已实现 | 模块 | 能力 | |------|------| | **认证** | 登录 / 登出、JWT、记住密码 | | **单聊 / 群聊** | 文本、图片、视频、文件;引用回复;逐条 / 合并转发;撤回 | | **会话** | 列表筛选(单聊 / 群聊)、未读角标、置顶排序、清空当前聊天、历史记录 | | **通讯录** | 组织树、用户搜索、在线状态 | | **群组** | 创建群聊、成员列表 | | **实时** | WebSocket 推送、多端 Inbox 同步、空闲踢线、已读回执 | | **文件** | MinIO 上传下载 | | **桌面端** | Windows / Linux 安装包、托盘、新消息闪烁、自动检查更新 | | **Web 提醒** | 标题 / Favicon 闪烁、浏览器通知 | ### 规划中 / 仅 UI 演示 - 待办、日历(当前为前端本地 Mock) - 语音 / 视频通话(UI 模拟,无真实 RTC) - Android 客户端、管理后台、消息审计、敏感词等 --- ## 技术栈 | 层级 | 技术 | |------|------| | 后端 | Java 17、Spring Boot 3.3、MyBatis Plus、Spring Security + JWT | | 数据 | MySQL 8 / 达梦 DM8、Redis、MinIO | | 实时 | WebSocket(`/ws/im`)、Redis Pub/Sub 跨节点推送 | | Web | Vue 3、TypeScript、Vite 5、Pinia、Vue Router | | 桌面 | Electron 33、electron-builder、electron-updater | --- ## 项目结构 ``` im/ ├── client/ │ ├── web/ # Vue 3 前端(Web + Electron 共用) │ └── desktop/ # Electron 壳、打包脚本 ├── server/ │ └── migo-im/ # Java 多模块后端 └── docs/ # 产品与开发计划 ``` --- ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.8+ - Node.js 18+ - MySQL 8(推荐独立部署)或 达梦 DM8(对接现有平台库) - Redis 6+ - MinIO(文件存储) ### 1. 启动后端 **方式 A:MySQL(推荐,适合开源体验)** ```bash # 初始化数据库 mysql -u root -p < server/migo-im/docs/sql/init.sql # 编译启动 cd server/migo-im mvn clean package -DskipTests java -jar migo-im-server/target/migo-im-1.0.0-SNAPSHOT.jar --spring.profiles.active=dev,mysql ``` **方式 B:达梦 DM8(对接企业平台 `base_user` / `base_organize`)** ```bash cd server/migo-im mvn clean package -DskipTests java -jar migo-im-server/target/migo-im-1.0.0-SNAPSHOT.jar # 默认 profile: dev,dm,需配置 application-dm.yml ``` 默认 HTTP 端口:**30008** ### 2. 配置中间件 通过环境变量覆盖默认值(生产环境务必修改): | 变量 | 说明 | 示例 | |------|------|------| | `REDIS_HOST` | Redis 地址 | `127.0.0.1` | | `REDIS_PASSWORD` | Redis 密码 | | | `MINIO_ENDPOINT` | MinIO 地址 | `http://127.0.0.1:9000` | | `MINIO_ACCESS_KEY` | MinIO AK | | | `MINIO_SECRET_KEY` | MinIO SK | | | `MINIO_BUCKET` | IM 文件桶 | `im-files` | | `SINO_JWT_SECRET` | JWT 密钥 | 随机长字符串 | ### 3. 启动 Web 前端 ```bash cd client/web npm install npm run dev ``` 访问 http://localhost:5173(Vite 已将 `/api`、`/ws` 代理到 `127.0.0.1:30008`)。 ### 4. 启动桌面端(开发) ```bash cd client/desktop npm install npm run dev ``` --- ## 打包发布 ### Windows ```bash cd client/desktop npm run build:win # 产物: release/IM-{version}-Setup-x64.exe ``` ### Linux ```bash # x86_64 npm run build:linux:x64 # ARM64(建议在 ARM 机器或 WSL/CI 上执行) npm run build:linux:arm64 # 产物: release/IM-{version}-x64.AppImage、IM-{version}-arm64.deb 等 ``` ### 自动更新 1. 打包后执行 `npm run publish:updates` 2. 将 `release/updates/` 下全部文件上传到 HTTP 静态目录(如 `https://your-server/updates/`) 3. 客户端 `config.json` 配置 `updateUrl` ```json { "apiBase": "http://127.0.0.1:30008", "updateUrl": "http://127.0.0.1:30008/updates" } ``` --- ## 桌面端配置 安装目录或用户目录下的 `config.json`(见 `client/desktop/config.example.json`): | 字段 | 说明 | |------|------| | `apiBase` | 后端 API 根地址 | | `updateUrl` | 自动更新清单地址(默认 `{apiBase}/updates`) | 优先级:安装目录 `config.json` > `%APPDATA%/IM Desktop/config.json`(Windows)/ `~/.config/IM Desktop/config.json`(Linux) --- ## API 概览 | 接口 | 说明 | |------|------| | `POST /api/auth/login` | 登录 | | `GET /api/user/me` | 当前用户 | | `GET /api/organize/tree` | 组织树 | | `GET /api/conversations` | 会话列表 | | `POST /api/conversations/{id}/messages` | 发送消息 | | `GET /api/inbox/sync` | Inbox 增量同步 | | `WS /ws/im?token=` | 实时消息推送 | 更多见 `server/migo-im/README.md`。 ## 路线图 近期方向: - Android 客户端 - 管理后台 - Docker Compose 一键部署 - 消息卡片 / 业务系统集成 - 语音视频(WebRTC) --- ## 参与贡献 1. Fork 本仓库 2. 创建特性分支:`git checkout -b feature/xxx` 3. 提交变更并发起 Pull Request 提交前请确保: - 后端:`mvn -q -DskipTests package` 通过 - 前端:`cd client/web && npm run build` 通过 --- ## 许可证 本项目计划以开源协议发布。**发布前请补充 `LICENSE` 文件**(推荐 MIT 或 Apache-2.0)。 若你尚未确定协议,可先保留 All Rights Reserved,完成脱敏与许可证选择后再公开仓库。 --- ## 致谢 - [Electron](https://www.electronjs.org/) - [Vue.js](https://vuejs.org/) - [Spring Boot](https://spring.io/projects/spring-boot)