89 lines
4.3 KiB
Go
89 lines
4.3 KiB
Go
package svc
|
|
|
|
import (
|
|
"github.com/ArtisanCloud/PowerWeChat/v3/src/officialAccount"
|
|
"github.com/casbin/casbin/v2"
|
|
"github.com/landaiqing/go-pixelnebula"
|
|
"github.com/lionsoul2014/ip2region/binding/golang/xdb"
|
|
"github.com/minio/minio-go/v7"
|
|
"github.com/nsqio/go-nsq"
|
|
"github.com/redis/go-redis/v9"
|
|
"github.com/wenlng/go-captcha/v2/click"
|
|
"github.com/wenlng/go-captcha/v2/rotate"
|
|
"github.com/wenlng/go-captcha/v2/slide"
|
|
"github.com/zeromicro/go-zero/rest"
|
|
"github.com/zeromicro/go-zero/zrpc"
|
|
sensitive "github.com/zmexing/go-sensitive-word"
|
|
"schisandra-album-cloud-microservices/app/aisvc/rpc/client/aiservice"
|
|
"schisandra-album-cloud-microservices/app/auth/api/internal/config"
|
|
"schisandra-album-cloud-microservices/app/auth/api/internal/middleware"
|
|
"schisandra-album-cloud-microservices/app/auth/model/mysql"
|
|
"schisandra-album-cloud-microservices/app/auth/model/mysql/query"
|
|
"schisandra-album-cloud-microservices/common/captcha/initialize"
|
|
"schisandra-album-cloud-microservices/common/casbinx"
|
|
"schisandra-album-cloud-microservices/common/geo_json"
|
|
"schisandra-album-cloud-microservices/common/ip2region"
|
|
"schisandra-album-cloud-microservices/common/miniox"
|
|
"schisandra-album-cloud-microservices/common/nsqx"
|
|
"schisandra-album-cloud-microservices/common/redisx"
|
|
"schisandra-album-cloud-microservices/common/sensitivex"
|
|
"schisandra-album-cloud-microservices/common/storage"
|
|
"schisandra-album-cloud-microservices/common/storage/manager"
|
|
"schisandra-album-cloud-microservices/common/wechat_official"
|
|
"schisandra-album-cloud-microservices/common/zincx"
|
|
)
|
|
|
|
type ServiceContext struct {
|
|
Config config.Config
|
|
AiSvcRpc aiservice.AiService
|
|
SecurityHeadersMiddleware rest.Middleware
|
|
CasbinVerifyMiddleware rest.Middleware
|
|
NonceMiddleware rest.Middleware
|
|
AuthMiddleware rest.Middleware
|
|
DB *query.Query
|
|
RedisClient *redis.Client
|
|
Ip2Region *xdb.Searcher
|
|
CasbinEnforcer *casbin.SyncedCachedEnforcer
|
|
WechatOfficial *officialAccount.OfficialAccount
|
|
RotateCaptcha rotate.Captcha
|
|
SlideCaptcha slide.Captcha
|
|
TextCaptcha click.Captcha
|
|
Sensitive *sensitive.Manager
|
|
StorageManager *manager.Manager
|
|
MinioClient *minio.Client
|
|
GeoRegionData *geo_json.RegionData
|
|
NSQProducer *nsq.Producer
|
|
ZincClient *zincx.ZincClient
|
|
PN *pixelnebula.PixelNebula
|
|
}
|
|
|
|
func NewServiceContext(c config.Config) *ServiceContext {
|
|
redisClient := redisx.NewRedis(c.Redis.Host, c.Redis.Pass, c.Redis.DB)
|
|
db, queryDB := mysql.NewMySQL(c.Mysql.DataSource, c.Mysql.MaxOpenConn, c.Mysql.MaxIdleConn, redisClient)
|
|
casbinEnforcer := casbinx.NewCasbin(db)
|
|
serviceContext := &ServiceContext{
|
|
Config: c,
|
|
SecurityHeadersMiddleware: middleware.NewSecurityHeadersMiddleware().Handle,
|
|
CasbinVerifyMiddleware: middleware.NewCasbinVerifyMiddleware(casbinEnforcer).Handle,
|
|
NonceMiddleware: middleware.NewNonceMiddleware(redisClient).Handle,
|
|
AuthMiddleware: middleware.NewAuthMiddleware(redisClient).Handle,
|
|
DB: queryDB,
|
|
RedisClient: redisClient,
|
|
Ip2Region: ip2region.NewIP2Region(),
|
|
CasbinEnforcer: casbinEnforcer,
|
|
WechatOfficial: wechat_official.NewWechatPublic(c.Wechat.AppID, c.Wechat.AppSecret, c.Wechat.Token, c.Wechat.AESKey, c.Redis.Host, c.Redis.Pass, c.Redis.DB),
|
|
RotateCaptcha: initialize.NewRotateCaptcha(),
|
|
SlideCaptcha: initialize.NewSlideCaptcha(),
|
|
TextCaptcha: initialize.NewTextCaptcha(),
|
|
Sensitive: sensitivex.NewSensitive(),
|
|
StorageManager: storage.InitStorageManager(),
|
|
AiSvcRpc: aiservice.NewAiService(zrpc.MustNewClient(c.AiSvcRpc)),
|
|
MinioClient: miniox.NewMinio(c.Minio.Endpoint, c.Minio.AccessKeyID, c.Minio.SecretAccessKey, c.Minio.UseSSL),
|
|
GeoRegionData: geo_json.NewGeoJSON(),
|
|
NSQProducer: nsqx.NewNsqProducer(c.NSQ.NSQDHost),
|
|
ZincClient: zincx.NewZincClient(c.Zinc.URL, c.Zinc.Username, c.Zinc.Password),
|
|
PN: pixelnebula.NewPixelNebula().WithDefaultCache(),
|
|
}
|
|
return serviceContext
|
|
}
|