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

65 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 关联 Issue
Closes HIF-16
## 改动摘要
拆分订单退款终态与队列 claim 临时态:退款成功后写入 `status=7``status=6` 仅保留为 worker claimed 状态,避免后台恢复任务把退款订单重新入队。
## 改动细节
- `internal/logic/admin/order/refundOrderLogic.go`:退款状态改为 `7`,重复退款优先检查 `type=24` 退款审计日志,再兼容旧的 `333` 佣金退款日志。
- `queue/logic/order/activateOrderLogic.go``queue/logic/order/stuckOrderRecoveryLogic.go`release/recovery 只按真实 `claimed(6)` 回退,不再依赖 `333` 日志猜测状态语义。
- `internal/logic/admin/order/getOrderListLogic.go`:管理端状态展示改为 `6=claimed``7=refunded`
- `internal/model/log/refund.go`:新增 `HasOrderRefundLog`,用于基于退款审计日志做幂等判断。
- `internal/logic/admin/order/refundOrderLogic_test.go``internal/model/log/refund_test.go``queue/logic/order/order_status_recovery_test.go`:补充退款写 `7`、重复退款、退款日志判断、claim release/recovery 行为测试。
## 测试计划
- [ ] `go build ./...` 通过
- [x] `go vet ./...` 通过
- [ ] `go test -race ./... -count=1` 通过
- [ ] golangci-lint 通过
- [x] 新增/修改的逻辑有对应单测覆盖
- [x] (如涉及 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 自检清单
- [x] PR 标题符合 commitlint 规范(`修复/新功能/重构/文档/配置(#<num>): ...`
- [x] 分支命名 `fix/<num>-…` / `feat/<num>-…` / `chore/…`
- [x] 目标分支 = `internal`
- [x] 改动 scope 与 Issue 描述一致,无 scope creep
- [x] **无无关代码改动**(架构师红线)
- [x] 无密钥/凭证泄露
- [ ] CI 全绿
- [ ] 测试工程师已验收(如涉及业务逻辑)