PushMessageController.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package com.ruoyi.web.controller.system;
  2. import java.util.List;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.ruoyi.common.annotation.Anonymous;
  8. import com.ruoyi.system.utils.Auth;
  9. import com.ruoyi.system.utils.JwtUtil;
  10. import jakarta.servlet.http.HttpServletResponse;
  11. import org.springframework.security.access.prepost.PreAuthorize;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.web.bind.annotation.*;
  14. import com.ruoyi.common.annotation.Log;
  15. import com.ruoyi.common.core.controller.BaseController;
  16. import com.ruoyi.common.core.domain.AjaxResult;
  17. import com.ruoyi.common.enums.BusinessType;
  18. import com.ruoyi.system.domain.PushMessage;
  19. import com.ruoyi.system.service.IPushMessageService;
  20. import com.ruoyi.common.utils.poi.ExcelUtil;
  21. import com.ruoyi.common.core.page.TableDataInfo;
  22. /**
  23. * 推送消息Controller
  24. *
  25. * @author ruoyi
  26. * @date 2025-08-01
  27. */
  28. @RestController
  29. @RequestMapping("/system/message")
  30. public class PushMessageController extends BaseController
  31. {
  32. @Autowired
  33. private IPushMessageService pushMessageService;
  34. /**
  35. * 骑手、商家端获取推送消息分页列表
  36. */
  37. @Anonymous
  38. @Auth
  39. @GetMapping("/getPushMessageList")
  40. public AjaxResult getPushMessageList(@RequestHeader String token, @RequestParam Integer pageNum, @RequestParam Integer pageSize) {
  41. JwtUtil jwtUtil = new JwtUtil();
  42. String uid = jwtUtil.getusid(token);
  43. Page<PushMessage> page = new Page<>(pageNum,pageSize);
  44. LambdaQueryWrapper<PushMessage> queryWrapper = new LambdaQueryWrapper<>();
  45. queryWrapper.eq(PushMessage::getUserId,uid).orderByDesc(PushMessage::getTime);
  46. IPage<PushMessage> data = pushMessageService.page(page,queryWrapper);
  47. // 按订单指针回填商家名/地址,供骑手消息卡片展示
  48. pushMessageService.attachOrderInfo(data.getRecords());
  49. return success(data);
  50. }
  51. /**
  52. * 骑手、商家端获取未读消息数量(用于角标/红点)
  53. */
  54. @Anonymous
  55. @Auth
  56. @GetMapping("/getUnreadMessageCount")
  57. public AjaxResult getUnreadMessageCount(@RequestHeader String token) {
  58. JwtUtil jwtUtil = new JwtUtil();
  59. String uid = jwtUtil.getusid(token);
  60. LambdaQueryWrapper<PushMessage> queryWrapper = new LambdaQueryWrapper<>();
  61. queryWrapper.eq(PushMessage::getUserId, uid).eq(PushMessage::getIsRead, 0);
  62. return success(pushMessageService.count(queryWrapper));
  63. }
  64. /**
  65. * 骑手、商家端单条消息置为已读
  66. */
  67. @Anonymous
  68. @Auth
  69. @GetMapping("/readMessage")
  70. public AjaxResult readMessage(@RequestHeader String token, @RequestParam Long id) {
  71. JwtUtil jwtUtil = new JwtUtil();
  72. String uid = jwtUtil.getusid(token);
  73. LambdaUpdateWrapper<PushMessage> updateWrapper = new LambdaUpdateWrapper<>();
  74. updateWrapper.set(PushMessage::getIsRead, 1)
  75. .eq(PushMessage::getId, id)
  76. .eq(PushMessage::getUserId, uid);
  77. return toAjax(pushMessageService.update(updateWrapper));
  78. }
  79. /**
  80. * 骑手、商家端全部消息置为已读(清角标)
  81. */
  82. @Anonymous
  83. @Auth
  84. @GetMapping("/readAllMessage")
  85. public AjaxResult readAllMessage(@RequestHeader String token) {
  86. JwtUtil jwtUtil = new JwtUtil();
  87. String uid = jwtUtil.getusid(token);
  88. LambdaUpdateWrapper<PushMessage> updateWrapper = new LambdaUpdateWrapper<>();
  89. updateWrapper.set(PushMessage::getIsRead, 1)
  90. .eq(PushMessage::getUserId, uid)
  91. .eq(PushMessage::getIsRead, 0);
  92. return toAjax(pushMessageService.update(updateWrapper));
  93. }
  94. /**
  95. * 查询推送消息列表
  96. */
  97. @PreAuthorize("@ss.hasPermi('system:message:list')")
  98. @GetMapping("/list")
  99. public TableDataInfo list(PushMessage pushMessage)
  100. {
  101. startPage();
  102. List<PushMessage> list = pushMessageService.selectPushMessageList(pushMessage);
  103. return getDataTable(list);
  104. }
  105. /**
  106. * 导出推送消息列表
  107. */
  108. @PreAuthorize("@ss.hasPermi('system:message:export')")
  109. @Log(title = "推送消息", businessType = BusinessType.EXPORT)
  110. @PostMapping("/export")
  111. public void export(HttpServletResponse response, PushMessage pushMessage)
  112. {
  113. List<PushMessage> list = pushMessageService.selectPushMessageList(pushMessage);
  114. ExcelUtil<PushMessage> util = new ExcelUtil<PushMessage>(PushMessage.class);
  115. util.exportExcel(response, list, "推送消息数据");
  116. }
  117. /**
  118. * 获取推送消息详细信息
  119. */
  120. @PreAuthorize("@ss.hasPermi('system:message:query')")
  121. @GetMapping(value = "/{id}")
  122. public AjaxResult getInfo(@PathVariable("id") Long id)
  123. {
  124. return success(pushMessageService.selectPushMessageById(id));
  125. }
  126. /**
  127. * 新增推送消息
  128. */
  129. @PreAuthorize("@ss.hasPermi('system:message:add')")
  130. @Log(title = "推送消息", businessType = BusinessType.INSERT)
  131. @PostMapping
  132. public AjaxResult add(@RequestBody PushMessage pushMessage)
  133. {
  134. return toAjax(pushMessageService.insertPushMessage(pushMessage));
  135. }
  136. /**
  137. * 修改推送消息
  138. */
  139. @PreAuthorize("@ss.hasPermi('system:message:edit')")
  140. @Log(title = "推送消息", businessType = BusinessType.UPDATE)
  141. @PutMapping
  142. public AjaxResult edit(@RequestBody PushMessage pushMessage)
  143. {
  144. return toAjax(pushMessageService.updatePushMessage(pushMessage));
  145. }
  146. /**
  147. * 删除推送消息
  148. */
  149. @PreAuthorize("@ss.hasPermi('system:message:remove')")
  150. @Log(title = "推送消息", businessType = BusinessType.DELETE)
  151. @DeleteMapping("/{ids}")
  152. public AjaxResult remove(@PathVariable Long[] ids)
  153. {
  154. return toAjax(pushMessageService.deletePushMessageByIds(ids));
  155. }
  156. }