优化接口

This commit is contained in:
tongfei
2024-04-08 16:26:10 +08:00
parent 00df837c0e
commit ea7fc34ae1
6 changed files with 49 additions and 21 deletions

View File

@@ -23,6 +23,8 @@ using WMS.Web.Domain.Options;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using WMS.Web.Domain.Values; using WMS.Web.Domain.Values;
using WMS.Web.Core.Dto.Erp; using WMS.Web.Core.Dto.Erp;
using Microsoft.Extensions.Caching.Memory;
using System.Reflection;
namespace WMS.Web.Api.Controllers namespace WMS.Web.Api.Controllers
{ {
@@ -48,12 +50,14 @@ namespace WMS.Web.Api.Controllers
private readonly AppOptions _options; private readonly AppOptions _options;
private readonly ISendMessageService _sendMessageService; private readonly ISendMessageService _sendMessageService;
private readonly IMaterialService _materialService; private readonly IMaterialService _materialService;
private readonly IMemoryCache _memoryCache;
public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories, 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<AppOptions> options, ILoginService loginService, ISendMessageService sendMessageService, IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, IOptions<AppOptions> options, ILoginService loginService, ISendMessageService sendMessageService,
ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService, IInStockTaskRepositories inStockTaskRepositories, ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService, IInStockTaskRepositories inStockTaskRepositories,
IWebHostEnvironment env, IMaterialService materialService) IWebHostEnvironment env, IMaterialService materialService)
{ {
_memoryCache = memoryCache;
_materialService = materialService; _materialService = materialService;
_loginService = loginService; _loginService = loginService;
_sendMessageService = sendMessageService; _sendMessageService = sendMessageService;
@@ -354,5 +358,21 @@ namespace WMS.Web.Api.Controllers
{ {
return await _materialService.SyncNewMaterials(); return await _materialService.SyncNewMaterials();
} }
/// <summary>
/// 清空缓存
/// </summary>
/// <returns></returns>
[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();
}
} }
} }

View File

@@ -792,5 +792,11 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:WMS.Web.Api.Controllers.TestController.ClearCache">
<summary>
清空缓存
</summary>
<returns></returns>
</member>
</members> </members>
</doc> </doc>

View File

@@ -995,7 +995,7 @@
明细 明细
</summary> </summary>
</member> </member>
<member name="M:WMS.Web.Domain.Entitys.InStockTask.Create(WMS.Web.Domain.Values.InstockType,System.String,System.DateTime,System.Int32)"> <member name="M:WMS.Web.Domain.Entitys.InStockTask.Create(WMS.Web.Domain.Values.InstockType,System.String,System.DateTime,System.Int32,System.String)">
<summary> <summary>
创建 创建
</summary> </summary>

View File

@@ -95,7 +95,7 @@ namespace WMS.Web.Domain.Entitys
/// <param name="type"></param> /// <param name="type"></param>
/// <param name="sourceBillNo"></param> /// <param name="sourceBillNo"></param>
/// <param name="createTime"></param> /// <param name="createTime"></param>
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) if (type == InstockType.Purchase)
this.Status = InstockStatus.Wait; this.Status = InstockStatus.Wait;
@@ -104,6 +104,7 @@ namespace WMS.Web.Domain.Entitys
this.Type = type; this.Type = type;
this.SourceBillNo = sourceBillNo; this.SourceBillNo = sourceBillNo;
this.SupplierId = supplierId; this.SupplierId = supplierId;
this.OrgCode = orgCode;
this.CreateTime = createTime; this.CreateTime = createTime;
} }

View File

@@ -457,7 +457,7 @@ namespace WMS.Web.Domain.Services
{ {
var current_order = erp_list.Where(x => x.BillNo == item).FirstOrDefault(); var current_order = erp_list.Where(x => x.BillNo == item).FirstOrDefault();
var dto = new InStockTask(); 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(); 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 current_order = erp_list.Where(x => x.BillNo == item).FirstOrDefault();
var dto = new InStockTask(); 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(); var current_erp_details = erp_list.Where(x => x.BillNo == item).ToList();

View File

@@ -115,25 +115,26 @@ namespace WMS.Web.Repositories.DependencyInjection
} }
} }
//_logger.LogInformation("RefreshToken:我在刷新登录--过期时间:" + logininfo.TokenInfo.Expired.ToString()); DateTime now = DateTime.Now;
//2.判断缓存的token 过期时间 TimeSpan jiange_timespan = TimeSpan.Zero;
if (!string.IsNullOrEmpty(logininfo.TokenInfo.Token) && logininfo.TokenInfo.Expired.AddMinutes(-10) <= DateTime.Now) if (logininfo.TokenInfo.Expired < now)
{ {
jiange_timespan = now - logininfo.TokenInfo.Expired;
//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);
var info = _redisClientService.GetStringKey<LoginInDto>($"wms_login_{token}"); var info = _redisClientService.GetStringKey<LoginInDto>($"wms_login_{token}");
//_logger.LogInformation("RefreshToken:我在刷新登录--完成:" + info.UserInfo.Nickname); //超过16个小时的就要移除缓存
//刷新token后不能删除_redis用户缓存 if (info != null && jiange_timespan.TotalHours>=16)
//if (!refreshtokeninfo) {
//{ _redisClientService.RemoveStringKey($"wms_login_{token}");
// RemoveRedisLoginInfo(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缓存 //3.验证检查是否有黑名单的token缓存
string blacktoken = _redisClientService.GetStringKey($"wms_black_token_{logininfo.UserInfo.UcId}"); string blacktoken = _redisClientService.GetStringKey($"wms_black_token_{logininfo.UserInfo.UcId}");
if (string.IsNullOrEmpty(blacktoken)) if (string.IsNullOrEmpty(blacktoken))