From ed832a4cd05f8371908da52f93c0c0effafcd444 Mon Sep 17 00:00:00 2001 From: lijianbin <513837235@.qq.com> Date: Thu, 11 Nov 2021 10:47:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E9=80=81=E6=B6=88=E6=81=AF=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E5=80=99=E5=90=8C=E6=97=B6=E5=88=A4=E6=96=AD=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E4=B8=8B=E5=8F=91=E7=9F=AD=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client.go | 187 +++++++++++++++++++++++++------------------------ client_test.go | 3 +- common.go | 55 ++++++++------- 3 files changed, 124 insertions(+), 121 deletions(-) diff --git a/client.go b/client.go index ee453b9..3d51418 100644 --- a/client.go +++ b/client.go @@ -1,139 +1,140 @@ package msgrpc import ( - "encoding/json" - "errors" - "log" - "strconv" - "time" + "encoding/json" + "errors" + "log" + "strconv" + "time" - "git.tetele.net/tgo/crypter" + "git.tetele.net/tgo/crypter" - "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/proto" ) func SendMsg(site_id, dbname, business_id, domainname, msg_type, order_sn, memo string, data interface{}, url ...string) (*MsgSend, error) { - conn, err := rpc_server_conn(url...) - if err != nil { - return nil, err - } - defer conn.Close() + conn, err := rpc_server_conn(url...) + if err != nil { + return nil, err + } + defer conn.Close() - arg_data, err := json.Marshal(data) - if err != nil { - log.Println("json marshal error:", err) - } + arg_data, err := json.Marshal(data) + if err != nil { + log.Println("json marshal error:", err) + } - arg := MsgBody{} - arg.SiteId = site_id - arg.Dbname = dbname - arg.Platform = "1" - arg.BusinessId = business_id - arg.Domainname = domainname - arg.Type = msg_type - arg.Data = string(arg_data) - arg.OrderSn = order_sn - arg.Memo = memo + arg := MsgBody{} + arg.SiteId = site_id + arg.Dbname = dbname + arg.Platform = "1" + arg.BusinessId = business_id + arg.Domainname = domainname + arg.Type = msg_type + arg.Data = string(arg_data) + arg.OrderSn = order_sn + arg.Memo = memo - data_json, err := json.Marshal(arg) - if err != nil { - return nil, err - } - now_int64 := time.Now().Unix() + data_json, err := json.Marshal(arg) + if err != nil { + return nil, err + } + now_int64 := time.Now().Unix() - encryData := crypter.DesEn(string(data_json), DES_KEY) + encryData := crypter.DesEn(string(data_json), DES_KEY) - now := strconv.FormatInt(now_int64, 10) + now := strconv.FormatInt(now_int64, 10) - sign := Sign(encryData, now) + sign := Sign(encryData, now) - req := &Request{proto.String(encryData), proto.String(now), proto.String(sign), nil} + req := &Request{proto.String(encryData), proto.String(now), proto.String(sign), nil} - res := &Response{} + res := &Response{} - err = conn.SendMsg(req, res) + err = conn.SendMsg(req, res) - if err != nil { - return nil, err - } + if err != nil { + return nil, err + } - res_data, err := GetOrgData(res) + res_data, err := GetOrgData(res) - var res_arr MsgSend + var res_arr MsgSend - err = json.Unmarshal([]byte(res_data), &res_arr) + err = json.Unmarshal([]byte(res_data), &res_arr) - if err != nil { - return nil, err - } - return &res_arr, nil + if err != nil { + return nil, err + } + return &res_arr, nil } // target_type:目标类型,商品或文章 target_id:目标ID -func SendNotcie(site_id, dbname, domain, user_id, manager_id, target_type, target_id string, template_data map[string]string, url ...string) (bool, error) { - if site_id == "" || dbname == "" || manager_id == "" || user_id == "" { - return false, errors.New("参数错误") - } +func SendNotcie(site_id, dbname, domain, user_id, manager_id, target_type, target_id string, template_data map[string]string, sms_data []string, url ...string) (bool, error) { + if site_id == "" || dbname == "" || manager_id == "" || user_id == "" { + return false, errors.New("参数错误") + } - conn, err := rpc_server_conn(url...) + conn, err := rpc_server_conn(url...) - if err != nil { - return false, err - } - defer conn.Close() + if err != nil { + return false, err + } + defer conn.Close() - arg := NoticeSend{} - arg.SiteId = site_id - arg.Dbname = dbname - arg.Domain = domain - arg.UserId = user_id - arg.ManagerId = manager_id - arg.TargetType = target_type - arg.TargetId = target_id - arg.TemplateData = template_data + arg := NoticeSend{} + arg.SiteId = site_id + arg.Dbname = dbname + arg.Domain = domain + arg.UserId = user_id + arg.ManagerId = manager_id + arg.TargetType = target_type + arg.TargetId = target_id + arg.TemplateData = template_data + arg.SmsData = sms_data - data_json, err := json.Marshal(arg) + data_json, err := json.Marshal(arg) - if err != nil { - return false, err - } - now_int64 := time.Now().Unix() + if err != nil { + return false, err + } + now_int64 := time.Now().Unix() - encryData := crypter.DesEn(string(data_json), DES_KEY) + encryData := crypter.DesEn(string(data_json), DES_KEY) - now := strconv.FormatInt(now_int64, 10) + now := strconv.FormatInt(now_int64, 10) - sign := Sign(encryData, now) + sign := Sign(encryData, now) - req := &Request{proto.String(encryData), proto.String(now), proto.String(sign), nil} + req := &Request{proto.String(encryData), proto.String(now), proto.String(sign), nil} - res := &Response{} + res := &Response{} - err = conn.SendNotcie(req, res) + err = conn.SendNotcie(req, res) - if err != nil { - log.Println("msgrpc SendNotcie error:", err) - return false, err - } + if err != nil { + log.Println("msgrpc SendNotcie error:", err) + return false, err + } - res_data, err := GetOrgData(res) + res_data, err := GetOrgData(res) - if err != nil { - return false, err - } - if res_data == "" { - return false, nil - } + if err != nil { + return false, err + } + if res_data == "" { + return false, nil + } - var notice_res bool + var notice_res bool - err = json.Unmarshal([]byte(res_data), ¬ice_res) + err = json.Unmarshal([]byte(res_data), ¬ice_res) - if err != nil { - return false, err - } - return notice_res, nil + if err != nil { + return false, err + } + return notice_res, nil } diff --git a/client_test.go b/client_test.go index 5ced40f..349385d 100644 --- a/client_test.go +++ b/client_test.go @@ -31,8 +31,9 @@ func Test_SendNotcie(t *testing.T) { target_type := "product" target_id := "10" template_data := map[string]string{"order_name": "商品订单名1", "score_get": "10"} + sms_data := []string{} - ret, err := SendNotcie(site_id, dbname, domain,user_id,manager_id,target_type,target_id,template_data) + ret, err := SendNotcie(site_id, dbname, domain,user_id,manager_id,target_type,target_id,template_data,sms_data) t.Log(ret) t.Log(err) diff --git a/common.go b/common.go index 2837e90..a3b47a2 100644 --- a/common.go +++ b/common.go @@ -3,45 +3,46 @@ package msgrpc const DES_KEY = "msgsirpc" type Req struct { - SiteId string - Dbname string + SiteId string + Dbname string } type MsgBody struct { - Req - Platform string - BusinessId string - Domainname string - Type string - Data string - OrderSn string - Memo string + Req + Platform string + BusinessId string + Domainname string + Type string + Data string + OrderSn string + Memo string } type MsgSend struct { - Id string + Id string } type NoticeSend struct { - Req - Domain string - UserId string - ManagerId string - TargetType string - TargetId string - TemplateData map[string]string + Req + Domain string + UserId string + ManagerId string + TargetType string + TargetId string + TemplateData map[string]string + SmsData []string } func rpc_server_conn(url ...string) (*MsgRpcServiceClient, error) { - var wx_rpc_url string = "127.0.0.1:7954" - if len(url) > 0 && url[0] != "" { - wx_rpc_url = url[0] - } - conn, _, err := DialMsgRpcService("tcp", wx_rpc_url) - if err != nil { - return nil, err - } + var wx_rpc_url string = "127.0.0.1:7954" + if len(url) > 0 && url[0] != "" { + wx_rpc_url = url[0] + } + conn, _, err := DialMsgRpcService("tcp", wx_rpc_url) + if err != nil { + return nil, err + } - return conn, nil + return conn, nil }