tianyuan-api-server/apps/api/internal/common/logic.go

41 lines
990 B
Go
Raw Normal View History

2024-10-12 20:41:55 +08:00
package common
2025-06-14 13:49:46 +08:00
import (
"encoding/json"
)
// StructToMap 将结构体转换为 map[string]interface{}
func StructToMap(data interface{}) (map[string]interface{}, error) {
jsonData, err := json.Marshal(data)
if err != nil {
return nil, err
}
var result map[string]interface{}
if err := json.Unmarshal(jsonData, &result); err != nil {
return nil, err
}
return result, nil
}
2024-10-12 20:41:55 +08:00
func MapStructToAPIRequest(encryptedFields map[string]interface{}, fieldMapping map[string]string, wrapField string) map[string]interface{} {
apiRequest := make(map[string]interface{})
// 遍历字段映射表
for structField, apiField := range fieldMapping {
// 如果加密后的字段存在,才添加到请求
if value, exists := encryptedFields[structField]; exists {
apiRequest[apiField] = value
}
}
// 如果 wrapField 不为空,将 apiRequest 包裹到该字段下
if wrapField != "" {
return map[string]interface{}{
wrapField: apiRequest,
}
}
return apiRequest
}