修复开放接口 wallet/package-orders 支持 IMEI 下单

This commit is contained in:
2026-06-23 11:36:51 +09:00
parent 2885b503b3
commit 07e55d9f38
2 changed files with 15 additions and 10 deletions

View File

@@ -106,7 +106,7 @@ type AgentOpenAPIWalletTransactionListRequest struct {
// AgentOpenAPIWalletPackageOrderRequest 开放接口钱包套餐购买请求 // AgentOpenAPIWalletPackageOrderRequest 开放接口钱包套餐购买请求
type AgentOpenAPIWalletPackageOrderRequest struct { 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:"套餐编码(一次只能购买一个套餐)"` PackageCode string `json:"package_code" validate:"required,min=1,max=100" required:"true" minLength:"1" maxLength:"100" description:"套餐编码(一次只能购买一个套餐)"`
} }

View File

@@ -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, "卡标识不能为空"))) resp.FailedCards = append(resp.FailedCards, buildFailedCard(rawCardNo, errors.New(errors.CodeInvalidParam, "卡标识不能为空")))
continue continue
} }
card, err := s.resolveOpenAPICard(ctx, cardNo) var identifier string
if err != nil { card, cardErr := s.resolveOpenAPICard(ctx, cardNo)
resp.FailedCards = append(resp.FailedCards, buildFailedCard(cardNo, err)) if cardErr != nil {
continue // 兜底:尝试解析为设备标识(支持 IMEI/虚拟号)
} device, devErr := s.resolveOpenAPIDevice(ctx, cardNo)
if devErr != nil {
// 卡已绑定设备时,自动转为设备维度购买 resp.FailedCards = append(resp.FailedCards, buildFailedCard(cardNo, cardErr))
identifier := card.ICCID continue
if !card.IsStandalone { }
identifier = device.VirtualNo
} else if !card.IsStandalone {
// 卡已绑定设备时,自动转为设备维度购买
binding, bindErr := s.deviceSimBindingStore.GetActiveBindingByCardID(ctx, card.ID) binding, bindErr := s.deviceSimBindingStore.GetActiveBindingByCardID(ctx, card.ID)
if bindErr != nil { if bindErr != nil {
resp.FailedCards = append(resp.FailedCards, buildFailedCard(cardNo, errors.Wrap(errors.CodeInternalError, bindErr, "查询卡绑定设备失败"))) 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 continue
} }
identifier = device.VirtualNo identifier = device.VirtualNo
} else {
identifier = card.ICCID
} }
orderResp, err := s.orderService.CreateAdminOrder(ctx, &dto.CreateAdminOrderRequest{ orderResp, err := s.orderService.CreateAdminOrder(ctx, &dto.CreateAdminOrderRequest{