Files
hi-server/pr-body-hif-16.md

3.0 KiB
Raw Permalink Blame History

关联 Issue

Closes HIF-16

改动摘要

拆分订单退款终态与队列 claim 临时态:退款成功后写入 status=7status=6 仅保留为 worker claimed 状态,避免后台恢复任务把退款订单重新入队。

改动细节

  • internal/logic/admin/order/refundOrderLogic.go:退款状态改为 7,重复退款优先检查 type=24 退款审计日志,再兼容旧的 333 佣金退款日志。
  • queue/logic/order/activateOrderLogic.goqueue/logic/order/stuckOrderRecoveryLogic.gorelease/recovery 只按真实 claimed(6) 回退,不再依赖 333 日志猜测状态语义。
  • internal/logic/admin/order/getOrderListLogic.go:管理端状态展示改为 6=claimed7=refunded
  • internal/model/log/refund.go:新增 HasOrderRefundLog,用于基于退款审计日志做幂等判断。
  • internal/logic/admin/order/refundOrderLogic_test.gointernal/model/log/refund_test.goqueue/logic/order/order_status_recovery_test.go:补充退款写 7、重复退款、退款日志判断、claim release/recovery 行为测试。

测试计划

  • go build ./... 通过
  • go vet ./... 通过
  • go test -race ./... -count=1 通过
  • golangci-lint 通过
  • 新增/修改的逻辑有对应单测覆盖
  • (如涉及 DB 变更)无 DB migration
  • (如涉及 APIcurl / Postman 验证命令贴在下面
go test ./internal/logic/admin/order ./internal/model/log ./queue/logic/order
ok  	github.com/perfect-panel/server/internal/logic/admin/order
ok  	github.com/perfect-panel/server/internal/model/log
ok  	github.com/perfect-panel/server/queue/logic/order

go test ./...
PASS

go test -v ./...
PASS

go vet ./...
PASS

golangci-lint run --new-from-rev=origin/internal
PASS

说明:本地 lefthook run pre-commit 无法执行,因为环境缺少 lefthook 命令;已手动执行 hook 配置中的等价检查。全量 golangci-lint run 仍会失败在 internal 上已有历史 lint 问题,本分支使用 --new-from-rev=origin/internal 验证未新增 lint 问题。

未做 curl 验证:本地没有可用服务配置与测试数据库,且该改动主要通过事务单测覆盖退款状态与队列恢复行为。

风险 / 回滚

  • 风险:线上若已经存在 status=6 表示已退款的历史订单,本改动不会自动迁移,后续查询会显示为 claimed。建议上线前评估历史数据,可按退款审计日志或旧 333 佣金退款日志筛出并迁移到 status=7
  • 回滚:回滚本 PR 后恢复旧的 status=6 退款语义和 333 日志守卫;不涉及 schema 变更。

Reviewer 自检清单

  • PR 标题符合 commitlint 规范(修复/新功能/重构/文档/配置(#<num>): ...
  • 分支命名 fix/<num>-… / feat/<num>-… / chore/…
  • 目标分支 = internal
  • 改动 scope 与 Issue 描述一致,无 scope creep
  • 无无关代码改动(架构师红线)
  • 无密钥/凭证泄露
  • CI 全绿
  • 测试工程师已验收(如涉及业务逻辑)