feat: 站点媒体库与移动端底部导航,服务测试补强
- 新增媒体库:media_library/media_thumbs 服务(WebP 缩略图)、管理端 media 页面 - 移动端底部导航 MobileTabBar 替换 MobilePostBar - 旧数据导入增强与测试、路由与登录会话/板块侧边栏测试补强 - site-doc 组件精简(移除 Breadcrumb),文档新增迁移公告说明
This commit is contained in:
@@ -397,7 +397,9 @@ func (s *ChatService) GetOrCreateDM(meID, peerID uint) (*RoomView, error) {
|
||||
var existing model.ChatRoom
|
||||
err := s.db.Where("room_type = ? AND direct_key = ?", model.ChatRoomTypeDirect, key).First(&existing).Error
|
||||
if err == nil {
|
||||
_ = s.ensureMember(existing.ID, meID)
|
||||
// 关闭私聊会硬删成员行、丢失已读水位;主动重开视为已读历史,
|
||||
// 否则重建行 last_read=0 会把全部历史消息重算成未读(列表徽标闪现)
|
||||
_ = s.ensureMember(existing.ID, meID, existing.LastMessageID)
|
||||
_ = s.ensureMember(existing.ID, peerID)
|
||||
return s.RoomDetail(meID, existing.ID, false)
|
||||
}
|
||||
@@ -431,7 +433,8 @@ func (s *ChatService) GetOrCreateDM(meID, peerID uint) (*RoomView, error) {
|
||||
return s.RoomDetail(meID, room.ID, false)
|
||||
}
|
||||
|
||||
func (s *ChatService) ensureMember(roomID, userID uint) error {
|
||||
// ensureMember 保证成员行存在;重建(如私聊关闭后重开)时可选恢复已读水位
|
||||
func (s *ChatService) ensureMember(roomID, userID uint, readWatermark ...uint) error {
|
||||
_, err := s.membership(s.db, roomID, userID)
|
||||
if err == nil {
|
||||
return nil
|
||||
@@ -440,6 +443,9 @@ func (s *ChatService) ensureMember(roomID, userID uint) error {
|
||||
return err
|
||||
}
|
||||
m := model.ChatRoomMember{RoomID: roomID, UserID: userID, Role: model.ChatRoleMember}
|
||||
if len(readWatermark) > 0 {
|
||||
m.LastReadMessageID = readWatermark[0]
|
||||
}
|
||||
if e := s.db.Create(&m).Error; e != nil {
|
||||
return e
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user