Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 40s
feat(pay): 添加支付API基础结构 feat(miniapp): 创建支付测试小程序页面与配置 feat(wechatpay): 配置微信支付参数与证书 fix(guild): 修复成员列表查询条件 docs: 更新代码规范文档与需求文档 style: 统一前后端枚举显示与注释格式 refactor(admin): 重构用户奖励发放接口参数处理 test(title): 添加称号效果参数验证测试
2.4 KiB
2.4 KiB
目标
- 在运营管理新增“小程序二维码生成”,输入:
invite_code、douyin_id,生成跳转到小程序登录页的二维码。 - 在小程序登录 API 支持绑定抖音账号,仅绑定
douyin_id。
后端改造
- 数据模型
- 为
users表新增字段:douyin_id(string,唯一,可空)。 - 迁移脚本添加唯一索引
idx_users_douyin_id;gorm/gen重新生成模型。
- 为
- 生成二维码接口
- 新增管理端接口:
POST /api/admin/miniapp/qrcode - 请求:
{ invite_code: string, douyin_id: string, width?: number } - 响应:
{ image_base64: string } - 实现:使用
internal/pkg/wechat/qrcode.go构造path(示例:/pages/login?invite_code=xxx&douyin_id=yyy),校验长度 ≤1024。
- 新增管理端接口:
- 小程序登录绑定
- 修改
internal/api/user/login_app.go的weixinLoginRequest:新增可选douyin_id。 - service 层
LoginWeixin:- 当请求含
douyin_id且当前用户未绑定时,写入douyin_id。 - 若
douyin_id已被其他用户绑定,返回冲突错误码;不覆盖已有绑定。
- 当请求含
- 修改
前端改造(运营管理)
- 新增页面:
views/operations/miniapp-qrcode/index.vue- 表单:
invite_code、douyin_id、width(默认 430) - 调用
admin/miniapp/qrcode,预览与下载二维码。
- 表单:
- 小程序前端:登录页读取 query,将
invite_code与douyin_id随code一并调用POST /api/app/users/weixin/login。
路由与校验
- 路由:新增 admin 路由于
internal/router/router.go管理端认证组。 - 输入校验:
invite_code:非空、长度/字符集校验douyin_id:长度 1–50,字符集限制(字母数字下划线)
- 唯一绑定策略:
douyin_id全局唯一;冲突返回明确错误码与提示。
配置
- 使用现有
configs.Wechat.AppID/AppSecret;复用internal/pkg/wechat/qrcode.go。
验收
- 运营页生成二维码成功;扫码进入并完成登录绑定,用户记录含
douyin_id。 - 登录接口兼容无
douyin_id场景;携带时正确绑定并处理冲突。
变更清单
- 后端:新增
miniapp_qrcode管理端接口;修改登录请求体与 service;数据库迁移与模型生成。 - 前端:新增运营二维码页面与 API;路由注册。
风险与回滚
- 字段新增不影响旧流程;二维码功能为增量,回滚可移除新路由与页面。