temp
This commit is contained in:
@@ -21,7 +21,19 @@ type ServiceContext struct {
|
||||
SourceInterceptor rest.Middleware
|
||||
AuthInterceptor rest.Middleware
|
||||
|
||||
// 模型
|
||||
// 服务
|
||||
PayService *service.PayService
|
||||
WestDexService *service.WestDexService
|
||||
YushanService *service.YushanService
|
||||
TianjuService *service.TianjuService
|
||||
ApiRequestService *service.ApiRequestService
|
||||
AsynqServer *asynq.Server
|
||||
AsynqService *service.AsynqService
|
||||
VerificationService *service.VerificationService
|
||||
DictService *service.DictService
|
||||
AdminPromotionLinkStatsService *service.AdminPromotionLinkStatsService
|
||||
|
||||
// 基础模型
|
||||
UserModel model.UserModel
|
||||
UserAuthModel model.UserAuthModel
|
||||
ProductModel model.ProductModel
|
||||
@@ -29,26 +41,13 @@ type ServiceContext struct {
|
||||
ProductFeatureModel model.ProductFeatureModel
|
||||
ProductRenderModel model.ProductRenderModel
|
||||
OrderModel model.OrderModel
|
||||
OrderRefundModel model.OrderRefundModel
|
||||
QueryModel model.QueryModel
|
||||
GlobalNotificationsModel model.GlobalNotificationsModel
|
||||
ExampleModel model.ExampleModel
|
||||
ExampleParamsModel model.ExampleParamsModel
|
||||
|
||||
// 服务
|
||||
AlipayService *service.AliPayService
|
||||
WechatPayService *service.WechatPayService
|
||||
ApplePayService *service.ApplePayService
|
||||
WestDexService *service.WestDexService
|
||||
YushanService *service.YushanService
|
||||
TianjuService *service.TianjuService
|
||||
ApiRequestService *service.ApiRequestService
|
||||
AsynqServer *asynq.Server // 服务端
|
||||
AsynqService *service.AsynqService // 客户端
|
||||
VerificationService *service.VerificationService
|
||||
DictService *service.DictService
|
||||
AdminPromotionLinkStatsService *service.AdminPromotionLinkStatsService
|
||||
|
||||
// admin
|
||||
// 管理后台模型
|
||||
AdminApiModel model.AdminApiModel
|
||||
AdminMenuModel model.AdminMenuModel
|
||||
AdminRoleModel model.AdminRoleModel
|
||||
@@ -59,20 +58,24 @@ type ServiceContext struct {
|
||||
AdminDictDataModel model.AdminDictDataModel
|
||||
AdminDictTypeModel model.AdminDictTypeModel
|
||||
|
||||
// admin promotion
|
||||
// 推广相关模型
|
||||
AdminPromotionLinkModel model.AdminPromotionLinkModel
|
||||
AdminPromotionLinkStatsTotalModel model.AdminPromotionLinkStatsTotalModel
|
||||
AdminPromotionLinkStatsHistoryModel model.AdminPromotionLinkStatsHistoryModel
|
||||
AdminPromotionOrderModel model.AdminPromotionOrderModel
|
||||
}
|
||||
|
||||
func NewServiceContext(c config.Config) *ServiceContext {
|
||||
db := sqlx.NewMysql(c.DataSource)
|
||||
// 初始化基础服务
|
||||
func initBaseServices(c config.Config) (*redis.Redis, *asynq.Server) {
|
||||
// 初始化Redis
|
||||
redisConf := redis.RedisConf{
|
||||
Host: c.CacheRedis[0].Host,
|
||||
Pass: c.CacheRedis[0].Pass,
|
||||
Type: c.CacheRedis[0].Type,
|
||||
}
|
||||
r := redis.MustNewRedis(redisConf)
|
||||
|
||||
// 初始化Asynq服务
|
||||
asynqServer := asynq.NewServer(
|
||||
asynq.RedisClientOpt{Addr: c.CacheRedis[0].Host, Password: c.CacheRedis[0].Pass},
|
||||
asynq.Config{
|
||||
@@ -83,80 +86,203 @@ func NewServiceContext(c config.Config) *ServiceContext {
|
||||
Concurrency: 10,
|
||||
},
|
||||
)
|
||||
adminApiModel := model.NewAdminApiModel(db, c.CacheRedis)
|
||||
adminMenuModel := model.NewAdminMenuModel(db, c.CacheRedis)
|
||||
adminRoleModel := model.NewAdminRoleModel(db, c.CacheRedis)
|
||||
adminRoleApiModel := model.NewAdminRoleApiModel(db, c.CacheRedis)
|
||||
adminRoleMenuModel := model.NewAdminRoleMenuModel(db, c.CacheRedis)
|
||||
adminUserModel := model.NewAdminUserModel(db, c.CacheRedis)
|
||||
adminUserRoleModel := model.NewAdminUserRoleModel(db, c.CacheRedis)
|
||||
adminDictDataModel := model.NewAdminDictDataModel(db, c.CacheRedis)
|
||||
adminDictTypeModel := model.NewAdminDictTypeModel(db, c.CacheRedis)
|
||||
|
||||
// admin promotion
|
||||
adminPromotionLinkModel := model.NewAdminPromotionLinkModel(db, c.CacheRedis)
|
||||
adminPromotionLinkStatsTotalModel := model.NewAdminPromotionLinkStatsTotalModel(db, c.CacheRedis)
|
||||
adminPromotionLinkStatsHistoryModel := model.NewAdminPromotionLinkStatsHistoryModel(db, c.CacheRedis)
|
||||
adminPromotionOrderModel := model.NewAdminPromotionOrderModel(db, c.CacheRedis)
|
||||
return r, asynqServer
|
||||
}
|
||||
|
||||
// 初始化基础模型
|
||||
func initBaseModels(db sqlx.SqlConn, c config.Config) *BaseModels {
|
||||
return &BaseModels{
|
||||
UserModel: model.NewUserModel(db, c.CacheRedis),
|
||||
UserAuthModel: model.NewUserAuthModel(db, c.CacheRedis),
|
||||
ProductModel: model.NewProductModel(db, c.CacheRedis),
|
||||
FeatureModel: model.NewFeatureModel(db, c.CacheRedis),
|
||||
ProductFeatureModel: model.NewProductFeatureModel(db, c.CacheRedis),
|
||||
ProductRenderModel: model.NewProductRenderModel(db, c.CacheRedis),
|
||||
OrderModel: model.NewOrderModel(db, c.CacheRedis),
|
||||
OrderRefundModel: model.NewOrderRefundModel(db, c.CacheRedis),
|
||||
QueryModel: model.NewQueryModel(db, c.CacheRedis),
|
||||
GlobalNotificationsModel: model.NewGlobalNotificationsModel(db, c.CacheRedis),
|
||||
ExampleModel: model.NewExampleModel(db, c.CacheRedis),
|
||||
ExampleParamsModel: model.NewExampleParamsModel(db, c.CacheRedis),
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化管理后台模型
|
||||
func initAdminModels(db sqlx.SqlConn, c config.Config) *AdminModels {
|
||||
return &AdminModels{
|
||||
AdminApiModel: model.NewAdminApiModel(db, c.CacheRedis),
|
||||
AdminMenuModel: model.NewAdminMenuModel(db, c.CacheRedis),
|
||||
AdminRoleModel: model.NewAdminRoleModel(db, c.CacheRedis),
|
||||
AdminRoleApiModel: model.NewAdminRoleApiModel(db, c.CacheRedis),
|
||||
AdminRoleMenuModel: model.NewAdminRoleMenuModel(db, c.CacheRedis),
|
||||
AdminUserModel: model.NewAdminUserModel(db, c.CacheRedis),
|
||||
AdminUserRoleModel: model.NewAdminUserRoleModel(db, c.CacheRedis),
|
||||
AdminDictDataModel: model.NewAdminDictDataModel(db, c.CacheRedis),
|
||||
AdminDictTypeModel: model.NewAdminDictTypeModel(db, c.CacheRedis),
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化推广相关模型
|
||||
func initPromotionModels(db sqlx.SqlConn, c config.Config) *PromotionModels {
|
||||
return &PromotionModels{
|
||||
AdminPromotionLinkModel: model.NewAdminPromotionLinkModel(db, c.CacheRedis),
|
||||
AdminPromotionLinkStatsTotalModel: model.NewAdminPromotionLinkStatsTotalModel(db, c.CacheRedis),
|
||||
AdminPromotionLinkStatsHistoryModel: model.NewAdminPromotionLinkStatsHistoryModel(db, c.CacheRedis),
|
||||
AdminPromotionOrderModel: model.NewAdminPromotionOrderModel(db, c.CacheRedis),
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化业务服务
|
||||
func initBusinessServices(c config.Config, models *BaseModels, adminModels *AdminModels, promotionModels *PromotionModels) *BusinessServices {
|
||||
// 初始化基础服务
|
||||
westDexService := service.NewWestDexService(c)
|
||||
yushanService := service.NewYushanService(c)
|
||||
tianjuService := service.NewTianjuService(c)
|
||||
productFeatureModel := model.NewProductFeatureModel(db, c.CacheRedis)
|
||||
featureModel := model.NewFeatureModel(db, c.CacheRedis)
|
||||
userAuthModel := model.NewUserAuthModel(db, c.CacheRedis)
|
||||
apiRequestService := service.NewApiRequestService(c, westDexService, yushanService, tianjuService, featureModel, productFeatureModel)
|
||||
|
||||
// 初始化API请求服务
|
||||
apiRequestService := service.NewApiRequestService(
|
||||
c,
|
||||
westDexService,
|
||||
yushanService,
|
||||
tianjuService,
|
||||
models.FeatureModel,
|
||||
models.ProductFeatureModel,
|
||||
)
|
||||
|
||||
// 初始化推广统计服务
|
||||
adminPromotionLinkStatsService := service.NewAdminPromotionLinkStatsService(&service.ServiceContext{
|
||||
AdminPromotionLinkModel: adminPromotionLinkModel,
|
||||
AdminPromotionLinkStatsTotalModel: adminPromotionLinkStatsTotalModel,
|
||||
AdminPromotionLinkStatsHistoryModel: adminPromotionLinkStatsHistoryModel,
|
||||
AdminPromotionLinkModel: promotionModels.AdminPromotionLinkModel,
|
||||
AdminPromotionLinkStatsTotalModel: promotionModels.AdminPromotionLinkStatsTotalModel,
|
||||
AdminPromotionLinkStatsHistoryModel: promotionModels.AdminPromotionLinkStatsHistoryModel,
|
||||
})
|
||||
dictService := service.NewDictService(adminDictTypeModel, adminDictDataModel)
|
||||
return &ServiceContext{
|
||||
Config: c,
|
||||
Redis: redis.MustNewRedis(redisConf),
|
||||
SourceInterceptor: middleware.NewSourceInterceptorMiddleware().Handle,
|
||||
AuthInterceptor: middleware.NewAuthInterceptorMiddleware(c).Handle,
|
||||
AlipayService: service.NewAliPayService(c),
|
||||
WechatPayService: service.NewWechatPayService(c, userAuthModel),
|
||||
ApplePayService: service.NewApplePayService(c),
|
||||
|
||||
return &BusinessServices{
|
||||
PayService: service.NewPayService(c, models.OrderModel, models.OrderRefundModel, models.ProductModel, models.UserAuthModel),
|
||||
WestDexService: westDexService,
|
||||
YushanService: yushanService,
|
||||
TianjuService: tianjuService,
|
||||
AdminPromotionLinkStatsService: adminPromotionLinkStatsService,
|
||||
VerificationService: service.NewVerificationService(c, westDexService, apiRequestService),
|
||||
AsynqServer: asynqServer,
|
||||
ApiRequestService: apiRequestService,
|
||||
AsynqService: service.NewAsynqService(c),
|
||||
DictService: dictService,
|
||||
UserModel: model.NewUserModel(db, c.CacheRedis),
|
||||
UserAuthModel: userAuthModel,
|
||||
ProductModel: model.NewProductModel(db, c.CacheRedis),
|
||||
ProductRenderModel: model.NewProductRenderModel(db, c.CacheRedis),
|
||||
OrderModel: model.NewOrderModel(db, c.CacheRedis),
|
||||
QueryModel: model.NewQueryModel(db, c.CacheRedis),
|
||||
ExampleModel: model.NewExampleModel(db, c.CacheRedis),
|
||||
ExampleParamsModel: model.NewExampleParamsModel(db, c.CacheRedis),
|
||||
GlobalNotificationsModel: model.NewGlobalNotificationsModel(db, c.CacheRedis),
|
||||
FeatureModel: featureModel,
|
||||
ProductFeatureModel: productFeatureModel,
|
||||
|
||||
AdminApiModel: adminApiModel,
|
||||
AdminMenuModel: adminMenuModel,
|
||||
AdminRoleModel: adminRoleModel,
|
||||
AdminRoleApiModel: adminRoleApiModel,
|
||||
AdminRoleMenuModel: adminRoleMenuModel,
|
||||
AdminUserModel: adminUserModel,
|
||||
AdminUserRoleModel: adminUserRoleModel,
|
||||
AdminDictDataModel: adminDictDataModel,
|
||||
AdminDictTypeModel: adminDictTypeModel,
|
||||
|
||||
AdminPromotionLinkModel: adminPromotionLinkModel,
|
||||
AdminPromotionLinkStatsTotalModel: adminPromotionLinkStatsTotalModel,
|
||||
AdminPromotionLinkStatsHistoryModel: adminPromotionLinkStatsHistoryModel,
|
||||
AdminPromotionOrderModel: adminPromotionOrderModel,
|
||||
VerificationService: service.NewVerificationService(c, westDexService, apiRequestService),
|
||||
DictService: service.NewDictService(adminModels.AdminDictTypeModel, adminModels.AdminDictDataModel),
|
||||
AdminPromotionLinkStatsService: adminPromotionLinkStatsService,
|
||||
}
|
||||
}
|
||||
|
||||
func NewServiceContext(c config.Config) *ServiceContext {
|
||||
// 初始化数据库连接
|
||||
db := sqlx.NewMysql(c.DataSource)
|
||||
|
||||
// 初始化基础服务
|
||||
redis, asynqServer := initBaseServices(c)
|
||||
|
||||
// 初始化各种模型
|
||||
baseModels := initBaseModels(db, c)
|
||||
adminModels := initAdminModels(db, c)
|
||||
promotionModels := initPromotionModels(db, c)
|
||||
|
||||
// 初始化业务服务
|
||||
businessServices := initBusinessServices(c, baseModels, adminModels, promotionModels)
|
||||
|
||||
return &ServiceContext{
|
||||
Config: c,
|
||||
Redis: redis,
|
||||
AsynqServer: asynqServer,
|
||||
SourceInterceptor: middleware.NewSourceInterceptorMiddleware().Handle,
|
||||
AuthInterceptor: middleware.NewAuthInterceptorMiddleware(c).Handle,
|
||||
|
||||
// 注入业务服务
|
||||
PayService: businessServices.PayService,
|
||||
WestDexService: businessServices.WestDexService,
|
||||
YushanService: businessServices.YushanService,
|
||||
TianjuService: businessServices.TianjuService,
|
||||
ApiRequestService: businessServices.ApiRequestService,
|
||||
AsynqService: businessServices.AsynqService,
|
||||
VerificationService: businessServices.VerificationService,
|
||||
DictService: businessServices.DictService,
|
||||
AdminPromotionLinkStatsService: businessServices.AdminPromotionLinkStatsService,
|
||||
|
||||
// 注入基础模型
|
||||
UserModel: baseModels.UserModel,
|
||||
UserAuthModel: baseModels.UserAuthModel,
|
||||
ProductModel: baseModels.ProductModel,
|
||||
FeatureModel: baseModels.FeatureModel,
|
||||
ProductFeatureModel: baseModels.ProductFeatureModel,
|
||||
ProductRenderModel: baseModels.ProductRenderModel,
|
||||
OrderModel: baseModels.OrderModel,
|
||||
OrderRefundModel: baseModels.OrderRefundModel,
|
||||
QueryModel: baseModels.QueryModel,
|
||||
GlobalNotificationsModel: baseModels.GlobalNotificationsModel,
|
||||
ExampleModel: baseModels.ExampleModel,
|
||||
ExampleParamsModel: baseModels.ExampleParamsModel,
|
||||
|
||||
// 注入管理后台模型
|
||||
AdminApiModel: adminModels.AdminApiModel,
|
||||
AdminMenuModel: adminModels.AdminMenuModel,
|
||||
AdminRoleModel: adminModels.AdminRoleModel,
|
||||
AdminRoleApiModel: adminModels.AdminRoleApiModel,
|
||||
AdminRoleMenuModel: adminModels.AdminRoleMenuModel,
|
||||
AdminUserModel: adminModels.AdminUserModel,
|
||||
AdminUserRoleModel: adminModels.AdminUserRoleModel,
|
||||
AdminDictDataModel: adminModels.AdminDictDataModel,
|
||||
AdminDictTypeModel: adminModels.AdminDictTypeModel,
|
||||
|
||||
// 注入推广相关模型
|
||||
AdminPromotionLinkModel: promotionModels.AdminPromotionLinkModel,
|
||||
AdminPromotionLinkStatsTotalModel: promotionModels.AdminPromotionLinkStatsTotalModel,
|
||||
AdminPromotionLinkStatsHistoryModel: promotionModels.AdminPromotionLinkStatsHistoryModel,
|
||||
AdminPromotionOrderModel: promotionModels.AdminPromotionOrderModel,
|
||||
}
|
||||
}
|
||||
|
||||
// 辅助结构体,用于分组初始化
|
||||
type BaseModels struct {
|
||||
UserModel model.UserModel
|
||||
UserAuthModel model.UserAuthModel
|
||||
ProductModel model.ProductModel
|
||||
FeatureModel model.FeatureModel
|
||||
ProductFeatureModel model.ProductFeatureModel
|
||||
ProductRenderModel model.ProductRenderModel
|
||||
OrderModel model.OrderModel
|
||||
OrderRefundModel model.OrderRefundModel
|
||||
QueryModel model.QueryModel
|
||||
GlobalNotificationsModel model.GlobalNotificationsModel
|
||||
ExampleModel model.ExampleModel
|
||||
ExampleParamsModel model.ExampleParamsModel
|
||||
}
|
||||
|
||||
type AdminModels struct {
|
||||
AdminApiModel model.AdminApiModel
|
||||
AdminMenuModel model.AdminMenuModel
|
||||
AdminRoleModel model.AdminRoleModel
|
||||
AdminRoleApiModel model.AdminRoleApiModel
|
||||
AdminRoleMenuModel model.AdminRoleMenuModel
|
||||
AdminUserModel model.AdminUserModel
|
||||
AdminUserRoleModel model.AdminUserRoleModel
|
||||
AdminDictDataModel model.AdminDictDataModel
|
||||
AdminDictTypeModel model.AdminDictTypeModel
|
||||
}
|
||||
|
||||
type PromotionModels struct {
|
||||
AdminPromotionLinkModel model.AdminPromotionLinkModel
|
||||
AdminPromotionLinkStatsTotalModel model.AdminPromotionLinkStatsTotalModel
|
||||
AdminPromotionLinkStatsHistoryModel model.AdminPromotionLinkStatsHistoryModel
|
||||
AdminPromotionOrderModel model.AdminPromotionOrderModel
|
||||
}
|
||||
|
||||
type BusinessServices struct {
|
||||
PayService *service.PayService
|
||||
WestDexService *service.WestDexService
|
||||
YushanService *service.YushanService
|
||||
TianjuService *service.TianjuService
|
||||
ApiRequestService *service.ApiRequestService
|
||||
AsynqService *service.AsynqService
|
||||
VerificationService *service.VerificationService
|
||||
DictService *service.DictService
|
||||
AdminPromotionLinkStatsService *service.AdminPromotionLinkStatsService
|
||||
}
|
||||
|
||||
func (s *ServiceContext) Close() {
|
||||
if s.AsynqService != nil {
|
||||
s.AsynqService.Close()
|
||||
|
||||
Reference in New Issue
Block a user