139 lines
3.9 KiB
Go
139 lines
3.9 KiB
Go
|
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,
|
||
|
}
|
||
|
}
|