This commit is contained in:
Mrx
2026-01-31 17:43:31 +08:00
parent 0091e01574
commit f48289b32b
13 changed files with 409 additions and 117 deletions

View File

@@ -78,10 +78,13 @@ func RegisterCustomValidators(validate *validator.Validate) {
// 非空字符串验证器(不能为空字符串或只包含空格)
validate.RegisterValidation("notEmpty", validateNotEmpty)
// 授权日期验证器
// 授权日期验证器(格式 YYYYMMDD-YYYYMMDD且范围必须包含今天
validate.RegisterValidation("auth_date", validateAuthDate)
validate.RegisterValidation("validAuthDate", validateAuthDate)
// 日期范围验证器(格式 YYYYMMDD-YYYYMMDD开始≤结束不要求包含今天
validate.RegisterValidation("validDateRange", validateDateRange)
// 授权书URL验证器
validate.RegisterValidation("authorization_url", validateAuthorizationURL)
@@ -312,6 +315,32 @@ func validateAuthDate(fl validator.FieldLevel) bool {
return !startDate.After(today) && !endDate.Before(today)
}
// validateDateRange 日期范围验证器
// 格式YYYYMMDD-YYYYMMDD开始日期不能晚于结束日期不要求范围包含今天
func validateDateRange(fl validator.FieldLevel) bool {
s := fl.Field().String()
if s == "" {
return true
}
parts := strings.Split(s, "-")
if len(parts) != 2 {
return false
}
startStr, endStr := parts[0], parts[1]
if len(startStr) != 8 || len(endStr) != 8 {
return false
}
startDate, err := parseYYYYMMDD(startStr)
if err != nil {
return false
}
endDate, err := parseYYYYMMDD(endStr)
if err != nil {
return false
}
return !startDate.After(endDate)
}
// parseYYYYMMDD 解析YYYYMMDD格式的日期字符串
func parseYYYYMMDD(dateStr string) (time.Time, error) {
if len(dateStr) != 8 {