article_comment.go 3.0 KB
package domain

import (
	"context"

	"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/db/transaction"
)

// 文章评论
type ArticleComment struct {
	Id             int64        `json:"id"` // 评论id
	CompanyId      int64        `json:"companyId"`
	CreatedAt      int64        `json:"createdAt,omitempty"`
	UpdatedAt      int64        `json:"updatedAt,omitempty"`
	DeletedAt      int64        `json:"deletedAt,omitempty"`
	Version        int          `json:"version,omitempty"`
	Pid            int64        `json:"pid"`            // 对哪个评论进行回复
	TopId          int64        `json:"topId"`          // 归属于最上级的哪个评论
	ArticleId      int64        `json:"articleId"`      // 文章id
	SectionId      int64        `json:"sectionId"`      // 文本段落内容id
	SectionContent string       `json:"sectionContent"` // 引用的文章内容文本
	FromUserId     int64        `json:"fromUserId"`     // 谁填写的评论
	FromUser       UserSimple   `json:"fromUser"`       // 谁填写的评论
	ToUserId       int64        `json:"toUserId"`       // 回复谁的评论
	ToUser         UserSimple   `json:"toUser"`         // 回复谁的评论
	Content        string       `json:"content"`        // 评论内容
	CountReply     int          `json:"countReply"`     // 回复数量
	CountUserLove  int          `json:"countUserLove"`  // 用户点赞数量
	CountAdminLove int          `json:"countAdminLove"` // 运营点赞数量
	Show           CommentShow  `json:"showState"`      // 评论的展示状态(0显示、1不显示)
	AtWho          []UserSimple `json:"atWho"`          // 填写评论时@的人
	// ...more
}

// 评论的展示状态(0显示、1不显示)
type CommentShow int

const (
	CommentShowEnable  CommentShow = 0
	CommentShowDisable CommentShow = 1
)

func (show CommentShow) Named() string {
	switch show {
	case CommentShowEnable:
		return "显示"
	case CommentShowDisable:
		return "隐藏"
	}
	return ""
}

type ArticleCommentRepository interface {
	Insert(ctx context.Context, conn transaction.Conn, dm *ArticleComment) (*ArticleComment, error)
	Update(ctx context.Context, conn transaction.Conn, dm *ArticleComment) (*ArticleComment, error)
	UpdateWithVersion(ctx context.Context, conn transaction.Conn, dm *ArticleComment) (*ArticleComment, error)
	Delete(ctx context.Context, conn transaction.Conn, dm *ArticleComment) (*ArticleComment, error)
	FindOne(ctx context.Context, conn transaction.Conn, id int64) (*ArticleComment, error)
	Find(ctx context.Context, conn transaction.Conn, queryOptions map[string]interface{}) (int64, []*ArticleComment, error)
	IncreaseCountUserLove(ctx context.Context, conn transaction.Conn, incr int, commentId int64) error //点赞数量变动
	IncreaseCountReply(ctx context.Context, conn transaction.Conn, incr int, commentId int64) error    // 评论回复数量变动
	Top5Comment(ctx context.Context, conn transaction.Conn, companyId int64, articleId int64) ([]*ArticleComment, error)
}