# 星遇社交平台 根据《陌陌类社交平台 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` 与数据库默认口令。