# BUG修复需求分析 ## 任务概述 修复盲盒游戏系统中6个BUG问题。 ## BUG清单 ### BUG 1: 任务中心任务类型统计错误 **问题描述**: 设置任务是完成A活动才可以算完成,但玩了一局B活动竟然也算任务成功了。 **根因分析**: - 任务中心 `GetUserProgress` 函数 (`internal/service/task_center/service.go:290-386`) - 该函数通过订单 `remark` 字段使用 LIKE 匹配来过滤活动ID - 匹配模式: `%%activity:%d%%` - **问题**: 虽然有活动ID过滤逻辑,但需要确认任务配置时是否正确设置了 `activity_id` - 相关代码位置: `service.go` 第306-312行 --- ### BUG 2: 任务中心把商城订单也计入了 **问题描述**: 任务中心统计时不应该包含商城订单,应该根据设置的类型来结算。 **根因分析**: - `GetUserProgress` 函数统计订单时只过滤了 `status = 2`(已支付) - **问题**: 没有过滤 `source_type`,导致商城订单(`source_type = 1`)也被计入 - 订单 `source_type` 定义 (`model/orders.gen.go:20`): - 1: 商城直购 - 2: 抽奖票据 - 3: 其他 - 4: 次数卡支付 --- ### BUG 3: 活动盈亏仪表盘退款订单未排除 **问题描述**: 对用户订单进行退款了,统计不应该把这个订单累计进来。 **根因分析**: - `DashboardActivityProfitLoss` 函数 (`internal/api/admin/dashboard_activity.go:132-139`) - 营收统计查询条件: `orders.status = 2`(已支付) - **问题**: 订单状态4表示已退款,但当前只过滤了 `status = 2`,不会包含退款订单 - **实际问题**: 退款后订单状态应该从2变成4,但如果状态未更新则会被统计。需要确认退款流程是否正确更新订单状态 --- ### BUG 4: 活动盈亏抽奖记录缺少字段 **问题描述**: 需要在抽奖记录中体现 优惠券 / 道具卡 / 次数卡 字段。 **根因分析**: - `DashboardActivityLogs` 函数 (`internal/api/admin/dashboard_activity.go:222-354`) - 当前返回字段已包含: - `coupon_name`: 通过 `orders.coupon_id` LEFT JOIN `system_coupons` - `item_card_name`: 通过 `orders.item_card_id` LEFT JOIN `system_item_cards` - **问题**: `source_type = 4` 表示次数卡支付,但次数卡使用信息存储在订单 `remark` 字段中(格式: `gp_use:ID:Count`),当前未解析显示 - 需要增加解析 `remark` 字段中的次数卡使用信息 --- ### BUG 5: 一番赏不能使用优惠券 **问题描述**: 一番赏目前不能使用优惠券。 **根因分析**: - `JoinLottery` 函数 (`internal/api/activity/lottery_app.go:78-81`) - 优惠券检查逻辑: `if !activity.AllowCoupons && req.CouponID != nil` - **问题**: 一番赏活动的 `AllowCoupons` 字段可能被设置为 `false` - 数据库字段定义 (`model/activities.gen.go:27`): `AllowCoupons bool` 默认值为1(允许) - **解决方向**: 1. 检查一番赏活动在数据库中的 `allow_coupons` 字段值 2. 如果业务上确实不允许,则是配置问题而非代码问题 3. 如果业务上应该允许,需修改活动配置 --- ### BUG 6: 活动盈亏出现已下架活动数据 **问题描述**: 活动盈亏里面出现了以前已经下架了的数据,应该按照现在活动表存在的活动来统计。 **根因分析**: - `DashboardActivityProfitLoss` 函数 (`internal/api/admin/dashboard_activity.go:58-75`) - 当前查询直接从 `activities` 表获取活动列表 - 支持按 `status` 过滤(1进行中 2下线) - **问题**: 虽然支持状态过滤,但默认不过滤任何状态 - 另外活动表使用了软删除 (`deleted_at`),但需确认是否正确应用了软删除条件 ## 需求理解 | BUG编号 | 问题类型 | 修复难度 | 涉及文件 | |---------|----------|----------|----------| | BUG 1 | 业务逻辑 | 中 | `service/task_center/service.go` | | BUG 2 | 业务逻辑 | 低 | `service/task_center/service.go` | | BUG 3 | 数据过滤 | 低 | `api/admin/dashboard_activity.go` | | BUG 4 | 字段缺失 | 低 | `api/admin/dashboard_activity.go` | | BUG 5 | 配置问题 | 低 | 需检查数据库配置 | | BUG 6 | 数据过滤 | 低 | `api/admin/dashboard_activity.go` | ## 待确认问题 1. **BUG 1**: 任务配置时,`task_center_task_tiers.activity_id` 字段是否正确设置? 2. **BUG 3**: 退款时订单状态是否正确更新为4? 3. **BUG 5**: 一番赏活动的 `allow_coupons` 数据库字段当前值是什么?是配置问题还是需要代码修复? 4. **BUG 6**: 是否需要默认只显示在线活动(status=1)?还是只过滤软删除的活动?