diff --git a/business/partner/purchase/im/im.go b/business/partner/purchase/im/im.go index 019e68238..d9ccdedcb 100644 --- a/business/partner/purchase/im/im.go +++ b/business/partner/purchase/im/im.go @@ -58,7 +58,6 @@ func SendToVendor(msg []byte) { }) return } - return } func Send(data []byte) { @@ -114,8 +113,8 @@ func ReadMsgFromClient(vendorID int, elmAppID string, msg interface{}) { var MtSingleChat = mtwmapi.SingleChat{} err = json.Unmarshal(data, &MtSingleChat) jxMsg = &JXMsg{ - SendType: SendTypeJx, - Data: MtSingleChat, + SendType: SendTypeJx, + MsgContent: MtSingleChat, } userList = &UserMessageList{ VendorID: VendorIDMT, @@ -128,8 +127,8 @@ func ReadMsgFromClient(vendorID int, elmAppID string, msg interface{}) { var ElmData = ebaiapi.ImMessageSend{} err = json.Unmarshal(data, &ElmData) jxMsg = &JXMsg{ - SendType: SendTypeJx, - Data: ElmData, + SendType: SendTypeJx, + MsgContent: ElmData, } userList = &UserMessageList{ VendorID: VendorIDMT, @@ -166,8 +165,8 @@ func ReadMsgFromVendor(vendorID int, elmAppID string, msg []byte) { var MtSingleChat = mtwmapi.SingleChat{} err = json.Unmarshal(msg, &MtSingleChat) jxMsg = &JXMsg{ - SendType: SendTypeMt, - Data: MtSingleChat, + SendType: SendTypeMt, + MsgContent: MtSingleChat, } userList = &UserMessageList{ VendorID: VendorIDMT, @@ -181,8 +180,8 @@ func ReadMsgFromVendor(vendorID int, elmAppID string, msg []byte) { var ElmData = ebaiapi.ImMessageSend{} err = json.Unmarshal(msg, &ElmData) jxMsg = &JXMsg{ - SendType: SendTypeElm, - Data: ElmData, + SendType: SendTypeElm, + MsgContent: ElmData, } userList = &UserMessageList{ VendorID: VendorIDMT, @@ -285,11 +284,11 @@ func GetNewAndTrim(key string, flag string) (cnt int, err error) { // GenMsgDetailID 生成查询详细聊天记录ID func GenMsgDetailID(jxMsg *JXMsg, vendorID int, elmAppID string) (msgID string) { if vendorID == VendorIDMT { - var d1 = jxMsg.Data.(mtwmapi.SingleChat) + var d1 = jxMsg.MsgContent.(mtwmapi.SingleChat) msgID = utils.Int2Str(d1.AppID) + ":" + d1.AppPoiCode + ":10:" + utils.Int2Str(d1.OpenUserID) } if vendorID == VendorIDELM { - var d2 = jxMsg.Data.(ebaiapi.ImMessageSend) + var d2 = jxMsg.MsgContent.(ebaiapi.ImMessageSend) msgID = elmAppID + ":" + d2.PlatformShopID + ":11:" + d2.PayLoad.GroupID } return msgID @@ -298,11 +297,11 @@ func GenMsgDetailID(jxMsg *JXMsg, vendorID int, elmAppID string) (msgID string) // GenMsgListID 生成展示列表时单条数据ID(部分) func GenMsgListID(jxMsg *JXMsg, vendorID int, elmAppID string) (msgID string) { if vendorID == VendorIDMT { - var d1 = jxMsg.Data.(mtwmapi.SingleChat) + var d1 = jxMsg.MsgContent.(mtwmapi.SingleChat) msgID = utils.Int2Str(d1.AppID) + ":" + d1.AppPoiCode + ":10" } if vendorID == VendorIDELM { - var d2 = jxMsg.Data.(ebaiapi.ImMessageSend) + var d2 = jxMsg.MsgContent.(ebaiapi.ImMessageSend) msgID = elmAppID + ":" + d2.PlatformShopID + ":11" } return msgID diff --git a/business/partner/purchase/im/im_model.go b/business/partner/purchase/im/im_model.go index e4806a633..a0b5ed293 100644 --- a/business/partner/purchase/im/im_model.go +++ b/business/partner/purchase/im/im_model.go @@ -7,7 +7,7 @@ import ( "io" "log" "net" - "net/http" + "net/http/httptest" "sync" "time" @@ -56,8 +56,9 @@ type clientInfo struct { // RetData 统一返回值结构体 type RetData struct { - Code int `json:"code"` //响应code - Msg string `json:"msg"` //响应msg success/fail + Code int `json:"code"` //响应code + Msg string `json:"msg"` //响应msg success/fail + //MsgType string `json:"msgType"` //发送消息方类型:mt;elm;jx Data interface{} `json:"data"` //信息 //MessageType string `json:"messageType"` //消息类型 heart-心跳检测;send-发送消息;receive-接收消息 @@ -90,8 +91,8 @@ type SendData struct { // JXMsg 京西消息结构体 type JXMsg struct { - SendType string `json:"sendType"` //消息发送方 jx-商家;mt-美团;elm-饿了么 - Data interface{} `json:"data"` //美团/饿了么 单聊消息 + SendType string `json:"sendType"` //消息发送方 jx-商家;mt-美团;elm-饿了么 + MsgContent interface{} `json:"msgContent"` //美团/饿了么 单聊消息 } // GetUserListReq 获取门店用户聊天列表 @@ -170,11 +171,21 @@ const ( // Render 统一返回值 func Render(conn *websocket.Conn, messageId string, code int, message string, data interface{}) error { - return conn.WriteJSON(RetData{ - Code: code, - Msg: message, - Data: data, - }) + if data != nil { + str, _ := json.Marshal(data) + temp := string(str) + return conn.WriteJSON(RetData{ + Code: code, + Msg: message, + //MsgType: temp.SendType, + Data: temp, + }) + } else { + return conn.WriteJSON(RetData{ + Code: code, + Msg: message, + }) + } } func ClientRender(code int, msg string, data interface{}) (str string) { @@ -187,7 +198,7 @@ func ClientRender(code int, msg string, data interface{}) (str string) { retJson, _ := json.Marshal(retData) str = string(retJson) - var w http.ResponseWriter + w := httptest.NewRecorder() w.Header().Set("Content-Type", "application/json; charset=utf-8") _, _ = io.WriteString(w, str) return diff --git a/business/partner/purchase/im/im_server.go b/business/partner/purchase/im/im_server.go index 360a54df9..1d2c5ffe4 100644 --- a/business/partner/purchase/im/im_server.go +++ b/business/partner/purchase/im/im_server.go @@ -118,6 +118,7 @@ func WriteMessage() { fmt.Printf("WriteMessage clientInfo=%s i=%d", utils.Format4Output(clientInfo, false), i) if Manager.AllClient() != nil { for _, conn := range Manager.AllClient() { + globals.SugarLogger.Debugf("WriteMessage conn.ClientId=%s", conn.ClientId) if err := Render(conn.Socket, clientInfo.MessageId, clientInfo.Code, clientInfo.Msg, clientInfo.Data); err != nil { Manager.DisConnect <- conn }