article_template.go 3.2 KB
package domain

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

type ArticleTemplate struct {
	Id              int64                 `json:",omitempty"` // 唯一标识
	CompanyId       int64                 `json:",omitempty"` // 属于企业时有值
	UserId          int64                 `json:",omitempty"` // 属于个人时有值
	BelongTo        TemplateBelongToType  `json:",omitempty"` // 模板属于: 1:企业 、2:个人
	TemplateClass   string                `json:",omitempty"` // 模板分类
	Name            string                `json:",omitempty"` // 模板名称
	Paragraphs      []Paragraph           `json:",omitempty"` // 段落列表
	Icon            string                `json:",omitempty"` // 图标地址
	TargetWhoRead   ArticleTemplateTarget `json:",omitempty"` // 分发方式 0 分发给所有人 1 分发给指定的人
	TargetWhoReview ArticleTemplateTarget `json:",omitempty"` // 分发方式 0 分发给所有人 1 分发给指定的人
	WhoRead         []int64               `json:",omitempty"` // 谁可以看
	WhoReview       []int64               `json:",omitempty"` // 查看、评论人
	Operator        Operator              `json:",omitempty"` // 操作人(企业时有值)
	Sort            int                   `json:",omitempty"` // 排序
	CreatedAt       int64                 `json:",omitempty"`
	UpdatedAt       int64                 `json:",omitempty"`
	DeletedAt       int64                 `json:",omitempty"`
	Version         int                   `json:",omitempty"`
}

type ArticleTemplateRepository interface {
	Insert(ctx context.Context, conn transaction.Conn, dm *ArticleTemplate) (*ArticleTemplate, error)
	Update(ctx context.Context, conn transaction.Conn, dm *ArticleTemplate) (*ArticleTemplate, error)
	UpdateWithVersion(ctx context.Context, conn transaction.Conn, dm *ArticleTemplate) (*ArticleTemplate, error)
	Delete(ctx context.Context, conn transaction.Conn, dm *ArticleTemplate) (*ArticleTemplate, error)
	FindOne(ctx context.Context, conn transaction.Conn, id int64) (*ArticleTemplate, error)
	Find(ctx context.Context, conn transaction.Conn, queryOptions map[string]interface{}) (int64, []*ArticleTemplate, error)
	// FindCompanyUnscoped 公司存在过的模板
	FindCompanyUnscoped(ctx context.Context, conn transaction.Conn, companyId int64, queryOptions map[string]interface{}) (int64, []*ArticleTemplate, error)
}

func (m *ArticleTemplate) Identify() interface{} {
	if m.Id == 0 {
		return nil
	}
	return m.Id
}

type Paragraph struct {
	ID       string `json:",omitempty"` // 唯一标识
	Title    string `json:",omitempty"` // 标题
	Prompt   string `json:",omitempty"` // 文本提示
	Required bool   `json:",omitempty"` // 必填
	Type     int    `json:",omitempty"` // 段落类型 0:未使用模板 1:模板文本 2:模板图片
}

type TemplateBelongToType int

const (
	// BelongToCompany 属于公司
	BelongToCompany TemplateBelongToType = 1
	// BelongToIndividual 属于个人
	BelongToIndividual TemplateBelongToType = 2
)

type ArticleTemplateTarget int

const (
	ArticleTemplateAll   ArticleTemplateTarget = 0 //所有人
	ArticleTemplateLimit ArticleTemplateTarget = 1 //指定的人
)

const (
	DefaultTemplateClass = "常见论证类"
)