package svc import ( "app-cloudep-portal-api-gateway/internal/config" "app-cloudep-portal-api-gateway/internal/middleware" ers "code.30cm.net/digimon/library-go/errors" "code.30cm.net/digimon/library-go/errors/code" "github.com/zeromicro/go-zero/core/stores/redis" "github.com/zeromicro/go-zero/zrpc" accountRpc "code.30cm.net/digimon/proto-all/pkg/member" notificationRpc "code.30cm.net/digimon/proto-all/pkg/notification" permissionRpc "code.30cm.net/digimon/proto-all/pkg/permission" ) type ServiceContext struct { Config config.Config AuthMiddleware *middleware.AuthMiddleware AccountRpc accountRpc.AccountClient TokenRpc permissionRpc.TokenServiceClient NotificationRpc notificationRpc.SenderServiceClient Redis redis.Redis } func NewServiceContext(c config.Config) *ServiceContext { ers.Scope = code.CloudEPPortalGW newRedis, err := redis.NewRedis(c.RedisCluster, redis.Cluster()) if err != nil { panic(err) } tc := permissionRpc.NewTokenServiceClient(zrpc.MustNewClient(c.PermissionRpc).Conn()) return &ServiceContext{ Config: c, AuthMiddleware: middleware.NewAuthMiddleware(middleware.AuthMiddlewareParam{ TokenSec: c.Token.Secret, TokenClient: tc, }), AccountRpc: accountRpc.NewAccountClient(zrpc.MustNewClient(c.AccountRpc).Conn()), TokenRpc: tc, NotificationRpc: notificationRpc.NewSenderServiceClient(zrpc.MustNewClient(c.NotificationRpc).Conn()), Redis: *newRedis, } }