// Package util ... // // Description : util ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2022-07-04 11:45 package util import ( "github.com/Jeffail/gabs" "github.com/pkg/errors" ) // MapRule 映射规则 // // Author : go_developer@163.com<白茶清欢> // // Date : 12:21 2022/7/4 type MapRule struct { SourcePath string `json:"source_path"` // 原路径 MapPath string `json:"map_path"` // 映射路径 Required bool `json:"required"` // 必须存在 DataType string `json:"data_type"` // 数据类型 DefaultValue string `json:"default_value"` // 默认值, 以字符串传入, 会转换成 DataType } // NewFilter 过滤器实例 // // Author : go_developer@163.com<白茶清欢> // // Date : 11:54 2022/7/4 func NewFilter(sourceData []byte, filterRuleList []MapRule) *filter { return &filter{ sourceData: sourceData, filterRuleList: filterRuleList, jsonObj: &gabs.Container{}, } } // filter 数据过滤 // // Author : go_developer@163.com<白茶清欢> // // Date : 11:58 2022/7/4 type filter struct { sourceData []byte filterRuleList []MapRule jsonObj *gabs.Container // 生成的json对象实例 } // Deal ... // // Author : go_developer@163.com<白茶清欢> // // Date : 11:59 2022/7/4 func (f *filter) Deal() ([]byte, error) { return nil, nil } // getDefaultValue 获取默认值 // // Author : go_developer@163.com<白茶清欢> // // Date : 12:25 2022/7/4 func (f *filter) getDefaultValue(dataType string, defaultValue string) (interface{}, error) { switch dataType { case "int8": fallthrough case "int16": fallthrough case "int32": fallthrough case "int64": fallthrough case "int": var ( err error val int64 ) err = ConvertAssign(&val, defaultValue) return val, err case "uint8": fallthrough case "uint16": fallthrough case "uint32": fallthrough case "uint64": fallthrough case "uint": var ( err error val uint64 ) err = ConvertAssign(&val, defaultValue) return val, err case "bool": var ( err error val bool ) err = ConvertAssign(&val, defaultValue) return val, err case "float32": fallthrough case "float64": var ( err error val float64 ) err = ConvertAssign(&val, defaultValue) return val, err default: return nil, errors.New(dataType + " is not support!") } }