go-common/app/job/main/tv/service/pgc/del_season.go

55 lines
1.4 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
package pgc
import (
"database/sql"
"time"
"go-common/app/job/main/tv/dao/lic"
"go-common/library/log"
)
// sync the deleted season data to the license owner
func (s *Service) delSeason() {
var (
sign = s.c.Sync.Sign
prefix = s.c.Sync.AuditPrefix
)
defer s.waiter.Done()
for {
if s.daoClosed {
log.Info("delSeason DB closed!")
return
}
delSeason, err := s.dao.DelSeason(ctx)
if err == sql.ErrNoRows || len(delSeason) == 0 {
log.Info("No deleted data to pick from Season to sync")
time.Sleep(time.Duration(s.c.Sync.Frequency.FreModSeason))
continue
}
for _, v := range delSeason {
data := lic.DelLic(sign, prefix, v.ID)
// ignore the program part during modified season sync
body := lic.PrepareXML(data)
res, err := s.licDao.CallRetry(ctx, s.c.Sync.API.DelSeasonURL, body)
// 3 times still error
if err != nil {
log.Error("DelSeasonURL interface not available!Sid: %v, Err: %v", v.ID, err)
s.dao.DelaySeason(ctx, v.ID)
time.Sleep(time.Duration(s.c.Sync.Frequency.ErrorWait))
// avoid always be stuck by one error data
break
}
if err == nil && res != nil {
_, err := s.dao.RejectSeason(ctx, int(v.ID))
if err != nil {
log.Error("DelSeasonSync season %v to rejected fail!", v.ID)
// sync next one
continue
}
}
}
// break after each loop
time.Sleep(1 * time.Second)
}
}