go-common/app/interface/main/creative/service/account/service.go

106 lines
2.5 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
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()
}
}