From bb88c78c82afba0d33e65ff25dc3dbe7607afa3a Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Sat, 1 Nov 2025 21:19:21 +0800 Subject: [PATCH] fix form_config_service --- .../api/services/form_config_service.go | 44 +++++++-- internal/shared/validator/translations.go | 96 ++++++++++++++++++- 2 files changed, 131 insertions(+), 9 deletions(-) diff --git a/internal/domains/api/services/form_config_service.go b/internal/domains/api/services/form_config_service.go index cba6d6f..502db1e 100644 --- a/internal/domains/api/services/form_config_service.go +++ b/internal/domains/api/services/form_config_service.go @@ -304,6 +304,10 @@ func (s *FormConfigServiceImpl) getFieldType(fieldType reflect.Type, validation return "text" } else if strings.Contains(validation, "姓名") { return "text" + } else if strings.Contains(validation, "时间范围格式") { + return "text" // time_range是HH:MM-HH:MM格式,使用文本输入 + } else if strings.Contains(validation, "授权日期格式") { + return "text" // auth_date是YYYYMMDD-YYYYMMDD格式,使用文本输入 } else if strings.Contains(validation, "日期") { return "date" } else if strings.Contains(validation, "链接") { @@ -344,7 +348,13 @@ func (s *FormConfigServiceImpl) generateFieldLabel(jsonTag string) string { "mobile_type": "手机类型", "start_date": "开始日期", "years": "年数", - "bank_card": "银行卡号", + "bank_card": "银行卡号", + "user_type": "关系类型", + "vehicle_type": "车辆类型", + "page_num": "页码", + "page_size": "每页数量", + "use_scenario": "使用场景", + "auth_authorize_file_code": "授权文件编码", } if label, exists := labelMap[jsonTag]; exists { @@ -366,8 +376,8 @@ func (s *FormConfigServiceImpl) generateExampleValue(fieldType reflect.Type, jso "ent_name": "示例企业有限公司", "legal_person": "王五", "ent_code": "91110000123456789X", - "auth_date": "2024-01-01", - "time_range": "2024-01-01至2024-12-31", + "auth_date": "20240101-20241231", + "time_range": "09:00-18:00", "authorized": "1", "years": "5", "bank_card": "6222021234567890123", @@ -375,7 +385,13 @@ func (s *FormConfigServiceImpl) generateExampleValue(fieldType reflect.Type, jso "start_date": "2024-01-01", "unique_id": "UNIQUE123456", "return_url": "https://example.com/return", - "authorization_url": "https://example.com/auth", + "authorization_url": "https://example.com/auth20250101.pdf", + "user_type": "1", + "vehicle_type": "0", + "page_num": "1", + "page_size": "10", + "use_scenario": "1", + "auth_authorize_file_code": "AUTH123456", } if example, exists := exampleMap[jsonTag]; exists { @@ -406,8 +422,8 @@ func (s *FormConfigServiceImpl) generatePlaceholder(jsonTag string, fieldType st "ent_name": "请输入企业全称", "legal_person": "请输入法人真实姓名", "ent_code": "请输入统一社会信用代码", - "auth_date": "请选择授权日期", - "time_range": "请输入查询时间范围", + "auth_date": "请输入授权日期范围(YYYYMMDD-YYYYMMDD)", + "time_range": "请输入时间范围(HH:MM-HH:MM)", "authorized": "请选择是否授权", "years": "请输入查询年数(0-100)", "bank_card": "请输入银行卡号", @@ -416,6 +432,12 @@ func (s *FormConfigServiceImpl) generatePlaceholder(jsonTag string, fieldType st "unique_id": "请输入唯一标识", "return_url": "请输入返回链接", "authorization_url": "请输入授权链接", + "user_type": "请选择关系类型", + "vehicle_type": "请选择车辆类型", + "page_num": "请输入页码", + "page_size": "请输入每页数量(1-100)", + "use_scenario": "请选择使用场景", + "auth_authorize_file_code": "请输入授权文件编码", } if placeholder, exists := placeholderMap[jsonTag]; exists { @@ -448,8 +470,8 @@ func (s *FormConfigServiceImpl) generateDescription(jsonTag string, validation s "ent_name": "请输入企业全称", "legal_person": "请输入法人真实姓名", "ent_code": "请输入统一社会信用代码", - "auth_date": "请输入授权日期,格式:YYYY-MM-DD", - "time_range": "请输入查询时间范围", + "auth_date": "请输入授权日期范围,格式:YYYYMMDD-YYYYMMDD,且日期范围必须包括今天", + "time_range": "请输入时间范围,格式:HH:MM-HH:MM", "authorized": "请输入是否授权:0-未授权,1-已授权", "years": "请输入查询年数(0-100)", "bank_card": "请输入银行卡号", @@ -458,6 +480,12 @@ func (s *FormConfigServiceImpl) generateDescription(jsonTag string, validation s "unique_id": "请输入唯一标识", "return_url": "请输入返回链接", "authorization_url": "请输入授权链接", + "user_type": "关系类型:1-ETC开户人;2-车辆所有人;3-ETC经办人(默认1-ETC开户人)", + "vehicle_type": "车辆类型:0-客车;1-货车;2-全部(默认查全部)", + "page_num": "请输入页码,从1开始", + "page_size": "请输入每页数量,范围1-100", + "use_scenario": "使用场景:1-信贷审核;2-保险评估;3-招聘背景调查;4-其他业务场景;99-其他", + "auth_authorize_file_code": "请输入授权文件编码", } if desc, exists := descMap[jsonTag]; exists { diff --git a/internal/shared/validator/translations.go b/internal/shared/validator/translations.go index 9122e37..60afac4 100644 --- a/internal/shared/validator/translations.go +++ b/internal/shared/validator/translations.go @@ -187,13 +187,68 @@ func registerCustomFieldTranslations(validate *validator.Validate, trans ut.Tran return t }) - // 授权日期翻译 + // 授权日期翻译(兼容两种标签) validate.RegisterTranslation("auth_date", trans, func(ut ut.Translator) error { return ut.Add("auth_date", "{0}格式不正确,必须是YYYYMMDD-YYYYMMDD格式,且日期范围必须包括今天", true) }, func(ut ut.Translator, fe validator.FieldError) string { t, _ := ut.T("auth_date", getFieldDisplayName(fe.Field())) return t }) + + validate.RegisterTranslation("validAuthDate", trans, func(ut ut.Translator) error { + return ut.Add("validAuthDate", "{0}格式不正确,必须是YYYYMMDD-YYYYMMDD格式,且日期范围必须包括今天", true) + }, func(ut ut.Translator, fe validator.FieldError) string { + t, _ := ut.T("validAuthDate", getFieldDisplayName(fe.Field())) + return t + }) + + // 时间范围翻译 + validate.RegisterTranslation("validTimeRange", trans, func(ut ut.Translator) error { + return ut.Add("validTimeRange", "{0}格式不正确,必须是HH:MM-HH:MM格式", true) + }, func(ut ut.Translator, fe validator.FieldError) string { + t, _ := ut.T("validTimeRange", getFieldDisplayName(fe.Field())) + return t + }) + + // 日期翻译 + validate.RegisterTranslation("validDate", trans, func(ut ut.Translator) error { + return ut.Add("validDate", "{0}格式不正确,必须是YYYY-MM-DD格式", true) + }, func(ut ut.Translator, fe validator.FieldError) string { + t, _ := ut.T("validDate", getFieldDisplayName(fe.Field())) + return t + }) + + // 统一社会信用代码翻译(validUSCI) + validate.RegisterTranslation("validUSCI", trans, func(ut ut.Translator) error { + return ut.Add("validUSCI", "{0}格式不正确,必须是18位统一社会信用代码", true) + }, func(ut ut.Translator, fe validator.FieldError) string { + t, _ := ut.T("validUSCI", getFieldDisplayName(fe.Field())) + return t + }) + + // 手机号翻译(validMobileNo) + validate.RegisterTranslation("validMobileNo", trans, func(ut ut.Translator) error { + return ut.Add("validMobileNo", "{0}格式不正确,必须是11位手机号", true) + }, func(ut ut.Translator, fe validator.FieldError) string { + t, _ := ut.T("validMobileNo", getFieldDisplayName(fe.Field())) + return t + }) + + // 银行卡号翻译 + validate.RegisterTranslation("validBankCard", trans, func(ut ut.Translator) error { + return ut.Add("validBankCard", "{0}格式不正确,必须是有效的银行卡号", true) + }, func(ut ut.Translator, fe validator.FieldError) string { + t, _ := ut.T("validBankCard", getFieldDisplayName(fe.Field())) + return t + }) + + // 姓名翻译(validName) + validate.RegisterTranslation("validName", trans, func(ut ut.Translator) error { + return ut.Add("validName", "{0}格式不正确,必须包含至少一个汉字或英文字母,长度1-50字符", true) + }, func(ut ut.Translator, fe validator.FieldError) string { + t, _ := ut.T("validName", getFieldDisplayName(fe.Field())) + return t + }) // 授权书URL翻译 validate.RegisterTranslation("authorization_url", trans, func(ut ut.Translator) error { @@ -218,6 +273,45 @@ func registerCustomFieldTranslations(validate *validator.Validate, trans ut.Tran t, _ := ut.T("validReturnURL", getFieldDisplayName(fe.Field())) return t }) + + // 身份证号翻译(validIDCard) + validate.RegisterTranslation("validIDCard", trans, func(ut ut.Translator) error { + return ut.Add("validIDCard", "{0}格式不正确,必须是18位身份证号", true) + }, func(ut ut.Translator, fe validator.FieldError) string { + t, _ := ut.T("validIDCard", getFieldDisplayName(fe.Field())) + return t + }) + + // 手机类型翻译 + validate.RegisterTranslation("validMobileType", trans, func(ut ut.Translator) error { + return ut.Add("validMobileType", "{0}格式不正确,必须是:移动、联通、电信、广电或虚拟运营商", true) + }, func(ut ut.Translator, fe validator.FieldError) string { + t, _ := ut.T("validMobileType", getFieldDisplayName(fe.Field())) + return t + }) + + // 授权链接翻译 + validate.RegisterTranslation("validAuthorizationURL", trans, func(ut ut.Translator) error { + return ut.Add("validAuthorizationURL", "{0}必须是有效的URL地址,且文件类型必须是PDF、JPG、JPEG、PNG或BMP格式", true) + }, func(ut ut.Translator, fe validator.FieldError) string { + t, _ := ut.T("validAuthorizationURL", getFieldDisplayName(fe.Field())) + return t + }) + + // 企业名称翻译 + validate.RegisterTranslation("validEnterpriseName", trans, func(ut ut.Translator) error { + return ut.Add("validEnterpriseName", "{0}格式不正确,必须包含至少一个汉字,长度2-100字符", true) + }, func(ut ut.Translator, fe validator.FieldError) string { + t, _ := ut.T("validEnterpriseName", getFieldDisplayName(fe.Field())) + return t + }) + + validate.RegisterTranslation("enterprise_name", trans, func(ut ut.Translator) error { + return ut.Add("enterprise_name", "{0}格式不正确,必须包含至少一个汉字,长度2-100字符", true) + }, func(ut ut.Translator, fe validator.FieldError) string { + t, _ := ut.T("enterprise_name", getFieldDisplayName(fe.Field())) + return t + }) } // getFieldDisplayName 获取字段显示名称(中文)