|
|
@ -95,7 +95,7 @@ func MapStringToInterface(src map[string]string) map[string]interface{} { |
|
|
|
return target |
|
|
|
} |
|
|
|
|
|
|
|
//将interface转成map[string]interface
|
|
|
|
// 将interface转成map[string]interface
|
|
|
|
func InterfaceToMapInterface(data interface{}) (map[string]interface{}, error) { |
|
|
|
dataJson, err := json.Marshal(data) |
|
|
|
|
|
|
@ -109,7 +109,7 @@ func InterfaceToMapInterface(data interface{}) (map[string]interface{}, error) { |
|
|
|
return returnData, nil |
|
|
|
} |
|
|
|
|
|
|
|
//将interface转成map[string]string
|
|
|
|
// 将interface转成map[string]string
|
|
|
|
func InterfaceToMapString(data interface{}) (map[string]string, error) { |
|
|
|
dataJson, err := json.Marshal(data) |
|
|
|
|
|
|
@ -123,7 +123,7 @@ func InterfaceToMapString(data interface{}) (map[string]string, error) { |
|
|
|
return returnData, nil |
|
|
|
} |
|
|
|
|
|
|
|
//将interface转成[]map[string]interface
|
|
|
|
// 将interface转成[]map[string]interface
|
|
|
|
func InterfaceToMapInterfaceArr(data interface{}) ([]map[string]interface{}, error) { |
|
|
|
dataJson, err := json.Marshal(data) |
|
|
|
|
|
|
@ -137,7 +137,7 @@ func InterfaceToMapInterfaceArr(data interface{}) ([]map[string]interface{}, err |
|
|
|
return returnData, nil |
|
|
|
} |
|
|
|
|
|
|
|
//将interface转成[]map[string]string
|
|
|
|
// 将interface转成[]map[string]string
|
|
|
|
func InterfaceToMapStringArr(data interface{}) ([]map[string]string, error) { |
|
|
|
dataJson, err := json.Marshal(data) |
|
|
|
|
|
|
@ -202,3 +202,119 @@ func HttpBuildStringQuery(data map[string]string) string { |
|
|
|
|
|
|
|
return strings.Trim(query, "&") |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 对map切片 按值进行顺序 |
|
|
|
* @param order desc/asc val_type float64/string MapDate []map[string]interface{} |
|
|
|
* @2022/10/27 |
|
|
|
* @lo |
|
|
|
*/ |
|
|
|
func MapSort(order, val, val_type string, MapDate []map[string]interface{}) ([]map[string]interface{}, error) { |
|
|
|
type KVPair struct { |
|
|
|
Key int |
|
|
|
Val_float64 float64 |
|
|
|
val_string string |
|
|
|
} |
|
|
|
res := []map[string]interface{}{} |
|
|
|
if order != "desc" && order != "asc" { |
|
|
|
return res, errors.New("order parameter err") |
|
|
|
} |
|
|
|
if val_type != "float64" && val_type != "string" { |
|
|
|
return res, errors.New("val_type parameter err") |
|
|
|
} |
|
|
|
if val == "" { |
|
|
|
return res, errors.New("val parameter err") |
|
|
|
} |
|
|
|
if len(MapDate) < 1 { |
|
|
|
return res, errors.New("MapDate parameter err") |
|
|
|
} |
|
|
|
tmpList := []KVPair{} |
|
|
|
if val_type == "string" { |
|
|
|
for k, item := range MapDate { |
|
|
|
tmpList = append(tmpList, KVPair{Key: k, val_string: ToStr(item[val])}) |
|
|
|
} |
|
|
|
if order == "desc" { |
|
|
|
sort.Slice(tmpList, func(i, j int) bool { |
|
|
|
return tmpList[i].val_string > tmpList[j].val_string // 降序
|
|
|
|
}) |
|
|
|
} else { |
|
|
|
sort.Slice(tmpList, func(i, j int) bool { |
|
|
|
return tmpList[i].val_string < tmpList[j].val_string // 升序
|
|
|
|
}) |
|
|
|
} |
|
|
|
} else { |
|
|
|
for k, item := range MapDate { |
|
|
|
float64_val, _ := ToFloat64(item[val]) |
|
|
|
tmpList = append(tmpList, KVPair{Key: k, Val_float64: float64_val}) |
|
|
|
} |
|
|
|
if order == "desc" { |
|
|
|
sort.Slice(tmpList, func(i, j int) bool { |
|
|
|
return tmpList[i].Val_float64 > tmpList[j].Val_float64 // 降序
|
|
|
|
}) |
|
|
|
} else { |
|
|
|
sort.Slice(tmpList, func(i, j int) bool { |
|
|
|
return tmpList[i].Val_float64 < tmpList[j].Val_float64 // 升序
|
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
for _, tmp := range tmpList { |
|
|
|
res = append(res, MapDate[tmp.Key]) |
|
|
|
} |
|
|
|
return res, nil |
|
|
|
} |
|
|
|
func MapPage(pageNum, pageSize int, MapDate []map[string]interface{}) []map[string]interface{} { |
|
|
|
stat := (pageNum - 1) * pageSize |
|
|
|
end := stat + pageSize |
|
|
|
count := len(MapDate) |
|
|
|
if stat >= count { |
|
|
|
return []map[string]interface{}{} |
|
|
|
} |
|
|
|
if end >= count { |
|
|
|
end = count |
|
|
|
} |
|
|
|
if stat < 0 || end < 0 { |
|
|
|
return []map[string]interface{}{} |
|
|
|
} |
|
|
|
return MapDate[stat:end] |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* MAP索引转大驼峰 |
|
|
|
* gz |
|
|
|
*/ |
|
|
|
func SetMapFirstToUpper(info map[string]interface{}) map[string]interface{} { |
|
|
|
var ret map[string]interface{} |
|
|
|
if len(info) > 0 { |
|
|
|
ret = make(map[string]interface{}) |
|
|
|
for k, v := range info { |
|
|
|
ret[StrFirstToUpper(k)] = v |
|
|
|
} |
|
|
|
} |
|
|
|
return ret |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* MAP合并,相同KEY以最后一个为准 |
|
|
|
* gz 2023/11/13 |
|
|
|
*/ |
|
|
|
func MergeMaps(map1 map[string]string, map2 ...map[string]string) map[string]string { |
|
|
|
mergedMap := make(map[string]string) |
|
|
|
|
|
|
|
if len(map1) > 0 { |
|
|
|
for key, value := range map1 { |
|
|
|
mergedMap[key] = value |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if len(map2) > 0 { |
|
|
|
for _, arr := range map2 { |
|
|
|
if len(arr) > 0 { |
|
|
|
for key, value := range arr { |
|
|
|
mergedMap[key] = value //以后个为准
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return mergedMap |
|
|
|
} |