diff --git a/internal/domains/api/dto/api_request_dto.go b/internal/domains/api/dto/api_request_dto.go index e341bcd..aa12793 100644 --- a/internal/domains/api/dto/api_request_dto.go +++ b/internal/domains/api/dto/api_request_dto.go @@ -599,6 +599,7 @@ type YYSY6F2BReq struct { type IVYZOCR1Req struct { PhotoData string `json:"photo_data" validate:"required,validBase64Image"` + } type YYSY8B1CReq struct { MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"` diff --git a/internal/domains/api/services/processors/ivyz/ivyzocr2_processor.go b/internal/domains/api/services/processors/ivyz/ivyzocr2_processor.go index 7f4c7b3..a421e76 100644 --- a/internal/domains/api/services/processors/ivyz/ivyzocr2_processor.go +++ b/internal/domains/api/services/processors/ivyz/ivyzocr2_processor.go @@ -20,9 +20,17 @@ func ProcessIVYZOCR2Request(ctx context.Context, params []byte, deps *processors if err := deps.Validator.ValidateStruct(paramsDto); err != nil { return nil, errors.Join(processors.ErrInvalidParam, err) } + + if paramsDto.PhotoData == "" && paramsDto.ImageUrl == "" { + return nil, errors.Join(processors.ErrInvalidParam, errors.New("photo_data or image_url is required")) + } - reqFormData := map[string]interface{}{ - "photo_data": paramsDto.PhotoData, + // 2选1:有值的用对应 key,空则用另一个 + reqFormData := make(map[string]interface{}) + if paramsDto.PhotoData != "" { + reqFormData["image"] = paramsDto.PhotoData + } else { + reqFormData["url"] = paramsDto.ImageUrl } // 以表单方式调用数脉 API;参数在 CallAPIForm 内转为 application/x-www-form-urlencoded