Преглед на файлове

feat: 添加ExtractDynamicValueMap

wangbo преди 1 месец
родител
ревизия
9509015ffb
променени са 1 файла, в които са добавени 31 реда и са изтрити 0 реда
  1. 31 0
      ng_cws_client/ng_cws_client.go

+ 31 - 0
ng_cws_client/ng_cws_client.go

@@ -3,6 +3,7 @@ package ng_cws_client
 import (
 	"encoding/json"
 	"errors"
+	"git.sxidc.com/go-tools/utils/slice"
 	"git.sxidc.com/service-supports/cws-sdk/service"
 	"git.sxidc.com/service-supports/cws-sdk/service/request"
 	"git.sxidc.com/service-supports/cws-sdk/service/response"
@@ -335,3 +336,33 @@ func GetUserStructureID(prepareInfos []response.PrepareInfo) (string, error) {
 	}
 	return "", errors.New("数据异常未找到userStructureId")
 }
+
+func ExtractDynamicValueMap(inputModelMap map[string]any, inputParamStruct any) (map[string]any, error) {
+	jsonBytes, err := json.Marshal(inputParamStruct)
+	if err != nil {
+		return nil, err
+	}
+	paramMap := make(map[string]any)
+	err = json.Unmarshal(jsonBytes, &paramMap)
+	if err != nil {
+		return nil, err
+	}
+
+	allValues := make([]string, 0)
+	paramValues := make([]string, 0)
+	for k := range inputModelMap {
+		allValues = append(allValues, k)
+	}
+	for k := range paramMap {
+		paramValues = append(paramValues, k)
+	}
+	extraKeys := slice.ExtractASubBSetValue(allValues, paramValues)
+
+	dynamicValueMap := make(map[string]any)
+	for _, key := range extraKeys {
+		if inputModelAny, ok := inputModelMap[key]; ok {
+			dynamicValueMap[key] = inputModelAny
+		}
+	}
+	return dynamicValueMap, nil
+}