## 目标 - 为运营提供可控的批量操作能力:批量增加积分、批量发送优惠券、批量发放奖励。 - 满足权限、配额、上限、幂等与审计要求,闭环验证整个盲盒系统运营流程。 ## 问题与现状 - 现有单用户接口:`POST /api/admin/users/:user_id/points/add`、`/coupons/add`、`/item_cards`、`/rewards/grant`;缺少批量维度与风控保护。 - 已加固:优惠券发放需超管(internal/api/admin/users_admin.go:596-616)、发放配额与持有上限(internal/service/user/coupon_add.go)、道具卡数量与持有上限(internal/service/user/item_card_add.go)。 - 仍缺:批量接口、幂等、审计与限流。 ## API 设计 - 批量积分:`POST /api/admin/users/batch/points/add` - Body:`{ users: number[], amount: number, reason?: string, idempotency_key?: string }` - 校验:超管;`amount > 0`;`users.length <= 5000`;可选日累计上限(防爆刷)。 - 行为:逐用户执行加分(重用现有服务层),支持幂等(按 `op_type+idempotency_key+users+amount` 去重)。 - 返回:`{ success: number, failed: number, details: Array<{user_id,status,msg}> }`。 - 批量优惠券:`POST /api/admin/users/batch/coupons/add` - Body:`{ users: number[], coupon_id: number, quantity_per_user?: number, idempotency_key?: string }` - 校验:超管;模板启用与有效期;配额与单用户持有上限(已在服务层);`quantity_per_user` 上限(<=5)。 - 行为:逐用户发券(重用 `AddCoupon`),事务分片(每批 100~200),记录逐项状态;幂等去重。 - 返回:同上。 - 批量奖励:`POST /api/admin/users/batch/rewards/grant` - Body:`{ users: number[], reward_id: number, quantity?: number, idempotency_key?: string }` 或按活动期:`POST /api/admin/activities/:activity_id/issues/:issue_id/rewards/batch_grant` `{ users: number[], reward_id: number, quantity?: number }` - 校验:超管;奖励模板/库存;单用户持有上限(可与道具卡同策略);数量上限(<=10)。 - 行为:逐用户入库,事务分片,幂等去重。 - 返回:同上。 ## 权限与风控 - 仅超管可调用批量接口;非超管拒绝。 - 限流:每分钟调用次数限制(可在拦截器或中间件层实现)。 - 上限:请求用户数上限(5000),单用户数量上限;模板配额检查;用户持有上限(已存在的加固沿用)。 - 幂等:支持 `idempotency_key`;服务层保存批次指纹,重复提交直接返回历史结果。 - 审计:记录批量操作日志(操作者、时间、对象数量、成功/失败明细摘要与请求指纹)。 ## 后端改造点 - 路由:`internal/router/router.go` - 新增:`POST /api/admin/users/batch/points/add`、`/batch/coupons/add`、`/batch/rewards/grant` - 处理器:`internal/api/admin/users_admin.go` - 新增批量处理 Handler(结构体 Request/Response、超管校验、参数绑定、分片循环、调用服务层、汇总返回)。 - 服务层:`internal/service/user/*` - 新增批量方法或在 Handler 中循环调用现有单个方法(推荐服务层添加批量封装,带事务与幂等指纹)。 - 中间件:可选全局限流与审计记录入口(日志/Audit DAO)。 ## 前端(管理端) - 称号运营页或用户管理页新增“批量操作”入口,支持: - 用户选择(列表多选/CSV导入) - 操作类型(积分/优惠券/奖励)与参数(金额/模板/数量) - 幂等键(可选自动生成) - 执行后展示分项结果与失败原因下载。 ## 测试与验收 - Postman 集合扩展三条批量接口;注入 admin 令牌后按顺序回归。 - 验收标准: - 权限校验:非超管拒绝。 - 配额/上限:超量拒绝;成功/失败计数正确。 - 幂等:重复提交返回相同结果,不重复写入。 - 审计:生成批次日志记录(至少在系统日志中可查)。 ## 交付 - 批量接口与处理器实现、服务层封装、路由挂载。 - 集合/脚本更新与验收报告(问题清单与修复项)。 确认后我将开始实现并提交对应代码与测试集合更新。