277 lines
6.6 KiB
Go
277 lines
6.6 KiB
Go
|
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"`
|
||
|
}
|