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; /// /// 服务注册模块 - 用于注册业务服务 /// public class ServiceModule : Module { protected override void Load(ContainerBuilder builder) { // 注册 JWT 服务 builder.RegisterType().As().InstancePerLifetimeScope(); // 注册用户服务 builder.RegisterType().As().InstancePerLifetimeScope(); // 注册微信服务 builder.Register(c => { var httpClientFactory = c.Resolve(); var logger = c.Resolve>(); var wechatSettings = c.Resolve(); return new WechatService(httpClientFactory.CreateClient(), logger, wechatSettings); }).As().InstancePerLifetimeScope(); // 注册 IP 地理位置服务 builder.Register(c => { var httpClientFactory = c.Resolve(); var logger = c.Resolve>(); var amapSettings = c.Resolve(); return new IpLocationService(httpClientFactory.CreateClient(), logger, amapSettings); }).As().InstancePerLifetimeScope(); // 注册认证服务 builder.Register(c => { var dbContext = c.Resolve(); var userService = c.Resolve(); var jwtService = c.Resolve(); var wechatService = c.Resolve(); var ipLocationService = c.Resolve(); var redisService = c.Resolve(); var logger = c.Resolve>(); return new AuthService(dbContext, userService, jwtService, wechatService, ipLocationService, redisService, logger); }).As().InstancePerLifetimeScope(); // ========== 用户管理系统服务注册 ========== // 注册资产服务 builder.Register(c => { var dbContext = c.Resolve(); var logger = c.Resolve>(); return new AssetService(dbContext, logger); }).As().InstancePerLifetimeScope(); // 注册VIP服务 builder.Register(c => { var dbContext = c.Resolve(); var logger = c.Resolve>(); return new VipService(dbContext, logger); }).As().InstancePerLifetimeScope(); // 注册优惠券服务 builder.Register(c => { var dbContext = c.Resolve(); var logger = c.Resolve>(); return new CouponService(dbContext, logger); }).As().InstancePerLifetimeScope(); // 注册任务服务 builder.Register(c => { var dbContext = c.Resolve(); var logger = c.Resolve>(); return new TaskService(dbContext, logger); }).As().InstancePerLifetimeScope(); // 注册推荐服务 builder.Register(c => { var dbContext = c.Resolve(); var logger = c.Resolve>(); return new InvitationService(dbContext, logger); }).As().InstancePerLifetimeScope(); // 注册排行榜服务 builder.Register(c => { var dbContext = c.Resolve(); var logger = c.Resolve>(); return new RankService(dbContext, logger); }).As().InstancePerLifetimeScope(); // 注册兑换码服务 builder.Register(c => { var dbContext = c.Resolve(); var logger = c.Resolve>(); return new RedeemService(dbContext, logger); }).As().InstancePerLifetimeScope(); // 注册福利屋服务 builder.Register(c => { var dbContext = c.Resolve(); var logger = c.Resolve>(); return new WelfareService(dbContext, logger); }).As().InstancePerLifetimeScope(); // ========== 商品系统服务注册 ========== // 注册商品缓存服务 builder.Register(c => { var redisService = c.Resolve(); var logger = c.Resolve>(); return new GoodsCacheService(redisService, logger); }).As().InstancePerLifetimeScope(); // 注册商品服务 builder.Register(c => { var dbContext = c.Resolve(); var cacheService = c.Resolve(); var logger = c.Resolve>(); return new GoodsService(dbContext, cacheService, logger); }).As().InstancePerLifetimeScope(); // 注册收藏服务 builder.Register(c => { var dbContext = c.Resolve(); var logger = c.Resolve>(); var redisService = c.Resolve(); return new CollectionService(dbContext, logger, redisService); }).As().InstancePerLifetimeScope(); // 注册奖品服务 builder.Register(c => { var dbContext = c.Resolve(); var logger = c.Resolve>(); return new PrizeService(dbContext, logger); }).As().InstancePerLifetimeScope(); // ========== 订单系统服务注册 ========== // 注册物流服务 builder.Register(c => { var dbContext = c.Resolve(); var httpClientFactory = c.Resolve(); var logger = c.Resolve>(); return new LogisticsService(dbContext, httpClientFactory.CreateClient(), logger); }).As().InstancePerLifetimeScope(); // 注册订单服务 builder.Register(c => { var dbContext = c.Resolve(); var logger = c.Resolve>(); return new OrderService(dbContext, logger); }).As().InstancePerLifetimeScope(); // 注册仓库服务 builder.Register(c => { var dbContext = c.Resolve(); var logger = c.Resolve>(); var logisticsService = c.Resolve(); return new WarehouseService(dbContext, logger, logisticsService); }).As().InstancePerLifetimeScope(); } }