47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
|
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
|
||
|
}
|