增加比较两个map某一个字段值是否相等的能力 #4
| @ -69,6 +69,7 @@ type CustomDiffFunc func(field string, inputVal wrapper.Map, storageVal wrapper. | ||||
| // | ||||
| // Date : 11:10 2024/3/8 | ||||
| type DiffResult struct { | ||||
| 	Field      string      `json:"field"`       // 字段名 | ||||
| 	OldVal     interface{} `json:"old_val"`     // 当前field在storageVal中的值 | ||||
| 	NewVal     interface{} `json:"new_val"`     // 当前field在inputVal中的值 | ||||
| 	IsSame     bool        `json:"is_same"`     // 两个值是否相同 | ||||
| @ -126,6 +127,7 @@ func DefaultDiffFunc(field string, inputVal wrapper.Map, storageVal wrapper.Map, | ||||
| 		option = NewDiffOption() | ||||
| 	} | ||||
| 	result := &DiffResult{ | ||||
| 		Field:      field, | ||||
| 		OldVal:     nil, | ||||
| 		NewVal:     nil, | ||||
| 		IsSame:     true, | ||||
|  | ||||
							
								
								
									
										25
									
								
								tool/diff.go
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								tool/diff.go
									
									
									
									
									
								
							| @ -7,9 +7,34 @@ | ||||
| // Date : 2024-03-08 11:03 | ||||
| package tool | ||||
|  | ||||
| import ( | ||||
| 	"git.zhangdeman.cn/zhangdeman/wrapper" | ||||
| 	"git.zhangdeman.cn/zhangdeman/wrapper/tool/define" | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	Diff = &diff{} | ||||
| ) | ||||
|  | ||||
| type diff struct { | ||||
| } | ||||
|  | ||||
| // Compare 比较两个数据源的指定字段 | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 15:53 2024/3/8 | ||||
| func (d *diff) Compare(fieldList []string, input wrapper.Map, storage wrapper.Map, option *define.DiffOption) map[string]*define.DiffResult { | ||||
| 	if nil == option { | ||||
| 		option = define.NewDiffOption() | ||||
| 	} | ||||
| 	res := make(map[string]*define.DiffResult) | ||||
| 	for _, itemField := range fieldList { | ||||
| 		if compareFunc, exist := option.CustomDiffFuncTable[itemField]; exist && nil != compareFunc { | ||||
| 			res[itemField] = compareFunc(itemField, input, storage, option) | ||||
| 		} else { | ||||
| 			res[itemField] = define.DefaultDiffFunc(itemField, input, storage, option) | ||||
| 		} | ||||
| 	} | ||||
| 	return res | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user