从缓存读取数据连接和用户名称
This commit is contained in:
@@ -13,6 +13,7 @@ using JNPF.Systems.Entitys.System;
|
|||||||
using JNPF.Systems.Interfaces.System;
|
using JNPF.Systems.Interfaces.System;
|
||||||
using Mapster;
|
using Mapster;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
|
||||||
namespace JNPF.Systems;
|
namespace JNPF.Systems;
|
||||||
@@ -42,17 +43,21 @@ public class DbLinkService : IDbLinkService, IDynamicApiController, ITransient
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly IDataBaseManager _dataBaseManager;
|
private readonly IDataBaseManager _dataBaseManager;
|
||||||
|
|
||||||
|
private readonly IMemoryCache _memCache;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 初始化一个<see cref="DbLinkService"/>类型的新实例.
|
/// 初始化一个<see cref="DbLinkService"/>类型的新实例.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DbLinkService(
|
public DbLinkService(
|
||||||
ISqlSugarRepository<DbLinkEntity> repository,
|
ISqlSugarRepository<DbLinkEntity> repository,
|
||||||
IDictionaryDataService dictionaryDataService,
|
IDictionaryDataService dictionaryDataService,
|
||||||
IDataBaseManager dataBaseManager)
|
IDataBaseManager dataBaseManager,
|
||||||
|
IMemoryCache memCache)
|
||||||
{
|
{
|
||||||
_repository = repository;
|
_repository = repository;
|
||||||
_dictionaryDataService = dictionaryDataService;
|
_dictionaryDataService = dictionaryDataService;
|
||||||
_dataBaseManager = dataBaseManager;
|
_dataBaseManager = dataBaseManager;
|
||||||
|
_memCache = memCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region GET
|
#region GET
|
||||||
@@ -313,7 +318,13 @@ public class DbLinkService : IDbLinkService, IDynamicApiController, ITransient
|
|||||||
[NonAction]
|
[NonAction]
|
||||||
public async Task<DbLinkEntity> GetInfo(string id)
|
public async Task<DbLinkEntity> GetInfo(string id)
|
||||||
{
|
{
|
||||||
|
var model = await _memCache.GetOrCreateAsync($"DbLink_{id}", async entry =>
|
||||||
|
{
|
||||||
|
//entry.AbsoluteExpiration = DateTime.Now.AddMinutes(60);
|
||||||
|
entry.SlidingExpiration = TimeSpan.FromSeconds(60);
|
||||||
return await _repository.GetFirstAsync(m => m.Id == id && m.DeleteMark == null);
|
return await _repository.GetFirstAsync(m => m.Id == id && m.DeleteMark == null);
|
||||||
|
});
|
||||||
|
return model;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -22,6 +22,7 @@ using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
|
|||||||
using JNPF.VisualDev.Interfaces;
|
using JNPF.VisualDev.Interfaces;
|
||||||
using JNPF.WorkFlow.Entitys.Entity;
|
using JNPF.WorkFlow.Entitys.Entity;
|
||||||
using Mapster;
|
using Mapster;
|
||||||
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
|
||||||
@@ -54,6 +55,11 @@ public class FormDataParsing : ITransient
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly ICacheManager _cacheManager;
|
private readonly ICacheManager _cacheManager;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 缓存管理.
|
||||||
|
/// </summary>
|
||||||
|
private readonly IMemoryCache _memCache;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 服务基础仓储.
|
/// 服务基础仓储.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -72,13 +78,15 @@ public class FormDataParsing : ITransient
|
|||||||
ICacheManager cacheManager,
|
ICacheManager cacheManager,
|
||||||
IDataBaseManager databaseService,
|
IDataBaseManager databaseService,
|
||||||
IDataInterfaceService dataInterfaceService,
|
IDataInterfaceService dataInterfaceService,
|
||||||
ISqlSugarRepository<VisualDevEntity> context)
|
ISqlSugarRepository<VisualDevEntity> context,
|
||||||
|
IMemoryCache memCache)
|
||||||
{
|
{
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
_cacheManager = cacheManager;
|
_cacheManager = cacheManager;
|
||||||
_databaseService = databaseService;
|
_databaseService = databaseService;
|
||||||
_dataInterfaceService = dataInterfaceService;
|
_dataInterfaceService = dataInterfaceService;
|
||||||
_db = context;
|
_db = context;
|
||||||
|
_memCache = memCache;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -1707,18 +1715,30 @@ public class FormDataParsing : ITransient
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case JnpfKeyConst.CURRDEPT:
|
case JnpfKeyConst.CURRDEPT:
|
||||||
dataMap[key] = (await _db.AsSugarClient().Queryable<OrganizeEntity>().FirstAsync(x => x.Id == dataValue.ToString()))?.FullName;
|
dataMap[key] = await _memCache.GetOrCreateAsync($"organizeId_{dataValue}", async entry =>
|
||||||
|
{
|
||||||
|
entry.SlidingExpiration = TimeSpan.FromSeconds(60);
|
||||||
|
return (await _db.AsSugarClient().Queryable<OrganizeEntity>().FirstAsync(x => x.Id == dataValue.ToString()))?.FullName;
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
case JnpfKeyConst.MODIFYUSER:
|
case JnpfKeyConst.MODIFYUSER:
|
||||||
case JnpfKeyConst.CREATEUSER:
|
case JnpfKeyConst.CREATEUSER:
|
||||||
dataMap[key] = await _db.AsSugarClient().Queryable<UserEntity>().Where(x => x.Id == dataValue.ToString()).Select(x => SqlFunc.MergeString(x.RealName, "/", x.Account)).FirstAsync();
|
dataMap[key] = await _memCache.GetOrCreateAsync($"userId_{dataValue}", async entry =>
|
||||||
|
{
|
||||||
|
entry.SlidingExpiration = TimeSpan.FromSeconds(60);
|
||||||
|
return await _db.AsSugarClient().Queryable<UserEntity>().Where(x => x.Id == dataValue.ToString()).Select(x => SqlFunc.MergeString(x.RealName, "/", x.Account)).FirstAsync();
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
case JnpfKeyConst.MODIFYTIME:
|
case JnpfKeyConst.MODIFYTIME:
|
||||||
case JnpfKeyConst.CREATETIME:
|
case JnpfKeyConst.CREATETIME:
|
||||||
dataMap[key] = string.Format("{0:yyyy-MM-dd HH:mm:ss}", dataMap[key].ToString().ParseToDateTime());
|
dataMap[key] = string.Format("{0:yyyy-MM-dd HH:mm:ss}", dataMap[key].ToString().ParseToDateTime());
|
||||||
break;
|
break;
|
||||||
case JnpfKeyConst.CURRPOSITION:
|
case JnpfKeyConst.CURRPOSITION:
|
||||||
dataMap[key] = (await _db.AsSugarClient().Queryable<PositionEntity>().FirstAsync(x => x.Id == dataValue.ToString()))?.FullName;
|
dataMap[key] = await _memCache.GetOrCreateAsync($"positionId_{dataValue}", async entry =>
|
||||||
|
{
|
||||||
|
entry.SlidingExpiration = TimeSpan.FromSeconds(60);
|
||||||
|
return (await _db.AsSugarClient().Queryable<PositionEntity>().FirstAsync(x => x.Id == dataValue.ToString()))?.FullName;
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
case JnpfKeyConst.POPUPTABLESELECT:
|
case JnpfKeyConst.POPUPTABLESELECT:
|
||||||
case JnpfKeyConst.POPUPSELECT:
|
case JnpfKeyConst.POPUPSELECT:
|
||||||
|
|||||||
@@ -205,6 +205,7 @@ public class RunService : IRunService, ITransient
|
|||||||
{
|
{
|
||||||
if (templateInfo.SingleFormData.Any(x => x.__config__.templateJson != null && x.__config__.templateJson.Any()))
|
if (templateInfo.SingleFormData.Any(x => x.__config__.templateJson != null && x.__config__.templateJson.Any()))
|
||||||
realList.list = await _formDataParsing.GetKeyData(templateInfo.SingleFormData.Where(x => x.__config__.templateJson != null && x.__config__.templateJson.Any()).ToList(), realList.list, templateInfo.ColumnData, actionType, templateInfo.WebType, primaryKey);
|
realList.list = await _formDataParsing.GetKeyData(templateInfo.SingleFormData.Where(x => x.__config__.templateJson != null && x.__config__.templateJson.Any()).ToList(), realList.list, templateInfo.ColumnData, actionType, templateInfo.WebType, primaryKey);
|
||||||
|
else
|
||||||
realList.list = await _formDataParsing.GetKeyData(templateInfo.SingleFormData.Where(x => x.__config__.templateJson == null).ToList(), realList.list, templateInfo.ColumnData, actionType, templateInfo.WebType, primaryKey);
|
realList.list = await _formDataParsing.GetKeyData(templateInfo.SingleFormData.Where(x => x.__config__.templateJson == null).ToList(), realList.list, templateInfo.ColumnData, actionType, templateInfo.WebType, primaryKey);
|
||||||
|
|
||||||
// 如果是无表数据并且排序字段不为空,再进行数据排序
|
// 如果是无表数据并且排序字段不为空,再进行数据排序
|
||||||
|
|||||||
Reference in New Issue
Block a user