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