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