HaniBlindBox/server/C#/HoneyBox/src/HoneyBox.Infrastructure/Modules/ServiceModule.cs
2026-01-02 22:30:21 +08:00

185 lines
7.3 KiB
C#

using Autofac;
using HoneyBox.Core.Interfaces;
using HoneyBox.Core.Services;
using HoneyBox.Model.Data;
using HoneyBox.Model.Models.Auth;
using Microsoft.Extensions.Logging;
namespace HoneyBox.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 wechatSettings = c.Resolve<WechatSettings>();
return new WechatService(httpClientFactory.CreateClient(), logger, wechatSettings);
}).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<HoneyBoxDbContext>();
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 logger = c.Resolve<ILogger<AuthService>>();
return new AuthService(dbContext, userService, jwtService, wechatService, ipLocationService, redisService, logger);
}).As<IAuthService>().InstancePerLifetimeScope();
// ========== 用户管理系统服务注册 ==========
// 注册资产服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var logger = c.Resolve<ILogger<AssetService>>();
return new AssetService(dbContext, logger);
}).As<IAssetService>().InstancePerLifetimeScope();
// 注册VIP服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var logger = c.Resolve<ILogger<VipService>>();
return new VipService(dbContext, logger);
}).As<IVipService>().InstancePerLifetimeScope();
// 注册优惠券服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var logger = c.Resolve<ILogger<CouponService>>();
return new CouponService(dbContext, logger);
}).As<ICouponService>().InstancePerLifetimeScope();
// 注册任务服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var logger = c.Resolve<ILogger<TaskService>>();
return new TaskService(dbContext, logger);
}).As<ITaskService>().InstancePerLifetimeScope();
// 注册推荐服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var logger = c.Resolve<ILogger<InvitationService>>();
return new InvitationService(dbContext, logger);
}).As<IInvitationService>().InstancePerLifetimeScope();
// 注册排行榜服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var logger = c.Resolve<ILogger<RankService>>();
return new RankService(dbContext, logger);
}).As<IRankService>().InstancePerLifetimeScope();
// 注册兑换码服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var logger = c.Resolve<ILogger<RedeemService>>();
return new RedeemService(dbContext, logger);
}).As<IRedeemService>().InstancePerLifetimeScope();
// 注册福利屋服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var logger = c.Resolve<ILogger<WelfareService>>();
return new WelfareService(dbContext, logger);
}).As<IWelfareService>().InstancePerLifetimeScope();
// ========== 商品系统服务注册 ==========
// 注册商品缓存服务
builder.Register(c =>
{
var redisService = c.Resolve<IRedisService>();
var logger = c.Resolve<ILogger<GoodsCacheService>>();
return new GoodsCacheService(redisService, logger);
}).As<IGoodsCacheService>().InstancePerLifetimeScope();
// 注册商品服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var cacheService = c.Resolve<IGoodsCacheService>();
var logger = c.Resolve<ILogger<GoodsService>>();
return new GoodsService(dbContext, cacheService, logger);
}).As<IGoodsService>().InstancePerLifetimeScope();
// 注册收藏服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var logger = c.Resolve<ILogger<CollectionService>>();
var redisService = c.Resolve<IRedisService>();
return new CollectionService(dbContext, logger, redisService);
}).As<ICollectionService>().InstancePerLifetimeScope();
// 注册奖品服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var logger = c.Resolve<ILogger<PrizeService>>();
return new PrizeService(dbContext, logger);
}).As<IPrizeService>().InstancePerLifetimeScope();
// ========== 订单系统服务注册 ==========
// 注册物流服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var httpClientFactory = c.Resolve<System.Net.Http.IHttpClientFactory>();
var logger = c.Resolve<ILogger<LogisticsService>>();
return new LogisticsService(dbContext, httpClientFactory.CreateClient(), logger);
}).As<ILogisticsService>().InstancePerLifetimeScope();
// 注册订单服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var logger = c.Resolve<ILogger<OrderService>>();
return new OrderService(dbContext, logger);
}).As<IOrderService>().InstancePerLifetimeScope();
// 注册仓库服务
builder.Register(c =>
{
var dbContext = c.Resolve<HoneyBoxDbContext>();
var logger = c.Resolve<ILogger<WarehouseService>>();
var logisticsService = c.Resolve<ILogisticsService>();
return new WarehouseService(dbContext, logger, logisticsService);
}).As<IWarehouseService>().InstancePerLifetimeScope();
}
}