From 6357e653f8ca59e4a7881c782fa9cd698ffe17d7 Mon Sep 17 00:00:00 2001 From: summer <> Date: Mon, 20 Oct 2025 15:48:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(1.0):=E8=B0=83=E6=95=B4=E6=9C=AA=E8=AF=BB?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/docs.go | 8 ++++++++ docs/swagger.json | 8 ++++++++ docs/swagger.yaml | 6 ++++++ internal/api/app/app_latest_messages.go | 16 ++++++++++++++-- internal/repository/mysql/mysql.go | 2 +- 5 files changed, 37 insertions(+), 3 deletions(-) diff --git a/docs/docs.go b/docs/docs.go index 89177cb..dbdf4ce 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1793,6 +1793,14 @@ const docTemplate = `{ "app.latestMessageData": { "type": "object", "properties": { + "content": { + "description": "消息内容", + "type": "string" + }, + "msg_type": { + "description": "消息类型(1:文本 2:图片)", + "type": "integer" + }, "send_time": { "description": "发送时间", "type": "string" diff --git a/docs/swagger.json b/docs/swagger.json index a8897f1..037e033 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -1785,6 +1785,14 @@ "app.latestMessageData": { "type": "object", "properties": { + "content": { + "description": "消息内容", + "type": "string" + }, + "msg_type": { + "description": "消息类型(1:文本 2:图片)", + "type": "integer" + }, "send_time": { "description": "发送时间", "type": "string" diff --git a/docs/swagger.yaml b/docs/swagger.yaml index d531bcb..854d98c 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -275,6 +275,12 @@ definitions: type: object app.latestMessageData: properties: + content: + description: 消息内容 + type: string + msg_type: + description: 消息类型(1:文本 2:图片) + type: integer send_time: description: 发送时间 type: string diff --git a/internal/api/app/app_latest_messages.go b/internal/api/app/app_latest_messages.go index 1fbe8aa..e60f06c 100644 --- a/internal/api/app/app_latest_messages.go +++ b/internal/api/app/app_latest_messages.go @@ -23,6 +23,8 @@ type latestMessageData struct { SenderName string `json:"sender_name"` // 发送人昵称 SenderAvatar string `json:"sender_avatar"` // 发送人头像 UnreadCount int `json:"unread_count"` // 未读消息数量 + Content string `json:"content"` // 消息内容 + MsgType int32 `json:"msg_type"` // 消息类型(1:文本 2:图片) } type latestMessageByAppIdResponse struct { @@ -81,6 +83,8 @@ func (h *handler) LatestMessageByAppId() core.HandlerFunc { SendTime time.Time `json:"send_time"` AvatarURL string `json:"avatar_url"` UnreadCount int `json:"unread_count"` + Content string `json:"content"` // 消息内容 + MsgType int32 `json:"msg_type"` // 消息类型(1:文本 2:图片) } var results []unreadMessageResult @@ -102,12 +106,18 @@ func (h *handler) LatestMessageByAppId() core.HandlerFunc { 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"). - 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("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"). - Group("m.sender_id"). Order("send_time DESC"). + Group("m.sender_id"). Offset((req.Page - 1) * req.PageSize). Limit(req.PageSize). Find(&results). @@ -143,6 +153,8 @@ func (h *handler) LatestMessageByAppId() core.HandlerFunc { SenderName: v.SenderName, SenderAvatar: v.AvatarURL, UnreadCount: v.UnreadCount, + Content: v.Content, + MsgType: v.MsgType, } } diff --git a/internal/repository/mysql/mysql.go b/internal/repository/mysql/mysql.go index a044e01..83db938 100644 --- a/internal/repository/mysql/mysql.go +++ b/internal/repository/mysql/mysql.go @@ -75,7 +75,7 @@ func (d *dbRepo) DbWClose() 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, pass, addr,