From 0deefd9b0efe280e642d9cd3fd2c838c66672a05 Mon Sep 17 00:00:00 2001 From: Mrx <18278715334@163.com> Date: Sun, 7 Jun 2026 21:49:11 +0800 Subject: [PATCH] tax_income_level_v8 --- internal/domains/api/dto/api_request_dto.go | 4 ++ .../processors/ivyz/ivyzs1mp_processor.go | 46 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 internal/domains/api/services/processors/ivyz/ivyzs1mp_processor.go diff --git a/internal/domains/api/dto/api_request_dto.go b/internal/domains/api/dto/api_request_dto.go index 5b03203..540d635 100644 --- a/internal/domains/api/dto/api_request_dto.go +++ b/internal/domains/api/dto/api_request_dto.go @@ -1108,6 +1108,10 @@ type IVYZ9K7FReq struct { Name string `json:"name" validate:"required,min=1,validName"` } +type IVYZS1MPReq struct { + MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` +} + type IVYZA1B3Req struct { IDCard string `json:"id_card" validate:"required,validIDCard"` Name string `json:"name" validate:"required,min=1,validName"` diff --git a/internal/domains/api/services/processors/ivyz/ivyzs1mp_processor.go b/internal/domains/api/services/processors/ivyz/ivyzs1mp_processor.go new file mode 100644 index 0000000..471a035 --- /dev/null +++ b/internal/domains/api/services/processors/ivyz/ivyzs1mp_processor.go @@ -0,0 +1,46 @@ +package ivyz + +import ( + "context" + "encoding/json" + "errors" + + "tyapi-server/internal/domains/api/dto" + "tyapi-server/internal/domains/api/services/processors" + "tyapi-server/internal/infrastructure/external/shumai" +) + +// ProcessIVYZS1MPRequest IVYZS1MP API处理方法运营商在网状态 +func ProcessIVYZS1MPRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.IVYZS1MPReq + 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) + } + + reqData := map[string]interface{}{ + "mobile_no": paramsDto.MobileNo, + } + + // 以表单方式调用数脉 API;参数在 CallAPIForm 内转为 application/x-www-form-urlencoded + apiPath := "/v1/mobile_status/check" + + // 先尝试使用政务接口(app_id2 和 app_secret2) + respBytes, err := deps.ShumaiService.CallAPIForm(ctx, apiPath, reqData) + if err != nil { + if errors.Is(err, shumai.ErrNotFound) { + // 查无记录情况 + return nil, errors.Join(processors.ErrNotFound, err) + } else if errors.Is(err, shumai.ErrDatasource) { + // 数据源错误 + return nil, errors.Join(processors.ErrDatasource, err) + } else if errors.Is(err, shumai.ErrSystem) { + // 系统错误 + return nil, errors.Join(processors.ErrSystem, err) + } + } + return respBytes, nil +}