SysConfigService.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. using Furion.DependencyInjection;
  2. using Furion.DynamicApiController;
  3. using Furion.FriendlyException;
  4. using Mapster;
  5. using Microsoft.AspNetCore.Mvc;
  6. using System.Collections.Generic;
  7. using System.Threading.Tasks;
  8. namespace Admin.NET.Core.Service
  9. {
  10. /// <summary>
  11. /// 系统参数配置服务
  12. /// </summary>
  13. [ApiDescriptionSettings(Name = "系统配置", Order = 193)]
  14. public class SysConfigService : IDynamicApiController, ITransient
  15. {
  16. private readonly SqlSugarRepository<SysConfig> _sysConfigRep;
  17. private readonly ISysCacheService _sysCacheService;
  18. public SysConfigService(SqlSugarRepository<SysConfig> sysConfigRep,
  19. ISysCacheService sysCacheService)
  20. {
  21. _sysConfigRep = sysConfigRep;
  22. _sysCacheService = sysCacheService;
  23. }
  24. /// <summary>
  25. /// 获取参数配置分页列表
  26. /// </summary>
  27. /// <param name="input"></param>
  28. /// <returns></returns>
  29. [HttpGet("/sysConfig/pageList")]
  30. public async Task<SqlSugarPagedList<SysConfig>> GetConfigPageList([FromQuery] PageConfigInput input)
  31. {
  32. return await _sysConfigRep.AsQueryable()
  33. .WhereIF(!string.IsNullOrWhiteSpace(input.Name?.Trim()), u => u.Name.Contains(input.Name))
  34. .WhereIF(!string.IsNullOrWhiteSpace(input.Code?.Trim()), u => u.Code.Contains(input.Code))
  35. .OrderBy(u => u.Order).ToPagedListAsync(input.Page, input.PageSize);
  36. }
  37. /// <summary>
  38. /// 获取参数配置列表
  39. /// </summary>
  40. /// <returns></returns>
  41. [HttpGet("/sysConfig/list")]
  42. public async Task<List<SysConfig>> GetConfigList()
  43. {
  44. return await _sysConfigRep.GetListAsync();
  45. }
  46. /// <summary>
  47. /// 增加参数配置
  48. /// </summary>
  49. /// <param name="input"></param>
  50. /// <returns></returns>
  51. [HttpPost("/sysConfig/add")]
  52. public async Task AddConfig(AddConfigInput input)
  53. {
  54. var isExist = await _sysConfigRep.IsAnyAsync(u => u.Name == input.Name || u.Code == input.Code);
  55. if (isExist)
  56. throw Oops.Oh(ErrorCodeEnum.D9000);
  57. var config = input.Adapt<SysConfig>();
  58. await _sysConfigRep.InsertAsync(config);
  59. }
  60. /// <summary>
  61. /// 更新参数配置
  62. /// </summary>
  63. /// <param name="input"></param>
  64. /// <returns></returns>
  65. [HttpPost("/sysConfig/update")]
  66. public async Task UpdateConfig(UpdateConfigInput input)
  67. {
  68. var isExist = await _sysConfigRep.IsAnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id);
  69. if (isExist)
  70. throw Oops.Oh(ErrorCodeEnum.D9000);
  71. var config = input.Adapt<SysConfig>();
  72. await _sysConfigRep.AsUpdateable(config).IgnoreColumns(true).ExecuteCommandAsync();
  73. await _sysCacheService.DelCacheKey(config.Code);
  74. }
  75. /// <summary>
  76. /// 获取参数配置详情
  77. /// </summary>
  78. /// <param name="input"></param>
  79. /// <returns></returns>
  80. [HttpGet("/sysConfig/detail")]
  81. public async Task<SysConfig> GetConfig([FromQuery] ConfigInput input)
  82. {
  83. return await _sysConfigRep.GetFirstAsync(u => u.Id == input.Id);
  84. }
  85. /// <summary>
  86. /// 删除参数配置
  87. /// </summary>
  88. /// <param name="input"></param>
  89. /// <returns></returns>
  90. [HttpPost("/sysConfig/delete")]
  91. public async Task DeleteConfig(DeleteConfigInput input)
  92. {
  93. var config = await _sysConfigRep.GetFirstAsync(u => u.Id == input.Id);
  94. if (config.SysFlag == YesNoEnum.Y) // 禁止删除系统参数
  95. throw Oops.Oh(ErrorCodeEnum.D9001);
  96. await _sysConfigRep.DeleteAsync(config);
  97. await _sysCacheService.DelCacheKey(config.Code);
  98. }
  99. /// <summary>
  100. /// 获取参数配置缓存
  101. /// </summary>
  102. /// <param name="code"></param>
  103. /// <returns></returns>
  104. public async Task<string> GetConfigCache(string code)
  105. {
  106. var value = await _sysCacheService.GetStringAsync(code);
  107. if (string.IsNullOrEmpty(value))
  108. {
  109. var config = await _sysConfigRep.GetFirstAsync(u => u.Code == code);
  110. value = config != null ? config.Value : "";
  111. await _sysCacheService.SetStringAsync(code, value);
  112. }
  113. return value;
  114. }
  115. }
  116. }