You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
276 lines
6.6 KiB
276 lines
6.6 KiB
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"` |
|
}
|
|
|