package com.ruoyi.notification.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.ruoyi.notification.domain.ScheduledTask;

/**
 * 定时任务Mapper接口
 * 
 * @author ruoyi
 * @date 2025-12-19
 */
public interface ScheduledTaskMapper 
{
    /**
     * 查询定时任务
     * 
     * @param taskId 定时任务主键
     * @return 定时任务
     */
    public ScheduledTask selectScheduledTaskByTaskId(Long taskId);

    /**
     * 查询定时任务列表
     * 
     * @param scheduledTask 定时任务
     * @return 定时任务集合
     */
    public List<ScheduledTask> selectScheduledTaskList(ScheduledTask scheduledTask);

    /**
     * 新增定时任务
     * 
     * @param scheduledTask 定时任务
     * @return 结果
     */
    public int insertScheduledTask(ScheduledTask scheduledTask);

    /**
     * 修改定时任务
     * 
     * @param scheduledTask 定时任务
     * @return 结果
     */
    public int updateScheduledTask(ScheduledTask scheduledTask);

    /**
     * 删除定时任务
     * 
     * @param taskId 定时任务主键
     * @return 结果
     */
    public int deleteScheduledTaskByTaskId(Long taskId);

    /**
     * 批量删除定时任务
     * 
     * @param taskIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteScheduledTaskByTaskIds(Long[] taskIds);

    /**
     * 查询启用的定时任务
     * 
     * @return 定时任务集合
     */
    public List<ScheduledTask> selectEnabledScheduledTasks();

    /**
     * 更新任务执行统计
     * 
     * @param taskId 任务ID
     * @param success 是否成功
     * @return 结果
     */
    public int updateTaskExecutionStats(@Param("taskId") Long taskId, @Param("success") boolean success);

    /**
     * 更新任务下次执行时间
     * 
     * @param taskId 任务ID
     * @param nextExecuteTime 下次执行时间
     * @return 结果
     */
    public int updateNextExecuteTime(@Param("taskId") Long taskId, @Param("nextExecuteTime") java.util.Date nextExecuteTime);
}