Files
kefu/im/README.md
T
2026-09-03 08:38:17 +08:00

95 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 星遇社交平台
根据《陌陌类社交平台 V1.0 完整技术方案》实现的三端一体、可运行社交平台。项目包含 Vben Admin 管理端、Go 后端和 uni-app 客户端,并已连接本机 `im` 数据库。
## 已实现
- 管理端:运营概览、用户全量资料与认证材料审核、会员等级与到期日、密码重置与强制下线、设备与会话、违规处罚、全量消息记录、动态审核、举报处置、风险事件、会员套餐新增/编辑/删除、订单状态编辑/入账/关闭/退款/删除、短信/支付/文件存储/第三方登录配置、管理员账号、角色权限和审计日志。
- 用户端:启动、密码/验证码/第三方登录、旋转式刷新令牌、注册、找回密码、推荐/最新/关注、搜索、附近、动态与评论、通知中心、实时聊天、图片/语音消息、身份与职业认证提交、个人资料编辑、关系与访客列表、隐私设置、会员支付和订单中心;H5 使用本地 SVG 图标并适配窄屏、安全区和动态视口。
- 后端:JWT 短时访问令牌、用户与管理员刷新会话轮换、服务端 RBAC、一次性短信验证码、用户/关注/喜欢/拉黑、搜索与距离排序、动态/评论、通知、举报处罚、认证审核、会员/订单权益联动、支付渠道、加密集成配置、管理 API、审计、WebSocket IM。
- IM:会话序号、客户端消息 ID 幂等、游标式历史消息、未读数、已读游标、消息类型/体积校验、陌生人隐私与双向拉黑校验、WebSocket 心跳/超时/并发写保护及 Protobuf 协议定义。
- 媒体:鉴权上传、格式与大小校验,支持本地、阿里云 OSS、腾讯云 COS、七牛云、华为云 OBS 和华为云 Flexus 对象存储,管理端可切换并测试。
- 数据库:26 组 MySQL 顺序迁移和幂等演示数据,包含认证、处罚、账号安全、管理员会话、RBAC、客户端产品化、举报处置留痕及消息下架字段。SQL 兼容 MySQL 5.7.26。
## 目录
```text
admin/ Vben Admin 5.7.0 + Element Plus 管理端
backend/ Go 1.27 + go-zero + MySQL + WebSocket 服务
mobile/ uni-app + Vue 3 + TypeScript 客户端
scripts/ 数据库迁移、开发启动和 API 冒烟测试
```
接口边界定义位于 `backend/docs/social.api`IM 协议定义位于 `backend/proto/im/v1/`
## 本地地址与演示账号
| 服务 | 地址 | 账号 |
| --- | --- | --- |
| 后端 | `http://127.0.0.1:8888` | — |
| 管理端 | `http://127.0.0.1:5555` | `admin / Admin@123` |
| uni-app H5 | `http://127.0.0.1:5173` | `13800138000 / 123456` |
数据库默认使用 `root:root@tcp(127.0.0.1:3306)/im`。建议通过 `IM_DB_DSN``IM_JWT_SECRET` 覆盖开发默认值。
## 首次运行
```powershell
# 1. 建表并迁移(数据库 im 需要已存在)
powershell -ExecutionPolicy Bypass -File .\scripts\migrate.ps1
# 2. 启动后端
powershell -ExecutionPolicy Bypass -File .\scripts\dev-backend.ps1
# 3. 新终端启动管理端
cd admin
pnpm install
pnpm dev:ele
# 4. 新终端启动 uni-app H5
cd mobile
pnpm install
pnpm dev:h5
```
如使用真机或模拟器,将 `mobile/.env.example` 复制成相应模式的 `.env` 文件,并把 `127.0.0.1` 改为开发机局域网地址或已部署域名。
## 外部服务配置
登录管理端后,在“平台配置”中进入对应配置页面:
- 短信支持阿里云、腾讯云、华为云、`webhook` 和仅限开发环境的 `debug`,可在线切换并发送测试。密钥使用 AES-GCM 加密保存。
- 文件存储支持本地、阿里云 OSS、腾讯云 COS、七牛云、华为云 OBS、华为云 Flexus;切换后新上传文件使用当前厂商,历史地址不受影响。
- 第三方登录支持微信、QQ、GitHub、Google,可分别控制管理端与用户端是否启用,并使用一次性 state/code 和 PKCE(适用厂商)完成授权。
- 支付支持沙箱与生产参数管理,可独立启停支付宝和微信支付。私钥、APIv3 密钥、Webhook Token 等敏感字段使用 AES-GCM 加密后写入数据库,管理页面不会回显明文。
- 沙箱模式可完成创建订单、确认支付、会员订阅生效和订单查询的完整闭环;切换生产模式前,页面会校验所启用渠道的必填商户参数。
## 构建与验证
```powershell
# 后端
cd backend
..\.tools\go\bin\go.exe test ./...
# Vben 管理端
cd admin
pnpm -F @vben/web-ele run typecheck
pnpm -F @vben/web-ele run build
# uni-app H5
cd mobile
pnpm type-check
pnpm build:h5
# 原生 App 发布前配置门禁(DCloud AppID、HTTPS、WSS 缺一不可)
pnpm check:native
# 后端运行后执行全链路 API 冒烟测试
cd ..
powershell -ExecutionPolicy Bypass -File .\scripts\smoke.ps1
```
## 本地与生产边界
当前仓库可完整演示核心业务闭环。默认短信提供商为 `debug`,默认存储为本地,默认支付为沙箱模式并会真实更新本地订单和会员状态。生产模式已具备参数安全存储、短信和对象存储厂商实现、渠道校验及订单边界,但在获得真实商户资料后仍需完成支付宝/微信生产商户联调、下单和异步回调验签。上线前必须配置 HTTPS/WSS、正式厂商凭据、独立数据库账号,并替换 `IM_JWT_SECRET``IM_CONFIG_ENCRYPTION_KEY` 与默认口令。