diff --git a/docs-site/docs/.vitepress/config.ts b/docs-site/docs/.vitepress/config.ts index 31652d5..bf15f7f 100644 --- a/docs-site/docs/.vitepress/config.ts +++ b/docs-site/docs/.vitepress/config.ts @@ -13,7 +13,6 @@ export default defineConfig({ nav: [ { text: '快速开始', link: '/guide/quickstart' }, - { text: '演示项目', link: '/demo/' }, { text: 'SDK', items: [ @@ -37,9 +36,6 @@ export default defineConfig({ { text: '平台概念', link: '/guide/concepts' }, { text: '接入流程', link: '/guide/flow' }, ], - '/demo/': [ - { text: '演示项目', link: '/demo/' }, - ], '/android/': [ { text: '概览', link: '/android/' }, { text: '安装配置', link: '/android/setup' }, diff --git a/docs-site/docs/demo/index.md b/docs-site/docs/demo/index.md deleted file mode 100644 index 08930bf..0000000 --- a/docs-site/docs/demo/index.md +++ /dev/null @@ -1,125 +0,0 @@ -# 演示项目 - -下面这些入口对应当前仓库里的可用演示物料。 - -## 移动端 - -
-
-

Android SDK Sample App

-

适合验证 Android SDK 的 IM、推送和更新能力。

- Android SDK Sample App 下载二维码 -

下载 APK

-
- -
-

RN Chat Demo

-

适合验证 React Native 演示项目和服务端 demo 数据。

- RN Chat Demo 下载二维码 -

下载 APK

-
- -
-

Flutter Chat Demo

-

Flutter 端 IM + 推送演示,支持 Android / iOS 双端。

- Flutter Chat Demo 下载二维码 -

下载 APK(Android)

-
-
- -## Web - -
-
-

租户控制台

-

登录后可直接进入应用管理、IM、推送管理、版本管理等页面。

-

- 打开控制台 -

-
- -
-

IM 演示页

-

基于 Vue3 SDK 的在线 IM 聊天演示,可直接体验消息收发。

-

- 打开 IM 演示页 -

-
- -
-

H5 SDK 在线演示

-

纯 JS 环境下的 IM 接入示例,框架无关,可查看源码参考。

-

- H5 SDK 文档 - · - API 速查 -

-
-
- -## 服务端示例 - -
-
-

Go 服务端示例

-

使用 Go Server SDK 发送 IM 消息和 Push 推送的完整示例。

-

- Go SDK 文档 -

-
- -
-

Java 服务端示例

-

使用 Java Server SDK 集成 IM 和 Push 的 Spring Boot 示例。

-

- Java SDK 文档 -

-
- -
-

Python 服务端示例

-

使用 Python Server SDK 发送消息和推送的示例脚本。

-

- Python SDK 文档 -

-
-
- - diff --git a/docs-site/docs/guide/flow.md b/docs-site/docs/guide/flow.md index 0cb4aa2..9ef0dab 100644 --- a/docs-site/docs/guide/flow.md +++ b/docs-site/docs/guide/flow.md @@ -1,131 +1,55 @@ # 接入流程 -完整的 XuqmGroup SDK 接入流程,从注册账号到客户端收发消息。 +本文说明公有化和私有化两种接入流程。 ---- +## 公有化流程 -## 1. 注册开发者账号 +1. 访问 。 +2. 注册开发者账号。 +3. 创建应用并获取 `appKey`。 +4. 业务服务端保存 `appSecret`。 +5. 客户端使用公有化 SDK 初始化。 +6. 业务服务端签发 `UserSig`。 +7. 客户端登录 SDK 并开始收发消息。 -1. 访问 [XuqmGroup 控制台](https://dev.xuqinmin.com) -2. 点击注册,填写企业/个人信息 -3. 完成邮箱/手机验证 +## 私有化流程 ---- +1. 运维在私有化部署仓库执行一键部署。 +2. 部署脚本使用用户提供的 MySQL、Redis、域名、证书、SMTP 和厂商凭证完成配置。 +3. 系统初始化内置主租户、运营管理员和默认应用。 +4. 文档站生成私有化 SDK 接入示例。 +5. 客户端集成私有化 SDK。 +6. 客户端使用 `xuqm-private-sdk.json` 初始化。 +7. 业务服务端签发 `UserSig`。 +8. 客户端登录 SDK 并使用 IM、Push、Update、File、License 能力。 -## 2. 创建应用 +## 服务端签发 UserSig -1. 登录控制台 → 应用管理 → 创建应用 -2. 填写应用名称、平台类型(Android / iOS / Web / RN / 小程序 / HarmonyOS) -3. 创建成功后获得: - - `appKey`(客户端使用) +服务端可以通过服务端 SDK 本地生成 `UserSig`,也可以调用平台接口生成。`appSecret` 必须只保存在服务端。 ---- - -## 3. 获取 AppKey - -在应用详情页复制 `appKey`,用于客户端 SDK 初始化: - -```kotlin -// Android -XuqmSDK.initialize(context, appKey = "your_app_key") +```text +业务服务端 + -> 持有 appKey / appSecret + -> 根据业务用户 ID 签发 UserSig + -> 返回给客户端 ``` -```swift -// iOS -XuqmSDK.shared.initialize(config: config) -``` +## 客户端登录 -```ts -// Vue3 / Web -``` - ---- - -## 4. 服务端签发 UserSig - -服务端可以通过 SDK 本地生成 `UserSig`,也可以通过 IM 管理页生成并校验。 -如果账号需要用于服务端 SDK / 管理端 REST API,请把该注册用户标记为管理员。 - -### 签发逻辑(示例) - -```ts -// Node.js -import jwt from 'jsonwebtoken' - - return jwt.sign( - { userId, appKey, iat: Math.floor(Date.now() / 1000) }, - appSecret, - { algorithm: 'HS256', expiresIn: '180d' } - ) -} -``` - -```python -# Python -import jwt -import time - -def generate_user_sig(user_id: str, app_key: str, app_secret: str) -> str: - return jwt.encode( - {"userId": user_id, "appKey": app_key, "iat": int(time.time())}, - app_secret, - algorithm="HS256" - ) -``` - -```go -// Go -import "github.com/golang-jwt/jwt/v5" -import "time" - - token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ - "userId": userID, - "appKey": appKey, - "iat": time.Now().Unix(), - }) -} -``` - -### 接口设计建议 - -``` -POST /api/auth/xuqm-login -Headers: Authorization: Bearer {your-app-auth-token} -Body: { "userId": "user_001" } -Response: { "userSig": "jwt_token_string" } -``` - ---- - -## 5. 客户端接入 SDK - -### 登录流程 - -``` +```text 客户端 - → 业务登录(用户名/密码) - → 业务服务端验证成功 - → 返回 userSig 给客户端 - → 客户端调用 XuqmSDK.login(userId, userSig) - → 开始收发消息 + -> 业务登录成功 + -> 获取 userSig + -> XuqmSDK.login(userId, userSig) + -> IM WebSocket 连接 + -> Push / Update / License 模块按需工作 ``` -### 各平台接入 +## 私有化注意事项 -| 平台 | 文档 | -|------|------| -| Android | [Android SDK →](/android/) | -| iOS | [iOS SDK →](/ios/) | -| React Native | [RN SDK →](/rn/) | -| Vue3 / Web | [Vue3 SDK →](/vue3/) | -| HarmonyOS | [HarmonyOS SDK →](/harmony/) | -| 微信小程序 | [小程序 SDK →](/miniprogram/) | +1. 私有化环境不开放主租户注册。 +2. 私有化 SDK 不使用 `dev.xuqinmin.com` 作为默认地址。 +3. 厂商推送和应用市场自动发布需要客户网络放通厂商公网 API。 +4. MySQL、Redis 由客户提供,部署脚本只做连接校验。 ---- - -## 安全提示 - -- 所有 API 通信使用 HTTPS -- UserSig 当前版本不过期,业务方可自行控制签发逻辑 - -[→ 快速开始 →](./quickstart) +[快速开始](./quickstart) diff --git a/docs-site/docs/guide/quickstart.md b/docs-site/docs/guide/quickstart.md index 0e28ce9..7154cc7 100644 --- a/docs-site/docs/guide/quickstart.md +++ b/docs-site/docs/guide/quickstart.md @@ -2,117 +2,100 @@ 5 分钟接入 XuqmGroup IM,实现消息收发。 -## 1. 注册账号与创建应用 +## 1. 选择部署形态 -1. 访问 [XuqmGroup 控制台](https://dev.xuqinmin.com) -2. 注册开发者账号,创建应用 -3. 记录 `appKey` +| 形态 | 适用场景 | SDK | +|------|----------|-----| +| 公有化 | 使用 XuqmGroup 公有云控制台 | 当前公有化 SDK | +| 私有化 | 使用客户独立部署环境 | 独立私有化 SDK | -## 2. 选择你的平台 +公有化控制台地址: + +私有化环境由部署仓库生成控制台地址、文档站地址和 `xuqm-private-sdk.json`,接入时以客户环境输出为准。 + +## 2. 创建或获取应用 + +公有化: + +1. 登录公有化控制台。 +2. 注册开发者账号。 +3. 创建应用并记录 `appKey`。 + +私有化: + +1. 使用部署时内置的主租户登录客户控制台。 +2. 使用初始化默认应用,或在控制台创建新应用。 +3. 下载或读取 `xuqm-private-sdk.json`。 + +## 3. 选择平台 ### 客户端 SDK -| 平台 | 推荐接入方式 | -|------|------------| -| Android | [Android SDK →](/android/) | -| iOS | [iOS SDK →](/ios/) | -| React Native | [RN SDK →](/rn/) | -| Vue3 / Web | [Vue3 SDK →](/vue3/) | -| HarmonyOS | [HarmonyOS SDK →](/harmony/) | -| Flutter | [Flutter SDK →](/flutter/) | -| 微信小程序 | [小程序 SDK →](/miniprogram/) | -| H5 / 纯 JS | [H5 SDK →](/h5/) | +| 平台 | 接入文档 | +|------|----------| +| Android | [Android SDK](/android/) | +| iOS | [iOS SDK](/ios/) | +| React Native | [RN SDK](/rn/) | +| Vue3 / Web | [Vue3 SDK](/vue3/) | +| HarmonyOS | [HarmonyOS SDK](/harmony/) | +| Flutter | [Flutter SDK](/flutter/) | +| 微信小程序 | [小程序 SDK](/miniprogram/) | +| H5 / 纯 JS | [H5 SDK](/h5/) | ### 服务端 SDK -| 语言 | 接入方式 | -|------|---------| -| Go | [Go Server SDK →](/server/go-sdk) | -| Java | [Java Server SDK →](/server/java-sdk) | -| Python | [Python Server SDK →](/server/python-sdk) | +| 语言 | 接入文档 | +|------|----------| +| Go | [Go Server SDK](/server/go-sdk) | +| Java | [Java Server SDK](/server/java-sdk) | +| Python | [Python Server SDK](/server/python-sdk) | -## 3. 接入流程 +## 4. 公有化初始化 -``` -你的业务服务端 - → 持有 appSecret - → 调用 IM 登录接口换取 IM Token(或签发 UserSig JWT) - → 平台内部协议字段由 SDK 和后端自动处理,业务方无需感知 - → 返回 Token / UserSig 给客户端 - -客户端 SDK - → 使用 appKey 初始化 - → 使用 Token / UserSig 登录 IM - → 开始收发消息 +```kotlin +XuqmSDK.initialize( + context = this, + appKey = "ak_your_app_key" +) ``` -> **安全提示**:appSecret 应仅在你的服务端持有,不应下发给客户端。 +## 5. 私有化初始化 ---- +私有化 SDK 使用部署仓库生成的本地 JSON 初始化: -## 4. Android Demo 运行说明 - -### 环境要求 - -- Android Studio Ladybug(2024.2.1)或更高版本 -- JDK 21 -- Android 模拟器或真机(API 24+) - -### 运行步骤 - -1. 打开 `XuqmGroup-AndroidSDK` 目录为 Android Studio 项目 -2. 等待 Gradle Sync 完成(首次可能需要下载依赖) -3. 在 `sample-app/src/main/java/.../MainActivity.kt` 或对应配置中修改服务器地址(如需连接本地环境) -4. 选择模拟器或真机,点击 **Run 'sample-app'** - -### 关键路径 - -``` -APK 输出:XuqmGroup-AndroidSDK/sample-app/build/outputs/apk/debug/sample-app-debug.apk -主 Activity:com.xuqm.sdk.sample.MainActivity -包名:com.xuqm.demo +```kotlin +XuqmPrivateSDK.initialize( + context = this, + configAsset = "xuqm-private-sdk.json" +) ``` -### 常用命令 +JSON 内容由私有化部署仓库生成,示例: -```bash -# 构建全量 SDK + App -cd XuqmGroup-AndroidSDK && ./gradlew clean build - -# 安装到指定设备 -adb -s emulator-5556 install -r sample-app/build/outputs/apk/debug/sample-app-debug.apk - -# 查看 IM 日志 -adb -s emulator-5556 logcat -d "*:S" XuqmImSDK:D XuqmImClient:D 2>/dev/null | tail -30 +```json +{ + "schemaVersion": 1, + "deployment": "PRIVATE", + "appKey": "ak_private_default", + "controlBaseUrl": "https://tenant.customer.com", + "imApiBaseUrl": "https://im.customer.com", + "imWsUrl": "wss://im.customer.com/ws/im", + "pushBaseUrl": "https://push.customer.com", + "updateBaseUrl": "https://update.customer.com", + "fileBaseUrl": "https://file.customer.com", + "licenseBaseUrl": "https://license.customer.com" +} ``` ---- +## 6. 登录与收发消息 -## 5. iOS Demo 运行说明 - -### 环境要求 - -- Xcode 16.0 或更高版本 -- iOS 18 模拟器或真机(最低支持 iOS 14) -- Swift 5.9+ - -### 运行步骤 - -1. 打开 `XuqmGroup-iOSSDK/XuqmDemo/XuqmDemo.xcodeproj`(或 `.xcworkspace`) -2. 等待 Swift Package Manager 依赖解析完成 -3. 在 Xcode 顶部选择目标模拟器(如 iPhone 16 Pro)或连接的真机 -4. 点击 **Run**(⌘+R) - -### 关键路径 - -``` -Demo 工程:XuqmGroup-iOSSDK/XuqmDemo/XuqmDemo.xcodeproj -SDK 源码:XuqmGroup-iOSSDK/Sources/XuqmSDK/ -单元测试:XuqmGroup-iOSSDK/Tests/ +```text +业务客户端 + -> 调用业务登录 + -> 业务服务端签发 UserSig + -> 客户端调用 SDK login + -> IM 连接建立 + -> 收发消息、推送、更新、License 能力按模块启用 ``` -### 常见问题 - -- **SPM 依赖下载慢**:检查网络或更换 Xcode → Preferences → Accounts → Git 配置 -- **真机运行失败**:确保 Apple Developer Account 已配置 Signing & Capabilities -- **Push 测试**:模拟器不支持 APNs,Push 功能需在真机测试 +安全要求:`appSecret` 只能保存在业务服务端,不允许下发到客户端。 diff --git a/docs-site/docs/index.md b/docs-site/docs/index.md index 3f90ba5..fb93435 100644 --- a/docs-site/docs/index.md +++ b/docs-site/docs/index.md @@ -8,9 +8,6 @@ hero: - theme: brand text: 快速开始 link: /guide/quickstart - - theme: alt - text: 演示项目 - link: /demo/ - theme: alt text: 平台控制台 link: https://dev.xuqinmin.com @@ -52,8 +49,4 @@ features: title: 服务端 API details: 完整 REST API 速查,IM 实时连接协议说明 link: /server/api - - icon: 📱 - title: 演示项目 - details: 手机端扫码下载演示包,Web 端直接跳转到对应页面 - link: /demo/ --- diff --git a/docs-site/docs/public/demo/android-sdk-sample-app.apk b/docs-site/docs/public/demo/android-sdk-sample-app.apk deleted file mode 100644 index 319f55e..0000000 Binary files a/docs-site/docs/public/demo/android-sdk-sample-app.apk and /dev/null differ diff --git a/docs-site/docs/public/demo/rn-chat-demo.apk b/docs-site/docs/public/demo/rn-chat-demo.apk deleted file mode 100644 index d1b1df6..0000000 --- a/docs-site/docs/public/demo/rn-chat-demo.apk +++ /dev/null @@ -1 +0,0 @@ -This is a placeholder APK payload for demo update flow. diff --git a/docs/DEPLOY.md b/docs/DEPLOY.md deleted file mode 100644 index 245327e..0000000 --- a/docs/DEPLOY.md +++ /dev/null @@ -1,279 +0,0 @@ -# 部署文档 - -## 一、基础设施要求 - -| 组件 | 版本 | 说明 | -|------|------|------| -| JDK | 21 | GraalVM 或 Eclipse Temurin | -| MySQL | 8.0+ | 4 个独立数据库 | -| Redis | 7.x | 验证码、会话标记 | -| Nginx | 1.24+ | 前端静态 + API 反代 | -| Maven | 3.9+ | 后端构建 | -| Node.js | 22+ | 前端构建 | - ---- - -## 二、数据库初始化 - -服务启动时通过 `ddl-auto: update` 自动建表,只需提前创建数据库: - -```sql -CREATE DATABASE xuqm_tenant CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -CREATE DATABASE xuqm_im CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -CREATE DATABASE xuqm_push CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -CREATE DATABASE xuqm_update CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -``` - ---- - -## 三、后端构建与启动 - -### 构建 - -```bash -cd XuqmGroup-Server -mvn clean package -DskipTests -``` - -各模块 jar 生成于 `{module}/target/{module}-0.1.0-SNAPSHOT.jar`。 - -### 环境变量 - -**tenant-service**(:8081) -```bash -export SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/xuqm_tenant?... -export SPRING_DATASOURCE_USERNAME=xuqm -export SPRING_DATASOURCE_PASSWORD=your_db_password -export SPRING_DATA_REDIS_HOST=redis -export SPRING_MAIL_USERNAME=noreply@xuqm.com -export SPRING_MAIL_PASSWORD=your_smtp_password -export JWT_SECRET=your_256bit_secret -export OPS_ADMIN_USERNAME=admin -export OPS_ADMIN_PASSWORD=your_ops_password -``` - -**im-service**(:8082) -```bash -export SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/xuqm_im?... -export SPRING_DATASOURCE_USERNAME=xuqm -export SPRING_DATASOURCE_PASSWORD=your_db_password -export SPRING_DATA_REDIS_HOST=redis -export JWT_SECRET=your_256bit_secret_im -``` - -**push-service**(:8083) -```bash -export SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/xuqm_push?... -export SPRING_DATASOURCE_USERNAME=xuqm -export SPRING_DATASOURCE_PASSWORD=your_db_password -export JWT_SECRET=your_256bit_secret_push -# 华为推送 -export HUAWEI_APP_ID=your_huawei_app_id -export HUAWEI_APP_SECRET=your_huawei_secret -# 小米推送 -export XIAOMI_APP_SECRET=your_xiaomi_secret -# iOS APNs -export APNS_KEY_ID=your_key_id -export APNS_TEAM_ID=your_team_id -export APNS_KEY_PATH=/opt/xuqm/apns_key.p8 -export APNS_BUNDLE_ID=com.yourcompany.app -``` - -**update-service**(:8084) -```bash -export SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/xuqm_update?... -export SPRING_DATASOURCE_USERNAME=xuqm -export SPRING_DATASOURCE_PASSWORD=your_db_password -export JWT_SECRET=your_256bit_secret_update -export UPDATE_UPLOAD_DIR=/data/xuqm/update -export UPDATE_BASE_URL=https://update.xuqm.com -``` - -### 启动 - -```bash -java -jar tenant-service/target/tenant-service-*.jar & -java -jar im-service/target/im-service-*.jar & -java -jar push-service/target/push-service-*.jar & -java -jar update-service/target/update-service-*.jar & -``` - ---- - -## 四、前端构建与部署 - -```bash -cd XuqmGroup-Web -yarn install -yarn workspace tenant-platform build # dist/ → /var/www/tenant -yarn workspace ops-platform build # dist/ → /var/www/ops -``` - -### Nginx 配置 - -```nginx -# 租户开放平台 -server { - listen 80; - server_name tenant.xuqm.com; - root /var/www/tenant; - index index.html; - - location / { - try_files $uri $uri/ /index.html; - } - - location /api/ { - proxy_pass http://127.0.0.1:8081/api/; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - } -} - -# 运营管理平台 -server { - listen 80; - server_name ops.xuqm.com; - root /var/www/ops; - index index.html; - - location / { - try_files $uri $uri/ /index.html; - } - - location /api/ { - proxy_pass http://127.0.0.1:8081/api/; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - } -} - -# IM WebSocket 反代 -server { - listen 80; - server_name im.xuqm.com; - - location /ws/im { - proxy_pass http://127.0.0.1:8082; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_read_timeout 86400; - } - - location /api/im/ { - proxy_pass http://127.0.0.1:8082/api/im/; - } -} - -# 版本管理文件服务 -server { - listen 80; - server_name update.xuqm.com; - - location / { - proxy_pass http://127.0.0.1:8084/; - } -} -``` - ---- - -## 五、Docker Compose(可选) - -```yaml -version: '3.9' - -services: - mysql: - image: mysql:8.0 - environment: - MYSQL_ROOT_PASSWORD: root - MYSQL_USER: xuqm - MYSQL_PASSWORD: xuqm_password - volumes: - - mysql_data:/var/lib/mysql - ports: - - "3306:3306" - - redis: - image: redis:7-alpine - ports: - - "6379:6379" - - tenant-service: - image: eclipse-temurin:21-jre - volumes: - - ./XuqmGroup-Server/tenant-service/target:/app - command: java -jar /app/tenant-service-0.1.0-SNAPSHOT.jar - environment: - SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/xuqm_tenant?... - SPRING_DATA_REDIS_HOST: redis - ports: - - "8081:8081" - depends_on: [mysql, redis] - - im-service: - image: eclipse-temurin:21-jre - volumes: - - ./XuqmGroup-Server/im-service/target:/app - command: java -jar /app/im-service-0.1.0-SNAPSHOT.jar - ports: - - "8082:8082" - depends_on: [mysql, redis] - - push-service: - image: eclipse-temurin:21-jre - volumes: - - ./XuqmGroup-Server/push-service/target:/app - command: java -jar /app/push-service-0.1.0-SNAPSHOT.jar - ports: - - "8083:8083" - depends_on: [mysql] - - update-service: - image: eclipse-temurin:21-jre - volumes: - - ./XuqmGroup-Server/update-service/target:/app - - update_files:/data/xuqm/update - command: java -jar /app/update-service-0.1.0-SNAPSHOT.jar - environment: - UPDATE_UPLOAD_DIR: /data/xuqm/update - ports: - - "8084:8084" - depends_on: [mysql] - -volumes: - mysql_data: - update_files: -``` - ---- - -## 六、发版流程汇总 - -| 平台 | 步骤 | -|------|------| -| **后端** | `mvn clean package` → 替换 jar → 重启服务 | -| **前端** | `yarn build` → 替换 `dist/` → Nginx 无需重启 | -| **Android SDK** | 修改版本号 → `./gradlew publish` → Nexus | -| **iOS SDK (SPM)** | 修改版本号 → `git tag x.y.z && git push origin x.y.z` | -| **iOS SDK (CocoaPods)** | `pod repo push xuqm-specs XuqmSDK.podspec` | -| **RN SDK** | 修改 `package.json` version → `npm publish` | -| **Vue3 SDK** | 修改 `package.json` version → `npm run build && npm publish` | -| **HarmonyOS SDK** | 修改 `oh-package.json5` version → `ohpm publish` | - ---- - -## 七、健康检查 - -各服务均暴露 Spring Actuator 端点: - -```bash -curl http://localhost:8081/actuator/health -curl http://localhost:8082/actuator/health -curl http://localhost:8083/actuator/health -curl http://localhost:8084/actuator/health -``` - -正常返回:`{"status":"UP"}` diff --git a/docs/PLATFORM_OVERVIEW.md b/docs/PLATFORM_OVERVIEW.md deleted file mode 100644 index 6cda91b..0000000 --- a/docs/PLATFORM_OVERVIEW.md +++ /dev/null @@ -1,89 +0,0 @@ -# XuqmGroup 平台文档总览 - -> 版本:0.1.0 | 最后更新:2026-04-21 - -## 仓库索引 - -| 仓库 | 语言/框架 | Gogs 地址 | 说明 | -|------|-----------|-----------|------| -| [XuqmGroup-Server](./server/README.md) | Java 21 / Spring Boot 3.4 | https://xuqinmin.com/xuqinmin12/XuqmGroup-Server | 后端多模块服务 | -| [XuqmGroup-Web](./web/README.md) | Vue 3.5 / TypeScript | https://xuqinmin.com/xuqinmin12/XuqmGroup-Web | 租户平台 + 运营平台前端 | -| [XuqmGroup-AndroidSDK](./android-sdk/README.md) | Kotlin 2.3 / AGP 9.1 | https://xuqinmin.com/xuqinmin12/XuqmGroup-AndroidSDK | Android SDK | -| [XuqmGroup-iOSSDK](./ios-sdk/README.md) | Swift 5.9 / iOS 16+ | https://xuqinmin.com/xuqinmin12/XuqmGroup-iOSSDK | iOS SDK | -| [XuqmGroup-RNSDK](./rn-sdk/README.md) | TypeScript / RN 0.76+ | https://xuqinmin.com/xuqinmin12/XuqmGroup-RNSDK | React Native SDK | -| [XuqmGroup-Vue3SDK](./vue3-sdk/README.md) | TypeScript / Vue 3.5 | https://xuqinmin.com/xuqinmin12/XuqmGroup-Vue3SDK | Vue3 Web SDK | -| [XuqmGroup-HarmonySDK](./harmony-sdk/README.md) | ArkTS / HarmonyOS 5 | https://xuqinmin.com/xuqinmin12/XuqmGroup-HarmonySDK | 鸿蒙 SDK | - -## 整体架构 - -``` -┌─────────────────────────────────────────────────────────────┐ -│ 客户端层 │ -│ Android SDK iOS SDK RN SDK Vue3 SDK HarmonyOS SDK │ -└───────────────────────────┬─────────────────────────────────┘ - │ HTTPS / WSS -┌───────────────────────────▼─────────────────────────────────┐ -│ 服务端层 │ -│ ┌────────────┐ ┌──────────┐ ┌───────────┐ ┌────────────┐ │ -│ │tenant-svc │ │im-service│ │push-svc │ │update-svc │ │ -│ │ :8081 │ │ :8082 │ │ :8083 │ │ :8084 │ │ -│ └─────┬──────┘ └────┬─────┘ └─────┬─────┘ └──────┬─────┘ │ -│ └─────────────┴─────────────┴───────────────┘ │ -│ ↓ JPA / JDBC │ -│ ┌──────────────────────────────────────────────────────┐ │ -│ │ MySQL 8 (xuqm_tenant / xuqm_im / xuqm_push / │ │ -│ │ xuqm_update) + Redis 7 │ │ -│ └──────────────────────────────────────────────────────┘ │ -└─────────────────────────────────────────────────────────────┘ - -┌─────────────────────────────────────────────────────────────┐ -│ 前端层 │ -│ 租户开放平台 :5173 运营管理平台 :5174 │ -└─────────────────────────────────────────────────────────────┘ -``` - -## 核心概念 - -| 概念 | 说明 | -|------|------| -| **租户 (Tenant)** | 在开放平台注册的主账号,可创建子账号 | -| **应用 (App)** | 租户创建的业务应用,具有唯一 appKey/appSecret | -| **功能服务 (FeatureService)** | 挂载在 App 下的服务实例(IM / 推送 / 版本管理),按平台(Android / iOS / HarmonyOS)独立开启 | -| **IM 账号** | 业务方通过 appKey 在 IM 服务创建的用户,仅存 userId,不存昵称/头像 | -| **运营平台** | 内部管理后台,独立账号体系,不与租户共用 | - -## 统一响应格式 - -所有 HTTP 接口均返回: - -```json -{ - "code": 200, - "status": "0", - "data": { ... }, - "message": "success" -} -``` - -| 字段 | 含义 | -|------|------| -| `code` | HTTP 语义码,200 成功,4xx/5xx 失败 | -| `status` | `"0"` 成功,`"1"` 业务失败 | -| `data` | 业务数据,失败时为 null | -| `message` | 错误描述 | - -## 认证方式 - -- **租户平台**:`Authorization: Bearer `,由 `POST /api/auth/login` 颁发 -- **IM 服务**:`Authorization: Bearer `,由 `POST /api/im/auth/login` 颁发;WebSocket 连接时通过 URL 参数 `?token=` 传递 -- **运营平台**:`Authorization: Bearer `,由 `POST /api/auth/ops/login` 颁发 - -## 发版信息 - -| 平台 | Registry | 命令 | -|------|----------|------| -| npm (RN SDK / Vue3 SDK) | https://nexus.xuqinmin.com/repository/npm-hosted/ | `npm publish` | -| Android Maven | https://nexus.xuqinmin.com/repository/android-hosted/ | `./gradlew publish` | -| iOS SPM | Git Tag | `git tag x.y.z && git push origin x.y.z` | -| iOS CocoaPods | https://xuqinmin.com/xuqinmin12/xuqm-specs | `pod repo push xuqm-specs XuqmSDK.podspec` | -| HarmonyOS | ohpm (OpenHarmony Package Manager) | `ohpm publish` |