diff --git a/internal/service/order/service.go b/internal/service/order/service.go index eb40a30..28ff23e 100644 --- a/internal/service/order/service.go +++ b/internal/service/order/service.go @@ -398,25 +398,44 @@ func (s *Service) CreateAdminOrder(ctx context.Context, req *dto.CreateAdminOrde // 根据支付方式分别处理 if req.PaymentMethod == model.PaymentMethodOffline { - // ==== 场景 1:平台代购(offline)==== - purchaseBuyerID, buyerCostPrice, purchasePaidAt, err := s.resolvePurchaseOnBehalfInfo(ctx, validationResult) - if err != nil { - return nil, err - } - orderBuyerType = model.BuyerTypeAgent - orderBuyerID = purchaseBuyerID - totalAmount = buyerCostPrice - paymentMethod = model.PaymentMethodOffline - paymentStatus = model.PaymentStatusPaid - paidAt = purchasePaidAt - isPurchaseOnBehalf = true - sellerCostPrice = buyerCostPrice + // ==== 场景 1:offline(线下支付)==== + isPlatformOwned := resourceShopID == nil || *resourceShopID == 0 - // 设置操作者信息(平台代购) - operatorID = nil - operatorType = constants.OwnerTypePlatform - purchaseRole = model.PurchaseRolePurchasedByPlatform - actualPaidAmount = nil + if isPlatformOwned { + // ==== 子场景 1.1:平台自营(资源未分配给代理商)==== + // 平台直接销售给终端用户,无代理商参与,使用零售价,无需查询分配配置 + orderBuyerType = model.BuyerTypePersonal + orderBuyerID = 0 + paymentMethod = model.PaymentMethodOffline + paymentStatus = model.PaymentStatusPaid + paidAt = &now + isPurchaseOnBehalf = false + sellerCostPrice = 0 + operatorID = nil + operatorType = constants.OwnerTypePlatform + purchaseRole = model.PurchaseRoleSelfPurchase + actualPaidAmount = nil + } else { + // ==== 子场景 1.2:平台代购(资源属于代理商,平台代为购买)==== + purchaseBuyerID, buyerCostPrice, purchasePaidAt, err := s.resolvePurchaseOnBehalfInfo(ctx, validationResult) + if err != nil { + return nil, err + } + orderBuyerType = model.BuyerTypeAgent + orderBuyerID = purchaseBuyerID + totalAmount = buyerCostPrice + paymentMethod = model.PaymentMethodOffline + paymentStatus = model.PaymentStatusPaid + paidAt = purchasePaidAt + isPurchaseOnBehalf = true + sellerCostPrice = buyerCostPrice + + // 设置操作者信息(平台代购) + operatorID = nil + operatorType = constants.OwnerTypePlatform + purchaseRole = model.PurchaseRolePurchasedByPlatform + actualPaidAmount = nil + } } else if req.PaymentMethod == model.PaymentMethodWallet { // ==== 场景 2:代理钱包支付(wallet)====