From 8efe79526aa84100c8f45653ef233bc07ee92c5c Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 2 Mar 2026 11:44:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E8=87=AA=E8=90=A5=E8=B5=84=E6=BA=90=EF=BC=88=E6=9C=AA=E5=88=86?= =?UTF-8?q?=E9=85=8D=E4=BB=A3=E7=90=86=EF=BC=89=E6=97=A0=E6=B3=95=E7=BA=BF?= =?UTF-8?q?=E4=B8=8B=E4=B8=8B=E5=8D=95=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit offline 支付分支新增平台自营子场景判断: - 资源 shopID 为空时(未分配给任何代理商),使用零售价直接创建订单 - 资源 shopID 不为空时(属于代理商),走原有平台代购逻辑 Co-Authored-By: Claude Sonnet 4.6 --- internal/service/order/service.go | 55 +++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 18 deletions(-) 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)====