bindbox-game/.trae/documents/防重复分配称号的改造计划.md
邹方成 87ad4177b1
Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 39s
feat(工作台): 实现管理端工作台接口并优化数据展示
feat(抽奖动态): 修复抽奖动态未渲染问题并优化文案展示
fix(用户概览): 修复用户概览无数据显示问题
feat(新用户列表): 在新用户列表显示称号明细
refactor(待办事项): 移除代办模块并全宽展示实时动态
feat(批量操作): 限制为单用户操作并在批量时提醒
fix(称号分配): 防重复分配称号的改造计划
perf(接口性能): 优化新用户和抽奖动态接口性能
feat(订单漏斗): 优化订单转化漏斗指标计算
docs(测试计划): 完善盲盒运营API核查与闭环测试计划
2025-11-16 14:00:29 +08:00

1.2 KiB
Raw Blame History

目标

  • 当为用户分配一个已拥有且未过期的称号时,后端拒绝并提示“用户已拥有该称号”;避免连续多次分配同一称号。
  • 前端在分配提交前做快速拦截与友好提示。

后端改造

  • 修改 AssignUserTitle 处理器:internal/api/admin/titles_admin.go
    • 在创建/更新前,查询 user_titlesuser_id+title_id 的记录,若 active=1expires_at 为空或晚于当前时间 → 直接返回 400或业务码 30117提示“用户已拥有该称号”。
    • 保留过期的场景可重新分配;仅阻止“未过期且已激活”的重复分配。
  • 响应格式:保持现有错误响应结构,统一错误消息文案。

前端改造(可选)

  • UserAssignmentDialog.vue 提交前判断:若选中用户当前头衔包含待分配的称号 IDElMessage.warning('该用户已拥有该称号') 并阻止提交。
  • 若列表已有 current_titles 字段,直接使用;否则请求 GET /api/admin/users/:user_id/titles 取当前有效称号。

验收

  • 对同一用户、同一称号:首次分配成功;再次分配立刻被后端拒绝并提示。
  • 过期称号可重新分配;前端也能提示并拦截重复操作。