package siterpc
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"log"
|
|
"reflect"
|
|
|
|
"git.tetele.net/tgo/helper"
|
|
)
|
|
|
|
/**
|
|
* 取所有配置
|
|
* 2021/09/04
|
|
* GZ
|
|
*/
|
|
func GetAllConfig(site_id, dbname string, url ...string) (map[string]string, error) {
|
|
|
|
if dbname == "" {
|
|
return nil, errors.New("参数错误")
|
|
}
|
|
|
|
conn, err := rpc_server_conn(url...)
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer conn.Close()
|
|
|
|
arg := SiteConfigItemReqArg{site_id, dbname, ""}
|
|
|
|
req, err := SetReqData(arg)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
res := &Response{}
|
|
|
|
err = conn.GetAllConfig(req, res)
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
res_data_de, err := GetResData(res)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if res_data_de == "" {
|
|
return nil, nil
|
|
}
|
|
var res_arr []map[string]string
|
|
|
|
err = json.Unmarshal([]byte(res_data_de), &res_arr)
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var res_map map[string]string = make(map[string]string)
|
|
if len(res_arr) > 0 {
|
|
var value string
|
|
for _, info := range res_arr {
|
|
value = ""
|
|
switch info["Type"] {
|
|
|
|
case "select":
|
|
|
|
var content interface{}
|
|
err = json.Unmarshal([]byte(info["Content"]), &content)
|
|
if err != nil {
|
|
log.Println(err)
|
|
}
|
|
|
|
content_type := reflect.TypeOf(content).String() //数据字典的类型
|
|
|
|
switch content_type {
|
|
case "[]interface {}": //数组形式,value字段对应数组的key
|
|
list := content.([]interface{})
|
|
val_key := helper.ToInt(info["Value"])
|
|
value = helper.ToString(list[val_key])
|
|
case "map[string]interface {}": //map形式,value字段对应key
|
|
list := content.(map[string]interface{})
|
|
value = helper.ToString(list[info["Value"]])
|
|
|
|
}
|
|
default:
|
|
value = info["Value"]
|
|
}
|
|
res_map[info["Name"]] = value
|
|
|
|
}
|
|
}
|
|
|
|
return res_map, nil
|
|
|
|
}
|
|
|
|
/**
|
|
* 分组下所有配置
|
|
* 2021/09/04
|
|
* GZ
|
|
*/
|
|
func GetGroupConfig(site_id, dbname string, groupname string, url ...string) (map[string]string, error) {
|
|
|
|
if dbname == "" {
|
|
return nil, errors.New("参数错误")
|
|
}
|
|
|
|
conn, err := rpc_server_conn(url...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer conn.Close()
|
|
|
|
arg := SiteConfigItemReqArg{site_id, dbname, groupname}
|
|
|
|
req, err := SetReqData(arg)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
res := &Response{}
|
|
|
|
err = conn.GetGroupConfig(req, res)
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
res_data_de, err := GetResData(res)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if res_data_de == "" {
|
|
return nil, nil
|
|
}
|
|
var res_arr []map[string]string
|
|
|
|
err = json.Unmarshal([]byte(res_data_de), &res_arr)
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var res_map map[string]string = make(map[string]string)
|
|
|
|
if len(res_arr) > 0 {
|
|
var value string
|
|
for _, info := range res_arr {
|
|
value = ""
|
|
switch info["Type"] {
|
|
|
|
case "select":
|
|
|
|
var content interface{}
|
|
err = json.Unmarshal([]byte(info["Content"]), &content)
|
|
if err != nil {
|
|
log.Println(err)
|
|
}
|
|
|
|
content_type := reflect.TypeOf(content).String() //数据字典的类型
|
|
|
|
switch content_type {
|
|
case "[]interface {}": //数组形式,value字段对应数组的key
|
|
list := content.([]interface{})
|
|
val_key := helper.ToInt(info["Value"])
|
|
value = helper.ToString(list[val_key])
|
|
case "map[string]interface {}": //map形式,value字段对应key
|
|
list := content.(map[string]interface{})
|
|
value = helper.ToString(list[info["Value"]])
|
|
|
|
}
|
|
default:
|
|
value = info["Value"]
|
|
}
|
|
res_map[info["Name"]] = value
|
|
|
|
}
|
|
}
|
|
|
|
return res_map, nil
|
|
|
|
}
|