Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 39s
- 新增系统称号模板与效果配置表及相关CRUD接口 - 实现用户称号分配与抽奖效果应用逻辑 - 优化抽奖接口支持用户ID参数以应用称号效果 - 新增称号管理前端页面与分配功能 - 修复Windows时区错误与JSON字段初始化问题 - 移除无用管理接口代码并更新文档说明
3.9 KiB
3.9 KiB
目标
- 在运营管理中接入“批量抽奖”并确保对话框正确对接后端接口(含用户搜索、期数选择、执行与验证)。
- 在玩家管理页新增“分配称号”功能:支持搜索玩家、选择系统称号并分配(含有效期与备注)。
改造与新增点
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.tsgetList(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
- 系统称号:
- Handler:
internal/api/admin/titles_admin.go- 列表、创建、修改、删除系统称号。
- 用户分配:校验头衔存在与启用状态,写入或更新
user_titles(保持user_id + title_id唯一,激活状态与有效期)。
- 复用服务/DAO:
internal/repository/mysql/dao/*与internal/service/title/effects_resolver.go(后续用于预览用户生效效果)。
交互与校验
- 分配称号:
- 重复分配处理:若用户已持有该称号,则更新
expires_at/remark/active。 - 时间校验:
expires_at可空;若传入需晚于当前时间。
- 重复分配处理:若用户已持有该称号,则更新
- 批量抽奖:
- 期数必选、用户列表非空;执行后展示收据与命中明细。
- 收据中的
(x2)标签用于前端提示“奖励翻倍”。
验收与测试
- 前端:
- 玩家搜索能正常检索与分页;操作列新增“分配称号”按钮弹窗正常。
- 批量抽奖弹窗从运营管理入口可用,执行与验证接口成功,结果展示清晰。
- 后端:
- 系统称号列表与 CRUD 可用;用户分配称号接口成功写
user_titles。
- 系统称号列表与 CRUD 可用;用户分配称号接口成功写
- 集成:
- 用户分配称号后,管理端批量抽奖能体现概率/双倍效果(已有后端支持)。
交付物
- 新增前端 API
titles.ts与assign-title-dialog.vue。 - 更新
player-manage/index.vue与tableActionEnum.ts增加入口。 - 如需对批量抽奖对话框做
(x2)标签显示,补充小型 UI 更新。 - 后端路由与 Handler 实现(称号 CRUD 与分配)。
确认后我将立即实施上述前后端改造,并进行编译与交互联调。