go-common/app/interface/main/creative/service/account/service.go
2019-04-22 18:49:16 +08:00

106 lines
2.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()
}
}