From ea7fc34ae13e123d61caa5eccf25d690aa47043c Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Mon, 8 Apr 2024 16:26:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/Controllers/TestController.cs | 22 ++++++++++++- src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 6 ++++ src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 2 +- src/WMS.Web.Domain/Entitys/InstockTask.cs | 3 +- .../Services/InStockTaskService.cs | 4 +-- .../AuthorizationTokenSecurityPolicy.cs | 33 ++++++++++--------- 6 files changed, 49 insertions(+), 21 deletions(-) diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index f9830953..c92e9532 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -23,6 +23,8 @@ using WMS.Web.Domain.Options; using Microsoft.Extensions.Options; using WMS.Web.Domain.Values; using WMS.Web.Core.Dto.Erp; +using Microsoft.Extensions.Caching.Memory; +using System.Reflection; namespace WMS.Web.Api.Controllers { @@ -48,12 +50,14 @@ namespace WMS.Web.Api.Controllers private readonly AppOptions _options; private readonly ISendMessageService _sendMessageService; private readonly IMaterialService _materialService; + private readonly IMemoryCache _memoryCache; public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories, - IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, IBasicsRepositories basicsRepositories, + IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, IBasicsRepositories basicsRepositories, IMemoryCache memoryCache, IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, IOptions options, ILoginService loginService, ISendMessageService sendMessageService, ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService, IInStockTaskRepositories inStockTaskRepositories, IWebHostEnvironment env, IMaterialService materialService) { + _memoryCache = memoryCache; _materialService = materialService; _loginService = loginService; _sendMessageService = sendMessageService; @@ -354,5 +358,21 @@ namespace WMS.Web.Api.Controllers { return await _materialService.SyncNewMaterials(); } + + /// + /// 清空缓存 + /// + /// + [HttpGet] + [Route("ClearCache")] + public Result ClearCache() + { + //通过反射调用清空缓存方法 + PropertyInfo prop = _memoryCache.GetType().GetProperty("EntriesCollection", BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.NonPublic | BindingFlags.Public); + object innerCache = prop.GetValue(_memoryCache); + MethodInfo clearMethod = innerCache.GetType().GetMethod("Clear", BindingFlags.Instance | BindingFlags.Public); + clearMethod.Invoke(innerCache, null); + return Result.ReSuccess(); + } } } diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index e7baa55d..7ce83fac 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -792,5 +792,11 @@ + + + 清空缓存 + + + diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 7a291d13..30046a31 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -995,7 +995,7 @@ 明细 - + 创建 diff --git a/src/WMS.Web.Domain/Entitys/InstockTask.cs b/src/WMS.Web.Domain/Entitys/InstockTask.cs index 09daa7a7..5cf95dd4 100644 --- a/src/WMS.Web.Domain/Entitys/InstockTask.cs +++ b/src/WMS.Web.Domain/Entitys/InstockTask.cs @@ -95,7 +95,7 @@ namespace WMS.Web.Domain.Entitys /// /// /// - public void Create(InstockType type,string sourceBillNo, DateTime createTime,int supplierId) + public void Create(InstockType type,string sourceBillNo, DateTime createTime,int supplierId,string orgCode) { if (type == InstockType.Purchase) this.Status = InstockStatus.Wait; @@ -104,6 +104,7 @@ namespace WMS.Web.Domain.Entitys this.Type = type; this.SourceBillNo = sourceBillNo; this.SupplierId = supplierId; + this.OrgCode = orgCode; this.CreateTime = createTime; } diff --git a/src/WMS.Web.Domain/Services/InStockTaskService.cs b/src/WMS.Web.Domain/Services/InStockTaskService.cs index 2b846da3..facc199e 100644 --- a/src/WMS.Web.Domain/Services/InStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/InStockTaskService.cs @@ -457,7 +457,7 @@ namespace WMS.Web.Domain.Services { var current_order = erp_list.Where(x => x.BillNo == item).FirstOrDefault(); var dto = new InStockTask(); - dto.Create((InstockType)current_order.Type, current_order.BillNo, current_order.CreateTime, current_order.SupplierId); + dto.Create((InstockType)current_order.Type, current_order.BillNo, current_order.CreateTime, current_order.SupplierId, current_order.OrgCode); //找到当前对应来源单据编号的集合数据 var current_erp_details = erp_list.Where(x => x.BillNo == item).ToList(); @@ -609,7 +609,7 @@ namespace WMS.Web.Domain.Services { var current_order = erp_list.Where(x => x.BillNo == item).FirstOrDefault(); var dto = new InStockTask(); - dto.Create((InstockType)current_order.Type, current_order.BillNo, current_order.CreateTime, current_order.SupplierId); + dto.Create((InstockType)current_order.Type, current_order.BillNo, current_order.CreateTime, current_order.SupplierId, current_order.OrgCode); //找到当前对应来源单据编号的集合数据 var current_erp_details = erp_list.Where(x => x.BillNo == item).ToList(); diff --git a/src/WMS.Web.Repositories/DependencyInjection/AuthorizationTokenSecurityPolicy.cs b/src/WMS.Web.Repositories/DependencyInjection/AuthorizationTokenSecurityPolicy.cs index 37aefaee..2cd17ee4 100644 --- a/src/WMS.Web.Repositories/DependencyInjection/AuthorizationTokenSecurityPolicy.cs +++ b/src/WMS.Web.Repositories/DependencyInjection/AuthorizationTokenSecurityPolicy.cs @@ -115,25 +115,26 @@ namespace WMS.Web.Repositories.DependencyInjection } } - //_logger.LogInformation("RefreshToken:我在刷新登录--过期时间:" + logininfo.TokenInfo.Expired.ToString()); - //2.判断缓存的token 过期时间 - if (!string.IsNullOrEmpty(logininfo.TokenInfo.Token) && logininfo.TokenInfo.Expired.AddMinutes(-10) <= DateTime.Now) + DateTime now = DateTime.Now; + TimeSpan jiange_timespan = TimeSpan.Zero; + if (logininfo.TokenInfo.Expired < now) { - - //TimeSpan _refreshThreshold = TimeSpan.FromMinutes(10); - //var ttt = logininfo.TokenInfo.Expired - DateTime.Now - _refreshThreshold; - //_logger.LogInformation("用户:" + logininfo.UserInfo.Nickname + ";shijianduibi:" + ttt); - - //_logger.LogInformation("用户:" + logininfo.UserInfo.Nickname + ";过期时间:" + logininfo.TokenInfo.Expired); - var refreshtokeninfo = RefreshToken(logininfo.TokenInfo.Token, logininfo.TokenInfo.RefreshToken, loginService); + jiange_timespan = now - logininfo.TokenInfo.Expired; var info = _redisClientService.GetStringKey($"wms_login_{token}"); - //_logger.LogInformation("RefreshToken:我在刷新登录--完成:" + info.UserInfo.Nickname); - //刷新token后不能删除_redis用户缓存 - //if (!refreshtokeninfo) - //{ - // RemoveRedisLoginInfo(token); - //} + //超过16个小时的,就要移除缓存 + if (info != null && jiange_timespan.TotalHours>=16) + { + _redisClientService.RemoveStringKey($"wms_login_{token}"); + } } + else + { + //刷新token:距离过期时间还有10分钟就进行刷新token + jiange_timespan = logininfo.TokenInfo.Expired - now; + if (!string.IsNullOrEmpty(logininfo.TokenInfo.Token) && jiange_timespan.TotalMinutes<=10) + this.RefreshToken(logininfo.TokenInfo.Token, logininfo.TokenInfo.RefreshToken, loginService); + } + //3.验证检查是否有黑名单的token缓存 string blacktoken = _redisClientService.GetStringKey($"wms_black_token_{logininfo.UserInfo.UcId}"); if (string.IsNullOrEmpty(blacktoken))