article.go 2.1 KB
package models

import (
	"fmt"

	"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain"
	"gorm.io/gorm"
)

type Article struct {
	Id           int64           // 唯一标识
	CompanyId    int64           `json:"companyId"`
	CreatedAt    int64           `json:"createdAt,omitempty"`
	UpdatedAt    int64           `json:"updatedAt,omitempty"`
	DeletedAt    int64           `json:"deletedAt,omitempty"`
	Version      int             `json:"version,omitempty"`
	AuthorId     int64           `json:"authorId"`     // 发布人
	Author       domain.User     `json:"author"`       // 发布人
	Title        string          `json:"title"`        // 文章标题
	Images       []domain.Image  `json:"images"`       // 图片
	WhoRead      []int64         `json:"whoRead"`      // 谁可以看
	WhoReview    []int64         `json:"whoReview"`    // 评论人
	Location     domain.Location `json:"location"`     // 坐标
	TargetUser   int             `json:"targetUser"`   // 分发方式 0 分发给所有人 1 分发给指定的人
	CountLove    int             `json:"countLove"`    // 点赞数量
	CountComment int             `json:"countComment"` // 评论数量
	Tags         []int           `json:"tags"`         // 标签
	Show         int             `json:"showState"`    // 评论的展示状态(0显示、1不显示)
}

func (m *Article) TableName() string {
	return "article"
}

func (m *Article) BeforeCreate(tx *gorm.DB) (err error) {
	// m.CreatedAt = time.Now().Unix()
	// m.UpdatedAt = time.Now().Unix()
	return
}

func (m *Article) BeforeUpdate(tx *gorm.DB) (err error) {
	// m.UpdatedAt = time.Now().Unix()
	return
}

func (m *Article) CacheKeyFunc() string {
	if m.Id == 0 {
		return ""
	}
	return fmt.Sprintf("%v:cache:%v:id:%v", domain.ProjectName, m.TableName(), m.Id)
}

func (m *Article) CacheKeyFuncByObject(obj interface{}) string {
	if v, ok := obj.(*Article); ok {
		return v.CacheKeyFunc()
	}
	return ""
}

func (m *Article) CachePrimaryKeyFunc() string {
	if len("") == 0 {
		return ""
	}
	return fmt.Sprintf("%v:cache:%v:primarykey:%v", domain.ProjectName, m.TableName(), "key")
}