筛选只有「仅已托管」一个选项,想找还没开启的账号只能翻页。补上 managed=0:未托管既包括从未绑定的账号,也包括绑定后被关闭的账号, 运营要开启的正是这两类,所以放在一起。 测试覆盖三种状态,并断言两个筛选相加等于全部、没有重复计数。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
admin
@ 63a38dce49
mobile
@ 6fb81ac3c5
星遇社交平台
根据《陌陌类社交平台 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。
目录
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 覆盖开发默认值。
首次运行
# 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 加密后写入数据库,管理页面不会回显明文。
- 沙箱模式可完成创建订单、确认支付、会员订阅生效和订单查询的完整闭环;切换生产模式前,页面会校验所启用渠道的必填商户参数。
构建与验证
# 后端
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 与默认口令。