SysUserMsgController.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. using Microsoft.AspNetCore.Mvc;
  2. using ZR.Model;
  3. using ZR.Model.Dto;
  4. //创建时间:2024-05-08
  5. namespace ZR.Admin.WebApi.Controllers.System
  6. {
  7. /// <summary>
  8. /// 用户系统消息
  9. /// </summary>
  10. [Route("SysUserMsg")]
  11. public class SysUserMsgController : BaseController
  12. {
  13. /// <summary>
  14. /// 用户系统消息接口
  15. /// </summary>
  16. private readonly ISysUserMsgService _SysUserMsgService;
  17. public SysUserMsgController(ISysUserMsgService SysUserMsgService)
  18. {
  19. _SysUserMsgService = SysUserMsgService;
  20. }
  21. /// <summary>
  22. /// 查询用户系统消息列表
  23. /// </summary>
  24. /// <param name="parm"></param>
  25. /// <returns></returns>
  26. [HttpGet("list")]
  27. [ActionPermissionFilter(Permission = "usermsg:list")]
  28. public IActionResult QuerySysUserMsg([FromQuery] SysUserMsgQueryDto parm)
  29. {
  30. var response = _SysUserMsgService.GetList(parm);
  31. return SUCCESS(response);
  32. }
  33. /// <summary>
  34. /// 查询我的系统消息
  35. /// </summary>
  36. /// <param name="parm"></param>
  37. /// <returns></returns>
  38. [HttpGet("mylist")]
  39. public IActionResult QueryMySysUserMsg([FromQuery] SysUserMsgQueryDto parm)
  40. {
  41. parm.UserId = HttpContext.GetUId();
  42. var response = _SysUserMsgService.GetList(parm);
  43. return SUCCESS(response);
  44. }
  45. /// <summary>
  46. /// 查询我的未读消息数
  47. /// </summary>
  48. /// <param name="parm"></param>
  49. /// <returns></returns>
  50. [HttpGet("myMsgNum")]
  51. public IActionResult QueryMyUnReadMsg([FromQuery] SysUserMsgQueryDto parm)
  52. {
  53. parm.UserId = HttpContext.GetUId();
  54. var response = _SysUserMsgService
  55. .Queryable()
  56. .Where(f => f.IsRead == 0 && f.UserId == parm.UserId)
  57. .WithCache(60 * 10)
  58. .ToList();
  59. var data = from a in response
  60. group a by new { a.MsgType } into grp
  61. select new
  62. {
  63. msgType = grp.Key.MsgType,
  64. num = grp.Count(),
  65. d = 3
  66. };
  67. var lastSysMsgInfo = _SysUserMsgService
  68. .Queryable()
  69. .Where(f => f.MsgType == UserMsgType.SYSTEM)
  70. .OrderByDescending(x => x.MsgId)
  71. .First();
  72. return SUCCESS(new { data, lastSysMsgInfo });
  73. }
  74. /// <summary>
  75. /// 查询用户系统消息详情
  76. /// </summary>
  77. /// <param name="MsgId"></param>
  78. /// <returns></returns>
  79. [HttpGet("{MsgId}")]
  80. [ActionPermissionFilter(Permission = "usermsg:query")]
  81. public IActionResult GetSysUserMsg(long MsgId)
  82. {
  83. var response = _SysUserMsgService.GetInfo(MsgId);
  84. var info = response.Adapt<SysUserMsgDto>();
  85. return SUCCESS(info);
  86. }
  87. /// <summary>
  88. /// 添加用户系统消息
  89. /// </summary>
  90. /// <returns></returns>
  91. [HttpPost]
  92. [ActionPermissionFilter(Permission = "usermsg:add")]
  93. [Log(Title = "用户系统消息", BusinessType = BusinessType.INSERT)]
  94. public IActionResult AddSysUserMsg([FromBody] SysUserMsgDto parm)
  95. {
  96. var modal = parm.Adapt<SysUserMsg>().ToCreate(HttpContext);
  97. var response = _SysUserMsgService.AddSysUserMsg(modal);
  98. return SUCCESS(response);
  99. }
  100. /// <summary>
  101. /// 删除用户系统消息
  102. /// </summary>
  103. /// <returns></returns>
  104. [HttpDelete("delete/{ids}")]
  105. [ActionPermissionFilter(Permission = "usermsg:delete")]
  106. [Log(Title = "用户系统消息", BusinessType = BusinessType.DELETE)]
  107. public IActionResult DeleteSysUserMsg([FromRoute] string ids)
  108. {
  109. var idArr = Tools.SplitAndConvert<long>(ids);
  110. return ToResponse(_SysUserMsgService.Delete(idArr));
  111. }
  112. /// <summary>
  113. /// 已读消息
  114. /// </summary>
  115. /// <param name="msgId"></param>
  116. /// <param name="msgType"></param>
  117. /// <returns></returns>
  118. [HttpPost("read/{msgId}/{msgType}")]
  119. [ActionPermissionFilter(Permission = "common")]
  120. public IActionResult ReadMsg([FromRoute] long msgId, [FromRoute] UserMsgType msgType)
  121. {
  122. var userId = HttpContext.GetUId();
  123. var response = _SysUserMsgService.ReadMsg(userId, msgId, msgType);
  124. return SUCCESS(response);
  125. }
  126. /// <summary>
  127. /// 导出用户系统消息
  128. /// </summary>
  129. /// <returns></returns>
  130. [Log(Title = "用户系统消息", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
  131. [HttpGet("export")]
  132. [ActionPermissionFilter(Permission = "usermsg:export")]
  133. public IActionResult Export([FromQuery] SysUserMsgQueryDto parm)
  134. {
  135. parm.PageNum = 1;
  136. parm.PageSize = 100000;
  137. var list = _SysUserMsgService.ExportList(parm).Result;
  138. if (list == null || list.Count <= 0)
  139. {
  140. return ToResponse(ResultCode.FAIL, "没有要导出的数据");
  141. }
  142. var result = ExportExcelMini(list, "用户系统消息", "用户系统消息");
  143. return ExportExcel(result.Item2, result.Item1);
  144. }
  145. /// <summary>
  146. /// 清空用户系统消息
  147. /// </summary>
  148. /// <returns></returns>
  149. [Log(Title = "用户系统消息", BusinessType = BusinessType.CLEAN)]
  150. [ActionPermissionFilter(Permission = "usermsg:delete")]
  151. [HttpDelete("clean")]
  152. public IActionResult Clear()
  153. {
  154. if (!HttpContext.IsAdmin())
  155. {
  156. return ToResponse(ResultCode.FAIL, "操作失败");
  157. }
  158. return SUCCESS(_SysUserMsgService.TruncateSysUserMsg());
  159. }
  160. }
  161. }