|
@@ -13,7 +13,12 @@ type RulesMap map[string]Rules
|
|
|
|
|
|
var CustomizeMap = make(map[string]Rules)
|
|
|
|
|
|
-// 注册自定义规则方案建议在路由初始化层即注册
|
|
|
+//@author: [piexlmax](https://github.com/piexlmax)
|
|
|
+//@function: RegisterRule
|
|
|
+//@description: 注册自定义规则方案建议在路由初始化层即注册
|
|
|
+//@param: key string, rule Rules
|
|
|
+//@return: err error
|
|
|
+
|
|
|
func RegisterRule(key string, rule Rules) (err error) {
|
|
|
if CustomizeMap[key] != nil {
|
|
|
return errors.New(key + "已注册,无法重复注册")
|
|
@@ -23,42 +28,83 @@ func RegisterRule(key string, rule Rules) (err error) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// 非空 不能为其对应类型的0值
|
|
|
+//@author: [piexlmax](https://github.com/piexlmax)
|
|
|
+//@function: NotEmpty
|
|
|
+//@description: 非空 不能为其对应类型的0值
|
|
|
+//@param: key string, rule Rules
|
|
|
+//@return: err error
|
|
|
+
|
|
|
func NotEmpty() string {
|
|
|
return "notEmpty"
|
|
|
}
|
|
|
|
|
|
-// 小于入参(<) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
|
|
|
+//@author: [piexlmax](https://github.com/piexlmax)
|
|
|
+//@function: Lt
|
|
|
+//@description: 小于入参(<) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
|
|
|
+//@param: mark string
|
|
|
+//@return: string
|
|
|
+
|
|
|
func Lt(mark string) string {
|
|
|
return "lt=" + mark
|
|
|
}
|
|
|
|
|
|
-// 小于等于入参(<=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
|
|
|
+//@author: [piexlmax](https://github.com/piexlmax)
|
|
|
+//@function: Le
|
|
|
+//@description: 小于等于入参(<=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
|
|
|
+//@param: mark string
|
|
|
+//@return: string
|
|
|
+
|
|
|
func Le(mark string) string {
|
|
|
return "le=" + mark
|
|
|
}
|
|
|
|
|
|
-// 等于入参(==) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
|
|
|
+//@author: [piexlmax](https://github.com/piexlmax)
|
|
|
+//@function: Eq
|
|
|
+//@description: 等于入参(==) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
|
|
|
+//@param: mark string
|
|
|
+//@return: string
|
|
|
+
|
|
|
func Eq(mark string) string {
|
|
|
return "eq=" + mark
|
|
|
}
|
|
|
|
|
|
-// 不等于入参(!=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
|
|
|
+//@author: [piexlmax](https://github.com/piexlmax)
|
|
|
+//@function: Ne
|
|
|
+//@description: 不等于入参(!=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
|
|
|
+//@param: mark string
|
|
|
+//@return: string
|
|
|
+
|
|
|
func Ne(mark string) string {
|
|
|
return "ne=" + mark
|
|
|
}
|
|
|
|
|
|
-// 大于等于入参(>=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
|
|
|
+//@author: [piexlmax](https://github.com/piexlmax)
|
|
|
+//@function: Ge
|
|
|
+//@description: 大于等于入参(>=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
|
|
|
+//@param: mark string
|
|
|
+//@return: string
|
|
|
+
|
|
|
func Ge(mark string) string {
|
|
|
return "ge=" + mark
|
|
|
}
|
|
|
|
|
|
-// 大于入参(>) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
|
|
|
+//@author: [piexlmax](https://github.com/piexlmax)
|
|
|
+//@function: Gt
|
|
|
+//@description: 大于入参(>) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
|
|
|
+//@param: mark string
|
|
|
+//@return: string
|
|
|
+
|
|
|
func Gt(mark string) string {
|
|
|
return "gt=" + mark
|
|
|
}
|
|
|
|
|
|
-// 校验方法 接收两个参数 入参实例,规则map
|
|
|
+//
|
|
|
+//@author: [piexlmax](https://github.com/piexlmax)
|
|
|
+//@function: Verify
|
|
|
+//@description: 校验方法
|
|
|
+//@param: st interface{}, roleMap Rules(入参实例,规则map)
|
|
|
+//@return: err error
|
|
|
+
|
|
|
func Verify(st interface{}, roleMap Rules) (err error) {
|
|
|
compareMap := map[string]bool{
|
|
|
"lt": true,
|
|
@@ -99,7 +145,12 @@ func Verify(st interface{}, roleMap Rules) (err error) {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
-// 长度和数字的校验方法 根据类型自动校验
|
|
|
+//@author: [piexlmax](https://github.com/piexlmax)
|
|
|
+//@function: compareVerify
|
|
|
+//@description: 长度和数字的校验方法 根据类型自动校验
|
|
|
+//@param: value reflect.Value, VerifyStr string
|
|
|
+//@return: bool
|
|
|
+
|
|
|
func compareVerify(value reflect.Value, VerifyStr string) bool {
|
|
|
switch value.Kind() {
|
|
|
case reflect.String, reflect.Slice, reflect.Array:
|
|
@@ -115,7 +166,12 @@ func compareVerify(value reflect.Value, VerifyStr string) bool {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// 非空校验
|
|
|
+//@author: [piexlmax](https://github.com/piexlmax)
|
|
|
+//@function: isBlank
|
|
|
+//@description: 非空校验
|
|
|
+//@param: value reflect.Value
|
|
|
+//@return: bool
|
|
|
+
|
|
|
func isBlank(value reflect.Value) bool {
|
|
|
switch value.Kind() {
|
|
|
case reflect.String:
|
|
@@ -134,6 +190,12 @@ func isBlank(value reflect.Value) bool {
|
|
|
return reflect.DeepEqual(value.Interface(), reflect.Zero(value.Type()).Interface())
|
|
|
}
|
|
|
|
|
|
+//@author: [piexlmax](https://github.com/piexlmax)
|
|
|
+//@function: compare
|
|
|
+//@description: 比较函数
|
|
|
+//@param: value interface{}, VerifyStr string
|
|
|
+//@return: bool
|
|
|
+
|
|
|
func compare(value interface{}, VerifyStr string) bool {
|
|
|
VerifyStrArr := strings.Split(VerifyStr, "=")
|
|
|
val := reflect.ValueOf(value)
|