dao.go 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. package dao
  2. import (
  3. "context"
  4. xhttp "net/http"
  5. "time"
  6. "go-common/app/interface/main/web/conf"
  7. "go-common/library/cache/redis"
  8. "go-common/library/log"
  9. bm "go-common/library/net/http/blademaster"
  10. "go-common/library/stat/prom"
  11. )
  12. const (
  13. _rankURL = "/data/rank/"
  14. _feedbackURL = "/x/internal/feedback/ugc/add"
  15. _spaceTopPhotoURL = "/api/member/getTopPhoto"
  16. _coinAddURL = "/x/coin/add"
  17. _coinExpURL = "/x/coin/today/exp"
  18. _elecShowURL = "/api/v2/rank/query/av"
  19. _arcReportURL = "/videoup/archive/report"
  20. _arcAppealURL = "/x/internal/workflow/appeal/add"
  21. _appealTagsURL = "/x/internal/workflow/tag/list"
  22. _relatedURL = "/recsys/related"
  23. _onlineURL = "/x/internal/chat/server/ol"
  24. _liveOnlineURL = "/room/v1/Online/get_total_online"
  25. _helpListURL = "/kb/getQuestionTypeListByParentIdBilibili/4"
  26. _helpSearchURL = "/kb/searchInerDocListBilibili/4"
  27. _onlineListURL = "/x/internal/chat/num/top/aid"
  28. _searchURL = "/main/search"
  29. _searchRecURL = "/search/recommend"
  30. _searchDefaultURL = "/query/recommend"
  31. _searchUpRecURL = "/main/recommend"
  32. _searchEggURI = "/x/admin/feed/eggSearchWeb"
  33. _payWalletURL = "/wallet-int/wallet/getUserWalletInfo"
  34. _payWalletOldURL = "/wallet/api/v1/info"
  35. _special = "/x/internal/uper/special"
  36. )
  37. // Dao dao
  38. type Dao struct {
  39. // config
  40. c *conf.Config
  41. // http client
  42. httpR *bm.Client
  43. httpW *bm.Client
  44. httpBigData *bm.Client
  45. httpHelp *bm.Client
  46. httpSearch *bm.Client
  47. httpPay *bm.Client
  48. bfsClient *xhttp.Client
  49. // redis
  50. redis *redis.Pool
  51. redisBak *redis.Pool
  52. redisNlExpire int32
  53. redisNlBakExpire int32
  54. redisRkExpire int32
  55. redisRkBakExpire int32
  56. redisDynamicBakExpire int32
  57. redisArchiveBakExpire int32
  58. redisTagBakExpire int32
  59. redisCardBakExpire int32
  60. redisRcExpire int32
  61. redisRcBakExpire int32
  62. redisArtBakExpire int32
  63. redisIxIconExpire int32
  64. redisIxIconBakExpire int32
  65. redisHelpBakExpire int32
  66. redisOlListBakExpire int32
  67. redisWxHotExpire int32
  68. redisWxHotBakExpire int32
  69. redisAppealLimitExpire int32
  70. // bigdata url
  71. rankURL string
  72. rankIndexURL string
  73. rankRegionURL string
  74. rankRecURL string
  75. rankTagURL string
  76. feedbackURL string
  77. spaceTopPhotoURL string
  78. coinAddURL string
  79. coinExpURL string
  80. customURL string
  81. elecShowURL string
  82. arcReportURL string
  83. appealTagsURL string
  84. arcAppealURL string
  85. relatedURL string
  86. onlineURL string
  87. liveOnlineURL string
  88. helpListURL string
  89. helpSearchURL string
  90. onlineListURL string
  91. shopURL string
  92. replyHotURL string
  93. searchURL string
  94. searchRecURL string
  95. searchDefaultURL string
  96. searchUpRecURL string
  97. searchEggURL string
  98. walletURL string
  99. walletOldURL string
  100. abServerURL string
  101. wxHotURL string
  102. bnjConfURL string
  103. special string
  104. // cache Prom
  105. cacheProm *prom.Prom
  106. }
  107. // New dao new
  108. func New(c *conf.Config) (d *Dao) {
  109. d = &Dao{
  110. // config
  111. c: c,
  112. // http read client
  113. httpR: bm.NewClient(c.HTTPClient.Read),
  114. httpW: bm.NewClient(c.HTTPClient.Write),
  115. httpBigData: bm.NewClient(c.HTTPClient.BigData),
  116. httpHelp: bm.NewClient(c.HTTPClient.Help),
  117. httpSearch: bm.NewClient(c.HTTPClient.Search),
  118. httpPay: bm.NewClient(c.HTTPClient.Pay),
  119. // init bfs http client
  120. bfsClient: xhttp.DefaultClient,
  121. // redis
  122. redis: redis.NewPool(c.Redis.LocalRedis.Config),
  123. redisBak: redis.NewPool(c.Redis.BakRedis.Config),
  124. redisNlExpire: int32(time.Duration(c.Redis.LocalRedis.NewlistExpire) / time.Second),
  125. redisNlBakExpire: int32(time.Duration(c.Redis.BakRedis.NewlistExpire) / time.Second),
  126. redisRkExpire: int32(time.Duration(c.Redis.LocalRedis.RankingExpire) / time.Second),
  127. redisRkBakExpire: int32(time.Duration(c.Redis.BakRedis.RankingExpire) / time.Second),
  128. redisDynamicBakExpire: int32(time.Duration(c.Redis.BakRedis.RegionExpire) / time.Second),
  129. redisArchiveBakExpire: int32(time.Duration(c.Redis.BakRedis.ArchiveExpire) / time.Second),
  130. redisTagBakExpire: int32(time.Duration(c.Redis.BakRedis.TagExpire) / time.Second),
  131. redisCardBakExpire: int32(time.Duration(c.Redis.BakRedis.CardExpire) / time.Second),
  132. redisRcExpire: int32(time.Duration(c.Redis.LocalRedis.RcExpire) / time.Second),
  133. redisRcBakExpire: int32(time.Duration(c.Redis.BakRedis.RcExpire) / time.Second),
  134. redisArtBakExpire: int32(time.Duration(c.Redis.BakRedis.ArtUpExpire) / time.Second),
  135. redisIxIconExpire: int32(time.Duration(c.Redis.LocalRedis.IndexIconExpire) / time.Second),
  136. redisIxIconBakExpire: int32(time.Duration(c.Redis.BakRedis.IndexIconExpire) / time.Second),
  137. redisHelpBakExpire: int32(time.Duration(c.Redis.BakRedis.HelpExpire) / time.Second),
  138. redisOlListBakExpire: int32(time.Duration(c.Redis.BakRedis.OlListExpire) / time.Second),
  139. redisWxHotExpire: int32(time.Duration(c.Redis.LocalRedis.WxHotExpire) / time.Second),
  140. redisWxHotBakExpire: int32(time.Duration(c.Redis.BakRedis.WxHotExpire) / time.Second),
  141. redisAppealLimitExpire: int32(time.Duration(c.Redis.BakRedis.AppealLimitExpire) / time.Second),
  142. // remote source urls
  143. rankURL: c.Host.Rank + _rankURL + _rankURI,
  144. rankIndexURL: c.Host.Rank + _rankURL + _rankIndexURI,
  145. rankRegionURL: c.Host.Rank + _rankURL + _rankRegionURI,
  146. rankRecURL: c.Host.Rank + _rankURL + _rankRecURI,
  147. wxHotURL: c.Host.Rank + _rankURL + _wxHotURI,
  148. rankTagURL: c.Host.Rank + _rankTagURI,
  149. feedbackURL: c.Host.API + _feedbackURL,
  150. spaceTopPhotoURL: c.Host.Space + _spaceTopPhotoURL,
  151. coinAddURL: c.Host.API + _coinAddURL,
  152. coinExpURL: c.Host.API + _coinExpURL,
  153. customURL: c.Host.Rank + _rankURL + _customURI,
  154. elecShowURL: c.Host.Elec + _elecShowURL,
  155. arcReportURL: c.Host.ArcAPI + _arcReportURL,
  156. appealTagsURL: c.Host.API + _appealTagsURL,
  157. arcAppealURL: c.Host.API + _arcAppealURL,
  158. relatedURL: c.Host.Data + _relatedURL,
  159. onlineURL: c.Host.API + _onlineURL,
  160. liveOnlineURL: c.Host.LiveAPI + _liveOnlineURL,
  161. helpListURL: c.Host.HelpAPI + _helpListURL,
  162. helpSearchURL: c.Host.HelpAPI + _helpSearchURL,
  163. onlineListURL: c.Host.API + _onlineListURL,
  164. shopURL: c.Host.Mall + _shopURI,
  165. replyHotURL: c.Host.API + _hotURI,
  166. searchURL: c.Host.Search + _searchURL,
  167. searchRecURL: c.Host.Search + _searchRecURL,
  168. searchDefaultURL: c.Host.Search + _searchDefaultURL,
  169. searchUpRecURL: c.Host.Search + _searchUpRecURL,
  170. searchEggURL: c.Host.Manager + _searchEggURI,
  171. walletURL: c.Host.Pay + _payWalletURL,
  172. walletOldURL: c.Host.Pay + _payWalletOldURL,
  173. abServerURL: c.Host.AbServer + _abServerURI,
  174. bnjConfURL: c.Host.LiveAPI + _bnjConfURI,
  175. special: c.Host.API + _special,
  176. // prom
  177. cacheProm: prom.CacheHit,
  178. }
  179. return d
  180. }
  181. // Ping check connection success.
  182. func (dao *Dao) Ping(c context.Context) (err error) {
  183. if err = dao.pingRedis(c); err != nil {
  184. log.Error("dao.pingRedis error(%v)", err)
  185. return
  186. }
  187. if err = dao.pingRedisBak(c); err != nil {
  188. log.Error("dao.pingRedisBak error(%v)", err)
  189. return
  190. }
  191. return
  192. }
  193. // Close close resource.
  194. func (dao *Dao) Close() {
  195. if dao.redis != nil {
  196. dao.redis.Close()
  197. }
  198. if dao.redisBak != nil {
  199. dao.redisBak.Close()
  200. }
  201. }
  202. func (dao *Dao) pingRedis(c context.Context) (err error) {
  203. conn := dao.redis.Get(c)
  204. _, err = conn.Do("SET", "PING", "PONG")
  205. conn.Close()
  206. return
  207. }
  208. func (dao *Dao) pingRedisBak(c context.Context) (err error) {
  209. conn := dao.redisBak.Get(c)
  210. _, err = conn.Do("SET", "PING", "PONG")
  211. conn.Close()
  212. return
  213. }