修复开放接口 wallet/package-orders 支持 IMEI 下单
This commit is contained in:
@@ -106,7 +106,7 @@ type AgentOpenAPIWalletTransactionListRequest struct {
|
||||
|
||||
// AgentOpenAPIWalletPackageOrderRequest 开放接口钱包套餐购买请求
|
||||
type AgentOpenAPIWalletPackageOrderRequest struct {
|
||||
CardNos []string `json:"card_nos" validate:"required,min=1,max=100,dive,min=1,max=100" required:"true" minItems:"1" maxItems:"100" description:"卡标识列表(支持 ICCID、虚拟号、MSISDN)"`
|
||||
CardNos []string `json:"card_nos" validate:"required,min=1,max=100,dive,min=1,max=100" required:"true" minItems:"1" maxItems:"100" description:"卡标识列表(支持 ICCID、虚拟号、MSISDN、设备 IMEI;传入设备 IMEI 时自动转为设备维度购买)"`
|
||||
PackageCode string `json:"package_code" validate:"required,min=1,max=100" required:"true" minLength:"1" maxLength:"100" description:"套餐编码(一次只能购买一个套餐)"`
|
||||
}
|
||||
|
||||
|
||||
@@ -320,15 +320,18 @@ func (s *Service) CreateWalletPackageOrders(ctx context.Context, req *dto.AgentO
|
||||
resp.FailedCards = append(resp.FailedCards, buildFailedCard(rawCardNo, errors.New(errors.CodeInvalidParam, "卡标识不能为空")))
|
||||
continue
|
||||
}
|
||||
card, err := s.resolveOpenAPICard(ctx, cardNo)
|
||||
if err != nil {
|
||||
resp.FailedCards = append(resp.FailedCards, buildFailedCard(cardNo, err))
|
||||
continue
|
||||
}
|
||||
|
||||
// 卡已绑定设备时,自动转为设备维度购买
|
||||
identifier := card.ICCID
|
||||
if !card.IsStandalone {
|
||||
var identifier string
|
||||
card, cardErr := s.resolveOpenAPICard(ctx, cardNo)
|
||||
if cardErr != nil {
|
||||
// 兜底:尝试解析为设备标识(支持 IMEI/虚拟号)
|
||||
device, devErr := s.resolveOpenAPIDevice(ctx, cardNo)
|
||||
if devErr != nil {
|
||||
resp.FailedCards = append(resp.FailedCards, buildFailedCard(cardNo, cardErr))
|
||||
continue
|
||||
}
|
||||
identifier = device.VirtualNo
|
||||
} else if !card.IsStandalone {
|
||||
// 卡已绑定设备时,自动转为设备维度购买
|
||||
binding, bindErr := s.deviceSimBindingStore.GetActiveBindingByCardID(ctx, card.ID)
|
||||
if bindErr != nil {
|
||||
resp.FailedCards = append(resp.FailedCards, buildFailedCard(cardNo, errors.Wrap(errors.CodeInternalError, bindErr, "查询卡绑定设备失败")))
|
||||
@@ -340,6 +343,8 @@ func (s *Service) CreateWalletPackageOrders(ctx context.Context, req *dto.AgentO
|
||||
continue
|
||||
}
|
||||
identifier = device.VirtualNo
|
||||
} else {
|
||||
identifier = card.ICCID
|
||||
}
|
||||
|
||||
orderResp, err := s.orderService.CreateAdminOrder(ctx, &dto.CreateAdminOrderRequest{
|
||||
|
||||
Reference in New Issue
Block a user