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.
107 lines
2.3 KiB
107 lines
2.3 KiB
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 |
|
}
|
|
|