123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- package channel
- import (
- "context"
- "time"
- "go-common/app/interface/main/app-card/model/card/live"
- "go-common/app/interface/main/app-card/model/card/operate"
- "go-common/app/interface/main/app-channel/conf"
- accdao "go-common/app/interface/main/app-channel/dao/account"
- actdao "go-common/app/interface/main/app-channel/dao/activity"
- arcdao "go-common/app/interface/main/app-channel/dao/archive"
- artdao "go-common/app/interface/main/app-channel/dao/article"
- audiodao "go-common/app/interface/main/app-channel/dao/audio"
- adtdao "go-common/app/interface/main/app-channel/dao/audit"
- bgmdao "go-common/app/interface/main/app-channel/dao/bangumi"
- carddao "go-common/app/interface/main/app-channel/dao/card"
- convergedao "go-common/app/interface/main/app-channel/dao/converge"
- gamedao "go-common/app/interface/main/app-channel/dao/game"
- livdao "go-common/app/interface/main/app-channel/dao/live"
- locdao "go-common/app/interface/main/app-channel/dao/location"
- rgdao "go-common/app/interface/main/app-channel/dao/region"
- reldao "go-common/app/interface/main/app-channel/dao/relation"
- shopdao "go-common/app/interface/main/app-channel/dao/shopping"
- specialdao "go-common/app/interface/main/app-channel/dao/special"
- tabdao "go-common/app/interface/main/app-channel/dao/tab"
- tagdao "go-common/app/interface/main/app-channel/dao/tag"
- "go-common/app/interface/main/app-channel/model/card"
- "go-common/app/interface/main/app-channel/model/channel"
- "go-common/app/interface/main/app-channel/model/tab"
- )
- // Service channel
- type Service struct {
- c *conf.Config
- // dao
- acc *accdao.Dao
- arc *arcdao.Dao
- act *actdao.Dao
- art *artdao.Dao
- adt *adtdao.Dao
- bgm *bgmdao.Dao
- audio *audiodao.Dao
- rel *reldao.Dao
- sp *shopdao.Dao
- tg *tagdao.Dao
- cd *carddao.Dao
- ce *convergedao.Dao
- g *gamedao.Dao
- sl *specialdao.Dao
- rg *rgdao.Dao
- lv *livdao.Dao
- loc *locdao.Dao
- tab *tabdao.Dao
- // tick
- tick time.Duration
- // cache
- cardCache map[int64][]*card.Card
- cardPlatCache map[string][]*card.CardPlat
- upCardCache map[int64]*operate.Follow
- convergeCardCache map[int64]*operate.Converge
- gameDownloadCache map[int64]*operate.Download
- specialCardCache map[int64]*operate.Special
- liveCardCache map[int64][]*live.Card
- cardSetCache map[int64]*operate.CardSet
- menuCache map[int64][]*tab.Menu
- // new region list cache
- cachelist map[string][]*channel.Region
- limitCache map[int64][]*channel.RegionLimit
- configCache map[int64][]*channel.RegionConfig
- // audit cache
- auditCache map[string]map[int]struct{} // audit mobi_app builds
- // infoc
- logCh chan interface{}
- }
- // New channel
- func New(c *conf.Config) (s *Service) {
- s = &Service{
- c: c,
- arc: arcdao.New(c),
- acc: accdao.New(c),
- adt: adtdao.New(c),
- art: artdao.New(c),
- act: actdao.New(c),
- bgm: bgmdao.New(c),
- sp: shopdao.New(c),
- tg: tagdao.New(c),
- cd: carddao.New(c),
- ce: convergedao.New(c),
- g: gamedao.New(c),
- sl: specialdao.New(c),
- rg: rgdao.New(c),
- audio: audiodao.New(c),
- lv: livdao.New(c),
- rel: reldao.New(c),
- loc: locdao.New(c),
- tab: tabdao.New(c),
- // tick
- tick: time.Duration(c.Tick),
- // cache
- cardCache: map[int64][]*card.Card{},
- cardPlatCache: map[string][]*card.CardPlat{},
- upCardCache: map[int64]*operate.Follow{},
- convergeCardCache: map[int64]*operate.Converge{},
- gameDownloadCache: map[int64]*operate.Download{},
- specialCardCache: map[int64]*operate.Special{},
- cachelist: map[string][]*channel.Region{},
- limitCache: map[int64][]*channel.RegionLimit{},
- configCache: map[int64][]*channel.RegionConfig{},
- liveCardCache: map[int64][]*live.Card{},
- cardSetCache: map[int64]*operate.CardSet{},
- menuCache: map[int64][]*tab.Menu{},
- // audit cache
- auditCache: map[string]map[int]struct{}{},
- // infoc
- logCh: make(chan interface{}, 1024),
- }
- s.loadCache()
- go s.loadCacheproc()
- go s.infocproc()
- return
- }
- func (s *Service) loadCacheproc() {
- for {
- time.Sleep(s.tick)
- s.loadCache()
- }
- }
- func (s *Service) loadCache() {
- now := time.Now()
- s.loadAuditCache()
- s.loadRegionlist()
- // card
- s.loadCardCache(now)
- s.loadConvergeCache()
- s.loadSpecialCache()
- s.loadLiveCardCache()
- s.loadGameDownloadCache()
- s.loadCardSetCache()
- s.loadMenusCache(now)
- }
- // Ping is check server ping.
- func (s *Service) Ping(c context.Context) (err error) {
- if err = s.cd.PingDB(c); err != nil {
- return
- }
- return
- }
|