dao.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package dao
  2. import (
  3. "context"
  4. acclgrpc "go-common/app/service/main/account/api"
  5. "go-common/app/service/main/tv/internal/conf"
  6. "go-common/app/service/main/tv/internal/model"
  7. "go-common/app/service/main/tv/internal/pkg"
  8. mvipgrpc "go-common/app/service/main/vipinfo/api"
  9. "go-common/library/cache/memcache"
  10. xsql "go-common/library/database/sql"
  11. "go-common/library/log"
  12. bm "go-common/library/net/http/blademaster"
  13. "go-common/library/sync/pipeline/fanout"
  14. )
  15. // Dao dao
  16. type Dao struct {
  17. c *conf.Config
  18. mc *memcache.Pool
  19. db *xsql.DB
  20. httpCli *bm.Client
  21. mvipCli mvipgrpc.VipInfoClient
  22. mvipHttpCli *bm.Client
  23. accCli acclgrpc.AccountClient
  24. ystCli *YstClient
  25. cache *fanout.Fanout
  26. cacheTTL *conf.CacheTTL
  27. signer *pkg.Signer
  28. }
  29. // New init mysql db
  30. func New(c *conf.Config) (dao *Dao) {
  31. httpCli := bm.NewClient(c.HTTPClient)
  32. mvipHttpCli := bm.NewClient(c.HTTPClient)
  33. mvipCli, err := mvipgrpc.NewClient(c.MVIPClient)
  34. if err != nil {
  35. panic(err)
  36. }
  37. accCli, err := acclgrpc.NewClient(c.ACCClient)
  38. if err != nil {
  39. panic(err)
  40. }
  41. dao = &Dao{
  42. c: c,
  43. mc: memcache.NewPool(c.Memcache),
  44. db: xsql.NewMySQL(c.MySQL),
  45. mvipCli: mvipCli,
  46. mvipHttpCli: mvipHttpCli,
  47. accCli: accCli,
  48. httpCli: httpCli,
  49. ystCli: NewYstClient(httpCli),
  50. cache: fanout.New("cache", fanout.Worker(1), fanout.Buffer(1024)),
  51. cacheTTL: c.CacheTTL,
  52. signer: &pkg.Signer{Key: c.YST.Key},
  53. }
  54. return
  55. }
  56. // Close close the resource.
  57. func (d *Dao) Close() {
  58. d.mc.Close()
  59. d.db.Close()
  60. }
  61. // Ping dao ping
  62. func (d *Dao) Ping(ctx context.Context) error {
  63. return d.db.Ping(ctx)
  64. }
  65. // BeginTran begins transaction.
  66. func (d *Dao) BeginTran(c context.Context) (*xsql.Tx, error) {
  67. return d.db.Begin(c)
  68. }
  69. // EndTran ends transaction.
  70. func (d *Dao) EndTran(tx *xsql.Tx, err error) error {
  71. if err != nil {
  72. log.Info("d.EndTran.Rollback(%+v) err(%+v)", tx, err)
  73. tx.Rollback()
  74. } else {
  75. err = tx.Commit()
  76. }
  77. return err
  78. }
  79. // Signer returns yst signer.
  80. func (d *Dao) Signer() *pkg.Signer {
  81. return d.signer
  82. }
  83. //go:generate $GOPATH/src/go-common/app/tool/cache/gen
  84. type _cache interface {
  85. // cache: -nullcache=&model.UserInfo{ID:-1} -check_null_code=$.ID==-1
  86. UserInfoByMid(c context.Context, key int64) (*model.UserInfo, error)
  87. }
  88. //go:generate $GOPATH/src/go-common/app/tool/cache/mc
  89. type _mc interface {
  90. // mc: -key=userInfoKey
  91. CacheUserInfoByMid(c context.Context, key int64) (*model.UserInfo, error)
  92. // mc: -key=userInfoKey -expire=d.cacheTTL.UserInfoTTL -encode=json
  93. AddCacheUserInfoByMid(c context.Context, key int64, value *model.UserInfo) error
  94. // mc: -key=userInfoKey
  95. DelCacheUserInfoByMid(c context.Context, key int64) error
  96. // mc: -key=payParamKey
  97. CachePayParamByToken(c context.Context, token string) (*model.PayParam, error)
  98. // mc: -key=payParamKey
  99. CachePayParamsByTokens(c context.Context, tokens []string) (map[string]*model.PayParam, error)
  100. // mc: -key=payParamKey -expire=d.cacheTTL.PayParamTTL -encode=json
  101. AddCachePayParam(c context.Context, key string, value *model.PayParam) error
  102. // mc: -type=replace -key=payParamKey -expire=d.cacheTTL.PayParamTTL -encode=json
  103. UpdateCachePayParam(c context.Context, key string, value *model.PayParam) error
  104. }