package com.sundot.airport.exam.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sundot.airport.exam.domain.DailyTaskConfig;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * <b>功能名：</b>DailyTaskConfigMapper<br>
 * <b>说明：</b> 每日答题任务配置Mapper <br>
 * <b>著作权：</b> Copyright (C) 2025 SUNDOT CORPORATION<br>
 * <b>修改履历：
 *
 * @author Simon Lin
 */
@Mapper
public interface DailyTaskConfigMapper extends BaseMapper<DailyTaskConfig> {

    /**
     * 根据用户角色和部门ID查询有效的配置
     *
     * 匹配规则：
     * 1. 角色必须匹配（role必须在dtc_roles中）
     * 2. 部门匹配规则：
     *    - 如果dtc_dept_ids为NULL或空字符串，则不限制部门（所有部门都匹配）
     *    - 如果dtc_dept_ids有值，则deptId必须在其中
     * 3. 配置必须在有效期内且已启用
     *
     * @param role 用户角色ID
     * @param deptId 部门ID
     * @param currentDate 当前日期
     * @return 配置列表（按创建时间倒序，返回最新的一个）
     */
    List<DailyTaskConfig> findEffectiveConfigByRoleAndDept(@Param("role") String role,
                                                             @Param("deptId") Long deptId,
                                                             @Param("currentDate") Date currentDate);
}
