优化接口

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 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();
}
}
}

View File

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

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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();

View File

@@ -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))