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
|
break
|
||||||
} else {
|
} else {
|
||||||
temp := string(msg)
|
temp := string(msg)
|
||||||
if temp != HeartCheckSuccess {
|
if temp != HeartCheckSuccess || temp != "成功" {
|
||||||
ReadMsgFromVendor(VendorIDMT, "", msg)
|
ReadMsgFromVendor(VendorIDMT, "", msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -221,9 +221,13 @@ func PushMsgByCid(vendorStoreID string, vendorID int) error {
|
|||||||
func SetMessageDetail(req *JXMsg, vendorID int, elmAppID string) error {
|
func SetMessageDetail(req *JXMsg, vendorID int, elmAppID string) error {
|
||||||
//生成京西消息ID detail
|
//生成京西消息ID detail
|
||||||
msgID := GenMsgDetailID(req, vendorID, elmAppID)
|
msgID := GenMsgDetailID(req, vendorID, elmAppID)
|
||||||
|
err := rdb.Set("test", "可以插入数据sjdfoiqaj", ExpireTimeDay)
|
||||||
|
if err != nil {
|
||||||
|
globals.SugarLogger.Debugf("测试插入err:%v", err)
|
||||||
|
}
|
||||||
data, _ := json.Marshal(req)
|
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)
|
ok, err := rdb.ExpireResult(msgID, ExpireTimeDay)
|
||||||
if err != nil || !ok {
|
if err != nil || !ok {
|
||||||
return err
|
return err
|
||||||
@@ -247,7 +251,12 @@ func SetUserList(jxMsg *JXMsg, userList *UserMessageList, vendorID int, elmAppID
|
|||||||
//存储当前数据
|
//存储当前数据
|
||||||
data, _ := json.Marshal(userList)
|
data, _ := json.Marshal(userList)
|
||||||
err = rdb.RPush(msgID, string(data))
|
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)
|
ok, err := rdb.ExpireResult(msgID, ExpireTimeDay)
|
||||||
if err != nil || !ok {
|
if err != nil || !ok {
|
||||||
return err
|
return err
|
||||||
@@ -308,7 +317,8 @@ func GenMsgListID(jxMsg *JXMsg, vendorID int, elmAppID string) (msgID string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetImUserList 获取门店用户聊天列表
|
// 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 {
|
if len(req) == 0 {
|
||||||
return nil, errors.New("msgID不允许为空")
|
return nil, errors.New("msgID不允许为空")
|
||||||
}
|
}
|
||||||
@@ -318,14 +328,17 @@ func GetImUserList(req []RelInfo) (retVal []interface{}, err error) {
|
|||||||
keys = append(keys, key)
|
keys = append(keys, key)
|
||||||
}
|
}
|
||||||
for _, j := range keys {
|
for _, j := range keys {
|
||||||
temp := rdb.Get(j)
|
temp := rdb.LRange(j)
|
||||||
retVal = append(retVal, temp)
|
for _, v := range temp {
|
||||||
|
retVal[j] = append(retVal[j], v)
|
||||||
}
|
}
|
||||||
return retVal, err
|
}
|
||||||
|
return retVal, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetImChatDetail 获取门店用户聊天详情
|
// 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 {
|
if len(req) == 0 {
|
||||||
return nil, errors.New("msgID不允许为空")
|
return nil, errors.New("msgID不允许为空")
|
||||||
}
|
}
|
||||||
@@ -335,27 +348,43 @@ func GetImChatDetail(req []UserRelInfo) (retVal []interface{}, err error) {
|
|||||||
keys = append(keys, key)
|
keys = append(keys, key)
|
||||||
}
|
}
|
||||||
for _, j := range keys {
|
for _, j := range keys {
|
||||||
temp := rdb.Get(j)
|
temp := rdb.LRange(j)
|
||||||
retVal = append(retVal, temp)
|
for _, v := range temp {
|
||||||
|
retVal[j] = append(retVal[j], v)
|
||||||
}
|
}
|
||||||
return retVal, err
|
}
|
||||||
|
return retVal, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetJxMsgRead 设置jx消息已读 userID(美团:openUserID;饿了么:groupID)
|
// SetJxMsgRead 设置jx消息已读 userID(美团:openUserID;饿了么:groupID)
|
||||||
func SetJxMsgRead(appID, vendorStoreID, vendorID, userID string) error {
|
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 {
|
if n, err := rdb.Exists(key); n > 0 && err == nil {
|
||||||
s2 := rdb.LRange(key)
|
s2 := rdb.LRange(key)
|
||||||
for i := 0; i < len(s2); i++ {
|
for i := 0; i < len(s2); i++ {
|
||||||
v := UserMessageList{}
|
v := UserMessageList{}
|
||||||
_ = json.Unmarshal([]byte(s2[i]), &v)
|
_ = json.Unmarshal([]byte(s2[i]), &v)
|
||||||
if v.UserID == userID {
|
if v.UserID == userID {
|
||||||
|
//删除此条数据
|
||||||
err = rdb.LSet(key, i, "del")
|
err = rdb.LSet(key, i, "del")
|
||||||
err = rdb.LRem(key, 0, "del")
|
err = rdb.LRem(key, 0, "del")
|
||||||
s2 = append(s2[:i], s2[i+1:]...)
|
s2 = append(s2[:i], s2[i+1:]...)
|
||||||
i--
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
|
r "math/rand"
|
||||||
"net"
|
"net"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"sync"
|
"sync"
|
||||||
@@ -284,3 +285,13 @@ func GenFullUrl() (fullUrl string) {
|
|||||||
//fmt.Printf("Create websocket connect failCount:%d", retVal.UserCount)
|
//fmt.Printf("Create websocket connect failCount:%d", retVal.UserCount)
|
||||||
return fullUrl
|
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)
|
conn.SetReadLimit(maxMessageSize)
|
||||||
|
|
||||||
//clientID := r.FormValue("clientId")
|
clientID := ""
|
||||||
clientID := r.Header.Get("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)
|
clientSocket := NewClient(clientID, conn)
|
||||||
|
|
||||||
//读取客户端消息
|
//读取客户端消息
|
||||||
@@ -94,6 +99,9 @@ func PingTimer() {
|
|||||||
for {
|
for {
|
||||||
i++
|
i++
|
||||||
<-ticker.C
|
<-ticker.C
|
||||||
|
//对美团发送心跳
|
||||||
|
Send([]byte(HeartCheckMsg))
|
||||||
|
|
||||||
for clientId, conn := range Manager.AllClient() {
|
for clientId, conn := range Manager.AllClient() {
|
||||||
if err := conn.Socket.WriteControl(websocket.PingMessage, []byte{}, time.Now().Add(time.Second)); err != nil {
|
if err := conn.Socket.WriteControl(websocket.PingMessage, []byte{}, time.Now().Add(time.Second)); err != nil {
|
||||||
Manager.DisConnect <- conn
|
Manager.DisConnect <- conn
|
||||||
@@ -102,7 +110,7 @@ func PingTimer() {
|
|||||||
if err := ConnRender(conn.Socket, renderData{ClientId: clientId}); err != nil {
|
if err := ConnRender(conn.Socket, renderData{ClientId: clientId}); err != nil {
|
||||||
return
|
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 "平台应用映射关系"
|
// @Param payLoad formData string true "平台应用映射关系"
|
||||||
// @Success 200 {object} controllers.CallResult
|
// @Success 200 {object} controllers.CallResult
|
||||||
// @Failure 200 {object} controllers.CallResult
|
// @Failure 200 {object} controllers.CallResult
|
||||||
// @router /GetIMUserList [get]
|
// @router /GetImUserList [get]
|
||||||
func (c *IMController) GetIMUserList() {
|
func (c *IMController) GetImUserList() {
|
||||||
c.callGetIMUserList(func(params *tImGetIMUserListParams) (retVal interface{}, errCode string, err error) {
|
c.callGetImUserList(func(params *tImGetImUserListParams) (retVal interface{}, errCode string, err error) {
|
||||||
var relInfo []im.RelInfo
|
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)
|
retVal, err = im.GetImUserList(relInfo)
|
||||||
}
|
}
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
|
|||||||
@@ -4344,8 +4344,8 @@ func init() {
|
|||||||
//im
|
//im
|
||||||
web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:IMController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:IMController"],
|
web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:IMController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:IMController"],
|
||||||
web.ControllerComments{
|
web.ControllerComments{
|
||||||
Method: "GetIMUserList",
|
Method: "GetImUserList",
|
||||||
Router: `/GetIMUserList`,
|
Router: `/GetImUserList`,
|
||||||
AllowHTTPMethods: []string{"get"},
|
AllowHTTPMethods: []string{"get"},
|
||||||
MethodParams: param.Make(),
|
MethodParams: param.Make(),
|
||||||
Filters: nil,
|
Filters: nil,
|
||||||
|
|||||||
Reference in New Issue
Block a user