package com.ruoyi.system.service; import java.util.List; import com.ruoyi.system.domain.SysMessage; import com.ruoyi.system.domain.SysTask; /** * 系统消息Service接口 * * @author ruoyi * @date 2025-10-25 */ public interface ISysMessageService { /** * 查询系统消息 * * @param messageId 系统消息主键 * @return 系统消息 */ public SysMessage selectSysMessageByMessageId(Long messageId); /** * 查询系统消息列表 * * @param sysMessage 系统消息 * @return 系统消息集合 */ public List selectSysMessageList(SysMessage sysMessage); /** * 查询用户的消息列表 * * @param receiverId 接收人ID * @return 系统消息集合 */ public List selectSysMessageListByReceiverId(Long receiverId); /** * 查询用户未读消息数量 * * @param receiverId 接收人ID * @return 未读消息数量 */ public int countUnreadMessageByReceiverId(Long receiverId); /** * 新增系统消息 * * @param sysMessage 系统消息 * @return 结果 */ public int insertSysMessage(SysMessage sysMessage); /** * 修改系统消息 * * @param sysMessage 系统消息 * @return 结果 */ public int updateSysMessage(SysMessage sysMessage); /** * 批量删除系统消息 * * @param messageIds 需要删除的系统消息主键集合 * @return 结果 */ public int deleteSysMessageByMessageIds(Long[] messageIds); /** * 删除系统消息信息 * * @param messageId 系统消息主键 * @return 结果 */ public int deleteSysMessageByMessageId(Long messageId); /** * 标记消息为已读 * * @param messageId 消息ID * @return 结果 */ public int markMessageAsRead(Long messageId); /** * 标记用户所有消息为已读 * * @param receiverId 接收人ID * @return 结果 */ public int markAllMessagesAsRead(Long receiverId); // ========== 消息推送业务方法 ========== /** * 推送任务创建成功消息(给创建人) * * @param task 任务对象 */ public void pushTaskCreateMessage(SysTask task); /** * 推送任务分配消息(给执行人) * * @param task 任务对象 * @param assigneeIds 执行人ID列表 */ public void pushTaskAssignMessage(SysTask task, List assigneeIds); /** * 推送任务状态变更消息(给相关人员) * * @param task 任务对象 * @param oldStatus 旧状态 * @param newStatus 新状态 */ public void pushTaskStatusChangeMessage(SysTask task, String oldStatus, String newStatus); }