package com.ruoyi.system.mapper;

import java.util.List;
import com.ruoyi.system.domain.DutyAssignCounter;
import org.apache.ibatis.annotations.Param;

/**
 * 分配计数器Mapper接口
 *
 * @author ruoyi
 * @date 2024-12-19
 */
public interface DutyAssignCounterMapper
{
    /**
     * 查询分配计数器
     *
     * @param id 分配计数器主键
     * @return 分配计数器
     */
    public DutyAssignCounter selectDutyAssignCounterById(Long id);

    /**
     * 根据配置ID查询分配计数器
     *
     * @param configId 配置ID
     * @return 分配计数器
     */
    public DutyAssignCounter selectDutyAssignCounterByConfigId(Long configId);

    /**
     * 查询分配计数器列表
     *
     * @param dutyAssignCounter 分配计数器
     * @return 分配计数器集合
     */
    public List<DutyAssignCounter> selectDutyAssignCounterList(DutyAssignCounter dutyAssignCounter);

    /**
     * 新增分配计数器
     *
     * @param dutyAssignCounter 分配计数器
     * @return 结果
     */
    public int insertDutyAssignCounter(DutyAssignCounter dutyAssignCounter);

    /**
     * 修改分配计数器
     *
     * @param dutyAssignCounter 分配计数器
     * @return 结果
     */
    public int updateDutyAssignCounter(DutyAssignCounter dutyAssignCounter);

    /**
     * 删除分配计数器
     *
     * @param id 分配计数器主键
     * @return 结果
     */
    public int deleteDutyAssignCounterById(Long id);

    /**
     * 批量删除分配计数器
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteDutyAssignCounterByIds(String[] ids);

    /**
     * 根据配置ID删除分配计数器
     *
     * @param configId 配置ID
     * @return 结果
     */
    public int deleteDutyAssignCounterByConfigId(Long configId);

    /**
     * 更新分配计数器（用于轮询算法）
     *
     * @param configId 配置ID
     * @param lastAssignedUserId 上次分配的用户ID
     * @param assignCount 分配次数
     * @return 结果
     */
    public int updateAssignCounter(@Param("configId") Long configId, 
                                  @Param("lastAssignedUserId") Long lastAssignedUserId, 
                                  @Param("assignCount") Integer assignCount);
}