bindbox-game/.trae/documents/运营管理前端接入与玩家称号分配实现计划.md
邹方成 8141a47690
Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 39s
feat(称号系统): 新增称号管理功能与抽奖效果集成
- 新增系统称号模板与效果配置表及相关CRUD接口
- 实现用户称号分配与抽奖效果应用逻辑
- 优化抽奖接口支持用户ID参数以应用称号效果
- 新增称号管理前端页面与分配功能
- 修复Windows时区错误与JSON字段初始化问题
- 移除无用管理接口代码并更新文档说明
2025-11-16 11:37:40 +08:00

3.9 KiB
Raw Blame History

目标

  • 在运营管理中接入“批量抽奖”并确保对话框正确对接后端接口(含用户搜索、期数选择、执行与验证)。
  • 在玩家管理页新增“分配称号”功能:支持搜索玩家、选择系统称号并分配(含有效期与备注)。

改造与新增点

1. 批量抽奖对话框对接

  • 位置:web/admin/src/views/activity/rewards/modules/batch-draw-dialog.vue
  • 接口统一由 @/api/adminActivities 提供;若需要使用“带效果抽奖”后端路径,保持 URL 不变(后端已在同一路由替换为带效果执行),前端无需改参。
  • 校验与交互:
    • 期数下拉:数据源 listActivityIssues(activityId)(已存在)。
    • 玩家搜索与选择:数据源 listAdminUsers(params)(已存在),保留分页与勾选逻辑。
    • 批量执行:batchDrawForUsers(activityId, issueId, { user_ids }),展示收据与中奖汇总。
    • 结果验证:verifyDrawReceipt(activityId, issueId, body) 保持结构一致。
  • UI 微调:在结果区增加“效果标识”展示(若收据选中项名称带 (x2) 则以标签提示“奖励翻倍”)。

2. 玩家管理页新增“分配称号”

  • 入口:web/admin/src/views/player-manage/index.vue 操作列新增按钮。
  • 枚举:web/admin/src/enums/tableActionEnum.ts 增加 ASSIGN_TITLE,映射中文标签与图标。
  • 弹窗组件(新增):web/admin/src/views/player-manage/modules/assign-title-dialog.vue
    • 表单:
      • 选择系统称号(下拉,数据源:titlesApi.getList({page,page_size,name,status}))。
      • 可选:有效期(日期时间)、备注(文本)。
    • 提交:titlesApi.assignToUser(userId, { title_id, expires_at?, remark? }),成功后 toast 并关闭。
  • 前端 API新增web/admin/src/api/titles.ts
    • getList(params)GET /api/admin/system_titles(分页检索)。
    • assignToUser(userId, payload)POST /api/admin/users/:user_id/titles
  • 玩家搜索集成:保留现有搜索栏 player-search.vue;在结果表行的操作列加入“分配称号”按钮,点击打开弹窗并携带当前 user_id

3. 后端路由与处理(需一并落地)

  • 路由:internal/router/router.go
    • 系统称号:GET/POST/PUT/DELETE /api/admin/system_titles
    • 用户分配称号:POST /api/admin/users/:user_id/titles
  • Handlerinternal/api/admin/titles_admin.go
    • 列表、创建、修改、删除系统称号。
    • 用户分配:校验头衔存在与启用状态,写入或更新 user_titles(保持 user_id + title_id 唯一,激活状态与有效期)。
  • 复用服务/DAOinternal/repository/mysql/dao/*internal/service/title/effects_resolver.go(后续用于预览用户生效效果)。

交互与校验

  • 分配称号:
    • 重复分配处理:若用户已持有该称号,则更新 expires_at/remark/active
    • 时间校验:expires_at 可空;若传入需晚于当前时间。
  • 批量抽奖:
    • 期数必选、用户列表非空;执行后展示收据与命中明细。
    • 收据中的 (x2) 标签用于前端提示“奖励翻倍”。

验收与测试

  • 前端:
    • 玩家搜索能正常检索与分页;操作列新增“分配称号”按钮弹窗正常。
    • 批量抽奖弹窗从运营管理入口可用,执行与验证接口成功,结果展示清晰。
  • 后端:
    • 系统称号列表与 CRUD 可用;用户分配称号接口成功写 user_titles
  • 集成:
    • 用户分配称号后,管理端批量抽奖能体现概率/双倍效果(已有后端支持)。

交付物

  • 新增前端 API titles.tsassign-title-dialog.vue
  • 更新 player-manage/index.vuetableActionEnum.ts 增加入口。
  • 如需对批量抽奖对话框做 (x2) 标签显示,补充小型 UI 更新。
  • 后端路由与 Handler 实现(称号 CRUD 与分配)。

确认后我将立即实施上述前后端改造,并进行编译与交互联调。