Files
kefu/im/README.md
T
2026-08-27 14:04:28 +08:00

90 lines
4.5 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 登录与版本化强制失效、一次性短信验证码、用户/关注/喜欢/拉黑、搜索与距离排序、动态/评论、通知、举报处罚、认证审核、会员/订单权益联动、支付渠道、加密集成配置、管理 API、审计、WebSocket IM。
- IM:会话序号、客户端消息 ID 幂等、历史消息、未读数、已读游标、WebSocket 推送及 Protobuf 协议定义。
- 媒体:鉴权上传、格式与大小校验、本地静态访问;生产环境可将同一接口替换为 MinIO/OSS。
- 数据库:11 组 MySQL 迁移和幂等演示数据,包含认证、处罚、账号安全控制及套餐/订单安全归档字段。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` 改为开发机局域网地址或已部署域名。
## 短信与支付配置
登录管理端后,在“平台配置”中进入“短信配置”或“支付配置”:
- 短信支持 `debug``webhook` 两种提供商。Webhook 会收到包含 `phone``scene``code``signName``templateId` 的 JSON POST,可通过 Bearer Token 鉴权。
- 支付支持沙箱与生产参数管理,可独立启停支付宝和微信支付。私钥、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
# 后端运行后执行全链路 API 冒烟测试
cd ..
powershell -ExecutionPolicy Bypass -File .\scripts\smoke.ps1
```
## 本地与生产边界
当前仓库可完整演示核心业务闭环。默认短信提供商为 `debug`,调试验证码可在管理端修改;默认支付为沙箱模式并会真实更新本地订单和会员状态。生产模式已具备参数安全存储、渠道可用性校验和订单边界,但在获得真实商户资料后仍需接入支付宝/微信原生 SDK、支付下单与异步回调验签。上线前还应使用正式短信网关、对象存储/CDN,配置 HTTPS 回调地址,并替换 `IM_JWT_SECRET` 与数据库默认口令。