feat(1.0):调整未读列表

This commit is contained in:
summer 2025-10-20 15:48:43 +08:00
parent 33af2cc54a
commit 6357e653f8
5 changed files with 37 additions and 3 deletions

View File

@ -1793,6 +1793,14 @@ const docTemplate = `{
"app.latestMessageData": { "app.latestMessageData": {
"type": "object", "type": "object",
"properties": { "properties": {
"content": {
"description": "消息内容",
"type": "string"
},
"msg_type": {
"description": "消息类型(1:文本 2:图片)",
"type": "integer"
},
"send_time": { "send_time": {
"description": "发送时间", "description": "发送时间",
"type": "string" "type": "string"

View File

@ -1785,6 +1785,14 @@
"app.latestMessageData": { "app.latestMessageData": {
"type": "object", "type": "object",
"properties": { "properties": {
"content": {
"description": "消息内容",
"type": "string"
},
"msg_type": {
"description": "消息类型(1:文本 2:图片)",
"type": "integer"
},
"send_time": { "send_time": {
"description": "发送时间", "description": "发送时间",
"type": "string" "type": "string"

View File

@ -275,6 +275,12 @@ definitions:
type: object type: object
app.latestMessageData: app.latestMessageData:
properties: properties:
content:
description: 消息内容
type: string
msg_type:
description: 消息类型(1:文本 2:图片)
type: integer
send_time: send_time:
description: 发送时间 description: 发送时间
type: string type: string

View File

@ -23,6 +23,8 @@ type latestMessageData struct {
SenderName string `json:"sender_name"` // 发送人昵称 SenderName string `json:"sender_name"` // 发送人昵称
SenderAvatar string `json:"sender_avatar"` // 发送人头像 SenderAvatar string `json:"sender_avatar"` // 发送人头像
UnreadCount int `json:"unread_count"` // 未读消息数量 UnreadCount int `json:"unread_count"` // 未读消息数量
Content string `json:"content"` // 消息内容
MsgType int32 `json:"msg_type"` // 消息类型(1:文本 2:图片)
} }
type latestMessageByAppIdResponse struct { type latestMessageByAppIdResponse struct {
@ -81,6 +83,8 @@ func (h *handler) LatestMessageByAppId() core.HandlerFunc {
SendTime time.Time `json:"send_time"` SendTime time.Time `json:"send_time"`
AvatarURL string `json:"avatar_url"` AvatarURL string `json:"avatar_url"`
UnreadCount int `json:"unread_count"` UnreadCount int `json:"unread_count"`
Content string `json:"content"` // 消息内容
MsgType int32 `json:"msg_type"` // 消息类型(1:文本 2:图片)
} }
var results []unreadMessageResult var results []unreadMessageResult
@ -102,12 +106,18 @@ func (h *handler) LatestMessageByAppId() core.HandlerFunc {
return return
} }
subQuery := h.db.GetDbR().Table("app_message_log").
Select("sender_id, MAX(send_time) as latest_time").
Where("app_id = ? AND sender_id != ?", req.AppID, "888888").
Group("sender_id")
resultErr := h.db.GetDbR().Table("app_message_log m"). resultErr := h.db.GetDbR().Table("app_message_log m").
Select("max(m.send_time) as send_time, m.sender_id, max(m.sender_name) as sender_name, max(u.user_avatar) as avatar_url, (SELECT COUNT(*) FROM app_message_log WHERE sender_id = m.sender_id AND is_read = 0) as unread_count"). Select("m.send_time, m.content, m.msg_type, m.sender_id, m.sender_name, u.user_avatar as avatar_url, (SELECT COUNT(*) FROM app_message_log WHERE sender_id = m.sender_id AND is_read = 0) as unread_count").
Joins("LEFT JOIN app_user u ON m.sender_id = u.user_id"). Joins("LEFT JOIN app_user u ON m.sender_id = u.user_id").
Joins("JOIN (?) as latest ON m.sender_id = latest.sender_id AND m.send_time = latest.latest_time", subQuery).
Where("m.app_id = ? AND m.sender_id != ?", req.AppID, "888888"). Where("m.app_id = ? AND m.sender_id != ?", req.AppID, "888888").
Group("m.sender_id").
Order("send_time DESC"). Order("send_time DESC").
Group("m.sender_id").
Offset((req.Page - 1) * req.PageSize). Offset((req.Page - 1) * req.PageSize).
Limit(req.PageSize). Limit(req.PageSize).
Find(&results). Find(&results).
@ -143,6 +153,8 @@ func (h *handler) LatestMessageByAppId() core.HandlerFunc {
SenderName: v.SenderName, SenderName: v.SenderName,
SenderAvatar: v.AvatarURL, SenderAvatar: v.AvatarURL,
UnreadCount: v.UnreadCount, UnreadCount: v.UnreadCount,
Content: v.Content,
MsgType: v.MsgType,
} }
} }

View File

@ -75,7 +75,7 @@ func (d *dbRepo) DbWClose() error {
} }
func dbConnect(user, pass, addr, dbName string) (*gorm.DB, error) { func dbConnect(user, pass, addr, dbName string) (*gorm.DB, error) {
dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=%t&loc=%s", dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=%t&loc=%s&sql_mode=TRADITIONAL",
user, user,
pass, pass,
addr, addr,