123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- package model
- import (
- "net/url"
- "reflect"
- "strconv"
- "go-common/library/time"
- "github.com/siddontang/go-mysql/mysql"
- )
- // TVEpContent reprensents the content table
- type TVEpContent struct {
- ID int64 `form:"id" params:"id" validate:"required"`
- CID int `form:"cid" params:"cid" gorm:"column:cid" validate:"required"`
- SeasonID int64 `form:"season_id" params:"season_id" validate:"required"`
- Title string `form:"title" params:"title"`
- LongTitle string `form:"long_title" params:"long_title"`
- Cover string `form:"cover" params:"cover"`
- Length int32 `form:"length" params:"length"`
- Order int `form:"order" params:"order" validate:"required"`
- PayStatus int `form:"pay_status" validate:"required" gorm:"-"`
- Desc string `form:"desc" gorm:"-"`
- IsDeleted int8
- Ctime time.Time
- Mtime time.Time
- }
- // TVEpSeason represents the season table
- type TVEpSeason struct {
- ID int64 `form:"id" json:"id" params:"id" validate:"required" gorm:"column:id"`
- OriginName string `form:"origin_name" json:"origin_name" params:"origin_name" validate:"required"`
- Title string `form:"title" json:"title" params:"title"`
- Alias string `form:"alias" json:"alias" params:"alias"`
- Category int `form:"category" json:"category" params:"category" validate:"required" gorm:"column:category"`
- Desc string `form:"desc" json:"desc" params:"desc"`
- Style string `form:"style" json:"style" params:"style"`
- Area string `form:"area" json:"area" params:"area"`
- PlayTime time.Time `form:"play_time" json:"play_time" params:"play_time" validate:"required"`
- Info int `form:"info" json:"info" params:"info" validate:"required"`
- State string `form:"state" json:"state" validate:"required" params:"state"`
- TotalNum string `form:"total_num" json:"total_num" params:"total_num" validate:"required"`
- Upinfo string `form:"upinfo" json:"upinfo" params:"upinfo"`
- Staff string `form:"staff" json:"staff" params:"staff"`
- Role string `form:"role" json:"role" params:"role"`
- Copyright string `form:"copyright" json:"copyright" params:"copyright"`
- Cover string `form:"cover" json:"cover" params:"cover" gorm:"column:cover"`
- Check int `json:"check"`
- IsDeleted int `json:"is_deleted"`
- AuditTime int `json:"audit_time"`
- Valid int `json:"valid"`
- Reason string `json:"reason"`
- Version string `json:"version" form:"version"` // v1.13 new fields, movie, OVA or normal
- Producer string `json:"producer" form:"producer"` // v1.13 new fields, BBC, CCTV etc
- AliasSearch string `json:"alias_search" form:"alias_search"`
- Brief string `json:"brief" form:"brief"`
- Status string `json:"status" form:"status"`
- }
- // SeaRepoCore def.
- type SeaRepoCore struct {
- ID int64 `json:"id" params:"id"`
- OriginName string `json:"origin_name" params:"origin_name"`
- Title string `json:"title" params:"title"`
- Alias string `json:"alias" params:"alias"`
- Category int8 `json:"category" params:"category"`
- Desc string `json:"desc" params:"desc"`
- Style string `json:"style" params:"style"`
- Area string `json:"area" params:"area"`
- Info int8 `json:"info" params:"info"`
- State int8 `json:"state" params:"state"`
- TotalNum int32 `json:"total_num" params:"total_num"`
- Upinfo string `json:"upinfo" params:"upinfo"`
- Staff string `json:"staff" params:"staff"`
- Role string `json:"role" params:"role"`
- Copyright string `json:"copyright" params:"copyright"`
- Cover string `json:"cover" params:"cover" gorm:"column:cover"`
- Check int8 `json:"check"`
- IsDeleted int8 `json:"is_deleted"`
- AuditTime int `json:"audit_time"`
- Ctime time.Time `json:"ctime"`
- Valid int8 `json:"valid"`
- InjectTime time.Time `json:"inject_time"`
- Reason string `json:"reason"`
- }
- // SeaRepoDB def.
- type SeaRepoDB struct {
- SeaRepoCore
- PlayTime time.Time `gorm:"column:play_time"`
- Mtime time.Time `json:"mtime"`
- }
- // SeaRepoList def.
- type SeaRepoList struct {
- SeaRepoCore
- Mtime string `json:"mtime"`
- Pubdate string `json:"pubdate"`
- }
- // ToList transforms a SeaRepoDB to list, time transformation
- func (v *SeaRepoDB) ToList() (list *SeaRepoList) {
- list = &SeaRepoList{
- SeaRepoCore: v.SeaRepoCore,
- }
- list.Mtime = v.Mtime.Time().Format(mysql.TimeFormat)
- list.Pubdate = v.PlayTime.Time().Format(mysql.TimeFormat)
- return
- }
- // TableName gives the table name of content
- func (*TVEpContent) TableName() string {
- return "tv_ep_content"
- }
- // TableName gives the table name of season
- func (*TVEpSeason) TableName() string {
- return "tv_ep_season"
- }
- // TableName gives the table name of season
- func (v *SeaRepoDB) TableName() string {
- return "tv_ep_season"
- }
- // SeasonRepoPager def.
- type SeasonRepoPager struct {
- TotalCount int64 `json:"total_count"`
- Pn int `json:"pn"`
- Ps int `json:"ps"`
- Items []*SeaRepoList `json:"items"`
- }
- // Updated picks value from request and compare with the struct to analyse the difference
- func (sn TVEpSeason) Updated(req url.Values) (fields map[string]interface{}) {
- var (
- vl = reflect.ValueOf(sn)
- tp = reflect.TypeOf(sn)
- )
- fields = make(map[string]interface{})
- for i := 0; i < vl.NumField(); i++ {
- var (
- t = tp.Field(i)
- v = vl.Field(i)
- name = t.Tag.Get("json")
- )
- if reqV := req.Get(name); reqV != "" {
- if kind := t.Type.Kind(); kind == reflect.Int || kind == reflect.Int64 {
- if v.Int() != atoi(reqV) {
- fields[name] = atoi(reqV)
- }
- } else {
- if v.String() != reqV {
- fields[name] = reqV
- }
- }
- }
- }
- return
- }
- // ToContent transforms an ep to content object
- func (epc *TVEpContent) ToContent(isInit bool) (res *Content) {
- res = &Content{
- Title: epc.LongTitle,
- Subtitle: epc.Title,
- Desc: epc.Desc,
- Cover: epc.Cover,
- SeasonID: int(epc.SeasonID),
- CID: epc.CID,
- EPID: int(epc.ID),
- PayStatus: epc.PayStatus,
- }
- if isInit {
- res.State = 1
- }
- return
- }
- func atoi(value string) (intval int64) {
- intval, err := strconv.ParseInt(value, 10, 64)
- if err != nil {
- intval = 0
- }
- return intval
- }
|