From 0df76c79ee2044c4b8735bdd89d482fe3718397d Mon Sep 17 00:00:00 2001 From: guzeng Date: Sat, 4 Sep 2021 18:15:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=96=E6=89=80=E6=9C=89?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client.all.go | 86 +++++++++++++++++++++++++++++++++++++++++++--- client.all_test.go | 2 +- go.mod | 9 ++--- go.sum | 3 ++ 4 files changed, 91 insertions(+), 9 deletions(-) diff --git a/client.all.go b/client.all.go index 442f855..374ab6a 100644 --- a/client.all.go +++ b/client.all.go @@ -3,6 +3,10 @@ package siterpc import ( "encoding/json" "errors" + "log" + "reflect" + + "git.tetele.net/tgo/helper" ) /** @@ -10,13 +14,14 @@ import ( * 2021/09/04 * GZ */ -func GetAllConfig(site_id, dbname string, url ...string) ([]map[string]string, error) { +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 } @@ -50,7 +55,43 @@ func GetAllConfig(site_id, dbname string, url ...string) ([]map[string]string, e if err != nil { return nil, err } - return res_arr, nil + + 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 } @@ -59,7 +100,7 @@ func GetAllConfig(site_id, dbname string, url ...string) ([]map[string]string, e * 2021/09/04 * GZ */ -func GetGroupConfig(site_id, dbname string, groupname string, url ...string) ([]map[string]string, error) { +func GetGroupConfig(site_id, dbname string, groupname string, url ...string) (map[string]string, error) { if dbname == "" { return nil, errors.New("参数错误") @@ -99,6 +140,43 @@ func GetGroupConfig(site_id, dbname string, groupname string, url ...string) ([] if err != nil { return nil, err } - return res_arr, nil + + 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 } diff --git a/client.all_test.go b/client.all_test.go index 956c767..326ade7 100644 --- a/client.all_test.go +++ b/client.all_test.go @@ -4,7 +4,7 @@ import ( "testing" ) -func Test_GetGroupConfig(t *testing.T) { +func Test_GetAllConfig(t *testing.T) { list, err := GetGroupConfig("1056475", "shop_v2", "basic") diff --git a/go.mod b/go.mod index c8b1ec9..2d2fcbf 100644 --- a/go.mod +++ b/go.mod @@ -3,9 +3,10 @@ module git.tetele.net/tgo/siterpc go 1.14 require ( - git.tetele.net/tgo/conf v0.33.1 // indirect - git.tetele.net/tgo/crypter v0.2.2 // indirect - github.com/chai2010/protorpc v1.0.0 // indirect - github.com/golang/protobuf v1.5.2 // indirect + git.tetele.net/tgo/conf v0.33.1 + git.tetele.net/tgo/crypter v0.2.2 + git.tetele.net/tgo/helper v0.1.8 + github.com/chai2010/protorpc v1.0.0 + github.com/golang/protobuf v1.5.2 golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e // indirect ) diff --git a/go.sum b/go.sum index a83b137..120d177 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ git.tetele.net/tgo/conf v0.33.1 h1:ZEIv3Vq35RCv5f3T3Uz97s2mkZLl7W5OlmXvzI3/sS8= git.tetele.net/tgo/conf v0.33.1/go.mod h1:AWVIBEDE5dtotthUgR0SWaR2Qa6/f+O5WQ3s7Tj8q7A= git.tetele.net/tgo/crypter v0.2.2 h1:YMQJh2Gj5Po4ZfelJUmXBKi01UbmtiSy3bmqRfnYQMo= git.tetele.net/tgo/crypter v0.2.2/go.mod h1:vfvRLZA8+lHNgNXneOcgvVhDyuv25ZRb+C6xHOmXNx0= +git.tetele.net/tgo/helper v0.1.8 h1:6eeUYmO0Xv2n+HluHKAOm6y2CcLmr2QPnGxzHy3yyWc= +git.tetele.net/tgo/helper v0.1.8/go.mod h1:89mQwyfqZ+t8YXiVwzSxA70gLlUNqoZGDEUxvV46jXk= github.com/chai2010/protorpc v1.0.0 h1:aJ45G9sl1utSKo35EqnBSTs5jqTpdJDJAuZMMYPAtFo= github.com/chai2010/protorpc v1.0.0/go.mod h1:woR3WwjaQDqFjlzdVsFEKiK5Ur12QL8mYxVPjfr5z54= github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -20,6 +22,7 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=