数据类型枚举值适配

This commit is contained in:
2024-11-25 14:33:06 +08:00
parent 4367435ab7
commit 0ece3237d7
4 changed files with 27 additions and 16 deletions

17
run.go
View File

@ -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}