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.
138 lines
3.9 KiB
138 lines
3.9 KiB
package ugc |
|
|
|
import ( |
|
"time" |
|
|
|
arcmdl "go-common/app/service/main/archive/api" |
|
) |
|
|
|
// ArcMsg reprensents the archive Notify-T message structure |
|
type ArcMsg struct { |
|
Action string `json:"action"` |
|
Table string `json:"table"` |
|
Old *ArchDatabus `json:"old"` |
|
New *ArchDatabus `json:"new"` |
|
} |
|
|
|
// ArchDatabus model ( we pick the fields that we need ) |
|
type ArchDatabus struct { |
|
Aid int64 `json:"aid"` |
|
Mid int64 `json:"mid"` |
|
TypeID int32 `json:"typeid"` |
|
Videos int64 `json:"videos"` |
|
Duration int `json:"duration"` |
|
Title string `json:"title"` |
|
Cover string `json:"cover"` |
|
Content string `json:"content"` |
|
Attribute int32 `json:"attribute"` |
|
Copyright int32 `json:"copyright"` |
|
State int32 `json:"state"` |
|
Access int `json:"access"` |
|
PubTime string `json:"pubtime"` |
|
} |
|
|
|
// VideoDiff reprensents the result of videos comparison |
|
type VideoDiff struct { |
|
Aid int64 |
|
Equal []int64 // totally equal |
|
New []int64 // new added videos |
|
Updated []*arcmdl.Page |
|
Removed []int64 |
|
} |
|
|
|
// DatabusVideo is the struct of message for the modification of ugc_Video |
|
type DatabusVideo struct { |
|
New *MarkVideo `json:"new"` |
|
Old *MarkVideo `json:"old"` |
|
} |
|
|
|
// DatabusArc is the struct of message for the modification of ugc_archive |
|
type DatabusArc struct { |
|
Old *MarkArc `json:"old"` |
|
New *MarkArc `json:"new"` |
|
} |
|
|
|
// MarkVideo contains the main fields that we want to pick up from databus message |
|
type MarkVideo struct { |
|
Mark int `json:"mark"` |
|
Deleted int `json:"deleted"` |
|
CID int64 `json:"cid"` |
|
AID int64 `json:"aid"` |
|
EPTitle string `json:"eptitle"` |
|
IndexOrder int `json:"index_order"` |
|
Valid int `json:"valid"` |
|
Result int `json:"result"` |
|
Submit int `json:"submit"` |
|
Transcoded int `json:"transcoded"` |
|
Retry int64 `json:"retry"` |
|
} |
|
|
|
// MarkArc contains the main fields that we want to pick up from databus message |
|
type MarkArc struct { |
|
ID int `json:"id"` |
|
AID int64 `json:"aid"` |
|
MID int `json:"mid"` |
|
TypeID int32 `json:"typeid"` |
|
Videos int `json:"videos"` |
|
Title string `json:"title"` |
|
Cover string `json:"cover"` |
|
Content string `json:"content"` |
|
Duration int `json:"duration"` |
|
Copyright int `json:"copyright"` |
|
Pubtime string `json:"pubtime"` |
|
Ctime string `json:"ctime"` |
|
Mtime string `json:"mtime"` |
|
State int `json:"state"` |
|
Manual int `json:"manual"` |
|
Valid int `json:"valid"` |
|
Submit int `json:"submit"` |
|
Retry int `json:"retry"` |
|
Result int `json:"result"` |
|
Deleted int `json:"deleted"` |
|
InjectTime string `json:"inject_time"` |
|
Reason string `json:"reason"` |
|
} |
|
|
|
// IsPass returns whether the arc is able to play |
|
func (a MarkArc) IsPass() bool { |
|
return a.Deleted == 0 && a.Valid == 1 && a.Result == 1 |
|
} |
|
|
|
// CidReq reprensents the structure for reporting cid |
|
type CidReq struct { |
|
CID int64 `json:"cid"` |
|
} |
|
|
|
// CidResp represents the structure of cid reporting API's response |
|
type CidResp struct { |
|
Code int `json:"code"` |
|
Message string `json:"message"` |
|
} |
|
|
|
// ToReport distinguishes whether the CID need to be reported to video cloud |
|
func (vm *MarkVideo) ToReport(criCID int64) bool { |
|
return vm.Deleted == 0 && vm.Mark == 0 && vm.CID > criCID |
|
} |
|
|
|
// ToAudit distinguishes whether the CID need to be reported to the license owner |
|
func (vm *MarkVideo) ToAudit(criCID int64) bool { |
|
return vm.Submit == 1 && (vm.Transcoded == 1 || vm.CID <= criCID) && vm.Retry < time.Now().Unix() && vm.Deleted == 0 |
|
} |
|
|
|
// CanPlay tells whether a video can play or not |
|
func (vm *MarkVideo) CanPlay() bool { |
|
return vm.Result == 1 && vm.Deleted == 0 && vm.Valid == 1 |
|
} |
|
|
|
// ToCMS transforms a databus video to CMS info |
|
func (vm *MarkVideo) ToCMS() *VideoCMS { |
|
return &VideoCMS{ |
|
CID: int(vm.CID), |
|
Title: vm.EPTitle, |
|
AID: int(vm.AID), |
|
IndexOrder: vm.IndexOrder, |
|
Valid: vm.Valid, |
|
Deleted: vm.Deleted, |
|
Result: vm.Result, |
|
} |
|
}
|
|
|