UNIVPLMDataIntegration/Admin.NET/Admin.NET.Core/Service/ColumnCustom/SysColumnCustomService.cs
2025-07-08 15:06:09 +08:00

80 lines
3.8 KiB
C#

// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core.Service;
/// <summary>
/// 表格列配置服务 🧩
/// </summary>
/// <param name="rep"></param>
/// <param name="um"></param>
/// <param name="cache"></param>
[ApiDescriptionSettings(Order = 440, Description = "代码生成模板配置")]
public class SysColumnCustomService(SqlSugarRepository<SysColumnCustom> rep, UserManager um, SysCacheService cache) : IDynamicApiController, ITransient
{
/// <summary>
/// 获取用户表格列配置信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[SuppressMonitor]
[DisplayName("获取用户表格列配置信息")]
public async Task<ColumnCustomOutput> GetDetail([FromQuery] GetColumnCustomInput input)
{
var key = $"{CacheConst.KeyColumnCustom}{um.UserId}:{input.GridId}";
var result = cache.Get<ColumnCustomOutput>(key);
if (result is null)
{
var temp = await rep.GetFirstAsync(e => e.UserId == um.UserId && e.GridId == input.GridId);
if (temp != null)
{
result = new ColumnCustomOutput
{
UserId = temp.UserId,
GridId = temp.GridId,
FixedData = string.IsNullOrEmpty(temp.FixedData) ? null : JSON.Deserialize<Dictionary<string, string>>(temp.FixedData),
ResizableData = string.IsNullOrEmpty(temp.ResizableData) ? null : JSON.Deserialize<Dictionary<string, int>>(temp.ResizableData),
SortData = string.IsNullOrEmpty(temp.SortData) ? null : JSON.Deserialize<Dictionary<string, int>>(temp.SortData),
VisibleData = string.IsNullOrEmpty(temp.VisibleData) ? null : JSON.Deserialize<Dictionary<string, bool>>(temp.VisibleData),
};
cache.Set(key, result, TimeSpan.FromDays(7));
}
}
return result;
}
/// <summary>
/// 保存用户表格列配置信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
[DisplayName("保存用户表格列配置信息")]
public async Task Store(StoreColumnCustomInput input)
{
var temp = await rep.GetFirstAsync(e => e.UserId == um.UserId && e.GridId == input.GridId);
if (temp is null) temp = new SysColumnCustom { UserId = um.UserId, GridId = input.GridId };
else cache.Remove($"{CacheConst.KeyColumnCustom}{um.UserId}:{input.GridId}"); //移除缓存
temp.FixedData = JSON.Serialize(input.FixedData);
temp.ResizableData = JSON.Serialize(input.ResizableData);
temp.SortData = JSON.Serialize(input.SortData);
temp.VisibleData = JSON.Serialize(input.VisibleData);
await rep.Context.Storageable(temp).ExecuteCommandAsync();
}
/// <summary>
/// 清除用户表格列配置信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
[DisplayName("清除用户表格列配置信息")]
public async Task Reset(ResetColumnCustomInput input)
{
await rep.AsDeleteable().Where(e => e.UserId == um.UserId && e.GridId == input.GridId).ExecuteCommandAsync();
cache.Remove($"{CacheConst.KeyColumnCustom}{um.UserId}:{input.GridId}"); //移除缓存
}
}