go-common/app/interface/main/creative/model/academy/academy.go

277 lines
6.6 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
package academy
import (
"go-common/library/time"
mdlArt "go-common/app/interface/openplatform/article/model"
"go-common/app/service/main/archive/api"
)
const (
_ = iota
//Course 教程级别
Course
//Operation 运营标签
Operation
//Classify 分类标签
Classify
//ArticleClass 专栏分类
ArticleClass
//H5 移动端tag分类
H5
//RecommendTag 推荐理由
RecommendTag
//BusinessForAll //所有类型稿件
BusinessForAll = 0
//BusinessForArchive //视频稿件
BusinessForArchive = 1
//BusinessForArticle //专栏稿件
BusinessForArticle = 2
)
//H5Conf for h5 conf.
type H5Conf struct {
//OfficialID 官方推荐id
OfficialID int64
//EditorChoiceID 编辑精选id
EditorChoiceID int64
//NewbCourseID 新人课程id
NewbCourseID int64
//ResourceID 资源管理位id 防重复
ResourceID int64
}
//TagClassMap for tag type map.
func TagClassMap(ty int) (s string) {
switch ty {
case Course:
s = "course_level"
case Operation:
s = "operation_tag"
case Classify:
s = "classify_tag"
case ArticleClass:
s = "article_class"
case H5:
s = "h5"
case RecommendTag:
s = "recommend_tag"
}
return
}
//Tag for academy tag.
type Tag struct {
ID int64 `json:"id"`
ParentID int64 `json:"parent_id"`
Type int8 `json:"type"`
State int8 `json:"-"`
Business int8 `json:"-"`
Name string `json:"name"`
Desc string `json:"-"`
CTime time.Time `json:"-"`
MTime time.Time `json:"-"`
Children []*Tag `json:"children,omitempty"`
}
//TagClassify map tag type name.
func TagClassify() map[int]string {
return map[int]string{
Course: "教程级别",
Operation: "运营标签",
Classify: "分类标签",
ArticleClass: "专栏分类",
}
}
//Archive for academy achive & article.
type Archive struct {
ID int64 `json:"id"`
OID int64 `json:"oid"`
State int8 `json:"-"`
Business int `json:"business"`
CTime time.Time `json:"-"`
MTime time.Time `json:"-"`
TIDs []int64 `json:"-"`
}
//ArchiveTag for academy achive & tag relation .
type ArchiveTag struct {
ID int64 `json:"id"`
OID int64 `json:"oid"`
TID int64 `json:"tid"`
State int8 `json:"-"`
CTime time.Time `json:"-"`
MTime time.Time `json:"-"`
}
//ArchiveMeta for archive meta.
type ArchiveMeta struct {
OID int64 `json:"oid"`
MID int64 `json:"mid"`
State int32 `json:"state"`
Forbid int8 `json:"forbid"`
Cover string `json:"cover"`
Type string `json:"type"`
Title string `json:"title"`
HighLightTitle string `json:"highlight_title"`
UName string `json:"uname"`
Face string `json:"face"`
Comment string `json:"comment"`
CTime time.Time `json:"-"`
MTime time.Time `json:"-"`
Tags map[string][]*Tag `json:"tags"`
Duration int64 `json:"duration"`
ArcStat *api.Stat `json:"arc_stat,omitempty"`
ArtStat *mdlArt.Stats `json:"art_stat,omitempty"`
Business int `json:"business"`
Rights api.Rights `json:"rights,omitempty"`
}
//ArchiveList for archive list.
type ArchiveList struct {
Items []*ArchiveMeta `json:"items"`
Page *ArchivePage `json:"page"`
}
//ArchivePage for archive pagination.
type ArchivePage struct {
Pn int `json:"pn"`
Ps int `json:"ps"`
Total int `json:"total"`
}
//FeedBack for user advise.
type FeedBack struct {
// MID int64 `json:"mid"` //TODO
Category string `json:"category"`
Course string `json:"course"`
Suggest string `json:"suggest"`
CTime time.Time `json:"ctime"`
MTime time.Time `json:"mtime"`
}
// EsParam for es page.
type EsParam struct {
OID int64
Tid []int64
TidsMap map[int][]int64
Business int
Pn int
Ps int
Keyword string
Order string
IP string
Seed int64 //支持h5随机推荐
Duration int //支持h5时长筛选
}
// EsPage for es page.
type EsPage struct {
Num int `json:"num"`
Size int `json:"size"`
Total int `json:"total"`
}
// EsArc for search archive.
type EsArc struct {
OID int64 `json:"oid"`
TID []int64 `json:"tid"`
Business int `json:"business"`
Title []string `json:"title"` //highlight
}
// SearchResult archive list from search.
type SearchResult struct {
Page *EsPage `json:"page"`
Result []*EsArc `json:"result"`
}
//LinkTag for link tag.
type LinkTag struct {
ID int64 `json:"id"`
TID int64 `json:"tid"`
LinkID int64 `json:"link_id"`
}
//RecArchive for archive.
type RecArchive struct {
OID int64 `json:"oid"`
MID int64 `json:"mid"`
Cover string `json:"cover"`
Title string `json:"title"`
Business int `json:"business,omitempty"` //只针对标签课程
Duration int64 `json:"duration,omitempty"`
ArcStat *api.Stat `json:"arc_stat,omitempty"`
ArtStat *mdlArt.Stats `json:"art_stat,omitempty"`
Tags map[string][]*Tag `json:"tags,omitempty"`
}
//RecArcList for recommend archive list.
type RecArcList struct {
Items []*RecArchive `json:"items"`
Name string `json:"name"`
TID int64 `json:"tid"`
}
//RecConf for tag conf.
type RecConf struct {
TIDs []int64
PID int64
}
//KV key for tag ids val for type ids
type KV struct {
Key []int64 `json:"key"`
Val []int64 `json:"val"`
}
//CourseRec for course rec
type CourseRec struct {
ID int64 `json:"id"`
Rank int64 `json:"rank"`
Shoot *KV `json:"shoot"`
Scene *KV `json:"scene"`
Edit *KV `json:"edit"`
Mmd *KV `json:"mmd"`
Sing *KV `json:"sing"`
Bang *KV `json:"bang"`
Other *KV `json:"other"`
}
//Drawn for Drawn rec
type Drawn struct {
ID int64 `json:"id"`
Rank int64 `json:"rank"`
MobilePlan *KV `json:"mobile_plan"`
ScreenPlan *KV `json:"screen_plan"`
RecordPlan *KV `json:"record_plan"`
Other *KV `json:"other"`
}
//Video for Video rec
type Video struct {
ID int64 `json:"id"`
Rank int64 `json:"rank"`
MobileMake *KV `json:"mobile_make"`
AudioEdit *KV `json:"audio_edit"`
EditCompose *KV `json:"edit_compose"`
Other *KV `json:"other"`
}
//Person for person rec
type Person struct {
ID int64 `json:"id"`
Rank int64 `json:"rank"`
Other *KV `json:"other"`
}
//Recommend for all type
type Recommend struct {
Course *CourseRec `json:"course"`
Drawn *Drawn `json:"drawn"`
Video *Video `json:"video"`
Person *Person `json:"person"`
}