统一订单单状态模型

This commit is contained in:
yml2213
2026-07-31 17:02:19 +08:00
parent 677bdbbc1c
commit 04130e5ec8
19 changed files with 300 additions and 345 deletions
+17 -14
View File
@@ -242,8 +242,9 @@ func (s *DeliveryService) submit(orderNo, gameAccount, bindUUID string, apiClien
if err != nil {
return nil, err
}
if order.FulfillmentStatus == model.FulfillmentStatusProcessing ||
order.FulfillmentStatus == model.FulfillmentStatusSucceeded ||
orderStatus := normalizeOrderStatus(order)
if orderStatus == model.OrderStatusDelivering ||
orderStatus == model.OrderStatusDelivered ||
strings.TrimSpace(order.ProviderOrderNo) != "" ||
strings.Contains(order.ResultData, "\"queue_order_id\"") {
if existing := buildExistingDeliverySubmitResult(order); existing != nil {
@@ -311,7 +312,7 @@ func (s *DeliveryService) submit(orderNo, gameAccount, bindUUID string, apiClien
MerchantID: order.MerchantID,
APIClientID: apiClientID,
OrderNo: order.OrderNo,
Status: "processing",
Status: model.OrderStatusDelivering,
ProviderOrderNo: providerOrderNo,
ResultData: resultData,
})
@@ -320,7 +321,7 @@ func (s *DeliveryService) submit(orderNo, gameAccount, bindUUID string, apiClien
}
return &DeliverySubmitResult{
OrderNo: updated.OrderNo,
Status: updated.FulfillmentStatus,
Status: normalizeOrderStatus(updated),
Message: "已提交上游发货,等待发货结果回传",
ProviderOrderNo: providerOrderNo,
GameAccount: boundAccount,
@@ -341,11 +342,12 @@ func (s *DeliveryService) claimDeliverySubmission(merchantID, apiClientID uint,
}
return err
}
if order.FulfillmentStatus == model.FulfillmentStatusProcessing || order.FulfillmentStatus == model.FulfillmentStatusSucceeded {
orderStatus := normalizeOrderStatus(&order)
if orderStatus == model.OrderStatusDelivering || orderStatus == model.OrderStatusDelivered {
updated = order
return nil
}
if err := validateFulfillmentTransition(&order, model.FulfillmentStatusProcessing, fulfillmentTransitionUpdate); err != nil {
if err := validateOrderStatusTransition(&order, model.OrderStatusDelivering, fulfillmentTransitionUpdate); err != nil {
return newDeliveryHTTPError(http.StatusConflict, "订单暂不可发货")
}
raw, _ := json.Marshal(map[string]interface{}{
@@ -354,9 +356,9 @@ func (s *DeliveryService) claimDeliverySubmission(merchantID, apiClientID uint,
"provider_order_stage": "claimed",
})
if err := tx.Model(&order).Updates(map[string]interface{}{
"fulfillment_status": model.FulfillmentStatusProcessing,
"result_data": string(raw),
"failure_reason": "",
"order_status": model.OrderStatusDelivering,
"result_data": string(raw),
"failure_reason": "",
}).Error; err != nil {
return err
}
@@ -389,7 +391,7 @@ func (s *DeliveryService) markDeliverySubmissionFailed(order *model.FulfillmentO
MerchantID: order.MerchantID,
APIClientID: apiClientID,
OrderNo: order.OrderNo,
Status: model.FulfillmentStatusFailed,
Status: model.OrderStatusShipFailed,
FailureReason: reason,
ResultData: map[string]interface{}{
"source": "delivery_proxy",
@@ -492,8 +494,8 @@ func buildExistingDeliverySubmitResult(order *model.FulfillmentOrder) *DeliveryS
if order == nil {
return nil
}
switch order.FulfillmentStatus {
case model.FulfillmentStatusProcessing, model.FulfillmentStatusSucceeded:
switch normalizeOrderStatus(order) {
case model.OrderStatusDelivering, model.OrderStatusDelivered:
default:
return nil
}
@@ -506,12 +508,13 @@ func buildExistingDeliverySubmitResult(order *model.FulfillmentOrder) *DeliveryS
stringFromMap(resultData, "provider_order_no"),
)
message := "订单暂时正在履约中,请稍后查询"
if order.FulfillmentStatus == model.FulfillmentStatusSucceeded {
status := normalizeOrderStatus(order)
if status == model.OrderStatusDelivered {
message = "订单已履约成功"
}
return &DeliverySubmitResult{
OrderNo: order.OrderNo,
Status: order.FulfillmentStatus,
Status: status,
Message: message,
ProviderOrderNo: providerOrderNo,
UpstreamOrder: resultData,