123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- package dao
- import (
- "context"
- xhttp "net/http"
- "time"
- "go-common/app/interface/main/web/conf"
- "go-common/library/cache/redis"
- "go-common/library/log"
- bm "go-common/library/net/http/blademaster"
- "go-common/library/stat/prom"
- )
- const (
- _rankURL = "/data/rank/"
- _feedbackURL = "/x/internal/feedback/ugc/add"
- _spaceTopPhotoURL = "/api/member/getTopPhoto"
- _coinAddURL = "/x/coin/add"
- _coinExpURL = "/x/coin/today/exp"
- _elecShowURL = "/api/v2/rank/query/av"
- _arcReportURL = "/videoup/archive/report"
- _arcAppealURL = "/x/internal/workflow/appeal/add"
- _appealTagsURL = "/x/internal/workflow/tag/list"
- _relatedURL = "/recsys/related"
- _onlineURL = "/x/internal/chat/server/ol"
- _liveOnlineURL = "/room/v1/Online/get_total_online"
- _helpListURL = "/kb/getQuestionTypeListByParentIdBilibili/4"
- _helpSearchURL = "/kb/searchInerDocListBilibili/4"
- _onlineListURL = "/x/internal/chat/num/top/aid"
- _searchURL = "/main/search"
- _searchRecURL = "/search/recommend"
- _searchDefaultURL = "/query/recommend"
- _searchUpRecURL = "/main/recommend"
- _searchEggURI = "/x/admin/feed/eggSearchWeb"
- _payWalletURL = "/wallet-int/wallet/getUserWalletInfo"
- _payWalletOldURL = "/wallet/api/v1/info"
- _special = "/x/internal/uper/special"
- )
- // Dao dao
- type Dao struct {
- // config
- c *conf.Config
- // http client
- httpR *bm.Client
- httpW *bm.Client
- httpBigData *bm.Client
- httpHelp *bm.Client
- httpSearch *bm.Client
- httpPay *bm.Client
- bfsClient *xhttp.Client
- // redis
- redis *redis.Pool
- redisBak *redis.Pool
- redisNlExpire int32
- redisNlBakExpire int32
- redisRkExpire int32
- redisRkBakExpire int32
- redisDynamicBakExpire int32
- redisArchiveBakExpire int32
- redisTagBakExpire int32
- redisCardBakExpire int32
- redisRcExpire int32
- redisRcBakExpire int32
- redisArtBakExpire int32
- redisIxIconExpire int32
- redisIxIconBakExpire int32
- redisHelpBakExpire int32
- redisOlListBakExpire int32
- redisWxHotExpire int32
- redisWxHotBakExpire int32
- redisAppealLimitExpire int32
- // bigdata url
- rankURL string
- rankIndexURL string
- rankRegionURL string
- rankRecURL string
- rankTagURL string
- feedbackURL string
- spaceTopPhotoURL string
- coinAddURL string
- coinExpURL string
- customURL string
- elecShowURL string
- arcReportURL string
- appealTagsURL string
- arcAppealURL string
- relatedURL string
- onlineURL string
- liveOnlineURL string
- helpListURL string
- helpSearchURL string
- onlineListURL string
- shopURL string
- replyHotURL string
- searchURL string
- searchRecURL string
- searchDefaultURL string
- searchUpRecURL string
- searchEggURL string
- walletURL string
- walletOldURL string
- abServerURL string
- wxHotURL string
- bnjConfURL string
- special string
- // cache Prom
- cacheProm *prom.Prom
- }
- // New dao new
- func New(c *conf.Config) (d *Dao) {
- d = &Dao{
- // config
- c: c,
- // http read client
- httpR: bm.NewClient(c.HTTPClient.Read),
- httpW: bm.NewClient(c.HTTPClient.Write),
- httpBigData: bm.NewClient(c.HTTPClient.BigData),
- httpHelp: bm.NewClient(c.HTTPClient.Help),
- httpSearch: bm.NewClient(c.HTTPClient.Search),
- httpPay: bm.NewClient(c.HTTPClient.Pay),
- // init bfs http client
- bfsClient: xhttp.DefaultClient,
- // redis
- redis: redis.NewPool(c.Redis.LocalRedis.Config),
- redisBak: redis.NewPool(c.Redis.BakRedis.Config),
- redisNlExpire: int32(time.Duration(c.Redis.LocalRedis.NewlistExpire) / time.Second),
- redisNlBakExpire: int32(time.Duration(c.Redis.BakRedis.NewlistExpire) / time.Second),
- redisRkExpire: int32(time.Duration(c.Redis.LocalRedis.RankingExpire) / time.Second),
- redisRkBakExpire: int32(time.Duration(c.Redis.BakRedis.RankingExpire) / time.Second),
- redisDynamicBakExpire: int32(time.Duration(c.Redis.BakRedis.RegionExpire) / time.Second),
- redisArchiveBakExpire: int32(time.Duration(c.Redis.BakRedis.ArchiveExpire) / time.Second),
- redisTagBakExpire: int32(time.Duration(c.Redis.BakRedis.TagExpire) / time.Second),
- redisCardBakExpire: int32(time.Duration(c.Redis.BakRedis.CardExpire) / time.Second),
- redisRcExpire: int32(time.Duration(c.Redis.LocalRedis.RcExpire) / time.Second),
- redisRcBakExpire: int32(time.Duration(c.Redis.BakRedis.RcExpire) / time.Second),
- redisArtBakExpire: int32(time.Duration(c.Redis.BakRedis.ArtUpExpire) / time.Second),
- redisIxIconExpire: int32(time.Duration(c.Redis.LocalRedis.IndexIconExpire) / time.Second),
- redisIxIconBakExpire: int32(time.Duration(c.Redis.BakRedis.IndexIconExpire) / time.Second),
- redisHelpBakExpire: int32(time.Duration(c.Redis.BakRedis.HelpExpire) / time.Second),
- redisOlListBakExpire: int32(time.Duration(c.Redis.BakRedis.OlListExpire) / time.Second),
- redisWxHotExpire: int32(time.Duration(c.Redis.LocalRedis.WxHotExpire) / time.Second),
- redisWxHotBakExpire: int32(time.Duration(c.Redis.BakRedis.WxHotExpire) / time.Second),
- redisAppealLimitExpire: int32(time.Duration(c.Redis.BakRedis.AppealLimitExpire) / time.Second),
- // remote source urls
- rankURL: c.Host.Rank + _rankURL + _rankURI,
- rankIndexURL: c.Host.Rank + _rankURL + _rankIndexURI,
- rankRegionURL: c.Host.Rank + _rankURL + _rankRegionURI,
- rankRecURL: c.Host.Rank + _rankURL + _rankRecURI,
- wxHotURL: c.Host.Rank + _rankURL + _wxHotURI,
- rankTagURL: c.Host.Rank + _rankTagURI,
- feedbackURL: c.Host.API + _feedbackURL,
- spaceTopPhotoURL: c.Host.Space + _spaceTopPhotoURL,
- coinAddURL: c.Host.API + _coinAddURL,
- coinExpURL: c.Host.API + _coinExpURL,
- customURL: c.Host.Rank + _rankURL + _customURI,
- elecShowURL: c.Host.Elec + _elecShowURL,
- arcReportURL: c.Host.ArcAPI + _arcReportURL,
- appealTagsURL: c.Host.API + _appealTagsURL,
- arcAppealURL: c.Host.API + _arcAppealURL,
- relatedURL: c.Host.Data + _relatedURL,
- onlineURL: c.Host.API + _onlineURL,
- liveOnlineURL: c.Host.LiveAPI + _liveOnlineURL,
- helpListURL: c.Host.HelpAPI + _helpListURL,
- helpSearchURL: c.Host.HelpAPI + _helpSearchURL,
- onlineListURL: c.Host.API + _onlineListURL,
- shopURL: c.Host.Mall + _shopURI,
- replyHotURL: c.Host.API + _hotURI,
- searchURL: c.Host.Search + _searchURL,
- searchRecURL: c.Host.Search + _searchRecURL,
- searchDefaultURL: c.Host.Search + _searchDefaultURL,
- searchUpRecURL: c.Host.Search + _searchUpRecURL,
- searchEggURL: c.Host.Manager + _searchEggURI,
- walletURL: c.Host.Pay + _payWalletURL,
- walletOldURL: c.Host.Pay + _payWalletOldURL,
- abServerURL: c.Host.AbServer + _abServerURI,
- bnjConfURL: c.Host.LiveAPI + _bnjConfURI,
- special: c.Host.API + _special,
- // prom
- cacheProm: prom.CacheHit,
- }
- return d
- }
- // Ping check connection success.
- func (dao *Dao) Ping(c context.Context) (err error) {
- if err = dao.pingRedis(c); err != nil {
- log.Error("dao.pingRedis error(%v)", err)
- return
- }
- if err = dao.pingRedisBak(c); err != nil {
- log.Error("dao.pingRedisBak error(%v)", err)
- return
- }
- return
- }
- // Close close resource.
- func (dao *Dao) Close() {
- if dao.redis != nil {
- dao.redis.Close()
- }
- if dao.redisBak != nil {
- dao.redisBak.Close()
- }
- }
- func (dao *Dao) pingRedis(c context.Context) (err error) {
- conn := dao.redis.Get(c)
- _, err = conn.Do("SET", "PING", "PONG")
- conn.Close()
- return
- }
- func (dao *Dao) pingRedisBak(c context.Context) (err error) {
- conn := dao.redisBak.Get(c)
- _, err = conn.Do("SET", "PING", "PONG")
- conn.Close()
- return
- }
|