Merge branch 'jdshop' of e.coding.net:rosydev/jx-callback into jdshop
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user