bindbox-game/.trae/documents/Troubleshoot and Fix Virtual Shipping, Refunds, and Item_Coupon Issues.md
邹方成 45815bfb7d chore: 清理无用文件与优化代码结构
refactor(utils): 修复密码哈希比较逻辑错误
feat(user): 新增按状态筛选优惠券接口
docs: 添加虚拟发货与任务中心相关文档
fix(wechat): 修正Code2Session上下文传递问题
test: 补充订单折扣与积分转换测试用例
build: 更新配置文件与构建脚本
style: 清理多余的空行与注释
2025-12-18 17:35:55 +08:00

2.2 KiB

故障排查与修复计划

针对您提出的四个问题,我制定了以下修复计划。我将使用中文进行回答和执行。

1. 虚拟发货问题 (Virtual Shipment)

  • 现状: 后端代码中已存在 UploadVirtualShipping 调用,但在支付回调中如果上传失败,目前是忽略错误的(_ = ...),导致无法确定是否成功。
  • 修复: 修改 internal/api/pay/wechat_notify.go,增加错误日志记录。如果虚拟发货上传失败,将在后台日志中打印详细错误原因,方便排查(如 transaction_id 错误或配置问题)。

2. 订单管理与退款 (Refund Button)

  • 现状: 您提到的“履约”可能是指发货,但对于虚拟商品,通常需要的是“退款”。目前后台订单列表缺少直观的“退款”按钮。
  • 修复:
    • 前端: 在 web/admin/src/views/pay/orders/index.vue 中添加“退款”按钮。
    • 后端: 对接现有的 CreateRefund 接口。该接口已包含完整的逻辑:调用微信退款、更新订单状态、自动恢复用户积分自动恢复优惠券

3. 道具卡添加不生效 (Item Card Issue)

  • 原因: 经查代码 internal/service/user/item_card_add.go,当道具卡模板不存在或状态为“未启用”时,代码直接返回 nil (成功),但实际上没有给用户添加卡片。这就是“不生效”且无报错的原因。
  • 修复: 修改服务层代码,当道具卡不可用时,明确返回错误(如 errors.New("item card not found or disabled")),让接口报错,提示您具体原因。

4. 优惠券添加不生效 (Coupon Issue)

  • 原因: 同上,internal/service/user/coupon_add.go 在优惠券模板未启用时也静默返回成功。
  • 修复: 修改服务层代码,当优惠券不可用时,明确返回错误,确保您能看到操作失败的提示。

执行步骤

  1. 后端: 修复道具卡和优惠券的“静默失败”逻辑,使其报错。
  2. 后端: 在支付回调中增加虚拟发货的错误日志。
  3. 前端: 在订单管理页面增加“退款”按钮并对接接口。
  4. 验证: 通过 curl 或界面操作验证修复效果。