65 lines
1.8 KiB
Go
65 lines
1.8 KiB
Go
package svc
|
|
|
|
import (
|
|
"biz-member-gateway/internal/config"
|
|
"biz-member-gateway/internal/middleware"
|
|
|
|
"github.com/zeromicro/go-zero/core/limit"
|
|
"github.com/zeromicro/go-zero/core/stores/redis"
|
|
|
|
"github.com/zeromicro/go-zero/rest"
|
|
"github.com/zeromicro/go-zero/zrpc"
|
|
|
|
ers "code.30cm.net/digimon/library-go/errors"
|
|
"code.30cm.net/digimon/library-go/errors/code"
|
|
vi "code.30cm.net/digimon/library-go/validator"
|
|
memberRPC "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 rest.Middleware
|
|
|
|
MemberRPC memberRPC.AccountClient
|
|
TokenRPC permissionRPC.TokenServiceClient
|
|
NotificationRPC notificationRPC.SenderServiceClient
|
|
|
|
// 但是底線就是 redis 其他db 絕對不行
|
|
Redis *redis.Redis
|
|
|
|
VerifyLimiter *limit.PeriodLimit
|
|
Validate vi.Validate
|
|
}
|
|
|
|
func NewServiceContext(c config.Config) *ServiceContext {
|
|
ers.Scope = code.CloudEPPortalGW
|
|
tokenService := permissionRPC.NewTokenServiceClient(zrpc.MustNewClient(c.PermissionRPC).Conn())
|
|
|
|
InitPyroScope(c)
|
|
|
|
// 啟動Redis
|
|
newRedis, err := redis.NewRedis(c.RedisCfg)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return &ServiceContext{
|
|
Config: c,
|
|
AuthMiddleware: middleware.NewAuthMiddleware(middleware.AuthMiddlewareParam{
|
|
TokenRPC: tokenService,
|
|
}).Handle,
|
|
MemberRPC: memberRPC.NewAccountClient(zrpc.MustNewClient(c.MemberRPC).Conn()),
|
|
TokenRPC: tokenService,
|
|
NotificationRPC: notificationRPC.NewSenderServiceClient(zrpc.MustNewClient(c.NotificationRPC).Conn()),
|
|
Redis: newRedis,
|
|
Validate: vi.MustValidator(
|
|
WithDecimalGt(),
|
|
WithDecimalGte(),
|
|
WithHTTPURL(),
|
|
WithRfc3339Format(),
|
|
),
|
|
}
|
|
}
|