From 34962e0cd43e3185629ff6de063752fb83413160 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Wed, 12 Jun 2024 15:44:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0run=20with=20result?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- run.go | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/run.go b/run.go index 844ad90..2780051 100644 --- a/run.go +++ b/run.go @@ -50,8 +50,27 @@ func RunForStruct(sourceData any, ruleList []*define.FieldRule) (map[string]any, // // Date : 14:13 2024/4/29 func Run(sourceData map[string]any, ruleList []*define.FieldRule) error { - if nil == sourceData || len(sourceData) == 0 { - return nil + byteData, err := RunWithResult(sourceData, ruleList) + if nil != err { + return err + } + sourceData = make(map[string]any) + d := json.NewDecoder(bytes.NewReader(byteData)) + d.UseNumber() + if err := d.Decode(&sourceData); nil != err { + return err + } + return nil +} + +// RunWithResult 运行并返回结果 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 15:42 2024/6/12 +func RunWithResult(sourceData map[string]any, ruleList []*define.FieldRule) ([]byte, error) { + if nil == sourceData { + sourceData = make(map[string]any) } byteData, _ := json.Marshal(sourceData) for _, itemRule := range ruleList { @@ -63,7 +82,7 @@ func Run(sourceData map[string]any, ruleList []*define.FieldRule) error { checkRuleConditionRequiredRule(byteData, itemRule) inputFieldVal := gjson.GetBytes(byteData, itemRule.Path) if formatRule, err := validate(byteData, inputFieldVal, itemRule); nil != err { - return err + return nil, err } else { if !itemRule.DisableRewrite { // 更新数据 @@ -71,13 +90,7 @@ func Run(sourceData map[string]any, ruleList []*define.FieldRule) error { } } } - sourceData = make(map[string]any) - d := json.NewDecoder(bytes.NewReader(byteData)) - d.UseNumber() - if err := d.Decode(&sourceData); nil != err { - return err - } - return nil + return byteData, nil } // checkRuleConditionRequiredRule 校验有条件必传