package jnpf.culture.mapper;

import jnpf.base.mapper.SuperMapper;
import jnpf.entity.culture.CultureClockIn;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

/**
 * 文化打卡记录mapper
 *
 * @author yanwenfu
 * @create 2025-12-23
 */
public interface CultureClockInMapper extends SuperMapper<CultureClockIn> {

    /**
     * 查询打卡记录列表
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param userIds 用户ids
     * @return java.util.List<? extends jnpf.entity.culture.CultureClockIn>
     */
    List<CultureClockIn> getClockInList(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("list") List<String> userIds);

    /**
     * 查询一年的打卡日期
     * @param userId 用户id
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return java.util.List<java.lang.String>
     */
    List<String> getClockInDateByYear(@Param("userId") String userId, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);

    /**
     * 查询日期游标列表
     * @param userId 用户id
     * @param cursorDate 游标日期
     * @param limitPlusOne 分页数量 + 1
     * @return java.util.List<java.time.LocalDate>
     */
    List<LocalDate> getClockInDateList(@Param("userId") String userId, @Param("cursorDate") String cursorDate, @Param("limitPlusOne") Integer limitPlusOne);

    /**
     * 查询这些日期下的打卡记录
     * @param userId 用户id
     * @param pageDates 日期列表
     * @return java.util.List<jnpf.entity.culture.CultureClockIn>
     */
    List<CultureClockIn> getClockInListByDates(@Param("userId") String userId, @Param("list") List<LocalDate> pageDates);
}
