From de0dce86e4edb392b76c8a3fff53c8f5ad0635d6 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 27 Apr 2023 14:30:49 +0800 Subject: [PATCH 01/12] 1 --- business/partner/purchase/im/im_server.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/partner/purchase/im/im_server.go b/business/partner/purchase/im/im_server.go index 1d2c5ffe4..64475c44b 100644 --- a/business/partner/purchase/im/im_server.go +++ b/business/partner/purchase/im/im_server.go @@ -50,6 +50,7 @@ func Run(w http.ResponseWriter, r *http.Request) { //clientID := r.FormValue("clientId") clientID := r.Header.Get("Clientid") + globals.SugarLogger.Debugf("Run clientID=%s", clientID) clientSocket := NewClient(clientID, conn) //读取客户端消息 From 7cb41a21e739825efdd9046cadb09e7e5ff08adc Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 27 Apr 2023 14:45:13 +0800 Subject: [PATCH 02/12] 1 --- business/partner/purchase/im/im_model.go | 11 +++++++++++ business/partner/purchase/im/im_server.go | 8 ++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/business/partner/purchase/im/im_model.go b/business/partner/purchase/im/im_model.go index f7dc7b9de..a25892efe 100644 --- a/business/partner/purchase/im/im_model.go +++ b/business/partner/purchase/im/im_model.go @@ -6,6 +6,7 @@ import ( "fmt" "io" "log" + r "math/rand" "net" "net/http/httptest" "sync" @@ -284,3 +285,13 @@ func GenFullUrl() (fullUrl string) { //fmt.Printf("Create websocket connect failCount:%d", retVal.UserCount) return fullUrl } + +//生成随机字符串 +func RandString() string { + bytes := make([]byte, 16) + for i := 0; i < 16; i++ { + b := r.Intn(26) + 65 + bytes[i] = byte(b) + } + return string(bytes) +} diff --git a/business/partner/purchase/im/im_server.go b/business/partner/purchase/im/im_server.go index 64475c44b..58f9e7177 100644 --- a/business/partner/purchase/im/im_server.go +++ b/business/partner/purchase/im/im_server.go @@ -48,8 +48,12 @@ func Run(w http.ResponseWriter, r *http.Request) { //设置读取消息大小上线 conn.SetReadLimit(maxMessageSize) - //clientID := r.FormValue("clientId") - clientID := r.Header.Get("Clientid") + clientID := "" + if temp := r.Header.Get("Clientid"); len(temp) == 0 { + clientID = RandString() + } else { + clientID = temp + } globals.SugarLogger.Debugf("Run clientID=%s", clientID) clientSocket := NewClient(clientID, conn) From 53cafecd57add3ae6bc0f2ba1cb66d91cd06d1e4 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 27 Apr 2023 15:00:11 +0800 Subject: [PATCH 03/12] 1 --- business/partner/purchase/im/im.go | 3 +++ controllers/im.go | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/im/im.go b/business/partner/purchase/im/im.go index d9ccdedcb..8df51517d 100644 --- a/business/partner/purchase/im/im.go +++ b/business/partner/purchase/im/im.go @@ -224,6 +224,8 @@ func SetMessageDetail(req *JXMsg, vendorID int, elmAppID string) error { data, _ := json.Marshal(req) err := rdb.RPush(msgID, string(data)) + globals.SugarLogger.Debugf("im rdb =%v", rdb) + globals.SugarLogger.Debugf("im SetUserList err=%v", err) ok, err := rdb.ExpireResult(msgID, ExpireTimeDay) if err != nil || !ok { return err @@ -247,6 +249,7 @@ func SetUserList(jxMsg *JXMsg, userList *UserMessageList, vendorID int, elmAppID //存储当前数据 data, _ := json.Marshal(userList) err = rdb.RPush(msgID, string(data)) + globals.SugarLogger.Debugf("im SetUserList err=%v", err) ok, err := rdb.ExpireResult(msgID, ExpireTimeDay) if err != nil || !ok { diff --git a/controllers/im.go b/controllers/im.go index 81180e512..9768ed255 100644 --- a/controllers/im.go +++ b/controllers/im.go @@ -63,7 +63,7 @@ func (c *IMController) StartWebSocket() { func (c *IMController) GetIMUserList() { c.callGetIMUserList(func(params *tImGetIMUserListParams) (retVal interface{}, errCode string, err error) { var relInfo []im.RelInfo - if err = json.Unmarshal([]byte(params.PayLoad), &relInfo); err != nil { + if err = json.Unmarshal([]byte(params.PayLoad), &relInfo); err == nil { retVal, err = im.GetImUserList(relInfo) } return retVal, "", err From 4c7ddf45024d4b425a99640e62c142ef442bae5f Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 27 Apr 2023 15:04:24 +0800 Subject: [PATCH 04/12] 1 --- business/partner/purchase/im/im.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/im/im.go b/business/partner/purchase/im/im.go index 8df51517d..572753b5b 100644 --- a/business/partner/purchase/im/im.go +++ b/business/partner/purchase/im/im.go @@ -224,7 +224,7 @@ func SetMessageDetail(req *JXMsg, vendorID int, elmAppID string) error { data, _ := json.Marshal(req) err := rdb.RPush(msgID, string(data)) - globals.SugarLogger.Debugf("im rdb =%v", rdb) + globals.SugarLogger.Debugf("im rdb =%v", utils.Format4Output(rdb, false)) globals.SugarLogger.Debugf("im SetUserList err=%v", err) ok, err := rdb.ExpireResult(msgID, ExpireTimeDay) if err != nil || !ok { From 2bba8e1d72549e85a97a3d41f0a42e846ae9d13b Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 27 Apr 2023 15:12:57 +0800 Subject: [PATCH 05/12] 1 --- business/partner/purchase/im/im.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/business/partner/purchase/im/im.go b/business/partner/purchase/im/im.go index 572753b5b..f68c9b501 100644 --- a/business/partner/purchase/im/im.go +++ b/business/partner/purchase/im/im.go @@ -221,10 +221,12 @@ func PushMsgByCid(vendorStoreID string, vendorID int) error { func SetMessageDetail(req *JXMsg, vendorID int, elmAppID string) error { //生成京西消息ID detail msgID := GenMsgDetailID(req, vendorID, elmAppID) - + err := rdb.Set("test", "可以插入数据sjdfoiqaj", ExpireTimeDay) + if err != nil { + globals.SugarLogger.Debugf("测试插入err:%v", err) + } data, _ := json.Marshal(req) - err := rdb.RPush(msgID, string(data)) - globals.SugarLogger.Debugf("im rdb =%v", utils.Format4Output(rdb, false)) + err = rdb.RPush(msgID, string(data)) globals.SugarLogger.Debugf("im SetUserList err=%v", err) ok, err := rdb.ExpireResult(msgID, ExpireTimeDay) if err != nil || !ok { @@ -315,6 +317,7 @@ func GetImUserList(req []RelInfo) (retVal []interface{}, err error) { if len(req) == 0 { return nil, errors.New("msgID不允许为空") } + fmt.Printf("测试测试%s", rdb.Get("test")) var keys []string for _, i := range req { key := i.AppID + ":" + i.VendorStoreID + ":" + i.VendorID From 56ab32fd11e146eb2c69185bdda398cbc33c08c1 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 27 Apr 2023 15:51:44 +0800 Subject: [PATCH 06/12] 1 --- business/partner/purchase/im/im.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/im/im.go b/business/partner/purchase/im/im.go index f68c9b501..cdeb5f6e3 100644 --- a/business/partner/purchase/im/im.go +++ b/business/partner/purchase/im/im.go @@ -251,8 +251,14 @@ func SetUserList(jxMsg *JXMsg, userList *UserMessageList, vendorID int, elmAppID //存储当前数据 data, _ := json.Marshal(userList) err = rdb.RPush(msgID, string(data)) + globals.SugarLogger.Debugf("im SetUserList msgID=%s", msgID) globals.SugarLogger.Debugf("im SetUserList err=%v", err) - + //test + str := rdb.LRange(msgID) + for _, v := range str { + fmt.Printf("测试RPush v=%s", v) + } + //over ok, err := rdb.ExpireResult(msgID, ExpireTimeDay) if err != nil || !ok { return err From dd1abde28effdd66d753519170d9d4b4d223d6ff Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 27 Apr 2023 15:56:28 +0800 Subject: [PATCH 07/12] 1 --- business/partner/purchase/im/im.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/business/partner/purchase/im/im.go b/business/partner/purchase/im/im.go index cdeb5f6e3..76e851100 100644 --- a/business/partner/purchase/im/im.go +++ b/business/partner/purchase/im/im.go @@ -254,10 +254,8 @@ func SetUserList(jxMsg *JXMsg, userList *UserMessageList, vendorID int, elmAppID globals.SugarLogger.Debugf("im SetUserList msgID=%s", msgID) globals.SugarLogger.Debugf("im SetUserList err=%v", err) //test - str := rdb.LRange(msgID) - for _, v := range str { - fmt.Printf("测试RPush v=%s", v) - } + str := rdb.Get(msgID) + globals.SugarLogger.Debugf("im SetUserList str=%v", str) //over ok, err := rdb.ExpireResult(msgID, ExpireTimeDay) if err != nil || !ok { From b5dab616bc724492318766730a53840efe9316c0 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 27 Apr 2023 16:28:23 +0800 Subject: [PATCH 08/12] 1 --- business/partner/purchase/im/im.go | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/business/partner/purchase/im/im.go b/business/partner/purchase/im/im.go index 76e851100..b6a9c511f 100644 --- a/business/partner/purchase/im/im.go +++ b/business/partner/purchase/im/im.go @@ -317,25 +317,28 @@ func GenMsgListID(jxMsg *JXMsg, vendorID int, elmAppID string) (msgID string) { } // GetImUserList 获取门店用户聊天列表 -func GetImUserList(req []RelInfo) (retVal []interface{}, err error) { +func GetImUserList(req []RelInfo) (map[string][]interface{}, error) { + retVal := make(map[string][]interface{}, 0) if len(req) == 0 { return nil, errors.New("msgID不允许为空") } - fmt.Printf("测试测试%s", rdb.Get("test")) var keys []string for _, i := range req { key := i.AppID + ":" + i.VendorStoreID + ":" + i.VendorID keys = append(keys, key) } for _, j := range keys { - temp := rdb.Get(j) - retVal = append(retVal, temp) + temp := rdb.LRange(j) + for _, v := range temp { + retVal[j] = append(retVal[j], v) + } } - return retVal, err + return retVal, nil } // GetImChatDetail 获取门店用户聊天详情 -func GetImChatDetail(req []UserRelInfo) (retVal []interface{}, err error) { +func GetImChatDetail(req []UserRelInfo) (map[string][]interface{}, error) { + retVal := make(map[string][]interface{}, 0) if len(req) == 0 { return nil, errors.New("msgID不允许为空") } @@ -345,10 +348,12 @@ func GetImChatDetail(req []UserRelInfo) (retVal []interface{}, err error) { keys = append(keys, key) } for _, j := range keys { - temp := rdb.Get(j) - retVal = append(retVal, temp) + temp := rdb.LRange(j) + for _, v := range temp { + retVal[j] = append(retVal[j], v) + } } - return retVal, err + return retVal, nil } // SetJxMsgRead 设置jx消息已读 userID(美团:openUserID;饿了么:groupID) From a6a3d6daca654138d1a08fb1bf0acc8c87d1f026 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 27 Apr 2023 16:48:43 +0800 Subject: [PATCH 09/12] 1 --- business/partner/purchase/im/im_server.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/im/im_server.go b/business/partner/purchase/im/im_server.go index 58f9e7177..a76db0e23 100644 --- a/business/partner/purchase/im/im_server.go +++ b/business/partner/purchase/im/im_server.go @@ -99,6 +99,9 @@ func PingTimer() { for { i++ <-ticker.C + //对美团发送心跳 + Send([]byte(HeartCheckMsg)) + for clientId, conn := range Manager.AllClient() { if err := conn.Socket.WriteControl(websocket.PingMessage, []byte{}, time.Now().Add(time.Second)); err != nil { Manager.DisConnect <- conn @@ -107,7 +110,7 @@ func PingTimer() { if err := ConnRender(conn.Socket, renderData{ClientId: clientId}); err != nil { return } - globals.SugarLogger.Debugf("clientId=%s,i=%d", clientId, i) + globals.SugarLogger.Debugf("发送心跳 clientId=%s,i=%d", clientId, i) } } }() From bae1af50ba0d3d176353f0df4923c01983b487bc Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 27 Apr 2023 17:23:49 +0800 Subject: [PATCH 10/12] 1 --- business/partner/purchase/im/im.go | 18 ++++++++++++++++-- globals/beegodb/beegodb.go | 13 ++++++------- routers/commentsRouter_controllers.go | 4 ++-- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/business/partner/purchase/im/im.go b/business/partner/purchase/im/im.go index b6a9c511f..b7ad0cf4e 100644 --- a/business/partner/purchase/im/im.go +++ b/business/partner/purchase/im/im.go @@ -87,7 +87,7 @@ func Send(data []byte) { break } else { temp := string(msg) - if temp != HeartCheckSuccess { + if temp != HeartCheckSuccess || temp != "成功" { ReadMsgFromVendor(VendorIDMT, "", msg) } } @@ -358,19 +358,33 @@ func GetImChatDetail(req []UserRelInfo) (map[string][]interface{}, error) { // SetJxMsgRead 设置jx消息已读 userID(美团:openUserID;饿了么:groupID) func SetJxMsgRead(appID, vendorStoreID, vendorID, userID string) error { - key := appID + ":" + vendorStoreID + ":" + vendorID + var ( + temp = UserMessageList{} + key = appID + ":" + vendorStoreID + ":" + vendorID + ) if n, err := rdb.Exists(key); n > 0 && err == nil { s2 := rdb.LRange(key) for i := 0; i < len(s2); i++ { v := UserMessageList{} _ = json.Unmarshal([]byte(s2[i]), &v) if v.UserID == userID { + //删除此条数据 err = rdb.LSet(key, i, "del") err = rdb.LRem(key, 0, "del") s2 = append(s2[:i], s2[i+1:]...) i-- + //cnt=0 重新赋值 + temp = UserMessageList{ + VendorID: v.VendorID, + UserID: v.UserID, + NewMessageNum: 0, + LatestMsg: v.LatestMsg, + LatestTime: v.LatestTime, + } } } + str, _ := json.Marshal(temp) + err = rdb.RPush(key, str) } return nil } diff --git a/globals/beegodb/beegodb.go b/globals/beegodb/beegodb.go index b2b3d56a8..d2590df44 100644 --- a/globals/beegodb/beegodb.go +++ b/globals/beegodb/beegodb.go @@ -6,25 +6,24 @@ import ( "git.rosy.net.cn/jx-callback/business/model/legacymodel" "git.rosy.net.cn/jx-callback/globals" "github.com/astaxie/beego/client/orm" - "github.com/astaxie/beego/server/web" ) func Init() { // set default database // orm.RegisterDataBase(aliasName, driverName, dataSource, params) //正式服务器 - orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) - orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(111.231.218.230:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") + //orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) + //orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(111.231.218.230:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + //orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") // 本地测试服调试 // orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) //orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") //orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") //本地服务器测试用 -ysq - //orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - //orm.RegisterDataBase("c4beta", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - //orm.RegisterDataBase("api", "mysql", "root:123456@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") + orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + orm.RegisterDataBase("c4beta", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + orm.RegisterDataBase("api", "mysql", "root:123456@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") // 开启sql打印 //orm.Debug = true diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 8be0ac30c..d9d7150a2 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -4344,8 +4344,8 @@ func init() { //im web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:IMController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:IMController"], web.ControllerComments{ - Method: "GetIMUserList", - Router: `/GetIMUserList`, + Method: "GetImUserList", + Router: `/GetImUserList`, AllowHTTPMethods: []string{"get"}, MethodParams: param.Make(), Filters: nil, From e06990f2b5a9c4402b8881a81f7be9d6cf62ea94 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 27 Apr 2023 17:26:07 +0800 Subject: [PATCH 11/12] 1 --- globals/beegodb/beegodb.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/globals/beegodb/beegodb.go b/globals/beegodb/beegodb.go index d2590df44..b2b3d56a8 100644 --- a/globals/beegodb/beegodb.go +++ b/globals/beegodb/beegodb.go @@ -6,24 +6,25 @@ import ( "git.rosy.net.cn/jx-callback/business/model/legacymodel" "git.rosy.net.cn/jx-callback/globals" "github.com/astaxie/beego/client/orm" + "github.com/astaxie/beego/server/web" ) func Init() { // set default database // orm.RegisterDataBase(aliasName, driverName, dataSource, params) //正式服务器 - //orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) - //orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(111.231.218.230:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - //orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") + orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) + orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(111.231.218.230:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") // 本地测试服调试 // orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) //orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") //orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") //本地服务器测试用 -ysq - orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - orm.RegisterDataBase("c4beta", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - orm.RegisterDataBase("api", "mysql", "root:123456@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") + //orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + //orm.RegisterDataBase("c4beta", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + //orm.RegisterDataBase("api", "mysql", "root:123456@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") // 开启sql打印 //orm.Debug = true From 2b7bfe4e5ec46753e53c7c0529d11ba642b8a457 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 27 Apr 2023 17:28:59 +0800 Subject: [PATCH 12/12] 1 --- controllers/im.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/controllers/im.go b/controllers/im.go index 9768ed255..862003efd 100644 --- a/controllers/im.go +++ b/controllers/im.go @@ -59,9 +59,9 @@ func (c *IMController) StartWebSocket() { // @Param payLoad formData string true "平台应用映射关系" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult -// @router /GetIMUserList [get] -func (c *IMController) GetIMUserList() { - c.callGetIMUserList(func(params *tImGetIMUserListParams) (retVal interface{}, errCode string, err error) { +// @router /GetImUserList [get] +func (c *IMController) GetImUserList() { + c.callGetImUserList(func(params *tImGetImUserListParams) (retVal interface{}, errCode string, err error) { var relInfo []im.RelInfo if err = json.Unmarshal([]byte(params.PayLoad), &relInfo); err == nil { retVal, err = im.GetImUserList(relInfo)