add huibo ivyz4y27

This commit is contained in:
2026-04-28 12:25:41 +08:00
parent 4f64c22ebc
commit 3b7bf1052e
12 changed files with 632 additions and 6 deletions

View File

@@ -10,6 +10,7 @@ import (
"time"
"github.com/go-playground/validator/v10"
"tyapi-server/internal/shared/pdfvalidate"
)
// RegisterCustomValidators 注册所有自定义验证器
@@ -104,6 +105,9 @@ func RegisterCustomValidators(validate *validator.Validate) {
// Base64编码格式验证器
validate.RegisterValidation("base64", validateBase64)
validate.RegisterValidation("validBase64", validateBase64)
// PDF 文件 Base64与汇博授权书等场景一致仅 PDF≤500KB
validate.RegisterValidation("validBase64PDF", validateBase64PDF)
}
// validatePhone 手机号验证
@@ -1037,3 +1041,16 @@ func validateBase64(fl validator.FieldLevel) bool {
_, err := base64.StdEncoding.DecodeString(base64Str)
return err == nil
}
// validateBase64PDF先将入参当作 Base64 解码为二进制,再对二进制做 PDF 校验(与发往数据源的逻辑一致)。
func validateBase64PDF(fl validator.FieldLevel) bool {
base64Str := strings.TrimSpace(fl.Field().String())
if base64Str == "" {
return true
}
decoded, err := base64.StdEncoding.DecodeString(base64Str)
if err != nil {
return false
}
return pdfvalidate.ValidateDecodedPDFBinary(decoded) == nil
}