From 99a1ea238c1078a3d6f3a6afcc6442bf70535b92 Mon Sep 17 00:00:00 2001 From: guzeng Date: Sat, 9 Oct 2021 14:22:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9F=A5=E8=AF=A2=E9=99=90?= =?UTF-8?q?=E8=B4=AD=E5=85=AC=E5=85=B1=E8=B0=83=E7=94=A8=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- statistics.go | 121 +++++++++++++++++++++++++++++++++++++++++++++ statistics_test.go | 33 +++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 statistics.go create mode 100644 statistics_test.go diff --git a/statistics.go b/statistics.go new file mode 100644 index 0000000..87ead7e --- /dev/null +++ b/statistics.go @@ -0,0 +1,121 @@ +package orderrpcv2 + +import ( + "encoding/json" + "errors" + "strconv" +) + +func GetUserBuyNum(site_id, dbname string, product_id string, user_id string, url ...string) (int64, error) { + + if dbname == "" || product_id == "" || user_id == "" { + return 0, errors.New("参数错误") + } + + conn, err := rpc_server_conn(url...) + if err != nil { + return 0, err + } + defer conn.Close() + + var data map[string]string = make(map[string]string) + + data["dbname"] = dbname + data["site_id"] = site_id + data["product_id"] = product_id + data["user_id"] = user_id + + req, err := SetReqData(data) + + if err != nil { + return 0, err + } + + res := &Response{} + + err = conn.GetUserBuyNum(req, res) + + if err != nil { + return 0, err + } + + res_data_de, err := GetResData(res) + + if err != nil { + return 0, err + } + + if res_data_de == "" { + return 0, errors.New("no data") + } + + var res_arr map[string]string + + err = json.Unmarshal([]byte(res_data_de), &res_arr) + + if err != nil { + return 0, err + } + + if _, ok := res_arr["Quantity"]; ok { + return strconv.ParseInt(res_arr["Quantity"], 10, 64) + } + return 0, errors.New("failed") +} + +func GetUserBuyTotal(site_id, dbname string, product_id string, user_id string, url ...string) (int64, error) { + + if dbname == "" || product_id == "" || user_id == "" { + return 0, errors.New("参数错误") + } + + conn, err := rpc_server_conn(url...) + if err != nil { + return 0, err + } + defer conn.Close() + + var data map[string]string = make(map[string]string) + + data["dbname"] = dbname + data["site_id"] = site_id + data["product_id"] = product_id + data["user_id"] = user_id + + req, err := SetReqData(data) + + if err != nil { + return 0, err + } + + res := &Response{} + + err = conn.GetUserBuyTotal(req, res) + + if err != nil { + return 0, err + } + + res_data_de, err := GetResData(res) + + if err != nil { + return 0, err + } + + if res_data_de == "" { + return 0, errors.New("no data") + } + + var res_arr map[string]string + + err = json.Unmarshal([]byte(res_data_de), &res_arr) + + if err != nil { + return 0, err + } + + if _, ok := res_arr["Total"]; ok { + return strconv.ParseInt(res_arr["Total"], 10, 64) + } + return 0, errors.New("failed") +} diff --git a/statistics_test.go b/statistics_test.go new file mode 100644 index 0000000..130ded7 --- /dev/null +++ b/statistics_test.go @@ -0,0 +1,33 @@ +package orderrpcv2 + +import ( + "testing" +) + +func Test_GetUserBuyNum(t *testing.T) { + + site_id := "10110" + dbname := "shop_v2" + product_id := "51" + user_id := "2" + + ret, err := GetUserBuyNum(site_id, dbname, product_id, user_id) + + t.Log(ret) + t.Log(err) + +} + +func Test_GetUserBuyTotal(t *testing.T) { + + site_id := "10110" + dbname := "shop_v2" + product_id := "51" + user_id := "2" + + ret, err := GetUserBuyTotal(site_id, dbname, product_id, user_id) + + t.Log(ret) + t.Log(err) + +}