package com.sundot.airport.attendance.mapper;

import com.sundot.airport.attendance.domain.AttendanceRecord;
import com.sundot.airport.common.core.domain.entity.SysUser;
import org.apache.ibatis.annotations.Param;

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

/**
 * 考勤记录Mapper接口
 *
 * @author wangchong
 * @date 2025-07-10
 */
public interface AttendanceRecordMapper {
    /**
     * 查询考勤记录
     *
     * @param id 考勤记录主键
     * @return 考勤记录
     */
    public AttendanceRecord selectAttendanceRecordById(Long id);

    /**
     * 查询考勤记录列表
     *
     * @param attendanceRecord 考勤记录
     * @return 考勤记录集合
     */
    public List<AttendanceRecord> selectAttendanceRecordList(AttendanceRecord attendanceRecord);

    /**
     * 新增考勤记录
     *
     * @param attendanceRecord 考勤记录
     * @return 结果
     */
    public int insertAttendanceRecord(AttendanceRecord attendanceRecord);

    /**
     * 修改考勤记录
     *
     * @param attendanceRecord 考勤记录
     * @return 结果
     */
    public int updateAttendanceRecord(AttendanceRecord attendanceRecord);

    /**
     * 删除考勤记录
     *
     * @param id 考勤记录主键
     * @return 结果
     */
    public int deleteAttendanceRecordById(Long id);

    /**
     * 批量删除考勤记录
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAttendanceRecordByIds(Long[] ids);

    /**
     * 根据角色标识查询今日打卡用户列表
     *
     * @param date 考勤日期
     * @param list 角色标识
     * @return 用户列表
     */
    List<SysUser> selectUserListByRoleKey(@Param("date") Date date, @Param("locked") String locked, @Param("list") List<String> list);
}
