new-api/model/announcement_read.go
zizi 6a409b7724 feat: add announcement data models
Add announcement and read-tracking models with active/unread query helpers for the operations announcement system.
2026-05-20 13:01:47 +08:00

34 lines
990 B
Go

package model
import "time"
type AnnouncementRead struct {
Id int `json:"id" gorm:"primaryKey;autoIncrement"`
AnnouncementId int `json:"announcement_id" gorm:"not null;index:idx_announcement_read_user,unique"`
UserId int `json:"user_id" gorm:"not null;index:idx_announcement_read_user,unique"`
ReadAt time.Time `json:"read_at" gorm:"not null"`
}
func (AnnouncementRead) TableName() string {
return "announcement_reads"
}
func (r *AnnouncementRead) Insert() error {
return DB.Create(r).Error
}
func IsAnnouncementRead(announcementId int, userId int) (bool, error) {
var count int64
err := DB.Model(&AnnouncementRead{}).
Where("announcement_id = ? AND user_id = ?", announcementId, userId).
Count(&count).Error
return count > 0, err
}
type AnnouncementReadStatus struct {
UserId int `json:"user_id"`
Username string `json:"username"`
ReadAt *time.Time `json:"read_at"`
IsRead bool `json:"is_read"`
}