tyc-server/app/main/api/internal/svc/servicecontext.go

100 lines
4.0 KiB
Go
Raw Normal View History

2024-11-03 15:28:10 +08:00
package svc
import (
2025-04-27 12:17:18 +08:00
"tyc-server/app/main/api/internal/config"
"tyc-server/app/main/api/internal/middleware"
"tyc-server/app/main/api/internal/service"
"tyc-server/app/main/model"
2025-03-20 02:03:28 +08:00
2024-11-21 12:14:34 +08:00
"github.com/hibiken/asynq"
"github.com/zeromicro/go-zero/core/logx"
2024-11-03 15:28:10 +08:00
"github.com/zeromicro/go-zero/core/stores/redis"
"github.com/zeromicro/go-zero/core/stores/sqlx"
2024-12-24 11:37:25 +08:00
"github.com/zeromicro/go-zero/rest"
2024-11-03 15:28:10 +08:00
)
type ServiceContext struct {
2025-01-01 02:00:06 +08:00
Config config.Config
Redis *redis.Redis
SourceInterceptor rest.Middleware
UserModel model.UserModel
UserAuthModel model.UserAuthModel
ProductModel model.ProductModel
FeatureModel model.FeatureModel
ProductFeatureModel model.ProductFeatureModel
2025-01-18 22:34:27 +08:00
ProductRenderModel model.ProductRenderModel
2025-01-01 02:00:06 +08:00
OrderModel model.OrderModel
QueryModel model.QueryModel
GlobalNotificationsModel model.GlobalNotificationsModel
2025-03-20 02:03:28 +08:00
ExampleModel model.ExampleModel
2025-04-23 17:48:38 +08:00
ExampleParamsModel model.ExampleParamsModel
2025-01-01 02:00:06 +08:00
AlipayService *service.AliPayService
WechatPayService *service.WechatPayService
ApplePayService *service.ApplePayService
WestDexService *service.WestDexService
YushanService *service.YushanService
TianjuService *service.TianjuService
2025-01-01 02:00:06 +08:00
ApiRequestService *service.ApiRequestService
AsynqServer *asynq.Server // 服务端
AsynqService *service.AsynqService // 客户端
VerificationService *service.VerificationService
2024-11-03 15:28:10 +08:00
}
func NewServiceContext(c config.Config) *ServiceContext {
2024-11-21 12:14:34 +08:00
db := sqlx.NewMysql(c.DataSource)
2024-11-03 15:28:10 +08:00
redisConf := redis.RedisConf{
Host: c.CacheRedis[0].Host,
Pass: c.CacheRedis[0].Pass,
2024-11-21 12:14:34 +08:00
Type: c.CacheRedis[0].Type,
2024-11-03 15:28:10 +08:00
}
2024-11-21 12:14:34 +08:00
asynqServer := asynq.NewServer(
asynq.RedisClientOpt{Addr: c.CacheRedis[0].Host, Password: c.CacheRedis[0].Pass},
asynq.Config{
IsFailure: func(err error) bool {
logx.Errorf("异步任务失败: %+v \n", err)
return true
},
Concurrency: 10,
},
)
2024-11-25 00:25:48 +08:00
westDexService := service.NewWestDexService(c)
2024-12-28 02:21:47 +08:00
yushanService := service.NewYushanService(c)
tianjuService := service.NewTianjuService(c)
2024-12-24 11:37:25 +08:00
productFeatureModel := model.NewProductFeatureModel(db, c.CacheRedis)
featureModel := model.NewFeatureModel(db, c.CacheRedis)
2025-01-18 22:34:27 +08:00
userAuthModel := model.NewUserAuthModel(db, c.CacheRedis)
2025-04-26 13:09:34 +08:00
apiRequestService := service.NewApiRequestService(c, westDexService, yushanService, tianjuService, featureModel, productFeatureModel)
2024-11-03 15:28:10 +08:00
return &ServiceContext{
2025-01-01 02:00:06 +08:00
Config: c,
Redis: redis.MustNewRedis(redisConf),
SourceInterceptor: middleware.NewSourceInterceptorMiddleware().Handle,
AlipayService: service.NewAliPayService(c),
2025-01-18 22:34:27 +08:00
WechatPayService: service.NewWechatPayService(c, userAuthModel),
2025-01-01 02:00:06 +08:00
ApplePayService: service.NewApplePayService(c),
WestDexService: westDexService,
YushanService: yushanService,
TianjuService: tianjuService,
2025-04-26 13:09:34 +08:00
VerificationService: service.NewVerificationService(c, westDexService, apiRequestService),
2025-01-01 02:00:06 +08:00
AsynqServer: asynqServer,
2025-04-26 13:09:34 +08:00
ApiRequestService: apiRequestService,
2025-01-01 02:00:06 +08:00
AsynqService: service.NewAsynqService(c),
UserModel: model.NewUserModel(db, c.CacheRedis),
2025-01-18 22:34:27 +08:00
UserAuthModel: userAuthModel,
2025-01-01 02:00:06 +08:00
ProductModel: model.NewProductModel(db, c.CacheRedis),
2025-01-18 22:34:27 +08:00
ProductRenderModel: model.NewProductRenderModel(db, c.CacheRedis),
2025-01-01 02:00:06 +08:00
OrderModel: model.NewOrderModel(db, c.CacheRedis),
QueryModel: model.NewQueryModel(db, c.CacheRedis),
2025-03-20 02:03:28 +08:00
ExampleModel: model.NewExampleModel(db, c.CacheRedis),
2025-04-23 17:48:38 +08:00
ExampleParamsModel: model.NewExampleParamsModel(db, c.CacheRedis),
2025-01-01 02:00:06 +08:00
GlobalNotificationsModel: model.NewGlobalNotificationsModel(db, c.CacheRedis),
FeatureModel: featureModel,
ProductFeatureModel: productFeatureModel,
2024-11-21 12:14:34 +08:00
}
}
func (s *ServiceContext) Close() {
if s.AsynqService != nil {
s.AsynqService.Close()
2024-11-03 15:28:10 +08:00
}
}