Files
hi-server/pr-body-hif-21.md
T
shanshanzhong147 c39bfd39dd 修复(#21): 禁止通用订单状态写入claimed (#20)
* 修复(#21): 禁止通用订单状态写入claimed

Co-authored-by: multica-agent <github@multica.ai>

* 文档(#21): 补充PR说明

Co-authored-by: multica-agent <github@multica.ai>

---------

Co-authored-by: multica-agent <github@multica.ai>
2026-06-11 02:47:48 -07:00

2.2 KiB
Raw Blame History

关联 Issue

Closes HIF-21

改动摘要

禁止 PUT /v1/admin/order/status 通过通用改状态入口把订单写成 status=6claimed)或 status=7(refunded)。 这两个状态分别保留给激活 worker 临时 claim 流程和专用退款流程,避免后台或旧前端绕过退款副作用只改订单状态。

改动细节

  • internal/logic/admin/order/updateOrderStatusLogic.go:在入口校验中同时拒绝 status=6status=7,统一返回 OrderStatusError
  • internal/logic/admin/order/updateOrderStatusLogic_test.go:扩充单测,覆盖通用改状态接口对 claimed / refunded 两个保留状态的拒绝行为。

测试计划

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

go test ./...
# 业务相关包通过;tests/acceptance 因 staging https://tapi.hifast.biz 请求超时失败
# FAIL: TestPublicSmoke/error_path_missing_auth
# GET https://tapi.hifast.biz/v1/public/user/info: context deadline exceeded

golangci-lint run
# 当前基线存在与本次改动无关的历史问题,例如:
# pkg/updater/updater.go:301 errcheck
# internal/logic/admin/group/exportGroupResultLogic.go:110 errcheck
# pkg/proc/shutdown.go:19 unused

风险 / 回滚

  • 风险较低:仅收紧 admin 通用改状态接口的允许输入,不改退款逻辑、不改队列状态流转。
  • 若需回滚,直接回退本 PR 即可;不会涉及数据迁移或额外清理。

Reviewer 自检清单

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