123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- package model
- import (
- "encoding/json"
- "fmt"
- xtime "time"
- arccli "go-common/app/service/main/archive/api"
- "go-common/library/time"
- "github.com/siddontang/go-mysql/mysql"
- )
- // label related params
- const (
- ParamTypeid = "typeid"
- ParamUgctime = "pubtime"
- UgcLabel = 2
- PgcLabel = 1
- )
- // TpLabel def.
- type TpLabel struct {
- Category int `json:"-"`
- Param string `json:"param"`
- ParamName string `json:"param_name"`
- }
- // ReqLabel def.
- type ReqLabel struct {
- Category int `form:"category" validate:"required"`
- Param string `form:"param" validate:"required"` // pubtime for time labels, typeid for type labels
- Title string `form:"title"`
- ID int `form:"id"`
- }
- // LabelDB is the index label in DB
- type LabelDB struct {
- LabelCore
- Mtime time.Time `json:"Mtime"`
- }
- // SameType tells whether the given label has the exact same type with the V
- func (v *LabelDB) SameType(given *LabelDB) bool {
- return v.Category == given.Category && v.Param == given.Param && v.CatType == given.CatType
- }
- // LabelCore is core of Label
- type LabelCore struct {
- ID int64 `json:"id"`
- Name string `json:"name"`
- Param string `json:"param"`
- ParamName string `json:"param_name"`
- Value string `json:"value"`
- Category int32 `json:"category"`
- CatType int `json:"cat_type"`
- Valid int `json:"valid"`
- Position int `json:"position"`
- }
- // LabelList is used to list in TV CMS
- type LabelList struct {
- LabelCore
- Mtime string `json:"mtime"`
- Stime string `json:"stime,omitempty"`
- Etime string `json:"etime,omitempty"`
- }
- // PgcCondResp is pgc condition response structure
- type PgcCondResp struct {
- Code int `json:"code"`
- Message string `json:"message"`
- Result *PgcCond `json:"result"`
- }
- // PgcCond def.
- type PgcCond struct {
- Filter []*Cond `json:"filter"`
- }
- // Cond def.
- type Cond struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Value []*CondV `json:"value"`
- }
- // CondV def.
- type CondV struct {
- ID string `json:"id"`
- Name string `json:"name"`
- }
- // UgcTime is used to add time labels for ugc
- type UgcTime struct {
- UTime
- Category int32 `form:"category" validate:"required"`
- Name string `form:"name" validate:"required"`
- }
- // EditUgcTime def.
- type EditUgcTime struct {
- ID int64 `form:"id" validate:"required"`
- Name string `form:"name" validate:"required"`
- UTime
- }
- // UTime is used for storage in DB by json
- type UTime struct {
- Stime int64 `form:"stime" validate:"required" json:"stime"`
- Etime int64 `form:"etime" validate:"required" json:"etime"`
- }
- // TimeV picks time value in Json
- func (tm *UTime) TimeV() string {
- timeV, _ := json.Marshal(tm)
- return string(timeV)
- }
- // ToList transforms LabelDB to LabelList
- func (v *LabelDB) ToList() *LabelList {
- res := &LabelList{
- LabelCore: v.LabelCore,
- Mtime: v.Mtime.Time().Format(mysql.TimeFormat),
- }
- if v.CatType == UgcLabel && v.Param == ParamUgctime && v.Value != "" {
- utime := UTime{}
- if err := json.Unmarshal([]byte(v.Value), &utime); err != nil {
- return res
- }
- res.Stime = xtime.Unix(utime.Stime, 0).Format(mysql.TimeFormat)
- res.Etime = xtime.Unix(utime.Etime, 0).Format(mysql.TimeFormat)
- }
- return res
- }
- // TableName tv_rank
- func (v LabelDB) TableName() string {
- return "tv_label"
- }
- // FromArcTp def.
- func (v *LabelDB) FromArcTp(tp *arccli.Tp, paramName string) {
- v.LabelCore = LabelCore{
- Name: tp.Name,
- Value: fmt.Sprintf("%d", tp.ID),
- Category: tp.Pid,
- Param: ParamTypeid,
- ParamName: paramName,
- CatType: UgcLabel,
- Valid: 1,
- }
- }
- // FromPgcCond def.
- func (v *LabelDB) FromPgcCond(value *CondV, cond *Cond, category int32) {
- v.LabelCore = LabelCore{
- Name: value.Name,
- Value: value.ID,
- Category: category,
- Param: cond.ID,
- ParamName: cond.Name,
- CatType: PgcLabel,
- Valid: 1,
- }
- }
- // FromUgcTime def.
- func (v *LabelDB) FromUgcTime(tm *UgcTime, paramName string) {
- v.LabelCore = LabelCore{
- Name: tm.Name,
- Value: tm.TimeV(),
- Category: tm.Category,
- Param: ParamUgctime,
- ParamName: paramName,
- CatType: UgcLabel,
- Valid: 1,
- }
- }
|