Merge branch 'jdshop' of e.coding.net:rosydev/jx-callback into jdshop

This commit is contained in:
邹宗楠
2023-04-28 11:04:50 +08:00
5 changed files with 70 additions and 22 deletions

View File

@@ -87,7 +87,7 @@ func Send(data []byte) {
break
} else {
temp := string(msg)
if temp != HeartCheckSuccess {
if temp != HeartCheckSuccess || temp != "成功" {
ReadMsgFromVendor(VendorIDMT, "", msg)
}
}
@@ -221,9 +221,13 @@ 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))
err = rdb.RPush(msgID, string(data))
globals.SugarLogger.Debugf("im SetUserList err=%v", err)
ok, err := rdb.ExpireResult(msgID, ExpireTimeDay)
if err != nil || !ok {
return err
@@ -247,7 +251,12 @@ 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.Get(msgID)
globals.SugarLogger.Debugf("im SetUserList str=%v", str)
//over
ok, err := rdb.ExpireResult(msgID, ExpireTimeDay)
if err != nil || !ok {
return err
@@ -308,7 +317,8 @@ 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不允许为空")
}
@@ -318,14 +328,17 @@ func GetImUserList(req []RelInfo) (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
}
// 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不允许为空")
}
@@ -335,27 +348,43 @@ 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)
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
}

View File

@@ -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)
}

View File

@@ -48,8 +48,13 @@ 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)
//读取客户端消息
@@ -94,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
@@ -102,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)
}
}
}()

View File

@@ -59,11 +59,11 @@ 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 {
if err = json.Unmarshal([]byte(params.PayLoad), &relInfo); err == nil {
retVal, err = im.GetImUserList(relInfo)
}
return retVal, "", err

View File

@@ -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,