app-cloudep-portal-api-gateway/internal/svc/service_context.go

48 lines
1.4 KiB
Go

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,
}
}