- Model层新增AdminConfig实体和AdminConfigReadDbContext(只读连接Admin库) - API项目新增AdminConnection连接字符串,注册AdminConfigReadDbContext - Core层ConfigService按key路由:运营配置走Admin库,业务配置走业务库 - WechatPayConfigService改为从Admin库读取支付/小程序配置 - WechatService新增AdminConfigReadDbContext注入,配置读取改为Admin库 - Autofac注册同步更新三个服务的依赖注入 - Admin.Business的AdminConfigService改用AdminConfigDbContext连接Admin库
249 lines
11 KiB
C#
249 lines
11 KiB
C#
using Autofac;
|
||
using MiAssessment.Core.Interfaces;
|
||
using MiAssessment.Core.Services;
|
||
using MiAssessment.Model.Data;
|
||
using MiAssessment.Model.Models.Auth;
|
||
using MiAssessment.Model.Models.Payment;
|
||
using Microsoft.Extensions.Logging;
|
||
|
||
namespace MiAssessment.Infrastructure.Modules;
|
||
|
||
/// <summary>
|
||
/// 服务注册模块 - 用于注册业务服务
|
||
/// </summary>
|
||
public class ServiceModule : Module
|
||
{
|
||
protected override void Load(ContainerBuilder builder)
|
||
{
|
||
// ========== 认证系统服务注册 ==========
|
||
|
||
// 注册 JWT 服务
|
||
builder.RegisterType<JwtService>().As<IJwtService>().InstancePerLifetimeScope();
|
||
|
||
// 注册用户服务
|
||
builder.RegisterType<UserService>().As<IUserService>().InstancePerLifetimeScope();
|
||
|
||
// 注册微信服务
|
||
builder.Register(c =>
|
||
{
|
||
var httpClientFactory = c.Resolve<System.Net.Http.IHttpClientFactory>();
|
||
var logger = c.Resolve<ILogger<WechatService>>();
|
||
var wechatPaySettings = c.Resolve<Microsoft.Extensions.Options.IOptions<WechatPaySettings>>();
|
||
var redisService = c.Resolve<IRedisService>();
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var adminConfigDbContext = c.Resolve<AdminConfigReadDbContext>();
|
||
return new WechatService(httpClientFactory.CreateClient(), logger, wechatPaySettings, redisService, dbContext, adminConfigDbContext);
|
||
}).As<IWechatService>().InstancePerLifetimeScope();
|
||
|
||
// 注册 IP 地理位置服务
|
||
builder.Register(c =>
|
||
{
|
||
var httpClientFactory = c.Resolve<System.Net.Http.IHttpClientFactory>();
|
||
var logger = c.Resolve<ILogger<IpLocationService>>();
|
||
var amapSettings = c.Resolve<AmapSettings>();
|
||
return new IpLocationService(httpClientFactory.CreateClient(), logger, amapSettings);
|
||
}).As<IIpLocationService>().InstancePerLifetimeScope();
|
||
|
||
// 注册认证服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var userService = c.Resolve<IUserService>();
|
||
var jwtService = c.Resolve<IJwtService>();
|
||
var wechatService = c.Resolve<IWechatService>();
|
||
var ipLocationService = c.Resolve<IIpLocationService>();
|
||
var redisService = c.Resolve<IRedisService>();
|
||
var jwtSettings = c.Resolve<JwtSettings>();
|
||
var logger = c.Resolve<ILogger<AuthService>>();
|
||
return new AuthService(dbContext, userService, jwtService, wechatService, ipLocationService, redisService, jwtSettings, logger);
|
||
}).As<IAuthService>().InstancePerLifetimeScope();
|
||
|
||
// ========== 用户管理系统服务注册 ==========
|
||
|
||
// 注册地址服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var logger = c.Resolve<ILogger<AddressService>>();
|
||
return new AddressService(dbContext, logger);
|
||
}).As<IAddressService>().InstancePerLifetimeScope();
|
||
|
||
// ========== 支付系统服务注册 ==========
|
||
|
||
// 注册微信支付配置服务(从Admin库读取配置)
|
||
builder.Register(c =>
|
||
{
|
||
var adminConfigDbContext = c.Resolve<AdminConfigReadDbContext>();
|
||
var redisService = c.Resolve<IRedisService>();
|
||
var logger = c.Resolve<ILogger<WechatPayConfigService>>();
|
||
return new WechatPayConfigService(adminConfigDbContext, redisService, logger);
|
||
}).As<IWechatPayConfigService>().InstancePerLifetimeScope();
|
||
|
||
// 注册微信支付 V3 服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var httpClientFactory = c.Resolve<System.Net.Http.IHttpClientFactory>();
|
||
var logger = c.Resolve<ILogger<WechatPayV3Service>>();
|
||
var configService = c.Resolve<IWechatPayConfigService>();
|
||
return new WechatPayV3Service(dbContext, httpClientFactory.CreateClient(), logger, configService);
|
||
}).As<IWechatPayV3Service>().InstancePerLifetimeScope();
|
||
|
||
// 注册微信支付服务 (V2),支持版本路由到 V3
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var httpClientFactory = c.Resolve<System.Net.Http.IHttpClientFactory>();
|
||
var logger = c.Resolve<ILogger<WechatPayService>>();
|
||
var configService = c.Resolve<IWechatPayConfigService>();
|
||
var wechatService = c.Resolve<IWechatService>();
|
||
var redisService = c.Resolve<IRedisService>();
|
||
var settings = c.Resolve<Microsoft.Extensions.Options.IOptions<WechatPaySettings>>();
|
||
var appSettings = c.Resolve<AppSettings>();
|
||
// Autofac 原生支持 Lazy<T>,直接解析即可
|
||
var v3ServiceLazy = c.Resolve<Lazy<IWechatPayV3Service>>();
|
||
return new WechatPayService(dbContext, httpClientFactory.CreateClient(), logger, configService, wechatService, redisService, settings, appSettings, v3ServiceLazy);
|
||
}).As<IWechatPayService>().InstancePerLifetimeScope();
|
||
|
||
// 注册支付服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var logger = c.Resolve<ILogger<PaymentService>>();
|
||
return new PaymentService(dbContext, logger);
|
||
}).As<IPaymentService>().InstancePerLifetimeScope();
|
||
|
||
// 注册支付回调服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var wechatPayService = c.Resolve<IWechatPayService>();
|
||
var wechatPayV3Service = c.Resolve<IWechatPayV3Service>();
|
||
var wechatPayConfigService = c.Resolve<IWechatPayConfigService>();
|
||
var logger = c.Resolve<ILogger<PaymentNotifyService>>();
|
||
return new PaymentNotifyService(dbContext, wechatPayService, wechatPayV3Service, wechatPayConfigService, logger);
|
||
}).As<IPaymentNotifyService>().InstancePerLifetimeScope();
|
||
|
||
// 注册支付订单服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var rewardHandlers = c.Resolve<IEnumerable<IPaymentRewardHandler>>();
|
||
var logger = c.Resolve<ILogger<PaymentOrderService>>();
|
||
return new PaymentOrderService(dbContext, rewardHandlers, logger);
|
||
}).As<IPaymentOrderService>().InstancePerLifetimeScope();
|
||
|
||
// 注册奖励分发器
|
||
builder.Register(c =>
|
||
{
|
||
var rewardHandlers = c.Resolve<IEnumerable<IPaymentRewardHandler>>();
|
||
var logger = c.Resolve<ILogger<PaymentRewardDispatcher>>();
|
||
return new PaymentRewardDispatcher(rewardHandlers, logger);
|
||
}).As<IPaymentRewardDispatcher>().SingleInstance();
|
||
|
||
// ========== 奖励处理器注册 ==========
|
||
// 注册默认奖励处理器(示例)
|
||
// 实际项目中可以注册多个处理器,每个处理器处理不同的订单类型
|
||
// 例如:DiamondRechargeRewardHandler, VipPurchaseRewardHandler 等
|
||
builder.Register(c =>
|
||
{
|
||
var logger = c.Resolve<ILogger<DefaultPaymentRewardHandler>>();
|
||
return new DefaultPaymentRewardHandler(logger);
|
||
}).As<IPaymentRewardHandler>().InstancePerLifetimeScope();
|
||
|
||
// ========== 配置系统服务注册 ==========
|
||
|
||
// 注册配置服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var adminConfigDbContext = c.Resolve<AdminConfigReadDbContext>();
|
||
var logger = c.Resolve<ILogger<ConfigService>>();
|
||
var redisService = c.Resolve<IRedisService>();
|
||
return new ConfigService(dbContext, adminConfigDbContext, logger, redisService);
|
||
}).As<IConfigService>().InstancePerLifetimeScope();
|
||
|
||
// ========== 小程序首页模块服务注册 ==========
|
||
|
||
// 注册首页服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var logger = c.Resolve<ILogger<HomeService>>();
|
||
return new HomeService(dbContext, logger);
|
||
}).As<IHomeService>().InstancePerLifetimeScope();
|
||
|
||
// ========== 小程序测评模块服务注册 ==========
|
||
|
||
// 注册测评服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var logger = c.Resolve<ILogger<AssessmentService>>();
|
||
return new AssessmentService(dbContext, logger);
|
||
}).As<IAssessmentService>().InstancePerLifetimeScope();
|
||
|
||
// ========== 小程序订单模块服务注册 ==========
|
||
|
||
// 注册订单服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var logger = c.Resolve<ILogger<OrderService>>();
|
||
var wechatPayService = c.Resolve<IWechatPayService>();
|
||
return new OrderService(dbContext, logger, wechatPayService);
|
||
}).As<Core.Interfaces.IOrderService>().InstancePerLifetimeScope();
|
||
|
||
// ========== 小程序业务详情模块服务注册 ==========
|
||
|
||
// 注册业务详情服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var logger = c.Resolve<ILogger<BusinessService>>();
|
||
return new BusinessService(dbContext, logger);
|
||
}).As<IBusinessService>().InstancePerLifetimeScope();
|
||
|
||
// ========== 小程序规划师模块服务注册 ==========
|
||
|
||
// 注册规划师服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var logger = c.Resolve<ILogger<PlannerService>>();
|
||
return new PlannerService(dbContext, logger);
|
||
}).As<IPlannerService>().InstancePerLifetimeScope();
|
||
|
||
// ========== 小程序分销模块服务注册 ==========
|
||
|
||
// 注册分销服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var logger = c.Resolve<ILogger<InviteService>>();
|
||
var wechatService = c.Resolve<IWechatService>();
|
||
return new InviteService(dbContext, logger, wechatService);
|
||
}).As<IInviteService>().InstancePerLifetimeScope();
|
||
|
||
// ========== 小程序系统模块服务注册 ==========
|
||
|
||
// 注册系统服务
|
||
builder.Register(c =>
|
||
{
|
||
var configService = c.Resolve<IConfigService>();
|
||
var logger = c.Resolve<ILogger<SystemService>>();
|
||
return new SystemService(configService, logger);
|
||
}).As<ISystemService>().InstancePerLifetimeScope();
|
||
|
||
// ========== 小程序团队模块服务注册 ==========
|
||
|
||
// 注册团队服务
|
||
builder.Register(c =>
|
||
{
|
||
var dbContext = c.Resolve<MiAssessmentDbContext>();
|
||
var logger = c.Resolve<ILogger<TeamService>>();
|
||
return new TeamService(dbContext, logger);
|
||
}).As<ITeamService>().InstancePerLifetimeScope();
|
||
}
|
||
}
|