123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- 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
- }
|