108 lines
2.3 KiB
Go
108 lines
2.3 KiB
Go
package service
|
|
|
|
import (
|
|
"go-common/app/admin/main/tv/model"
|
|
arcmdl "go-common/app/service/main/archive/api"
|
|
"go-common/app/service/main/archive/model/archive"
|
|
"go-common/library/ecode"
|
|
"go-common/library/log"
|
|
|
|
"github.com/jinzhu/gorm"
|
|
)
|
|
|
|
func arcNormal(state int32) bool {
|
|
if state >= 0 || state == -6 { // archive can play
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
//AddArcs is used for adding archive
|
|
func (s *Service) AddArcs(aids []int64) (res *model.AddResp, err error) {
|
|
var (
|
|
valid bool
|
|
arc *model.SimpleArc
|
|
errFmt = "AddArcs %d, Error %v"
|
|
)
|
|
res = &model.AddResp{
|
|
Succ: []int64{},
|
|
Invalids: []int64{},
|
|
Exist: []int64{},
|
|
}
|
|
for _, v := range aids {
|
|
if valid, err = s.CheckArc(v); err != nil {
|
|
log.Error(errFmt, v, err)
|
|
return
|
|
}
|
|
// not valid aids
|
|
if !valid {
|
|
res.Invalids = append(res.Invalids, v)
|
|
continue
|
|
}
|
|
if arc, err = s.ExistArc(v); err != nil {
|
|
log.Error(errFmt, v, err)
|
|
return
|
|
}
|
|
// in our DB, already exist aids
|
|
if arc != nil {
|
|
res.Exist = append(res.Exist, v)
|
|
continue
|
|
}
|
|
if err = s.dao.NeedImport(v); err != nil {
|
|
log.Error(errFmt, v, err)
|
|
return
|
|
}
|
|
// added succesfully aids
|
|
res.Succ = append(res.Succ, v)
|
|
}
|
|
return
|
|
}
|
|
|
|
// CheckArc checks whether the archive is able to play and existing in Archive DB
|
|
func (s *Service) CheckArc(aid int64) (ok bool, err error) {
|
|
var (
|
|
argAid2 = &arcmdl.ArcRequest{Aid: aid}
|
|
arcReply *arcmdl.ArcReply
|
|
)
|
|
if arcReply, err = s.arcClient.Arc(ctx, argAid2); err != nil {
|
|
if ecode.NothingFound.Equal(err) { // archive not found at all
|
|
err = nil
|
|
return
|
|
}
|
|
log.Error("s.arcRPC.Archive3(%v) error(%v)", argAid2, err)
|
|
return
|
|
}
|
|
arc := arcReply.Arc
|
|
if s.Contains(arc.TypeID) { // filter pgc types
|
|
ok = false
|
|
return
|
|
}
|
|
if arc.Copyright != 1 {
|
|
ok = false
|
|
return
|
|
}
|
|
if arc.Rights.UGCPay == archive.AttrYes {
|
|
ok = false
|
|
return
|
|
}
|
|
if arcNormal(arc.State) {
|
|
ok = true
|
|
}
|
|
return
|
|
}
|
|
|
|
// ExistArc checks whether the archive is already in our TV DB, which means no need to import again
|
|
func (s *Service) ExistArc(aid int64) (res *model.SimpleArc, err error) {
|
|
var arc = model.SimpleArc{}
|
|
if err = s.DB.Where("aid = ?", aid).Where("deleted = ?", 0).First(&arc).Error; err != nil {
|
|
if err == gorm.ErrRecordNotFound {
|
|
err = nil
|
|
res = nil
|
|
return
|
|
}
|
|
log.Error("ExistArc DB Error %v", err)
|
|
return
|
|
}
|
|
return &arc, nil
|
|
}
|