123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- 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"`
- }
|