fix: 平台账号后台创建钱包订单时,绕过代理套餐分配检查
后台钱包支付下单时,原逻辑根据卡/设备所属代理店铺触发 套餐分配上架校验,导致平台账号无法为属于代理的卡购买 未被该代理分配的套餐(如 0 元赠送套餐)。 修复:在 CreateAdminOrder wallet 分支中,按买家类型区分: - 代理账号:保留原有校验,确保卡所属代理已分配该套餐 - 平台/超管账号:跳过代理分配检查,仅验证套餐全局状态 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -346,12 +346,24 @@ func (s *Service) CreateAdminOrder(ctx context.Context, req *dto.CreateAdminOrde
|
||||
if req.IotCardID == nil {
|
||||
return nil, errors.New(errors.CodeInvalidParam, "单卡购买必须指定IoT卡ID")
|
||||
}
|
||||
validationResult, err = s.purchaseValidationService.ValidateCardPurchase(ctx, *req.IotCardID, req.PackageIDs)
|
||||
// 平台账号代表平台直接下单,不受卡所属代理的套餐分配限制;
|
||||
// 代理账号下单时,卡所属代理必须已将套餐上架分配
|
||||
if buyerType == model.BuyerTypeAgent {
|
||||
validationResult, err = s.purchaseValidationService.ValidateCardPurchase(ctx, *req.IotCardID, req.PackageIDs)
|
||||
} else {
|
||||
validationResult, err = s.purchaseValidationService.ValidateAdminOfflineCardPurchase(ctx, *req.IotCardID, req.PackageIDs)
|
||||
}
|
||||
} else if req.OrderType == model.OrderTypeDevice {
|
||||
if req.DeviceID == nil {
|
||||
return nil, errors.New(errors.CodeInvalidParam, "设备购买必须指定设备ID")
|
||||
}
|
||||
validationResult, err = s.purchaseValidationService.ValidateDevicePurchase(ctx, *req.DeviceID, req.PackageIDs)
|
||||
// 平台账号代表平台直接下单,不受设备所属代理的套餐分配限制;
|
||||
// 代理账号下单时,设备所属代理必须已将套餐上架分配
|
||||
if buyerType == model.BuyerTypeAgent {
|
||||
validationResult, err = s.purchaseValidationService.ValidateDevicePurchase(ctx, *req.DeviceID, req.PackageIDs)
|
||||
} else {
|
||||
validationResult, err = s.purchaseValidationService.ValidateAdminOfflineDevicePurchase(ctx, *req.DeviceID, req.PackageIDs)
|
||||
}
|
||||
} else {
|
||||
return nil, errors.New(errors.CodeInvalidParam, "无效的订单类型")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user