数据类型枚举值适配
This commit is contained in:
17
run.go
17
run.go
@ -13,6 +13,7 @@ import (
|
||||
"fmt"
|
||||
"git.zhangdeman.cn/gateway/validator/define"
|
||||
"git.zhangdeman.cn/zhangdeman/consts"
|
||||
"git.zhangdeman.cn/zhangdeman/consts/enums"
|
||||
"github.com/tidwall/gjson"
|
||||
"github.com/tidwall/sjson"
|
||||
"strings"
|
||||
@ -126,7 +127,7 @@ func checkRuleConditionRequiredRule(sourceData []byte, rule *define.FieldRule) {
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 15:59 2024/4/29
|
||||
func getDataStatus(val gjson.Result, dataType string) string {
|
||||
func getDataStatus(val gjson.Result, dataType enums.DataType) string {
|
||||
if !val.Exists() {
|
||||
return consts.DataStatusNotFound
|
||||
}
|
||||
@ -142,17 +143,17 @@ func getDataStatus(val gjson.Result, dataType string) string {
|
||||
return consts.DataStatusIsZero
|
||||
}
|
||||
default:
|
||||
if strings.HasPrefix(dataType, "[]") {
|
||||
if strings.HasPrefix(dataType.String(), "[]") {
|
||||
// 数组
|
||||
if len(val.Array()) == 0 {
|
||||
return consts.DataStatusIsEmpty
|
||||
}
|
||||
} else if strings.HasPrefix(dataType, "map") {
|
||||
} else if strings.HasPrefix(dataType.String(), "map") {
|
||||
// 对象
|
||||
if len(val.Map()) == 0 {
|
||||
return consts.DataStatusIsEmpty
|
||||
}
|
||||
} else if strings.HasPrefix(dataType, "*") {
|
||||
} else if strings.HasPrefix(dataType.String(), "*") {
|
||||
// 指针类型
|
||||
if nil == val.Value() {
|
||||
return consts.DataStatusIsNil
|
||||
@ -227,7 +228,7 @@ func validate(sourceData []byte, val gjson.Result, rule *define.FieldRule) (any,
|
||||
if rule.IsRequired {
|
||||
return nil, fmt.Errorf("%v : field is required, but not found", rule.Path)
|
||||
}
|
||||
if strings.HasSuffix(rule.Type, "_ptr") {
|
||||
if strings.HasSuffix(rule.Type.String(), "_ptr") {
|
||||
// 指针类型数据, 无需验证
|
||||
return nil, nil
|
||||
}
|
||||
@ -246,10 +247,10 @@ func validate(sourceData []byte, val gjson.Result, rule *define.FieldRule) (any,
|
||||
//
|
||||
// Date : 14:43 2024/4/29
|
||||
func handleData(inputVal any, rule *define.FieldRule) (any, error) {
|
||||
rule.Type = strings.ToLower(rule.Type)
|
||||
rule.Type = enums.DataType(strings.ToLower(rule.Type.String()))
|
||||
// 处理真实的map和序列化之后的map
|
||||
if strings.HasPrefix(rule.Type, "map") {
|
||||
if strings.HasSuffix(rule.Type, "_marshal") {
|
||||
if strings.HasPrefix(rule.Type.String(), "map") {
|
||||
if strings.HasSuffix(rule.Type.String(), "_marshal") {
|
||||
rule.MapConfig = &define.MapConfig{Mode: consts.DataMapModelMarshal}
|
||||
} else {
|
||||
rule.MapConfig = &define.MapConfig{Mode: consts.DataMapModelReal}
|
||||
|
Reference in New Issue
Block a user