service_context.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package svc
  2. import (
  3. "github.com/mojocn/base64Captcha"
  4. "github.com/redis/go-redis/v9"
  5. "github.com/suyuan32/simple-admin-common/i18n"
  6. "github.com/suyuan32/simple-admin-common/utils/captcha"
  7. "github.com/suyuan32/simple-admin-core/api/internal/config"
  8. i18n2 "github.com/suyuan32/simple-admin-core/api/internal/i18n"
  9. "github.com/suyuan32/simple-admin-core/api/internal/middleware"
  10. "github.com/suyuan32/simple-admin-core/rpc/coreclient"
  11. "github.com/suyuan32/simple-admin-job/jobclient"
  12. "github.com/suyuan32/simple-admin-message-center/mcmsclient"
  13. "github.com/casbin/casbin/v2"
  14. "github.com/zeromicro/go-zero/rest"
  15. "github.com/zeromicro/go-zero/zrpc"
  16. )
  17. type ServiceContext struct {
  18. Config config.Config
  19. Authority rest.Middleware
  20. CoreRpc coreclient.Core
  21. JobRpc jobclient.Job
  22. McmsRpc mcmsclient.Mcms
  23. Redis redis.UniversalClient
  24. Casbin *casbin.Enforcer
  25. Trans *i18n.Translator
  26. Captcha *base64Captcha.Captcha
  27. }
  28. func NewServiceContext(c config.Config) *ServiceContext {
  29. rds := c.RedisConf.MustNewUniversalRedis()
  30. cbn := c.CasbinConf.MustNewCasbinWithOriginalRedisWatcher(c.DatabaseConf.Type, c.DatabaseConf.GetDSN(),
  31. c.RedisConf)
  32. trans := i18n.NewTranslator(c.I18nConf, i18n2.LocaleFS)
  33. return &ServiceContext{
  34. Config: c,
  35. CoreRpc: coreclient.NewCore(zrpc.NewClientIfEnable(c.CoreRpc)),
  36. JobRpc: jobclient.NewJob(zrpc.NewClientIfEnable(c.JobRpc)),
  37. McmsRpc: mcmsclient.NewMcms(zrpc.NewClientIfEnable(c.McmsRpc)),
  38. Captcha: captcha.MustNewOriginalRedisCaptcha(c.Captcha, rds),
  39. Redis: rds,
  40. Casbin: cbn,
  41. Trans: trans,
  42. Authority: middleware.NewAuthorityMiddleware(cbn, rds, trans).Handle,
  43. }
  44. }