增加run with result
This commit is contained in:
		
							
								
								
									
										31
									
								
								run.go
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								run.go
									
									
									
									
									
								
							@ -50,8 +50,27 @@ func RunForStruct(sourceData any, ruleList []*define.FieldRule) (map[string]any,
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
// Date : 14:13 2024/4/29
 | 
					// Date : 14:13 2024/4/29
 | 
				
			||||||
func Run(sourceData map[string]any, ruleList []*define.FieldRule) error {
 | 
					func Run(sourceData map[string]any, ruleList []*define.FieldRule) error {
 | 
				
			||||||
	if nil == sourceData || len(sourceData) == 0 {
 | 
						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
 | 
						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)
 | 
						byteData, _ := json.Marshal(sourceData)
 | 
				
			||||||
	for _, itemRule := range ruleList {
 | 
						for _, itemRule := range ruleList {
 | 
				
			||||||
@ -63,7 +82,7 @@ func Run(sourceData map[string]any, ruleList []*define.FieldRule) error {
 | 
				
			|||||||
		checkRuleConditionRequiredRule(byteData, itemRule)
 | 
							checkRuleConditionRequiredRule(byteData, itemRule)
 | 
				
			||||||
		inputFieldVal := gjson.GetBytes(byteData, itemRule.Path)
 | 
							inputFieldVal := gjson.GetBytes(byteData, itemRule.Path)
 | 
				
			||||||
		if formatRule, err := validate(byteData, inputFieldVal, itemRule); nil != err {
 | 
							if formatRule, err := validate(byteData, inputFieldVal, itemRule); nil != err {
 | 
				
			||||||
			return err
 | 
								return nil, err
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			if !itemRule.DisableRewrite {
 | 
								if !itemRule.DisableRewrite {
 | 
				
			||||||
				// 更新数据
 | 
									// 更新数据
 | 
				
			||||||
@ -71,13 +90,7 @@ func Run(sourceData map[string]any, ruleList []*define.FieldRule) error {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	sourceData = make(map[string]any)
 | 
						return byteData, nil
 | 
				
			||||||
	d := json.NewDecoder(bytes.NewReader(byteData))
 | 
					 | 
				
			||||||
	d.UseNumber()
 | 
					 | 
				
			||||||
	if err := d.Decode(&sourceData); nil != err {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// checkRuleConditionRequiredRule 校验有条件必传
 | 
					// checkRuleConditionRequiredRule 校验有条件必传
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user