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.
53 lines
1.1 KiB
53 lines
1.1 KiB
package goblin |
|
|
|
import ( |
|
"time" |
|
|
|
"go-common/app/interface/main/tv/model" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
) |
|
|
|
func (s *Service) loadSphproc() { |
|
for { |
|
time.Sleep(time.Duration(s.conf.Cfg.PageReload)) |
|
log.Info("Reload Splash Data!") |
|
s.loadSph() |
|
} |
|
} |
|
|
|
func (s *Service) loadSph() { |
|
var ( |
|
err error |
|
chls []*model.Channel |
|
chlSplash = make(map[string]string) |
|
) |
|
// pick channel's splash data |
|
if chls, err = s.dao.ChlInfo(ctx); err != nil { |
|
log.Error("LoadSph Error (%v)", err) |
|
return |
|
} |
|
if len(chls) == 0 { |
|
log.Error("loadSph Channel Data is Empty!") |
|
return |
|
} |
|
// travel the channels to make the map |
|
for _, v := range chls { |
|
chlSplash[v.Title] = v.Splash |
|
} |
|
s.ChlSplash = chlSplash |
|
log.Info("Reload %d Channel Data", len(chlSplash)) |
|
} |
|
|
|
// PickSph picks the splash data from memory map |
|
func (s *Service) PickSph(channel string) (sph string, err error) { |
|
var ok bool |
|
if len(s.ChlSplash) == 0 { |
|
log.Error("Channel Data is Nil") |
|
return "", ecode.ServiceUnavailable |
|
} |
|
if sph, ok = s.ChlSplash[channel]; !ok { |
|
sph = s.conf.Cfg.DefaultSplash |
|
} |
|
return sph, nil |
|
}
|
|
|