123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- package archive
- import (
- "context"
- "time"
- "fmt"
- "go-common/app/interface/main/creative/conf"
- arcMdl "go-common/app/interface/main/creative/model/archive"
- archive "go-common/app/service/main/archive/api/gorpc"
- "go-common/library/cache/memcache"
- "go-common/library/cache/redis"
- "go-common/library/database/sql"
- bm "go-common/library/net/http/blademaster"
- "go-common/library/sync/pipeline/fanout"
- )
- // Dao is archive dao.
- type Dao struct {
- // config
- c *conf.Config
- // rpc
- arc *archive.Service2
- // select
- client *bm.Client
- // db
- db *sql.DB
- // mc
- mc *memcache.Pool
- mcExpire int32
- //cache tool
- cache *fanout.Fanout
- // redis
- redis *redis.Pool
- redisExpire int32
- // uri
- view string
- views string
- del string
- video string
- hList string
- hView string
- flow string
- upArchives string
- descFormat string
- nsMd5 string
- simpleVideos string
- simpleArchive string
- videoJam string
- upSpecialURL string
- flowJudge string
- staffApplies string
- staffApply string
- staffCheck string
- }
- // New init api url
- func New(c *conf.Config) (d *Dao) {
- d = &Dao{
- c: c,
- arc: archive.New2(c.ArchiveRPC),
- // http client
- client: bm.NewClient(c.HTTPClient.Normal),
- // db
- db: sql.NewMySQL(c.DB.Archive),
- cache: fanout.New("dao_archive", fanout.Worker(5), fanout.Buffer(10240)),
- // mc
- mc: memcache.NewPool(c.Memcache.Archive.Config),
- mcExpire: 600,
- //Fav redis cache
- redis: redis.NewPool(c.Redis.Cover.Config),
- redisExpire: int32(time.Duration(c.Redis.Cover.Expire) / time.Second),
- // uri
- view: c.Host.Videoup + _view,
- views: c.Host.Videoup + _views,
- video: c.Host.Videoup + _video,
- del: c.Host.Videoup + _del,
- hList: c.Host.Videoup + _hList,
- hView: c.Host.Videoup + _hView,
- flow: c.Host.Videoup + _flow,
- upArchives: c.Host.Videoup + _archives,
- descFormat: c.Host.Videoup + _descFormat,
- nsMd5: c.Host.Videoup + _nsMd5,
- simpleVideos: c.Host.Videoup + _simpleVideos,
- simpleArchive: c.Host.Videoup + _simpleArchive,
- videoJam: c.Host.Videoup + _videoJam,
- upSpecialURL: c.Host.API + _upSpecial,
- flowJudge: c.Host.Videoup + _flowjudge,
- staffApplies: c.Host.Videoup + _staffApplies,
- staffApply: c.Host.Videoup + _staffApply,
- staffCheck: c.Host.Videoup + _staffCheck,
- }
- return
- }
- // Ping fn
- func (d *Dao) Ping(c context.Context) (err error) {
- if err = d.pingRedis(c); err != nil {
- return
- }
- return
- }
- // Close fn
- func (d *Dao) Close() (err error) {
- if d.redis != nil {
- d.redis.Close()
- }
- if d.mc != nil {
- d.mc.Close()
- }
- return d.db.Close()
- }
- func staffKey(aid int64) string {
- return fmt.Sprintf("staff_aid_%d", aid)
- }
- func (d *Dao) cacheSFStaffData(aid int64) string {
- return fmt.Sprintf("staff_aid_sf_%d", aid)
- }
- //go:generate $GOPATH/src/go-common/app/tool/cache/gen
- type _cache interface {
- // cache: -singleflight=true -nullcache=[]*arcMdl.Staff{{ID:-1}} -check_null_code=len($)==1&&$[0].ID==-1
- StaffData(c context.Context, aid int64) ([]*arcMdl.Staff, error)
- ViewPoint(c context.Context, aid int64, cid int64) (vp *arcMdl.ViewPointRow, err error)
- }
- //go:generate $GOPATH/src/go-common/app/tool/cache/mc
- type _mc interface {
- // mc: -key=staffKey
- CacheStaffData(c context.Context, key int64) ([]*arcMdl.Staff, error)
- // 这里也支持自定义注释 会替换默认的注释
- // mc: -key=staffKey -expire=3 -encode=json|gzip
- AddCacheStaffData(c context.Context, key int64, value []*arcMdl.Staff) error
- // mc: -key=staffKey
- DelCacheStaffData(c context.Context, key int64) error
- //mc: -key=viewPointCacheKey -expire=_viewPointExp -encode=json
- AddCacheViewPoint(c context.Context, aid int64, vp *arcMdl.ViewPointRow, cid int64) (err error)
- //mc: -key=viewPointCacheKey
- CacheViewPoint(c context.Context, aid int64, cid int64) (vp *arcMdl.ViewPointRow, err error)
- }
|