package com.ruoyi.web.controller.system; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.system.domain.SysMessage; import com.ruoyi.system.service.ISysMessageService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.utils.SecurityUtils; /** * 系统消息Controller * * @author ruoyi * @date 2025-10-25 */ @RestController @RequestMapping("/system/message") public class SysMessageController extends BaseController { @Autowired private ISysMessageService sysMessageService; /** * 查询系统消息列表 */ @GetMapping("/list") public TableDataInfo list(SysMessage sysMessage) { startPage(); List list = sysMessageService.selectSysMessageList(sysMessage); return getDataTable(list); } /** * 查询当前用户的消息列表 */ @GetMapping("/my") public AjaxResult myMessages() { Long userId = SecurityUtils.getUserId(); List list = sysMessageService.selectSysMessageListByReceiverId(userId); return AjaxResult.success(list); } /** * 查询当前用户未读消息数量 */ @GetMapping("/unread/count") public AjaxResult unreadCount() { Long userId = SecurityUtils.getUserId(); int count = sysMessageService.countUnreadMessageByReceiverId(userId); return AjaxResult.success(count); } /** * 导出系统消息列表 */ @Log(title = "系统消息", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, SysMessage sysMessage) { List list = sysMessageService.selectSysMessageList(sysMessage); ExcelUtil util = new ExcelUtil(SysMessage.class); util.exportExcel(response, list, "系统消息数据"); } /** * 获取系统消息详细信息 */ @GetMapping(value = "/{messageId}") public AjaxResult getInfo(@PathVariable("messageId") Long messageId) { return AjaxResult.success(sysMessageService.selectSysMessageByMessageId(messageId)); } /** * 新增系统消息 */ @Log(title = "系统消息", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody SysMessage sysMessage) { return toAjax(sysMessageService.insertSysMessage(sysMessage)); } /** * 修改系统消息 */ @Log(title = "系统消息", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody SysMessage sysMessage) { return toAjax(sysMessageService.updateSysMessage(sysMessage)); } /** * 删除系统消息 */ @Log(title = "系统消息", businessType = BusinessType.DELETE) @DeleteMapping("/{messageIds}") public AjaxResult remove(@PathVariable Long[] messageIds) { return toAjax(sysMessageService.deleteSysMessageByMessageIds(messageIds)); } /** * 标记消息为已读 */ @Log(title = "系统消息", businessType = BusinessType.UPDATE) @PutMapping("/read/{messageId}") public AjaxResult markAsRead(@PathVariable Long messageId) { return toAjax(sysMessageService.markMessageAsRead(messageId)); } /** * 标记所有消息为已读 */ @Log(title = "系统消息", businessType = BusinessType.UPDATE) @PutMapping("/read/all") public AjaxResult markAllAsRead() { Long userId = SecurityUtils.getUserId(); return toAjax(sysMessageService.markAllMessagesAsRead(userId)); } }