| | |
| | | using Swashbuckle.AspNetCore.SwaggerGen; |
| | | using Microsoft.OpenApi.Models; |
| | | using WIDESEA_StorageTaskServices; |
| | | using Autofac.Core; |
| | | using WIDESEA_Cache; |
| | | using SimpleRedis; |
| | | using WIDESEA_DTO.WMS; |
| | | using static NewLife.Remoting.ApiHttpClient; |
| | | using NewLife.Windows; |
| | | using WIDESEA_Core.Enums; |
| | | |
| | | var builder = WebApplication.CreateBuilder(args); |
| | | |
| | |
| | | |
| | | builder.Services.AddHostedService<MyBackgroundService>(); |
| | | |
| | | //缓存设置配置转实体 |
| | | builder.Services.AddConfigurableOptions<CacheSettingsOptions>(); |
| | | //禁止在主机启动时通过 App.GetOptions<TOptions> 获取选项,如需获取配置选项理应通过 App.GetConfig<TOptions>("配置节点", true)。 |
| | | var cacheSettings = AppSettings.Configuration.GetSection("CacheSettings").Get<CacheSettingsOptions>(); |
| | | //如果有redis连接字符串 |
| | | if (cacheSettings.UseRedis) |
| | | { |
| | | var connectionString = |
| | | $"server={cacheSettings.RedisSettings.Address};db={cacheSettings.RedisSettings.Db}"; |
| | | //注入redis |
| | | builder.Services.AddSimpleRedis(connectionString); |
| | | builder.Services.AddScoped<ISimpleCacheService, RedisCacheService>(); |
| | | } |
| | | else |
| | | { |
| | | builder.Services.AddScoped<ISimpleCacheService, MemoryCacheService>(); |
| | | } |
| | | |
| | | |
| | | var app = builder.Build(); |
| | | |
| | | // 验证 Redis 服务是否成功注册 |
| | | using (var scope = app.Services.CreateScope()) |
| | | { |
| | | var services = scope.ServiceProvider; |
| | | var redisService = services.GetService<ISimpleCacheService>(); |
| | | if (redisService == null) |
| | | { |
| | | WIDESEA_Core.Helper.ConsoleHelper.WriteErrorLine("Redis 服务未成功注册"); |
| | | } |
| | | else |
| | | { |
| | | WIDESEA_Core.Helper.ConsoleHelper.WriteSuccessLine("Redis 服务已成功注册"); |
| | | } |
| | | } |
| | | |
| | | // 3、配置中间件 |
| | | app.UseMiniProfiler();//性能分析器 |
| | |
| | | |
| | | app.MapControllers(); |
| | | |
| | | //通过 App.GetOptions<TOptions> 获取选项 |
| | | var cacheSettingsb = App.GetOptions<CacheSettingsOptions>(); |
| | | //如果需要清除缓存 |
| | | if (cacheSettingsb.UseRedis && cacheSettingsb.RedisSettings.ClearRedis) |
| | | { |
| | | var redis = app.Services.CreateScope().ServiceProvider.GetService<ISimpleCacheService>(); //获取redis服务 |
| | | // 删除redis的key |
| | | redis.DelByPattern(CacheConst.Cache_Prefix); |
| | | |
| | | WIDESEA_Core.Helper.ConsoleHelper.WriteInfoLine("正在缓存库存信息"); |
| | | var stockInfoList = await SqlSugarHelper.DbWMS.Queryable<DtStockInfo>() |
| | | .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).IncludesAllFirstLayer().ToListAsync(); |
| | | // 缓存库存信息 |
| | | foreach (var item in stockInfoList) |
| | | { |
| | | item.StockInfoDetails = new List<DtStockInfoDetail>() { { item.StockInfoDetails[0] } }; |
| | | redis.HashAdd(CacheConst.Cache_DtStockInfo, item.PalletCode, item); |
| | | } |
| | | WIDESEA_Core.Helper.ConsoleHelper.WriteInfoLine("缓存库存信息完成"); |
| | | } |
| | | |
| | | app.Run(); |
| | | |