1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package web
- import (
- "context"
- "time"
- tagrpc "go-common/app/interface/main/tag/rpc/client"
- "go-common/app/interface/main/web-goblin/conf"
- "go-common/app/interface/main/web-goblin/dao/web"
- webmdl "go-common/app/interface/main/web-goblin/model/web"
- arcrpc "go-common/app/service/main/archive/api/gorpc"
- "go-common/library/log"
- )
- const _chCardTypeAv = "av"
- // Service struct .
- type Service struct {
- c *conf.Config
- dao *web.Dao
- arc *arcrpc.Service2
- tag *tagrpc.Service
- maxAid int64
- channelCards map[int64][]*webmdl.ChCard
- }
- // New init .
- func New(c *conf.Config) (s *Service) {
- s = &Service{
- c: c,
- dao: web.New(c),
- arc: arcrpc.New2(c.ArchiveRPC),
- tag: tagrpc.New2(c.TagRPC),
- }
- go s.justAID()
- go s.chCardproc()
- return s
- }
- // Ping Service .
- func (s *Service) Ping(c context.Context) (err error) {
- return s.dao.Ping(c)
- }
- // Close Service .
- func (s *Service) Close() {
- s.dao.Close()
- }
- func (s *Service) chCardproc() {
- for {
- now := time.Now()
- cardMap, err := s.dao.ChCard(context.Background(), now)
- if err != nil {
- log.Error("chCardproc s.dao.ChCard() error(%v)", err)
- time.Sleep(time.Second)
- }
- l := len(cardMap)
- if l == 0 {
- time.Sleep(time.Duration(s.c.Rule.ChCardInterval))
- continue
- }
- tmp := make(map[int64][]*webmdl.ChCard, l)
- for channelID, card := range cardMap {
- for _, v := range card {
- if v.Type == _chCardTypeAv {
- tmp[channelID] = append(tmp[channelID], v)
- }
- }
- }
- s.channelCards = tmp
- time.Sleep(time.Duration(s.c.Rule.ChCardInterval))
- }
- }
|