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

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

@ -192,9 +192,16 @@ func GetVisitorOnlines(c *gin.Context) {
users = append(users, userInfo) users = append(users, userInfo)
visitorIds = append(visitorIds, visitor.id) visitorIds = append(visitorIds, visitor.id)
} }
//查询最新消息 //查询最新消息
messages := models.FindLastMessage(visitorIds) 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) tcps := make([]string, 0)
for ip, _ := range clientTcpList { for ip, _ := range clientTcpList {
@ -204,9 +211,8 @@ func GetVisitorOnlines(c *gin.Context) {
"code": 200, "code": 200,
"msg": "ok", "msg": "ok",
"result": gin.H{ "result": gin.H{
"ws": users, "ws": users,
"tcp": tcps, "tcp": tcps,
"messages": messages,
}, },
}) })
} }

@ -43,7 +43,14 @@ func FindUnreadMessageNumByVisitorId(visitor_id string) uint {
//查询最后一条消息 //查询最后一条消息
func FindLastMessage(visitorIds []string) []Message { func FindLastMessage(visitorIds []string) []Message {
var messages []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 return messages
} }

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

Loading…
Cancel
Save