topfans/backend/services/notificationService/model/notification.go
2026-06-16 21:30:58 +08:00

63 lines
2.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package model
// Notification 通知数据模型
type Notification struct {
ID int64 `json:"id" gorm:"primaryKey;column:id"`
UserID int64 `json:"user_id" gorm:"column:user_id;not null;index"`
StarID int64 `json:"star_id" gorm:"column:star_id;not null"`
Type string `json:"type" gorm:"column:type;not null;size:20"`
Title string `json:"title" gorm:"column:title;not null;size:200"`
Content string `json:"content" gorm:"column:content;size:500"`
Data string `json:"data" gorm:"column:data;type:jsonb"`
IsRead bool `json:"is_read" gorm:"column:is_read;not null;default:false"`
IsDeleted bool `json:"is_deleted" gorm:"column:is_deleted;not null;default:false"`
CreatedAt int64 `json:"created_at" gorm:"column:created_at;not null"`
ReadAt int64 `json:"read_at" gorm:"column:read_at"`
}
// TableName 表名
func (Notification) TableName() string {
return "public.notifications"
}
// NotificationStats 通知统计模型
type NotificationStats struct {
UserID int64 `json:"user_id" gorm:"primaryKey;column:user_id"`
StarID int64 `json:"star_id" gorm:"primaryKey;column:star_id"`
LikeUnreadCount int `json:"like_unread_count" gorm:"column:like_unread_count;not null;default:0"`
SystemUnreadCount int `json:"system_unread_count" gorm:"column:system_unread_count;not null;default:0"`
ActivityUnreadCount int `json:"activity_unread_count" gorm:"column:activity_unread_count;not null;default:0"`
TotalUnreadCount int `json:"total_unread_count" gorm:"column:total_unread_count;not null;default:0"`
UpdatedAt int64 `json:"updated_at" gorm:"column:updated_at;not null"`
}
// TableName 表名
func (NotificationStats) TableName() string {
return "public.notification_stats"
}
// ActorPreview 列表层聚合时的 actor 预览
type ActorPreview struct {
UserID int64 `json:"user_id"`
Nickname string `json:"nickname"`
Avatar string `json:"avatar"`
LikedAt int64 `json:"liked_at"`
}
// AggregatedNotification 聚合查询结果type=like 时返回)
type AggregatedNotification struct {
ID int64 `json:"id"`
UserID int64 `json:"user_id"`
StarID int64 `json:"star_id"`
Type string `json:"type"`
Title string `json:"title"`
Content string `json:"content"`
TargetID int64 `json:"target_id"`
IsRead bool `json:"is_read"`
CreatedAt int64 `json:"created_at"`
ReadAt int64 `json:"read_at"`
TotalCount int32 `json:"total_count"`
Actors []ActorPreview `json:"actors"`
Data string `json:"data"`
}