fix: 修复C端订单差价佣金计算错误及自动购包订单系列ID缺失问题
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m11s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m11s
- C端普通订单(createPackageOrder)创建时未设置 SellerCostPrice, 导致底层店铺得到整个零售价作为差价佣金,上级代理链无法获得任何佣金。 修复:在 createPackageOrder 中查询卖家成本价并写入订单字段。 - purchase_validation 新增 GetCostPrice 方法,供 C 端订单查询代理渠道成本价。 - auto_purchase 自动购包订单未设置 SeriesID 和 SellerCostPrice, 导致差价佣金计算被整体跳过。修复:在 ProcessTask 中从卡/设备获取 SeriesID,从套餐分配记录获取 SellerCostPrice,传入 buildOrderAndItems。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -284,7 +284,19 @@ func (s *Service) createPackageOrder(
|
||||
redisKey string,
|
||||
created *bool,
|
||||
) (*dto.ClientCreateOrderResponse, error) {
|
||||
order, err := s.buildPendingOrder(customerID, validationResult)
|
||||
// 查询卖家成本价,用于差价佣金链式计算的起点
|
||||
// 平台直销(sellerShopID == 0)时成本价为 0,CalculateCostDiffCommission 会直接跳过
|
||||
var sellerCostPrice int64
|
||||
sellerShopID := resolveSellerShopID(validationResult)
|
||||
if sellerShopID > 0 && len(validationResult.Packages) > 0 {
|
||||
costPrice, err := s.purchaseValidationService.GetCostPrice(ctx, validationResult.Packages[0], sellerShopID)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(errors.CodeInternalError, err, "查询卖家成本价失败")
|
||||
}
|
||||
sellerCostPrice = costPrice
|
||||
}
|
||||
|
||||
order, err := s.buildPendingOrder(customerID, validationResult, sellerCostPrice)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -389,7 +401,7 @@ func (s *Service) createForceRechargeOrder(
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *Service) buildPendingOrder(customerID uint, result *purchase_validation.PurchaseValidationResult) (*model.Order, error) {
|
||||
func (s *Service) buildPendingOrder(customerID uint, result *purchase_validation.PurchaseValidationResult, sellerCostPrice int64) (*model.Order, error) {
|
||||
orderType := resolveOrderType(result)
|
||||
if orderType == "" {
|
||||
return nil, errors.New(errors.CodeInvalidParam)
|
||||
@@ -413,6 +425,7 @@ func (s *Service) buildPendingOrder(customerID uint, result *purchase_validation
|
||||
Source: constants.OrderSourceClient,
|
||||
Generation: resolveGeneration(result),
|
||||
ExpiresAt: &expiresAt,
|
||||
SellerCostPrice: sellerCostPrice,
|
||||
}
|
||||
|
||||
if result.Card != nil {
|
||||
|
||||
Reference in New Issue
Block a user