service_context.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package svc
  2. import (
  3. "wechat-api/internal/config"
  4. "wechat-api/internal/middleware"
  5. "github.com/redis/go-redis/v9"
  6. "wechat-api/ent"
  7. _ "wechat-api/ent/runtime"
  8. "github.com/suyuan32/simple-admin-core/rpc/coreclient"
  9. "github.com/zeromicro/go-zero/core/logx"
  10. "github.com/casbin/casbin/v2"
  11. "github.com/zeromicro/go-zero/rest"
  12. "github.com/zeromicro/go-zero/zrpc"
  13. )
  14. type ServiceContext struct {
  15. Config config.Config
  16. Casbin *casbin.Enforcer
  17. Authority rest.Middleware
  18. OpenAuthority rest.Middleware
  19. Miniprogram rest.Middleware
  20. DB *ent.Client
  21. CoreRpc coreclient.Core
  22. Rds redis.UniversalClient
  23. }
  24. func NewServiceContext(c config.Config) *ServiceContext {
  25. rds := c.RedisConf.MustNewUniversalRedis()
  26. cbn := c.CasbinConf.MustNewCasbinWithOriginalRedisWatcher(c.CasbinDatabaseConf.Type, c.CasbinDatabaseConf.GetDSN(), c.RedisConf)
  27. db := ent.NewClient(
  28. ent.Log(logx.Info), // logger
  29. ent.Driver(c.DatabaseConf.NewNoCacheDriver()),
  30. ent.Debug(), // debug mode
  31. )
  32. coreRpc := coreclient.NewCore(zrpc.NewClientIfEnable(c.CoreRpc))
  33. return &ServiceContext{
  34. Config: c,
  35. Authority: middleware.NewAuthorityMiddleware(cbn, rds, coreRpc).Handle,
  36. OpenAuthority: middleware.NewOpenAuthorityMiddleware(db, rds, c).Handle,
  37. Miniprogram: middleware.NewMiniprogramMiddleware(cbn, rds, coreRpc, c).Handle,
  38. DB: db,
  39. CoreRpc: coreRpc,
  40. Rds: rds,
  41. }
  42. }