fix: 延期订单超时不关闭、无法继续支付、不能作废
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled

- 支付宝查单把 ACQ.TRADE_NOT_EXIST 当成查单失败,恢复任务永远判为未知,订单停在待支付;
  同一套餐再下单时旧单也关不掉,新单无法创建。改为按"渠道无此订单"处理,过支付截止后关闭
- 延期订单详情对未过期的待支付订单返回 qr_content,后台可展示二维码、H5 可继续支付
- 新增作废待支付订单:后台 POST /orders/:id/close、H5 POST /orders/:id/cancel;作废前先查单,已支付则按支付成功办理
This commit is contained in:
邹进
2026-11-07 20:31:45 +09:00
parent 226a15573a
commit d3face6f66
8 changed files with 244 additions and 3 deletions

View File

@@ -259,6 +259,31 @@ func (h *PackageSilenceHandler) GetOrder(c *fiber.Ctx) error {
return response.Success(c, result)
}
// CloseOrder 作废待支付的延期订单。POST /api/admin/package-silence/orders/:id/close
func (h *PackageSilenceHandler) CloseOrder(c *fiber.Ctx) error {
id, err := silencePathID(c)
if err != nil {
return err
}
var req dto.SilenceOrderCancelRequest
if len(c.Body()) > 0 {
if err := h.bindBody(c, "作废参数不合法", &req); err != nil {
return err
}
}
// 先按数据范围查详情:看不到的订单不能作废
if _, err := h.query.GetOrder(c.UserContext(), id, 0); err != nil {
return err
}
result, err := h.extensions.CancelPendingOrder(c.UserContext(), packagesilenceapp.CancelOrderCommand{
OrderID: id, Reason: req.Reason,
})
if err != nil {
return err
}
return response.Success(c, result)
}
// SubmitSpecial 提交特殊延期(单个 / 批量)。POST /api/admin/package-silence/special
func (h *PackageSilenceHandler) SubmitSpecial(c *fiber.Ctx) error {
var req dto.SilenceSpecialRequest