优化 P0 工作台与访客 Widget,对齐设计稿 UI
- 工作台改为设计稿三栏:320 会话列表 + 聊天区 + 320 客户信息 - 会话列表展示头像色条、最后消息预览、相对时间与未读角标 - 消息方向对齐设计(访客左、客服右)并补系统会话条 - 访客 Widget 还原欢迎语、快捷问题、输入状态动画与实色顶栏 - 会话列表 API 返回 last_message 供列表预览
This commit is contained in:
@@ -24,7 +24,9 @@ type SendMessageReq struct {
|
||||
|
||||
type SessionListItem struct {
|
||||
model.Session
|
||||
UnreadCount int `json:"unread_count"`
|
||||
UnreadCount int `json:"unread_count"`
|
||||
LastMessage string `json:"last_message"`
|
||||
LastMessageAt *time.Time `json:"last_message_at,omitempty"`
|
||||
}
|
||||
|
||||
type CreateNoteReq struct {
|
||||
@@ -194,6 +196,20 @@ func (h *SessionHandler) List(c *gin.Context) {
|
||||
if middleware.GetRole(c) == "agent" && session.AgentID != nil && *session.AgentID == middleware.GetUserID(c) {
|
||||
item.UnreadCount = unreadCount(session)
|
||||
}
|
||||
var lastMsg model.Message
|
||||
if err := model.DB.Where("session_id = ?", session.ID).Order("seq desc").First(&lastMsg).Error; err == nil {
|
||||
if lastMsg.Type == "image" {
|
||||
item.LastMessage = "[图片]"
|
||||
} else {
|
||||
item.LastMessage = lastMsg.Content
|
||||
if utf8.RuneCountInString(item.LastMessage) > 40 {
|
||||
runes := []rune(item.LastMessage)
|
||||
item.LastMessage = string(runes[:40]) + "…"
|
||||
}
|
||||
}
|
||||
t := lastMsg.SentAt
|
||||
item.LastMessageAt = &t
|
||||
}
|
||||
items = append(items, item)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user