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.
93 lines
2.3 KiB
93 lines
2.3 KiB
package ugc |
|
|
|
import ( |
|
"time" |
|
|
|
appDao "go-common/app/job/main/tv/dao/app" |
|
"go-common/app/job/main/tv/dao/lic" |
|
"go-common/library/database/sql" |
|
"go-common/library/log" |
|
) |
|
|
|
func (s *Service) delArcproc() { |
|
defer s.waiter.Done() |
|
for { |
|
if s.daoClosed { |
|
log.Info("delArcproc DB closed!") |
|
return |
|
} |
|
// build the skeleton, arc + video data |
|
cAid, err := s.dao.DeletedArc(ctx) |
|
if err != nil && err != sql.ErrNoRows { |
|
log.Error("DeletedArc Error %v", err) |
|
appDao.PromError("SyncDelAid:Err") |
|
time.Sleep(time.Duration(s.c.UgcSync.Frequency.SyncFre)) |
|
continue |
|
} |
|
if err == sql.ErrNoRows || cAid == 0 { |
|
log.Info("SyncDelAid No Data to Sync") |
|
time.Sleep(time.Duration(s.c.UgcSync.Frequency.SyncFre)) |
|
continue |
|
} |
|
if err = s.delLic(cAid); err != nil { |
|
appDao.PromError("SyncDelAid:Err") |
|
log.Error("delLic error %v, aid %d", err, cAid) |
|
time.Sleep(time.Duration(s.c.UgcSync.Frequency.SyncFre)) |
|
continue |
|
} |
|
appDao.PromInfo("SyncDelAid:Succ") |
|
} |
|
} |
|
|
|
// delArcErr: it logs the error and postpone the videos for the next submit |
|
func (s *Service) delArcErr(aid int64, fmt string, err error) { |
|
s.dao.PpDelArc(ctx, aid) |
|
log.Error(fmt, aid, err) |
|
} |
|
|
|
// delLic: sync our arc data to License owner |
|
func (s *Service) delLic(cAid int64) (err error) { |
|
var ( |
|
xmlBody string |
|
sign = s.c.Sync.Sign |
|
prefix = s.c.Sync.UGCPrefix |
|
) |
|
xmlBody = lic.PrepareXML(lic.DelLic(sign, prefix, cAid)) |
|
// call api |
|
if _, err = s.licDao.CallRetry(ctx, s.c.Sync.API.DelSeasonURL, xmlBody); err != nil { |
|
s.delArcErr(cAid, "xml call %d error %v", err) |
|
return |
|
} |
|
// update the arc & videos' submit status to finish |
|
if err = s.dao.FinishDelArc(ctx, cAid); err != nil { |
|
s.delArcErr(cAid, "FinishDelArc %d error %v", err) |
|
} |
|
return |
|
} |
|
|
|
func (s *Service) delArc(aid int64) (err error) { |
|
var tx *sql.Tx |
|
// check whether the arc exist in our DB |
|
if !s.arcExist(aid) { |
|
log.Warn("Del Arc %d, it doesn't exist", aid) |
|
return |
|
} |
|
// delete the arc, put submit to 1 |
|
if tx, err = s.dao.BeginTran(ctx); err != nil { // begin transaction |
|
return |
|
} |
|
if err = s.dao.TxDelArc(tx, aid); err != nil { |
|
appDao.PromError("DelArc:Err") |
|
tx.Rollback() |
|
return |
|
} |
|
// delete the videos put submit to 1 |
|
if err = s.dao.TxDelVideos(tx, aid); err != nil { |
|
appDao.PromError("DelArc:Err") |
|
tx.Rollback() |
|
return |
|
} |
|
appDao.PromInfo("DelArc:Succ") |
|
tx.Commit() |
|
return |
|
}
|
|
|