|
|
@@ -13,11 +13,13 @@ namespace Admin.NET.Core.Service;
|
|
|
[AllowAnonymous]
|
|
|
public class SysDictDataService : IDynamicApiController, ITransient
|
|
|
{
|
|
|
+ private readonly SysCacheService _sysCacheService;
|
|
|
private readonly SqlSugarRepository<SysDictData> _sysDictDataRep;
|
|
|
|
|
|
- public SysDictDataService(SqlSugarRepository<SysDictData> sysDictDataRep)
|
|
|
+ public SysDictDataService(SqlSugarRepository<SysDictData> sysDictDataRep, SysCacheService sysCacheService)
|
|
|
{
|
|
|
_sysDictDataRep = sysDictDataRep;
|
|
|
+ _sysCacheService = sysCacheService;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -40,6 +42,7 @@ public class SysDictDataService : IDynamicApiController, ITransient
|
|
|
/// 获取字典值列表 🔖
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
+ [UnitOfWork]
|
|
|
[DisplayName("获取字典值列表")]
|
|
|
public async Task<List<SysDictData>> GetList([FromQuery] GetDataDictDataInput input)
|
|
|
{
|
|
|
@@ -67,6 +70,7 @@ public class SysDictDataService : IDynamicApiController, ITransient
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
+ [UnitOfWork]
|
|
|
[ApiDescriptionSettings(Name = "Update"), HttpPost]
|
|
|
[DisplayName("更新字典值")]
|
|
|
public async Task UpdateDictData(UpdateDictDataInput input)
|
|
|
@@ -77,6 +81,9 @@ public class SysDictDataService : IDynamicApiController, ITransient
|
|
|
isExist = await _sysDictDataRep.IsAnyAsync(u => u.Code == input.Code && u.DictTypeId == input.DictTypeId && u.Id != input.Id);
|
|
|
if (isExist) throw Oops.Oh(ErrorCodeEnum.D3003);
|
|
|
|
|
|
+ var dictTypeCode = await _sysDictDataRep.AsQueryable().Where(u => u.DictTypeId == input.DictTypeId).Select(u => u.DictType.Code).FirstAsync();
|
|
|
+ _sysCacheService.Remove($"{CacheConst.KeyDict}{dictTypeCode}");
|
|
|
+
|
|
|
await _sysDictDataRep.UpdateAsync(input.Adapt<SysDictData>());
|
|
|
}
|
|
|
|
|
|
@@ -85,6 +92,7 @@ public class SysDictDataService : IDynamicApiController, ITransient
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
+ [UnitOfWork]
|
|
|
[ApiDescriptionSettings(Name = "Delete"), HttpPost]
|
|
|
[DisplayName("删除字典值")]
|
|
|
public async Task DeleteDictData(DeleteDictDataInput input)
|
|
|
@@ -93,6 +101,9 @@ public class SysDictDataService : IDynamicApiController, ITransient
|
|
|
if (dictData == null)
|
|
|
throw Oops.Oh(ErrorCodeEnum.D3004);
|
|
|
|
|
|
+ var dictTypeCode = await _sysDictDataRep.AsQueryable().Where(u => u.DictTypeId == dictData.Id).Select(u => u.DictType.Code).FirstAsync();
|
|
|
+ _sysCacheService.Remove($"{CacheConst.KeyDict}{dictTypeCode}");
|
|
|
+
|
|
|
await _sysDictDataRep.DeleteAsync(dictData);
|
|
|
}
|
|
|
|
|
|
@@ -112,6 +123,7 @@ public class SysDictDataService : IDynamicApiController, ITransient
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
+ [UnitOfWork]
|
|
|
[DisplayName("修改字典值状态")]
|
|
|
public async Task SetStatus(DictDataInput input)
|
|
|
{
|
|
|
@@ -122,6 +134,9 @@ public class SysDictDataService : IDynamicApiController, ITransient
|
|
|
if (!Enum.IsDefined(typeof(StatusEnum), input.Status))
|
|
|
throw Oops.Oh(ErrorCodeEnum.D3005);
|
|
|
|
|
|
+ var dictTypeCode = await _sysDictDataRep.AsQueryable().Where(u => u.DictTypeId == dictData.Id).Select(u => u.DictType.Code).FirstAsync();
|
|
|
+ _sysCacheService.Remove($"{CacheConst.KeyDict}{dictTypeCode}");
|
|
|
+
|
|
|
dictData.Status = input.Status;
|
|
|
await _sysDictDataRep.UpdateAsync(dictData);
|
|
|
}
|
|
|
@@ -134,10 +149,20 @@ public class SysDictDataService : IDynamicApiController, ITransient
|
|
|
[NonAction]
|
|
|
public async Task<List<SysDictData>> GetDictDataListByDictTypeId(long dictTypeId)
|
|
|
{
|
|
|
- return await _sysDictDataRep.AsQueryable()
|
|
|
- .Where(u => u.DictTypeId == dictTypeId)
|
|
|
- .OrderBy(u => new { u.OrderNo, u.Code })
|
|
|
- .ToListAsync();
|
|
|
+ var dictType = await _sysDictDataRep.GetByIdAsync(dictTypeId);
|
|
|
+ var dictDataList = _sysCacheService.Get<List<SysDictData>>($"{CacheConst.KeyDict}{dictTypeId}");
|
|
|
+
|
|
|
+ if (dictDataList == null)
|
|
|
+ {
|
|
|
+ dictDataList = await _sysDictDataRep.AsQueryable()
|
|
|
+ .Where(u => u.DictTypeId == dictTypeId)
|
|
|
+ .OrderBy(u => new { u.OrderNo, u.Code })
|
|
|
+ .ToListAsync();
|
|
|
+
|
|
|
+ _sysCacheService.Set($"{CacheConst.KeyDict}{dictType.Code}", dictDataList);
|
|
|
+ }
|
|
|
+
|
|
|
+ return dictDataList;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -179,6 +204,9 @@ public class SysDictDataService : IDynamicApiController, ITransient
|
|
|
[NonAction]
|
|
|
public async Task DeleteDictData(long dictTypeId)
|
|
|
{
|
|
|
+ var dictTypeCode = await _sysDictDataRep.AsQueryable().Where(u => u.DictTypeId == dictTypeId).Select(u => u.DictType.Code).FirstAsync();
|
|
|
+ _sysCacheService.Remove($"{CacheConst.KeyDict}{dictTypeCode}");
|
|
|
+
|
|
|
await _sysDictDataRep.DeleteAsync(u => u.DictTypeId == dictTypeId);
|
|
|
}
|
|
|
}
|