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

17 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 目标
- 当为用户分配一个已拥有且未过期的称号时,后端拒绝并提示“用户已拥有该称号”;避免连续多次分配同一称号。
- 前端在分配提交前做快速拦截与友好提示。
## 后端改造
- 修改 `AssignUserTitle` 处理器:`internal/api/admin/titles_admin.go`
- 在创建/更新前,查询 `user_titles``user_id`+`title_id` 的记录,若 `active=1``expires_at` 为空或晚于当前时间 → 直接返回 400或业务码 30117提示“用户已拥有该称号”。
- 保留过期的场景可重新分配;仅阻止“未过期且已激活”的重复分配。
- 响应格式:保持现有错误响应结构,统一错误消息文案。
## 前端改造(可选)
-`UserAssignmentDialog.vue` 提交前判断:若选中用户当前头衔包含待分配的称号 ID`ElMessage.warning('该用户已拥有该称号')` 并阻止提交。
- 若列表已有 `current_titles` 字段,直接使用;否则请求 `GET /api/admin/users/:user_id/titles` 取当前有效称号。
## 验收
- 对同一用户、同一称号:首次分配成功;再次分配立刻被后端拒绝并提示。
- 过期称号可重新分配;前端也能提示并拦截重复操作。