手机号适配双端

This commit is contained in:
2025-06-18 16:31:32 +08:00
parent a738c711de
commit 301a80447d
39 changed files with 1423 additions and 1348 deletions

View File

@@ -8,7 +8,6 @@ import (
"github.com/hibiken/asynq"
"github.com/zeromicro/go-zero/core/logx"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/redis"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/rest"
@@ -20,12 +19,13 @@ type ServiceContext struct {
Redis *redis.Redis
// 中间件
SourceInterceptor rest.Middleware
AuthInterceptor rest.Middleware
AuthInterceptor rest.Middleware
UserAuthInterceptor rest.Middleware
// 用户相关模型
UserModel model.UserModel
UserAuthModel model.UserAuthModel
UserTempModel model.UserTempModel
// 产品相关模型
ProductModel model.ProductModel
@@ -94,185 +94,98 @@ type ServiceContext struct {
AdminPromotionLinkStatsService *service.AdminPromotionLinkStatsService
}
// 用户相关模型初始化
type userModels struct {
UserModel model.UserModel
UserAuthModel model.UserAuthModel
}
// NewServiceContext 创建服务上下文
func NewServiceContext(c config.Config) *ServiceContext {
// ============================== 基础设施初始化 ==============================
db := sqlx.NewMysql(c.DataSource)
cacheConf := c.CacheRedis
func initUserModels(db sqlx.SqlConn, redis cache.CacheConf) userModels {
return userModels{
UserModel: model.NewUserModel(db, redis),
UserAuthModel: model.NewUserAuthModel(db, redis),
// 初始化Redis客户端
redisConf := redis.RedisConf{
Host: cacheConf[0].Host,
Pass: cacheConf[0].Pass,
Type: cacheConf[0].Type,
}
}
redisClient := redis.MustNewRedis(redisConf)
// 产品相关模型初始化
type productModels struct {
ProductModel model.ProductModel
FeatureModel model.FeatureModel
ProductFeatureModel model.ProductFeatureModel
}
// ============================== 用户相关模型 ==============================
userModel := model.NewUserModel(db, cacheConf)
userAuthModel := model.NewUserAuthModel(db, cacheConf)
userTempModel := model.NewUserTempModel(db, cacheConf)
func initProductModels(db sqlx.SqlConn, redis cache.CacheConf) productModels {
return productModels{
ProductModel: model.NewProductModel(db, redis),
FeatureModel: model.NewFeatureModel(db, redis),
ProductFeatureModel: model.NewProductFeatureModel(db, redis),
}
}
// ============================== 产品相关模型 ==============================
productModel := model.NewProductModel(db, cacheConf)
featureModel := model.NewFeatureModel(db, cacheConf)
productFeatureModel := model.NewProductFeatureModel(db, cacheConf)
// 订单相关模型初始化
type orderModels struct {
OrderModel model.OrderModel
QueryModel model.QueryModel
OrderRefundModel model.OrderRefundModel
QueryCleanupLogModel model.QueryCleanupLogModel
QueryCleanupDetailModel model.QueryCleanupDetailModel
QueryCleanupConfigModel model.QueryCleanupConfigModel
}
// ============================== 订单相关模型 ==============================
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)
func initOrderModels(db sqlx.SqlConn, redis cache.CacheConf) orderModels {
return orderModels{
OrderModel: model.NewOrderModel(db, redis),
QueryModel: model.NewQueryModel(db, redis),
OrderRefundModel: model.NewOrderRefundModel(db, redis),
QueryCleanupLogModel: model.NewQueryCleanupLogModel(db, redis),
QueryCleanupDetailModel: model.NewQueryCleanupDetailModel(db, redis),
QueryCleanupConfigModel: model.NewQueryCleanupConfigModel(db, redis),
}
}
// ============================== 代理相关模型 ==============================
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)
// 代理相关模型初始化
type agentModels struct {
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
}
// ============================== 管理后台相关模型 ==============================
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)
func initAgentModels(db sqlx.SqlConn, redis cache.CacheConf) agentModels {
return agentModels{
AgentModel: model.NewAgentModel(db, redis),
AgentAuditModel: model.NewAgentAuditModel(db, redis),
AgentClosureModel: model.NewAgentClosureModel(db, redis),
AgentCommissionModel: model.NewAgentCommissionModel(db, redis),
AgentCommissionDeductionModel: model.NewAgentCommissionDeductionModel(db, redis),
AgentWalletModel: model.NewAgentWalletModel(db, redis),
AgentLinkModel: model.NewAgentLinkModel(db, redis),
AgentOrderModel: model.NewAgentOrderModel(db, redis),
AgentRewardsModel: model.NewAgentRewardsModel(db, redis),
AgentMembershipConfigModel: model.NewAgentMembershipConfigModel(db, redis),
AgentMembershipRechargeOrderModel: model.NewAgentMembershipRechargeOrderModel(db, redis),
AgentMembershipUserConfigModel: model.NewAgentMembershipUserConfigModel(db, redis),
AgentProductConfigModel: model.NewAgentProductConfigModel(db, redis),
AgentPlatformDeductionModel: model.NewAgentPlatformDeductionModel(db, redis),
AgentActiveStatModel: model.NewAgentActiveStatModel(db, redis),
AgentWithdrawalModel: model.NewAgentWithdrawalModel(db, redis),
AgentRealNameModel: model.NewAgentRealNameModel(db, redis),
}
}
// ============================== 其他模型 ==============================
exampleModel := model.NewExampleModel(db, cacheConf)
globalNotificationsModel := model.NewGlobalNotificationsModel(db, cacheConf)
// 管理后台相关模型初始化
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
AdminPromotionLinkModel model.AdminPromotionLinkModel
AdminPromotionLinkStatsTotalModel model.AdminPromotionLinkStatsTotalModel
AdminPromotionLinkStatsHistoryModel model.AdminPromotionLinkStatsHistoryModel
AdminPromotionOrderModel model.AdminPromotionOrderModel
}
func initAdminModels(db sqlx.SqlConn, redis cache.CacheConf) adminModels {
return adminModels{
AdminApiModel: model.NewAdminApiModel(db, redis),
AdminMenuModel: model.NewAdminMenuModel(db, redis),
AdminRoleModel: model.NewAdminRoleModel(db, redis),
AdminRoleApiModel: model.NewAdminRoleApiModel(db, redis),
AdminRoleMenuModel: model.NewAdminRoleMenuModel(db, redis),
AdminUserModel: model.NewAdminUserModel(db, redis),
AdminUserRoleModel: model.NewAdminUserRoleModel(db, redis),
AdminDictDataModel: model.NewAdminDictDataModel(db, redis),
AdminDictTypeModel: model.NewAdminDictTypeModel(db, redis),
AdminPromotionLinkModel: model.NewAdminPromotionLinkModel(db, redis),
AdminPromotionLinkStatsTotalModel: model.NewAdminPromotionLinkStatsTotalModel(db, redis),
AdminPromotionLinkStatsHistoryModel: model.NewAdminPromotionLinkStatsHistoryModel(db, redis),
AdminPromotionOrderModel: model.NewAdminPromotionOrderModel(db, redis),
}
}
// 其他模型初始化
type otherModels struct {
ExampleModel model.ExampleModel
GlobalNotificationsModel model.GlobalNotificationsModel
}
func initOtherModels(db sqlx.SqlConn, redis cache.CacheConf) otherModels {
return otherModels{
ExampleModel: model.NewExampleModel(db, redis),
GlobalNotificationsModel: model.NewGlobalNotificationsModel(db, redis),
}
}
// 服务初始化
type services struct {
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
}
func initServices(c config.Config, userAuthModel model.UserAuthModel, westDexService *service.WestDexService,
yushanService *service.YushanService, featureModel model.FeatureModel,
productFeatureModel model.ProductFeatureModel, agentModels agentModels,
userModels userModels, adminModels adminModels) services {
// ============================== 第三方服务初始化 ==============================
westDexService := service.NewWestDexService(c)
yushanService := service.NewYushanService(c)
// ============================== 业务服务初始化 ==============================
alipayService := service.NewAliPayService(c)
wechatPayService := service.NewWechatPayService(c, userAuthModel, service.InitTypeWxPayPubKey)
wechatPayService := service.NewWechatPayService(c, userAuthModel, service.InitTypeWxPayPubKey)
applePayService := service.NewApplePayService(c)
apiRequestService := service.NewApiRequestService(c, westDexService, yushanService, featureModel, productFeatureModel)
verificationService := service.NewVerificationService(c, westDexService, apiRequestService)
asynqService := service.NewAsynqService(c)
agentService := service.NewAgentService(c, agentModels.AgentModel, agentModels.AgentAuditModel,
agentModels.AgentClosureModel, agentModels.AgentCommissionModel,
agentModels.AgentCommissionDeductionModel, agentModels.AgentWalletModel,
agentModels.AgentLinkModel, agentModels.AgentOrderModel, agentModels.AgentRewardsModel,
agentModels.AgentMembershipConfigModel, agentModels.AgentMembershipRechargeOrderModel,
agentModels.AgentMembershipUserConfigModel, agentModels.AgentProductConfigModel,
agentModels.AgentPlatformDeductionModel, agentModels.AgentActiveStatModel,
agentModels.AgentWithdrawalModel)
userService := service.NewUserService(userModels.UserModel, userModels.UserAuthModel)
dictService := service.NewDictService(adminModels.AdminDictTypeModel, adminModels.AdminDictDataModel)
AdminPromotionLinkStatsService := service.NewAdminPromotionLinkStatsService(adminModels.AdminPromotionLinkModel, adminModels.AdminPromotionLinkStatsTotalModel, adminModels.AdminPromotionLinkStatsHistoryModel)
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)
// ============================== 异步任务服务 ==============================
asynqServer := asynq.NewServer(
asynq.RedisClientOpt{Addr: c.CacheRedis[0].Host, Password: c.CacheRedis[0].Pass},
asynq.Config{
@@ -284,7 +197,70 @@ wechatPayService := service.NewWechatPayService(c, userAuthModel, service.InitTy
},
)
return services{
// ============================== 返回服务上下文 ==============================
return &ServiceContext{
Config: c,
Redis: redisClient,
AuthInterceptor: middleware.NewAuthInterceptorMiddleware(c).Handle,
UserAuthInterceptor: middleware.NewUserAuthInterceptorMiddleware().Handle,
// 用户相关模型
UserModel: userModel,
UserAuthModel: userAuthModel,
UserTempModel: userTempModel,
// 产品相关模型
ProductModel: productModel,
FeatureModel: featureModel,
ProductFeatureModel: productFeatureModel,
// 订单相关模型
OrderModel: orderModel,
QueryModel: queryModel,
OrderRefundModel: orderRefundModel,
QueryCleanupLogModel: queryCleanupLogModel,
QueryCleanupDetailModel: queryCleanupDetailModel,
QueryCleanupConfigModel: queryCleanupConfigModel,
// 代理相关模型
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,
// 管理后台相关模型
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,
// 其他模型
ExampleModel: exampleModel,
GlobalNotificationsModel: globalNotificationsModel,
// 服务
AlipayService: alipayService,
WechatPayService: wechatPayService,
ApplePayService: applePayService,
@@ -297,115 +273,7 @@ wechatPayService := service.NewWechatPayService(c, userAuthModel, service.InitTy
AgentService: agentService,
UserService: userService,
DictService: dictService,
AdminPromotionLinkStatsService: AdminPromotionLinkStatsService,
}
}
// NewServiceContext 创建服务上下文
func NewServiceContext(c config.Config) *ServiceContext {
db := sqlx.NewMysql(c.DataSource)
// 使用配置中的CacheRedis配置
cacheConf := c.CacheRedis
// 初始化Redis客户端用于异步任务等
redisConf := redis.RedisConf{
Host: cacheConf[0].Host,
Pass: cacheConf[0].Pass,
Type: cacheConf[0].Type,
}
redisClient := redis.MustNewRedis(redisConf)
// 初始化各个模块的模型
userModels := initUserModels(db, cacheConf)
productModels := initProductModels(db, cacheConf)
orderModels := initOrderModels(db, cacheConf)
agentModels := initAgentModels(db, cacheConf)
adminModels := initAdminModels(db, cacheConf)
otherModels := initOtherModels(db, cacheConf)
// 初始化第三方服务
westDexService := service.NewWestDexService(c)
yushanService := service.NewYushanService(c)
// 初始化所有服务
services := initServices(c, userModels.UserAuthModel, westDexService, yushanService,
productModels.FeatureModel, productModels.ProductFeatureModel, agentModels, userModels, adminModels)
return &ServiceContext{
Config: c,
Redis: redisClient,
SourceInterceptor: middleware.NewSourceInterceptorMiddleware().Handle,
AuthInterceptor: middleware.NewAuthInterceptorMiddleware(c).Handle,
// 用户相关模型
UserModel: userModels.UserModel,
UserAuthModel: userModels.UserAuthModel,
// 产品相关模型
ProductModel: productModels.ProductModel,
FeatureModel: productModels.FeatureModel,
ProductFeatureModel: productModels.ProductFeatureModel,
// 订单相关模型
OrderModel: orderModels.OrderModel,
QueryModel: orderModels.QueryModel,
OrderRefundModel: orderModels.OrderRefundModel,
QueryCleanupLogModel: orderModels.QueryCleanupLogModel,
QueryCleanupDetailModel: orderModels.QueryCleanupDetailModel,
QueryCleanupConfigModel: orderModels.QueryCleanupConfigModel,
// 代理相关模型
AgentModel: agentModels.AgentModel,
AgentAuditModel: agentModels.AgentAuditModel,
AgentClosureModel: agentModels.AgentClosureModel,
AgentCommissionModel: agentModels.AgentCommissionModel,
AgentCommissionDeductionModel: agentModels.AgentCommissionDeductionModel,
AgentWalletModel: agentModels.AgentWalletModel,
AgentLinkModel: agentModels.AgentLinkModel,
AgentOrderModel: agentModels.AgentOrderModel,
AgentRewardsModel: agentModels.AgentRewardsModel,
AgentMembershipConfigModel: agentModels.AgentMembershipConfigModel,
AgentMembershipRechargeOrderModel: agentModels.AgentMembershipRechargeOrderModel,
AgentMembershipUserConfigModel: agentModels.AgentMembershipUserConfigModel,
AgentProductConfigModel: agentModels.AgentProductConfigModel,
AgentPlatformDeductionModel: agentModels.AgentPlatformDeductionModel,
AgentActiveStatModel: agentModels.AgentActiveStatModel,
AgentWithdrawalModel: agentModels.AgentWithdrawalModel,
AgentRealNameModel: agentModels.AgentRealNameModel,
// 管理后台相关模型
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: adminModels.AdminPromotionLinkModel,
AdminPromotionLinkStatsTotalModel: adminModels.AdminPromotionLinkStatsTotalModel,
AdminPromotionLinkStatsHistoryModel: adminModels.AdminPromotionLinkStatsHistoryModel,
AdminPromotionOrderModel: adminModels.AdminPromotionOrderModel,
// 其他模型
ExampleModel: otherModels.ExampleModel,
GlobalNotificationsModel: otherModels.GlobalNotificationsModel,
// 服务
AlipayService: services.AlipayService,
WechatPayService: services.WechatPayService,
ApplePayService: services.ApplePayService,
WestDexService: services.WestDexService,
YushanService: services.YushanService,
ApiRequestService: services.ApiRequestService,
AsynqServer: services.AsynqServer,
AsynqService: services.AsynqService,
VerificationService: services.VerificationService,
AgentService: services.AgentService,
UserService: services.UserService,
DictService: services.DictService,
AdminPromotionLinkStatsService: services.AdminPromotionLinkStatsService,
AdminPromotionLinkStatsService: adminPromotionLinkStatsService,
}
}