SysConfigService.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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. private 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. ///// <summary>
  116. ///// 更新参数配置缓存
  117. ///// </summary>
  118. ///// <param name="code"></param>
  119. ///// <param name="value"></param>
  120. ///// <returns></returns>
  121. //private async Task UpdateConfigCache(string code, string value)
  122. //{
  123. // await _sysCacheService.SetStringAsync(code, value);
  124. //}
  125. /// <summary>
  126. /// 获取演示环境开关配置
  127. /// </summary>
  128. /// <returns></returns>
  129. [NonAction]
  130. public async Task<bool> GetDemoEnvFlag()
  131. {
  132. var value = await GetConfigCache(CommonConst.SysDemoEnv);
  133. return bool.Parse(value);
  134. }
  135. /// <summary>
  136. /// 获取验证码开关配置
  137. /// </summary>
  138. /// <returns></returns>
  139. [NonAction]
  140. public async Task<bool> GetCaptchaOpenFlag()
  141. {
  142. var value = await GetConfigCache(CommonConst.SysCaptchaFlag);
  143. return bool.Parse(value);
  144. }
  145. }
  146. }