validator/define/rule.go

94 lines
4.6 KiB
Go
Raw Permalink Normal View History

2024-04-29 12:17:18 +08:00
// Package define ...
//
// Description : define ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2024-04-29 10:51
package define
// FieldRule 字段验证规则
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:52 2024/4/29
type FieldRule struct {
Path string `json:"path"` // 字段路径
Type string `json:"type"` // 数据类型, 具体枚举值参见 git.zhangdeman.cn/zhangdeman/consts
2024-04-29 17:29:46 +08:00
DisableRewrite bool `json:"disable_rewrite"` // 验证完相关数据类型之后, 不要重新给字段赋值
2024-07-09 21:55:43 +08:00
DefaultValue any `json:"default_value"` // 默认值, 统一以字符串传入, 会转为最终设置的类型
2024-04-29 12:17:18 +08:00
IsRequired bool `json:"is_required"` // 是否必传
2024-04-29 14:08:50 +08:00
AllowEmpty bool `json:"allow_empty"` // 必传时空字符串是否合法
AllowZero bool `json:"allow_zero"` // 必传数字, 0 是否合法
AllowNil bool `json:"allow_nil"` // 必传时, nil值是否合法
2024-05-17 14:08:52 +08:00
DisableAutoTrimSpace bool `json:"disable_auto_trim_space"` // 自动去除前后空格
2024-05-01 22:37:51 +08:00
DisableAutoConvert bool `json:"disable_auto_convert"` // 禁用自动格式转换, 不禁用情况下, ["1","2","3"] 可以转换成 [1,2,3] , "12.34" 可以转换成 12.34
2024-04-29 12:17:18 +08:00
RequiredConditionGroup [][]RequiredCondition `json:"required_condition_group"` // 满足何种条件,字段必传,不配置则为无差别必传, 组之间是或条件, 满足一组即命中, 组之内为与条件
ValueLimit *ValueLimit `json:"value_limit"` // 数据值的限制
2024-04-30 22:22:28 +08:00
SliceConfig *SliceConfig `json:"slice_config"` // 数组转化的配置
MapConfig *MapConfig `json:"map_config"` // 转换对象的配置
2024-04-29 12:17:18 +08:00
}
// RequiredCondition 定义必传条件
//
// Author : zhangdeman001@ke.com<张德满>
//
// Date : 10:58 2024/4/29
type RequiredCondition struct {
2024-05-16 21:12:17 +08:00
DependOnField string `json:"depend_on_field"` // 依赖数据源中的那一个字段
DependOnFieldType string `json:"depend_on_field_type"` // 依赖数据源数据类型
2024-04-29 17:29:46 +08:00
DependOnFieldStatus []string `json:"depend_on_field_status"` // 依赖数据状态 : NOT_FOUND / IS_NIL / IS_ZERO / IS_EMPTY / IS_FALSE
2024-04-29 12:17:18 +08:00
}
// ValueLimit 取值的限制
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:15 2024/4/29
type ValueLimit struct {
2024-04-29 17:29:46 +08:00
EnumList []string `json:"enum_list"` // 枚举值列表, 仅对 int / float / string 生效
Min *float64 `json:"min"` // 最小值(包含), 对于 int/float, 此值为最小取值, 对于int/map/slice辞职问最小长度
Max *float64 `json:"max"` // 最大值(不包含), 对于 int/float, 此值为最大取值, 对于int/map/slice辞职问最大长度
String *StringValueLimit `json:"string"` // 字符串值的限制
Map *MapValueLimit `json:"map"` // map验证
2024-04-29 12:17:18 +08:00
}
// StringValueLimit 字符串类型值的限制
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:16 2024/4/29
type StringValueLimit struct {
2024-05-16 21:38:52 +08:00
IncludeSubStrList []string `json:"include_sub_str_list"` // 必须包含指定的子串, 必须全部包含
NotIncludeSubStrList []string `json:"not_include_sub_str_list"` // 必须不能包含的子串, 包含任意一个都不行
2024-04-29 12:17:18 +08:00
}
// MapValueLimit map数据的限制
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:23 2024/4/29
type MapValueLimit struct {
IncludeFieldList []string `json:"include_field_list"` // 必须存在的字段列表
}
2024-04-30 22:22:28 +08:00
// SliceConfig slice的配置
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 21:34 2024/4/30
type SliceConfig struct {
Mode string `json:"mode"` // REAL - 输入直接是slice MARSHAL - json序列化之后的字符串 WITH_SPLIT_CHAR - 使用指定字符串分隔
DisableIgnoreEmpty bool `json:"disable_ignore_empty"` // 指定字符分割的时候, 忽略空字符串
2024-04-30 22:22:28 +08:00
SplitChar string `json:"split_char"` // 数组转换的分隔符, 当输入模式是 WITH_SPLIT_CHAR 时生效
}
// MapConfig map配置
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:18 2024/6/23
type MapConfig struct {
Mode string `json:"mode"` // REAL - 输入直接是map MARSHAL - json序列化之后的字符串
}