You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
222 lines
7.7 KiB
222 lines
7.7 KiB
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 |
|
}
|
|
|