package jnpf.attendance.mapper;

import jnpf.base.mapper.SuperMapper;
import jnpf.entity.attendance.AttendanceRuleScope;
import jnpf.enums.attendance.ScopeBizType;
import jnpf.model.attendance.dto.UserOrgDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 适配范围mapper
 *
 * @author yanwenfu
 * @create 2025-09-18
 */
public interface RuleScopeMapper extends SuperMapper<AttendanceRuleScope> {

    /**
     * 按优先级查询用户生效中的规则
     * @param userId 用户id
     * @param organizeId 组织id
     * @param bizType 业务类型
     * @return java.util.List<jnpf.entity.attendance.AttendanceRuleScope>
     */
    List<AttendanceRuleScope> selectUserEffectList(@Param("userId") String userId, @Param("organizeId") String organizeId, @Param("bizType") String bizType);

    /**
     * 按优先级查询用户生效中的规则[批量]
     * @param userOrgList 用户组织列表
     * @param bizType 业务类型
     * @param priority 使用优先级(1: 是, 0: 否)
     * @return java.util.List<jnpf.entity.attendance.AttendanceRuleScope>
     */
    List<AttendanceRuleScope> selectUserEffectListBatch(@Param("list") List<UserOrgDto> userOrgList, @Param("bizType") String bizType,
                                                        @Param("priority") Integer priority, @Param("leaveTypeIds") List<String> leaveTypeIds);

    /**
     * 查询组织生效中的规则[批量]
     * @param organizeId 组织id
     * @param value 类型
     * @return java.util.List<jnpf.entity.attendance.AttendanceRuleScope>
     */
    List<AttendanceRuleScope> selectOrgEffectListBatch(@Param("organizeId") String organizeId, @Param("value") String value);
}
