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.
46 lines
1.1 KiB
46 lines
1.1 KiB
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 |
|
}
|
|
|