SettingController.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. using Hotline.Caching.Interfaces;
  2. using Hotline.Caching.Services;
  3. using Hotline.CallCenter.Manage;
  4. using Hotline.Permissions;
  5. using Hotline.Repository.SqlSugar.Extensions;
  6. using Hotline.Settings;
  7. using Hotline.Settings.TimeLimits;
  8. using Hotline.Share.Dtos;
  9. using Hotline.Share.Dtos.Order;
  10. using Hotline.Share.Requests;
  11. using MapsterMapper;
  12. using Microsoft.AspNetCore.Authorization;
  13. using Microsoft.AspNetCore.Mvc;
  14. using MongoDB.Bson;
  15. using MongoDB.Driver;
  16. using XF.Domain.Exceptions;
  17. using XF.Domain.Repository;
  18. namespace Hotline.Api.Controllers
  19. {
  20. /// <summary>
  21. /// 系统参数相关接口
  22. /// </summary>
  23. public class SettingController : BaseController
  24. {
  25. private readonly IVoiceFileDomainService _voiceFileDomainService;
  26. private readonly IRepository<SystemSetting> _systemSettingsRepository;
  27. private readonly ISystemSettingCacheManager _systemSettingCacheManager;
  28. private readonly IDaySettingRepository _daysettingRepository;
  29. private readonly IMapper _mapper;
  30. public SettingController(IVoiceFileDomainService voiceFileDomainService, IRepository<SystemSetting> systemSettingsRepository, ISystemSettingCacheManager systemSettingCacheManager,IDaySettingRepository daySettingRepository, IMapper mapper)
  31. {
  32. _voiceFileDomainService = voiceFileDomainService;
  33. _systemSettingsRepository = systemSettingsRepository;
  34. _systemSettingCacheManager = systemSettingCacheManager;
  35. _daysettingRepository = daySettingRepository;
  36. _mapper = mapper;
  37. }
  38. /// <summary>
  39. /// 查询语音文件
  40. /// </summary>
  41. /// <returns></returns>
  42. [Permission(EPermission.VoiceQueryList)]
  43. [HttpGet("voicequerylist")]
  44. public async Task<List<string>> VoiceQueryList()
  45. {
  46. return await _voiceFileDomainService.VoiceQueryListAsync(HttpContext.RequestAborted);
  47. }
  48. /// <summary>
  49. /// 删除语音文件
  50. /// </summary>
  51. /// <param name="voiceFileName"></param>
  52. /// <returns></returns>
  53. [Permission(EPermission.RemoveVoiceFile)]
  54. [HttpPost("removevoicefile")]
  55. public async Task RemoveVoiceFile(string voiceFileName)
  56. {
  57. await _voiceFileDomainService.RemoveVoiceFileAsync(new RemoveVoiceFileRequest(voiceFileName), HttpContext.RequestAborted);
  58. }
  59. #region 系统参数
  60. /// <summary>
  61. /// 获取系统参数列表
  62. /// </summary>
  63. /// <returns></returns>
  64. [Permission(EPermission.GetSysSettingsAsync)]
  65. [HttpGet("getsyssettings")]
  66. public async Task<PagedDto<SystemSetting>> GetSysSettingsAsync([FromQuery]SettingsQueryDto dto)
  67. {
  68. //return await _systemSettingsRepository.QueryAsync(x => true);
  69. var (total,items) = await _systemSettingsRepository.Queryable()
  70. .Includes(d=>d.Creator)
  71. .WhereIF(!string.IsNullOrEmpty(dto.settingName), d => d.SettingName.Contains(dto.settingName))
  72. .WhereIF(!string.IsNullOrEmpty(dto.code),d=>d.Code.Contains(dto.code))
  73. .OrderBy(d => d.Sort)
  74. .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
  75. return new PagedDto<SystemSetting>(total, items);
  76. }
  77. /// <summary>
  78. /// 获取系统参数
  79. /// </summary>
  80. /// <param name="id"></param>
  81. /// <returns></returns>
  82. [Permission(EPermission.GetSettingEntityAsync)]
  83. [HttpGet("getsetting-entity/{id}")]
  84. public async Task<SystemSetting?> GetSettingEntityAsync(string id)
  85. {
  86. return await _systemSettingsRepository.GetAsync(id, HttpContext.RequestAborted);
  87. }
  88. /// <summary>
  89. /// 通过code获取系统参数
  90. /// </summary>
  91. /// <param name="code"></param>
  92. /// <returns></returns>
  93. [AllowAnonymous]
  94. [HttpGet("getsetting-code/{code}")]
  95. public async Task<SystemSetting?> GetSettingByCode(string code)
  96. {
  97. return _systemSettingCacheManager.GetSetting(code);
  98. }
  99. /// <summary>
  100. /// 新增系统参数
  101. /// </summary>
  102. /// <param name="dto"></param>
  103. /// <returns></returns>
  104. [Permission(EPermission.AddSettingAsync)]
  105. [HttpPost("setting-add")]
  106. public async Task AddSettingAsync([FromBody]AddSettingDto dto)
  107. {
  108. var setting = _mapper.Map<SystemSetting>(dto);
  109. await _systemSettingsRepository.AddAsync(setting, HttpContext.RequestAborted);
  110. }
  111. /// <summary>
  112. /// 修改配置
  113. /// </summary>
  114. /// <param name="dto"></param>
  115. /// <returns></returns>
  116. [Permission(EPermission.ModifySettings)]
  117. [HttpPost("modifysettings")]
  118. public async Task ModifySettingsAsync([FromBody]ModifySettingDto dto)
  119. {
  120. var model = await _systemSettingsRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
  121. if (model is null)
  122. throw UserFriendlyException.SameMessage("未知配置,请刷新界面");
  123. model = _mapper.Map<SystemSetting>(dto);
  124. _systemSettingCacheManager.DelSystemSetting(model.Code);
  125. await _systemSettingsRepository.UpdateAsync(model, HttpContext.RequestAborted);
  126. }
  127. #endregion
  128. #region 日期类型设置
  129. /// <summary>
  130. /// 获取月份的日期设置
  131. /// </summary>
  132. /// <param name="year"></param>
  133. /// <param name="month"></param>
  134. /// <returns></returns>
  135. [Permission(EPermission.DaySetings)]
  136. [HttpGet("getdaysettings-month/{year}/{month}")]
  137. public async Task<List<DaySetting>> GetDaySettingsByMonth(int year,int month)
  138. {
  139. return await _daysettingRepository.GetDaySettingsByMonth(year,month);
  140. }
  141. /// <summary>
  142. /// 设置日期
  143. /// </summary>
  144. /// <param name="request"></param>
  145. /// <returns></returns>`
  146. [Permission(EPermission.SetDaySetting)]
  147. [HttpPost("setdaysettings")]
  148. public async Task SetDaySettings([FromBody]SetDaySettingsRequest request)
  149. {
  150. List<DaySetting> daysettings = new List<DaySetting>();
  151. foreach (var item in request.list)
  152. {
  153. daysettings.Add(new DaySetting() { Day = item, IsWorkDay = request.isWorkDay });
  154. }
  155. await _daysettingRepository.AddRangeAsync(daysettings);
  156. }
  157. #endregion
  158. }
  159. }