diff --git a/internal/domains/api/dto/api_request_dto.go b/internal/domains/api/dto/api_request_dto.go index a65ff9f..46047c3 100644 --- a/internal/domains/api/dto/api_request_dto.go +++ b/internal/domains/api/dto/api_request_dto.go @@ -500,3 +500,7 @@ type IVYZ8I9JReq struct { IDCard string `json:"id_card" validate:"required,validIDCard"` MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` } + +type YYSY9E4AReq struct { + MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` +} diff --git a/internal/domains/api/services/api_request_service.go b/internal/domains/api/services/api_request_service.go index aeac680..cc08b5b 100644 --- a/internal/domains/api/services/api_request_service.go +++ b/internal/domains/api/services/api_request_service.go @@ -153,6 +153,7 @@ func registerAllProcessors(combService *comb.CombService) { "YYSY9A1B": yysy.ProcessYYSY9A1BRequest, "YYSY8C2D": yysy.ProcessYYSY8C2DRequest, "YYSY7D3E": yysy.ProcessYYSY7D3ERequest, + "YYSY9E4A": yysy.ProcessYYSY9E4ARequest, // IVYZ系列处理器 "IVYZ0B03": ivyz.ProcessIVYZ0B03Request, diff --git a/internal/domains/api/services/form_config_service.go b/internal/domains/api/services/form_config_service.go index 197bd01..c5c377c 100644 --- a/internal/domains/api/services/form_config_service.go +++ b/internal/domains/api/services/form_config_service.go @@ -145,6 +145,7 @@ func (s *FormConfigServiceImpl) getDTOStruct(apiCode string) interface{} { "YYSY9A1B": &dto.YYSY9A1BReq{}, "YYSY8C2D": &dto.YYSY8C2DReq{}, "YYSY7D3E": &dto.YYSY7D3EReq{}, + "YYSY9E4A": &dto.YYSY9E4AReq{}, "JRZQ6F2A": &dto.JRZQ6F2AReq{}, "JRZQ8B3C": &dto.JRZQ8B3CReq{}, "JRZQ9D4E": &dto.JRZQ9D4EReq{}, diff --git a/internal/domains/api/services/processors/yysy/yysy9e4a_processor.go b/internal/domains/api/services/processors/yysy/yysy9e4a_processor.go new file mode 100644 index 0000000..cad567e --- /dev/null +++ b/internal/domains/api/services/processors/yysy/yysy9e4a_processor.go @@ -0,0 +1,49 @@ +package yysy + +import ( + "context" + "encoding/json" + "errors" + + "tyapi-server/internal/domains/api/dto" + "tyapi-server/internal/domains/api/services/processors" + "tyapi-server/internal/infrastructure/external/zhicha" +) + +// ProcessYYSY9E4ARequest YYSY9E4A API处理方法 - 手机号归属地查询 +func ProcessYYSY9E4ARequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.YYSY9E4AReq + if err := json.Unmarshal(params, ¶msDto); err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + if err := deps.Validator.ValidateStruct(paramsDto); err != nil { + return nil, errors.Join(processors.ErrInvalidParam, err) + } + + encryptedMobileNo, err := deps.ZhichaService.Encrypt(paramsDto.MobileNo) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + reqData := map[string]interface{}{ + "phone": encryptedMobileNo, + } + + respData, err := deps.ZhichaService.CallAPI(ctx, "ZCI026", reqData) + if err != nil { + if errors.Is(err, zhicha.ErrDatasource) { + return nil, errors.Join(processors.ErrDatasource, err) + } else { + return nil, errors.Join(processors.ErrSystem, err) + } + } + + // 将响应数据转换为JSON字节 + respBytes, err := json.Marshal(respData) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + return respBytes, nil +}