123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- package account
- import (
- "context"
- "time"
- "go-common/app/interface/main/creative/conf"
- "go-common/app/interface/main/creative/dao/account"
- "go-common/app/interface/main/creative/dao/archive"
- "go-common/app/interface/main/creative/dao/article"
- "go-common/app/interface/main/creative/dao/up"
- "go-common/app/interface/main/creative/service"
- "go-common/library/log"
- "go-common/library/stat/prom"
- )
- //Service struct.
- type Service struct {
- c *conf.Config
- acc *account.Dao
- article *article.Dao
- archive *archive.Dao
- up *up.Dao
- exemptIDCheckUps map[int64]int64
- exemptZeroLevelAndAnswerUps map[int64]int64
- uploadTopSizeUps map[int64]int64
- missch chan func()
- pCacheHit *prom.Prom
- pCacheMiss *prom.Prom
- }
- //New get service.
- func New(c *conf.Config, rpcdaos *service.RPCDaos) *Service {
- s := &Service{
- c: c,
- acc: rpcdaos.Acc,
- article: rpcdaos.Art,
- archive: rpcdaos.Arc,
- up: rpcdaos.Up,
- missch: make(chan func(), 1024),
- pCacheHit: prom.CacheHit,
- pCacheMiss: prom.CacheMiss,
- }
- s.loadExemptIDCheckUps()
- s.loadExemptZeroLevelAndAnswer()
- s.loadUpSpecialUploadTopSize()
- go s.loadproc()
- go s.cacheproc()
- return s
- }
- // loadproc
- func (s *Service) loadproc() {
- for {
- time.Sleep(5 * time.Minute)
- s.loadExemptIDCheckUps()
- s.loadExemptZeroLevelAndAnswer()
- s.loadUpSpecialUploadTopSize()
- }
- }
- // loadExemptIDCheckUps 白名单人员,免实名认证 type=8.
- func (s *Service) loadExemptIDCheckUps() {
- ups, err := s.up.UpSpecial(context.TODO(), 8)
- if err != nil {
- return
- }
- s.exemptIDCheckUps = ups
- log.Info("exemptIDCheckUps ups: (%v)", len(ups))
- }
- // loadExemptIDCheckUps 白名单人员,免账号激活,免账号升级到1级 type=12
- func (s *Service) loadExemptZeroLevelAndAnswer() {
- ups, err := s.up.UpSpecial(context.TODO(), 12)
- if err != nil {
- return
- }
- s.exemptZeroLevelAndAnswerUps = ups
- }
- // loadUpSpecialUploadTopSize 投稿名单限制升级 上传视频可以超过4G,但是在8G以下 type=16
- func (s *Service) loadUpSpecialUploadTopSize() {
- ups, err := s.up.UpSpecial(context.TODO(), 16)
- if err != nil {
- return
- }
- s.uploadTopSizeUps = ups
- }
- // AddCache add to chan for cache
- func (s *Service) addCache(f func()) {
- select {
- case s.missch <- f:
- default:
- log.Warn("cacheproc chan full")
- }
- }
- // cacheproc is a routine for execute closure.
- func (s *Service) cacheproc() {
- for {
- f := <-s.missch
- f()
- }
- }
|