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

3.2 KiB
Raw Blame History

目标

  • 新用户列表增加:积分余额、资产、道具卡、优惠券、称号、上一次在线时间
  • 实时抽奖动态展示:用户 | 活动 | 奖品
  • 待办事项改为:未抽奖用户列表

后端改动

新用户列表扩展 GET /api/admin/dashboard/new_users

  • 文件:internal/api/admin/dashboard_admin.go
  • DashboardNewUsers() 为每个用户追加:
    • couponCountuser_coupons 有效/未使用计数
    • titleCountuser_titles 数量(或仅活跃状态)
    • lastOnlineAt:近似“最后活跃时间”,取多个行为表的最大时间:
      • activity_draw_logs.created_at
      • orders.updated_atpaid_at
      • user_points_ledger.created_at
      • user_item_cards.updated_at
      • user_inventory.updated_at
    • 注:当前日志表 log_request 未记录 user_id,无法精确映射在线时间;后续可优化为日志写入 user_id 字段。
  • 返回结构:在 newUserItem 增加 couponCount:numbertitleCount:numberlastOnlineAt:string

抽奖动态增强 GET /api/admin/dashboard/draw_stream

  • 已新增字段:activityNameissueNumberprizeName
  • 保持现有结构,前端按“用户 | 活动 | 奖品”展示即可(dynamic-stats.vue 已适配)

待办事项改为未抽奖用户 GET /api/admin/dashboard/todos

  • 文件:internal/api/admin/dashboard_admin.go
  • 原“绑定手机号/加入公会”规则改为:
    • 查询 users,过滤 NOT EXISTS activity_draw_logs WHERE user_id=users.id
    • 返回字段:userId/nickname/avatartaskType 固定为 undrawn,文案 taskLabel='从未参与抽奖'
  • 保持分页/limit 与安全校验一致

前端改动

新用户模块 web/admin/src/views/dashboard/console/modules/new-user.vue

  • 表格新增列:优惠券数、称号数、上一次在线时间
  • 数据源类型:更新 web/admin/src/api/dashboard.tsNewUserItem 接口增加上述3字段fetchNewUsers 返回保持一致

抽奖动态 web/admin/src/views/dashboard/console/modules/dynamic-stats.vue

  • 已展示“活动名-期号”和中奖奖品名;文案保持“用户 | 活动 | 奖品”格式

待办事项 web/admin/src/views/dashboard/console/modules/todo-list.vue

  • 调整列表文案与标签:从“绑定手机号/加入公会”改为“从未参与抽奖”的用户清单(调用同名接口)

验证

  • 后端:go build ./... 通过;
  • 接口验证:
    • 新用户:curl -H 'Authorization: <token>' 'http://localhost:8000/api/admin/dashboard/new_users?page=1&page_size=20'
    • 抽奖动态:curl -H 'Authorization: <token>' 'http://localhost:8000/api/admin/dashboard/draw_stream?limit=50'
    • 待办(未抽奖用户):curl -H 'Authorization: <token>' 'http://localhost:8000/api/admin/dashboard/todos?limit=50'
  • 前端:工作台“新用户”、“抽奖动态”、“待办事项”模块显示对应数据

后续可选优化

  • log_request 增加 user_id 字段,并在中间件从会话写入;将“上一次在线时间”改为日志精准口径
  • 为关联查询增加必要索引以保证统计性能(activity_draw_logs.user_id/issue_idorders.user_id/status 等)

确认后我将按上述文件路径逐项实现并联调。