获取在线用户最新一条消息

pull/23/head
taoshihan1991 4 years ago
parent cd6a2c9dad
commit 88999a3326

@ -192,9 +192,16 @@ func GetVisitorOnlines(c *gin.Context) {
users = append(users, userInfo)
visitorIds = append(visitorIds, visitor.id)
}
//查询最新消息
messages := models.FindLastMessage(visitorIds)
log.Println(messages)
temp := make(map[string]string, 0)
for _, mes := range messages {
temp[mes.VisitorId] = mes.Content
}
for _, user := range users {
user["last_message"] = temp[user["uid"]]
}
tcps := make([]string, 0)
for ip, _ := range clientTcpList {
@ -204,9 +211,8 @@ func GetVisitorOnlines(c *gin.Context) {
"code": 200,
"msg": "ok",
"result": gin.H{
"ws": users,
"tcp": tcps,
"messages": messages,
"ws": users,
"tcp": tcps,
},
})
}

@ -43,7 +43,14 @@ func FindUnreadMessageNumByVisitorId(visitor_id string) uint {
//查询最后一条消息
func FindLastMessage(visitorIds []string) []Message {
var messages []Message
DB.Select("ANY_VALUE(visitor_id) visitor_id,ANY_VALUE(id) id,ANY_VALUE(Content) content").Where("visitor_id in (? )", visitorIds).Group("visitor_id").Find(&messages)
subQuery := DB.
Table("message").
Where(" visitor_id in (? )", visitorIds).
Order("id desc").
Limit(1024).
SubQuery()
DB.Raw("SELECT ANY_VALUE(visitor_id) visitor_id,ANY_VALUE(id) id,ANY_VALUE(content) content FROM ? message_alia GROUP BY visitor_id", subQuery).Scan(&messages)
//DB.Select("ANY_VALUE(visitor_id) visitor_id,ANY_VALUE(id) id,ANY_VALUE(Content) content").Table("?", subQuery).Group("visitor_id").Find(&messages)
return messages
}

@ -4,7 +4,6 @@ import (
"fmt"
"github.com/jinzhu/gorm"
"github.com/taoshihan1991/imaptool/config"
"github.com/taoshihan1991/imaptool/tools"
"time"
)
@ -27,7 +26,7 @@ func init() {
}
DB.SingularTable(true)
DB.LogMode(true)
DB.SetLogger(tools.Logger())
//DB.SetLogger(tools.Logger())
DB.DB().SetMaxIdleConns(10)
DB.DB().SetMaxOpenConns(100)

Loading…
Cancel
Save