SysNoticeController.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. using Infrastructure;
  2. using Infrastructure.Attribute;
  3. using Infrastructure.Constant;
  4. using Infrastructure.Enums;
  5. using Infrastructure.Model;
  6. using Mapster;
  7. using Microsoft.AspNetCore.Mvc;
  8. using Microsoft.AspNetCore.SignalR;
  9. using SqlSugar;
  10. using ZR.Admin.WebApi.Extensions;
  11. using ZR.Admin.WebApi.Filters;
  12. using ZR.Admin.WebApi.Hubs;
  13. using ZR.Common;
  14. using ZR.Model.System;
  15. using ZR.Model.System.Dto;
  16. using ZR.Service.System.IService;
  17. namespace ZR.Admin.WebApi.Controllers.System
  18. {
  19. /// <summary>
  20. /// 系统通知
  21. /// </summary>
  22. [Verify]
  23. [Route("system/notice")]
  24. public class SysNoticeController : BaseController
  25. {
  26. /// <summary>
  27. /// 通知公告表接口
  28. /// </summary>
  29. private readonly ISysNoticeService _SysNoticeService;
  30. private readonly IHubContext<MessageHub> _hubContext;
  31. public SysNoticeController(ISysNoticeService SysNoticeService, IHubContext<MessageHub> hubContext)
  32. {
  33. _SysNoticeService = SysNoticeService;
  34. _hubContext = hubContext;
  35. }
  36. /// <summary>
  37. /// 查询通知公告表列表
  38. /// </summary>
  39. /// <returns></returns>
  40. [HttpGet("queryNotice")]
  41. public IActionResult QueryNotice([FromQuery] SysNoticeQueryDto parm)
  42. {
  43. var predicate = Expressionable.Create<SysNotice>();
  44. predicate = predicate.And(m => m.Status == "0");
  45. var response = _SysNoticeService.GetPages(predicate.ToExpression(), parm);
  46. return SUCCESS(response);
  47. }
  48. /// <summary>
  49. /// 查询通知公告表列表
  50. /// </summary>
  51. /// <returns></returns>
  52. [HttpGet("list")]
  53. [ActionPermissionFilter(Permission = "system:notice:list")]
  54. public IActionResult QuerySysNotice([FromQuery] SysNoticeQueryDto parm)
  55. {
  56. var predicate = Expressionable.Create<SysNotice>();
  57. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.NoticeTitle), m => m.NoticeTitle.Contains(parm.NoticeTitle));
  58. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.NoticeType), m => m.NoticeType == parm.NoticeType);
  59. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.CreateBy), m => m.Create_by.Contains(parm.CreateBy) || m.Update_by.Contains(parm.CreateBy));
  60. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.Status), m => m.Status == parm.Status);
  61. var response = _SysNoticeService.GetPages(predicate.ToExpression(), parm);
  62. return SUCCESS(response);
  63. }
  64. /// <summary>
  65. /// 查询通知公告表详情
  66. /// </summary>
  67. /// <param name="NoticeId"></param>
  68. /// <returns></returns>
  69. [HttpGet("{NoticeId}")]
  70. [ActionPermissionFilter(Permission = "system:notice:query")]
  71. public IActionResult GetSysNotice(int NoticeId)
  72. {
  73. var response = _SysNoticeService.GetFirst(x => x.NoticeId == NoticeId);
  74. return SUCCESS(response);
  75. }
  76. /// <summary>
  77. /// 添加通知公告表
  78. /// </summary>
  79. /// <returns></returns>
  80. [HttpPost]
  81. [ActionPermissionFilter(Permission = "system:notice:add")]
  82. [Log(Title = "通知公告表", BusinessType = BusinessType.INSERT)]
  83. public IActionResult AddSysNotice([FromBody] SysNoticeDto parm)
  84. {
  85. if (parm == null)
  86. {
  87. throw new CustomException("请求参数错误");
  88. }
  89. //从 Dto 映射到 实体
  90. var modal = parm.Adapt<SysNotice>().ToCreate(HttpContext);
  91. modal.Create_by = HttpContext.GetName();
  92. modal.Create_time = DateTime.Now;
  93. int result = _SysNoticeService.Insert(modal, it => new
  94. {
  95. it.NoticeTitle,
  96. it.NoticeType,
  97. it.NoticeContent,
  98. it.Status,
  99. it.Remark,
  100. it.Create_by,
  101. it.Create_time
  102. });
  103. return SUCCESS(result);
  104. }
  105. /// <summary>
  106. /// 更新通知公告表
  107. /// </summary>
  108. /// <returns></returns>
  109. [HttpPut]
  110. [ActionPermissionFilter(Permission = "system:notice:update")]
  111. [Log(Title = "通知公告表", BusinessType = BusinessType.UPDATE)]
  112. public IActionResult UpdateSysNotice([FromBody] SysNoticeDto parm)
  113. {
  114. if (parm == null)
  115. {
  116. throw new CustomException("请求实体不能为空");
  117. }
  118. //从 Dto 映射到 实体
  119. var model = parm.Adapt<SysNotice>().ToUpdate(HttpContext);
  120. var response = _SysNoticeService.Update(w => w.NoticeId == model.NoticeId, it => new SysNotice()
  121. {
  122. //Update 字段映射
  123. NoticeTitle = model.NoticeTitle,
  124. NoticeType = model.NoticeType,
  125. NoticeContent = model.NoticeContent,
  126. Status = model.Status,
  127. Remark = model.Remark,
  128. Update_by = HttpContext.GetName(),
  129. Update_time = DateTime.Now
  130. });
  131. return SUCCESS(response);
  132. }
  133. /// <summary>
  134. /// 发送通知公告表
  135. /// </summary>
  136. /// <returns></returns>
  137. [HttpPut("send/{NoticeId}")]
  138. [ActionPermissionFilter(Permission = "system:notice:update")]
  139. [Log(Title = "通知公告表", BusinessType = BusinessType.OTHER)]
  140. public IActionResult SendNotice(int NoticeId = 0)
  141. {
  142. if (NoticeId <= 0)
  143. {
  144. throw new CustomException("请求实体不能为空");
  145. }
  146. var response = _SysNoticeService.GetFirst(x => x.NoticeId == NoticeId);
  147. if (response != null && response.Status == "0")
  148. {
  149. _hubContext.Clients.All.SendAsync(HubsConstant.ReceiveNotice, response.NoticeTitle, response.NoticeContent);
  150. }
  151. return SUCCESS(response);
  152. }
  153. /// <summary>
  154. /// 删除通知公告表
  155. /// </summary>
  156. /// <returns></returns>
  157. [HttpDelete("{ids}")]
  158. [ActionPermissionFilter(Permission = "system:notice:delete")]
  159. [Log(Title = "通知公告表", BusinessType = BusinessType.DELETE)]
  160. public IActionResult DeleteSysNotice(string ids)
  161. {
  162. int[] idsArr = Tools.SpitIntArrary(ids);
  163. if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); }
  164. var response = _SysNoticeService.Delete(idsArr);
  165. return SUCCESS(response);
  166. }
  167. /// <summary>
  168. /// 通知公告表导出
  169. /// </summary>
  170. /// <returns></returns>
  171. [Log(BusinessType = BusinessType.EXPORT, IsSaveResponseData = false, Title = "通知公告表")]
  172. [HttpGet("export")]
  173. [ActionPermissionFilter(Permission = "system:notice:export")]
  174. public IActionResult Export()
  175. {
  176. var list = _SysNoticeService.GetAll();
  177. string sFileName = ExportExcel(list, "SysNotice", "通知公告表");
  178. return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName });
  179. }
  180. }
  181. }