diff --git a/internal/service/order/service.go b/internal/service/order/service.go index c1dbf9e..c529775 100644 --- a/internal/service/order/service.go +++ b/internal/service/order/service.go @@ -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, "无效的订单类型") }