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

292 lines
14 KiB
Go
Raw Normal View History

2025-06-08 15:07:04 +08:00
package svc
import (
2025-06-08 15:14:34 +08:00
"tydata-server/app/main/api/internal/config"
"tydata-server/app/main/api/internal/middleware"
"tydata-server/app/main/api/internal/service"
"tydata-server/app/main/model"
2025-06-08 15:07:04 +08:00
"github.com/hibiken/asynq"
"github.com/zeromicro/go-zero/core/logx"
"github.com/zeromicro/go-zero/core/stores/redis"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/rest"
)
2025-06-08 15:14:34 +08:00
// ServiceContext 服务上下文
2025-06-08 15:07:04 +08:00
type ServiceContext struct {
2025-06-08 15:14:34 +08:00
Config config.Config
Redis *redis.Redis
// 中间件
2025-06-18 16:31:32 +08:00
AuthInterceptor rest.Middleware
UserAuthInterceptor rest.Middleware
2025-06-08 15:14:34 +08:00
// 用户相关模型
UserModel model.UserModel
UserAuthModel model.UserAuthModel
2025-06-18 16:31:32 +08:00
UserTempModel model.UserTempModel
2025-06-08 15:14:34 +08:00
// 产品相关模型
ProductModel model.ProductModel
FeatureModel model.FeatureModel
ProductFeatureModel model.ProductFeatureModel
// 订单相关模型
OrderModel model.OrderModel
OrderRefundModel model.OrderRefundModel
QueryModel model.QueryModel
QueryCleanupLogModel model.QueryCleanupLogModel
QueryCleanupDetailModel model.QueryCleanupDetailModel
QueryCleanupConfigModel model.QueryCleanupConfigModel
// 代理相关模型
2025-06-08 15:07:04 +08:00
AgentModel model.AgentModel
AgentAuditModel model.AgentAuditModel
AgentClosureModel model.AgentClosureModel
AgentCommissionModel model.AgentCommissionModel
AgentCommissionDeductionModel model.AgentCommissionDeductionModel
AgentWalletModel model.AgentWalletModel
AgentLinkModel model.AgentLinkModel
AgentOrderModel model.AgentOrderModel
AgentRewardsModel model.AgentRewardsModel
AgentMembershipConfigModel model.AgentMembershipConfigModel
AgentMembershipRechargeOrderModel model.AgentMembershipRechargeOrderModel
AgentMembershipUserConfigModel model.AgentMembershipUserConfigModel
AgentProductConfigModel model.AgentProductConfigModel
AgentPlatformDeductionModel model.AgentPlatformDeductionModel
AgentActiveStatModel model.AgentActiveStatModel
AgentWithdrawalModel model.AgentWithdrawalModel
AgentRealNameModel model.AgentRealNameModel
2025-06-22 16:02:09 +08:00
AgentWithdrawalTaxModel model.AgentWithdrawalTaxModel
AgentWithdrawalTaxExemptionModel model.AgentWithdrawalTaxExemptionModel
2025-06-08 15:14:34 +08:00
// 管理后台相关模型
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
AdminPromotionLinkModel model.AdminPromotionLinkModel
AdminPromotionLinkStatsTotalModel model.AdminPromotionLinkStatsTotalModel
AdminPromotionLinkStatsHistoryModel model.AdminPromotionLinkStatsHistoryModel
AdminPromotionOrderModel model.AdminPromotionOrderModel
// 其他模型
ExampleModel model.ExampleModel
GlobalNotificationsModel model.GlobalNotificationsModel
// 服务
AlipayService *service.AliPayService
WechatPayService *service.WechatPayService
ApplePayService *service.ApplePayService
WestDexService *service.WestDexService
YushanService *service.YushanService
ApiRequestService *service.ApiRequestService
AsynqServer *asynq.Server
AsynqService *service.AsynqService
VerificationService *service.VerificationService
AgentService *service.AgentService
UserService *service.UserService
DictService *service.DictService
AdminPromotionLinkStatsService *service.AdminPromotionLinkStatsService
2025-06-24 00:11:19 +08:00
ImageService *service.ImageService
2025-06-08 15:07:04 +08:00
}
2025-06-18 16:31:32 +08:00
// NewServiceContext 创建服务上下文
func NewServiceContext(c config.Config) *ServiceContext {
// ============================== 基础设施初始化 ==============================
db := sqlx.NewMysql(c.DataSource)
cacheConf := c.CacheRedis
2025-06-08 15:14:34 +08:00
2025-06-18 16:31:32 +08:00
// 初始化Redis客户端
redisConf := redis.RedisConf{
Host: cacheConf[0].Host,
Pass: cacheConf[0].Pass,
Type: cacheConf[0].Type,
2025-06-08 15:14:34 +08:00
}
2025-06-18 16:31:32 +08:00
redisClient := redis.MustNewRedis(redisConf)
2025-06-08 15:14:34 +08:00
2025-06-18 16:31:32 +08:00
// ============================== 用户相关模型 ==============================
userModel := model.NewUserModel(db, cacheConf)
userAuthModel := model.NewUserAuthModel(db, cacheConf)
userTempModel := model.NewUserTempModel(db, cacheConf)
// ============================== 产品相关模型 ==============================
productModel := model.NewProductModel(db, cacheConf)
featureModel := model.NewFeatureModel(db, cacheConf)
productFeatureModel := model.NewProductFeatureModel(db, cacheConf)
// ============================== 订单相关模型 ==============================
orderModel := model.NewOrderModel(db, cacheConf)
queryModel := model.NewQueryModel(db, cacheConf)
orderRefundModel := model.NewOrderRefundModel(db, cacheConf)
queryCleanupLogModel := model.NewQueryCleanupLogModel(db, cacheConf)
queryCleanupDetailModel := model.NewQueryCleanupDetailModel(db, cacheConf)
queryCleanupConfigModel := model.NewQueryCleanupConfigModel(db, cacheConf)
// ============================== 代理相关模型 ==============================
agentModel := model.NewAgentModel(db, cacheConf)
agentAuditModel := model.NewAgentAuditModel(db, cacheConf)
agentClosureModel := model.NewAgentClosureModel(db, cacheConf)
agentCommissionModel := model.NewAgentCommissionModel(db, cacheConf)
agentCommissionDeductionModel := model.NewAgentCommissionDeductionModel(db, cacheConf)
agentWalletModel := model.NewAgentWalletModel(db, cacheConf)
agentLinkModel := model.NewAgentLinkModel(db, cacheConf)
agentOrderModel := model.NewAgentOrderModel(db, cacheConf)
agentRewardsModel := model.NewAgentRewardsModel(db, cacheConf)
agentMembershipConfigModel := model.NewAgentMembershipConfigModel(db, cacheConf)
agentMembershipRechargeOrderModel := model.NewAgentMembershipRechargeOrderModel(db, cacheConf)
agentMembershipUserConfigModel := model.NewAgentMembershipUserConfigModel(db, cacheConf)
agentProductConfigModel := model.NewAgentProductConfigModel(db, cacheConf)
agentPlatformDeductionModel := model.NewAgentPlatformDeductionModel(db, cacheConf)
agentActiveStatModel := model.NewAgentActiveStatModel(db, cacheConf)
agentWithdrawalModel := model.NewAgentWithdrawalModel(db, cacheConf)
agentRealNameModel := model.NewAgentRealNameModel(db, cacheConf)
2025-06-22 16:02:09 +08:00
agentWithdrawalTaxModel := model.NewAgentWithdrawalTaxModel(db, cacheConf)
agentWithdrawalTaxExemptionModel := model.NewAgentWithdrawalTaxExemptionModel(db, cacheConf)
2025-06-18 16:31:32 +08:00
// ============================== 管理后台相关模型 ==============================
adminApiModel := model.NewAdminApiModel(db, cacheConf)
adminMenuModel := model.NewAdminMenuModel(db, cacheConf)
adminRoleModel := model.NewAdminRoleModel(db, cacheConf)
adminRoleApiModel := model.NewAdminRoleApiModel(db, cacheConf)
adminRoleMenuModel := model.NewAdminRoleMenuModel(db, cacheConf)
adminUserModel := model.NewAdminUserModel(db, cacheConf)
adminUserRoleModel := model.NewAdminUserRoleModel(db, cacheConf)
adminDictDataModel := model.NewAdminDictDataModel(db, cacheConf)
adminDictTypeModel := model.NewAdminDictTypeModel(db, cacheConf)
adminPromotionLinkModel := model.NewAdminPromotionLinkModel(db, cacheConf)
adminPromotionLinkStatsTotalModel := model.NewAdminPromotionLinkStatsTotalModel(db, cacheConf)
adminPromotionLinkStatsHistoryModel := model.NewAdminPromotionLinkStatsHistoryModel(db, cacheConf)
adminPromotionOrderModel := model.NewAdminPromotionOrderModel(db, cacheConf)
// ============================== 其他模型 ==============================
exampleModel := model.NewExampleModel(db, cacheConf)
globalNotificationsModel := model.NewGlobalNotificationsModel(db, cacheConf)
// ============================== 第三方服务初始化 ==============================
westDexService := service.NewWestDexService(c)
yushanService := service.NewYushanService(c)
2025-06-08 15:14:34 +08:00
2025-06-18 16:31:32 +08:00
// ============================== 业务服务初始化 ==============================
2025-06-08 15:14:34 +08:00
alipayService := service.NewAliPayService(c)
2025-06-18 16:31:32 +08:00
wechatPayService := service.NewWechatPayService(c, userAuthModel, service.InitTypeWxPayPubKey)
2025-06-08 15:14:34 +08:00
applePayService := service.NewApplePayService(c)
apiRequestService := service.NewApiRequestService(c, westDexService, yushanService, featureModel, productFeatureModel)
verificationService := service.NewVerificationService(c, westDexService, apiRequestService)
asynqService := service.NewAsynqService(c)
2025-06-18 16:31:32 +08:00
agentService := service.NewAgentService(c, agentModel, agentAuditModel, agentClosureModel,
agentCommissionModel, agentCommissionDeductionModel, agentWalletModel, agentLinkModel,
agentOrderModel, agentRewardsModel, agentMembershipConfigModel, agentMembershipRechargeOrderModel,
agentMembershipUserConfigModel, agentProductConfigModel, agentPlatformDeductionModel,
agentActiveStatModel, agentWithdrawalModel)
userService := service.NewUserService(&c, userModel, userAuthModel, userTempModel, agentModel)
dictService := service.NewDictService(adminDictTypeModel, adminDictDataModel)
adminPromotionLinkStatsService := service.NewAdminPromotionLinkStatsService(adminPromotionLinkModel,
adminPromotionLinkStatsTotalModel, adminPromotionLinkStatsHistoryModel)
2025-06-24 00:11:19 +08:00
imageService := service.NewImageService()
2025-06-18 16:31:32 +08:00
// ============================== 异步任务服务 ==============================
2025-06-08 15:07:04 +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,
},
)
2025-06-18 16:31:32 +08:00
// ============================== 返回服务上下文 ==============================
2025-06-08 15:07:04 +08:00
return &ServiceContext{
2025-06-18 16:31:32 +08:00
Config: c,
Redis: redisClient,
AuthInterceptor: middleware.NewAuthInterceptorMiddleware(c).Handle,
UserAuthInterceptor: middleware.NewUserAuthInterceptorMiddleware().Handle,
2025-06-08 15:14:34 +08:00
// 用户相关模型
2025-06-18 16:31:32 +08:00
UserModel: userModel,
UserAuthModel: userAuthModel,
UserTempModel: userTempModel,
2025-06-08 15:14:34 +08:00
// 产品相关模型
2025-06-18 16:31:32 +08:00
ProductModel: productModel,
FeatureModel: featureModel,
ProductFeatureModel: productFeatureModel,
2025-06-08 15:14:34 +08:00
// 订单相关模型
2025-06-18 16:31:32 +08:00
OrderModel: orderModel,
QueryModel: queryModel,
OrderRefundModel: orderRefundModel,
QueryCleanupLogModel: queryCleanupLogModel,
QueryCleanupDetailModel: queryCleanupDetailModel,
QueryCleanupConfigModel: queryCleanupConfigModel,
2025-06-08 15:14:34 +08:00
// 代理相关模型
2025-06-18 16:31:32 +08:00
AgentModel: agentModel,
AgentAuditModel: agentAuditModel,
AgentClosureModel: agentClosureModel,
AgentCommissionModel: agentCommissionModel,
AgentCommissionDeductionModel: agentCommissionDeductionModel,
AgentWalletModel: agentWalletModel,
AgentLinkModel: agentLinkModel,
AgentOrderModel: agentOrderModel,
AgentRewardsModel: agentRewardsModel,
AgentMembershipConfigModel: agentMembershipConfigModel,
AgentMembershipRechargeOrderModel: agentMembershipRechargeOrderModel,
AgentMembershipUserConfigModel: agentMembershipUserConfigModel,
AgentProductConfigModel: agentProductConfigModel,
AgentPlatformDeductionModel: agentPlatformDeductionModel,
AgentActiveStatModel: agentActiveStatModel,
AgentWithdrawalModel: agentWithdrawalModel,
AgentRealNameModel: agentRealNameModel,
2025-06-22 16:02:09 +08:00
AgentWithdrawalTaxModel: agentWithdrawalTaxModel,
AgentWithdrawalTaxExemptionModel: agentWithdrawalTaxExemptionModel,
2025-06-08 15:14:34 +08:00
// 管理后台相关模型
2025-06-18 16:31:32 +08:00
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,
2025-06-08 15:14:34 +08:00
// 其他模型
2025-06-18 16:31:32 +08:00
ExampleModel: exampleModel,
GlobalNotificationsModel: globalNotificationsModel,
2025-06-08 15:14:34 +08:00
// 服务
2025-06-18 16:31:32 +08:00
AlipayService: alipayService,
WechatPayService: wechatPayService,
ApplePayService: applePayService,
WestDexService: westDexService,
YushanService: yushanService,
ApiRequestService: apiRequestService,
AsynqServer: asynqServer,
AsynqService: asynqService,
VerificationService: verificationService,
AgentService: agentService,
UserService: userService,
DictService: dictService,
AdminPromotionLinkStatsService: adminPromotionLinkStatsService,
2025-06-24 00:11:19 +08:00
ImageService: imageService,
2025-06-08 15:07:04 +08:00
}
}
func (s *ServiceContext) Close() {
if s.AsynqService != nil {
s.AsynqService.Close()
}
}