feat(conversations): add notification mute functionality for conversations
- Rename Muted field to NotificationMuted across model, DTOs and converters - Add UpdateNotificationMuted repository method with upsert support - Add SetConversationNotificationMuted service method - Add PUT /:id/notification_muted route for setting mute status - Improve S3 storage resilience by skipping bucket check on access denied
This commit is contained in:
@@ -350,26 +350,27 @@ type MessageResponse struct {
|
||||
|
||||
// ConversationResponse 会话响应
|
||||
type ConversationResponse struct {
|
||||
ID string `json:"id"`
|
||||
Type string `json:"type"`
|
||||
IsPinned bool `json:"is_pinned"`
|
||||
Group *GroupResponse `json:"group,omitempty"`
|
||||
LastSeq int64 `json:"last_seq"`
|
||||
LastMessage *MessageResponse `json:"last_message"`
|
||||
LastMessageAt string `json:"last_message_at"`
|
||||
UnreadCount int `json:"unread_count"`
|
||||
Participants []*UserResponse `json:"participants,omitempty"` // 私聊时使用
|
||||
MemberCount int `json:"member_count,omitempty"` // 群聊时使用
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
ID string `json:"id"`
|
||||
Type string `json:"type"`
|
||||
IsPinned bool `json:"is_pinned"`
|
||||
NotificationMuted bool `json:"notification_muted"`
|
||||
Group *GroupResponse `json:"group,omitempty"`
|
||||
LastSeq int64 `json:"last_seq"`
|
||||
LastMessage *MessageResponse `json:"last_message"`
|
||||
LastMessageAt string `json:"last_message_at"`
|
||||
UnreadCount int `json:"unread_count"`
|
||||
Participants []*UserResponse `json:"participants,omitempty"` // 私聊时使用
|
||||
MemberCount int `json:"member_count,omitempty"` // 群聊时使用
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
}
|
||||
|
||||
// ConversationParticipantResponse 会话参与者响应
|
||||
type ConversationParticipantResponse struct {
|
||||
UserID string `json:"user_id"`
|
||||
LastReadSeq int64 `json:"last_read_seq"`
|
||||
Muted bool `json:"muted"`
|
||||
IsPinned bool `json:"is_pinned"`
|
||||
UserID string `json:"user_id"`
|
||||
LastReadSeq int64 `json:"last_read_seq"`
|
||||
NotificationMuted bool `json:"notification_muted"`
|
||||
IsPinned bool `json:"is_pinned"`
|
||||
}
|
||||
|
||||
// ==================== Auth DTOs ====================
|
||||
@@ -453,18 +454,19 @@ type ConversationListResponse struct {
|
||||
|
||||
// ConversationDetailResponse 会话详情响应
|
||||
type ConversationDetailResponse struct {
|
||||
ID string `json:"id"`
|
||||
Type string `json:"type"`
|
||||
IsPinned bool `json:"is_pinned"`
|
||||
LastSeq int64 `json:"last_seq"`
|
||||
LastMessage *MessageResponse `json:"last_message"`
|
||||
LastMessageAt string `json:"last_message_at"`
|
||||
UnreadCount int64 `json:"unread_count"`
|
||||
Participants []*UserResponse `json:"participants"`
|
||||
MyLastReadSeq int64 `json:"my_last_read_seq"` // 当前用户的已读位置
|
||||
OtherLastReadSeq int64 `json:"other_last_read_seq"` // 对方用户的已读位置
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
ID string `json:"id"`
|
||||
Type string `json:"type"`
|
||||
IsPinned bool `json:"is_pinned"`
|
||||
NotificationMuted bool `json:"notification_muted"`
|
||||
LastSeq int64 `json:"last_seq"`
|
||||
LastMessage *MessageResponse `json:"last_message"`
|
||||
LastMessageAt string `json:"last_message_at"`
|
||||
UnreadCount int64 `json:"unread_count"`
|
||||
Participants []*UserResponse `json:"participants"`
|
||||
MyLastReadSeq int64 `json:"my_last_read_seq"` // 当前用户的已读位置
|
||||
OtherLastReadSeq int64 `json:"other_last_read_seq"` // 对方用户的已读位置
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
}
|
||||
|
||||
// UnreadCountResponse 未读数响应
|
||||
|
||||
Reference in New Issue
Block a user