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

47 lines
1.1 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"
model "go-common/app/job/main/tv/model/pgc"
"go-common/library/ecode"
"go-common/library/log"
)
// Sync modified season data to the license owner
func (s *Service) syncSeason() {
defer s.waiter.Done()
for {
if s.daoClosed {
log.Info("syncSeason DB closed!")
return
}
modSeason, err := s.dao.ModSeason(ctx)
if err == sql.ErrNoRows || len(modSeason) == 0 {
log.Info("No modified data to pick from Season to audit")
time.Sleep(time.Duration(s.c.Sync.Frequency.FreModSeason))
continue
}
for _, v := range modSeason {
if err = s.snSync(v); err != nil {
s.addRetrySn(v)
}
s.dao.AuditSeason(ctx, int(v.ID)) // update season status after succ
}
time.Sleep(1 * time.Second) // break after each loop
}
}
func (s *Service) snSync(sn *model.TVEpSeason) (err error) {
cfg := s.c.Sync
data := newLic(sn, cfg)
data.XMLData.Service.Head.Count = 1
res, err := s.licDao.CallRetry(ctx, cfg.API.UpdateURL, lic.PrepareXML(data))
if res == nil {
err = ecode.TvSyncErr
}
return
}