优化接口
This commit is contained in:
@@ -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<AppOptions> 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();
|
||||
}
|
||||
|
||||
/// <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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -792,5 +792,11 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Api.Controllers.TestController.ClearCache">
|
||||
<summary>
|
||||
清空缓存
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
|
||||
@@ -995,7 +995,7 @@
|
||||
明细
|
||||
</summary>
|
||||
</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>
|
||||
|
||||
@@ -95,7 +95,7 @@ namespace WMS.Web.Domain.Entitys
|
||||
/// <param name="type"></param>
|
||||
/// <param name="sourceBillNo"></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)
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<LoginInDto>($"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))
|
||||
|
||||
Reference in New Issue
Block a user