diff --git a/internal/domains/api/dto/api_request_dto.go b/internal/domains/api/dto/api_request_dto.go index cf37731..d32e84c 100644 --- a/internal/domains/api/dto/api_request_dto.go +++ b/internal/domains/api/dto/api_request_dto.go @@ -683,6 +683,13 @@ type FLXG9C1DReq struct { Authorized string `json:"authorized" validate:"required,oneof=0 1"` } +type DWBG5SAMReq struct { + IDCard string `json:"id_card" validate:"required,validIDCard"` + Name string `json:"name" validate:"required,min=1,validName"` + Phone string `json:"phone" validate:"required,min=11,max=11,validMobileNo"` + AuthorizationURL string `json:"authorization_url" validate:"required,authorization_url"` +} + // 法院被执行人限高版 type FLXG3A9BReq struct { IDCard string `json:"id_card" validate:"required,validIDCard"` diff --git a/internal/domains/api/services/api_request_service.go b/internal/domains/api/services/api_request_service.go index 8c21ec1..d775005 100644 --- a/internal/domains/api/services/api_request_service.go +++ b/internal/domains/api/services/api_request_service.go @@ -365,6 +365,7 @@ func registerAllProcessors(combService *comb.CombService) { "DWBG6A2C": dwbg.ProcessDWBG6A2CRequest, "DWBG8B4D": dwbg.ProcessDWBG8B4DRequest, "DWBG7F3A": dwbg.ProcessDWBG7F3ARequest, + "DWBG5SAM": dwbg.ProcessDWBG5SAMRequest, // FLXG系列处理器 - 风险管控 (包含原FXHY功能) "FLXG8B4D": flxg.ProcessFLXG8B4DRequest, diff --git a/internal/domains/api/services/form_config_service.go b/internal/domains/api/services/form_config_service.go index 9a431e2..67bde47 100644 --- a/internal/domains/api/services/form_config_service.go +++ b/internal/domains/api/services/form_config_service.go @@ -272,6 +272,7 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string "IVYZ38SR": &dto.IVYZ38SRReq{}, //婚姻状态核验(双人) "IVYZ48SR": &dto.IVYZ48SRReq{}, //婚姻状态核验V2(双人) "IVYZ5E22": &dto.IVYZ5E22Req{}, //双人婚姻评估查询zhicha版本 + "DWBG5SAM": &dto.DWBG5SAMReq{}, //天远指迷报告 } // 优先返回已配置的DTO diff --git a/internal/domains/api/services/processors/dwbg/dwbg5sam_processor.go b/internal/domains/api/services/processors/dwbg/dwbg5sam_processor.go new file mode 100644 index 0000000..46856e2 --- /dev/null +++ b/internal/domains/api/services/processors/dwbg/dwbg5sam_processor.go @@ -0,0 +1,67 @@ +package dwbg + +import ( + "context" + "encoding/json" + "errors" + + "tyapi-server/internal/domains/api/dto" + "tyapi-server/internal/domains/api/services/processors" + "tyapi-server/internal/infrastructure/external/zhicha" +) + +// ProcessDWBG5SAMRequest DWBG5SAM 天远指迷报告 +func ProcessDWBG5SAMRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { + var paramsDto dto.DWBG5SAMReq + 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) + } + + encryptedName, err := deps.ZhichaService.Encrypt(paramsDto.Name) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + encryptedIDCard, err := deps.ZhichaService.Encrypt(paramsDto.IDCard) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + encryptedPhone, err := deps.ZhichaService.Encrypt(paramsDto.Phone) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + reqData := map[string]interface{}{ + "name": encryptedName, + "idCard": encryptedIDCard, + "phone": encryptedPhone, + "accessoryUrl": paramsDto.AuthorizationURL, + } + + 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) + } + } + + // 过滤响应数据,删除指定字段 + if respMap, ok := respData.(map[string]interface{}); ok { + delete(respMap, "reportUrl") + } + + // 将响应数据转换为JSON字节 + respBytes, err := json.Marshal(respData) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + return respBytes, nil +}