sync_season.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package pgc
  2. import (
  3. "database/sql"
  4. "time"
  5. "go-common/app/job/main/tv/dao/lic"
  6. model "go-common/app/job/main/tv/model/pgc"
  7. "go-common/library/ecode"
  8. "go-common/library/log"
  9. )
  10. // Sync modified season data to the license owner
  11. func (s *Service) syncSeason() {
  12. defer s.waiter.Done()
  13. for {
  14. if s.daoClosed {
  15. log.Info("syncSeason DB closed!")
  16. return
  17. }
  18. modSeason, err := s.dao.ModSeason(ctx)
  19. if err == sql.ErrNoRows || len(modSeason) == 0 {
  20. log.Info("No modified data to pick from Season to audit")
  21. time.Sleep(time.Duration(s.c.Sync.Frequency.FreModSeason))
  22. continue
  23. }
  24. for _, v := range modSeason {
  25. if err = s.snSync(v); err != nil {
  26. s.addRetrySn(v)
  27. }
  28. s.dao.AuditSeason(ctx, int(v.ID)) // update season status after succ
  29. }
  30. time.Sleep(1 * time.Second) // break after each loop
  31. }
  32. }
  33. func (s *Service) snSync(sn *model.TVEpSeason) (err error) {
  34. cfg := s.c.Sync
  35. data := newLic(sn, cfg)
  36. data.XMLData.Service.Head.Count = 1
  37. res, err := s.licDao.CallRetry(ctx, cfg.API.UpdateURL, lic.PrepareXML(data))
  38. if res == nil {
  39. err = ecode.TvSyncErr
  40. }
  41. return
  42. }