package jnpf.authority.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jnpf.model.authority.po.FtbPermissionRoleAuthorizePerson;
import jnpf.model.authority.vo.person.FtbAuthorizedPersonnelVO;
import jnpf.model.authority.vo.person.FtbEmployeePermissionPersonnelVO;
import jnpf.model.authority.vo.role.FtbPermissionRolePersonVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
*
*
*@Author: peng.hao
*@create: 2025/3/5
*
*/
public interface FtbPermissionRoleAuthorizePersonMapper extends BaseMapper<FtbPermissionRoleAuthorizePerson> {
    /**
     * 查询用户权限范围
     *
     * @param userId 用户ID
     * @return 用户权限范围列表
     */
    List<FtbPermissionRolePersonVO> queryUserScopeOfPermission(@Param("userId") String userId);

    /**
     * 查询用户权限范围
     *
     * @param userId 用户ID
     * @return 用户权限范围列表
     */
    List<FtbPermissionRolePersonVO> queryUserScopeOfPermissionWithUserIds(@Param("userIds") List<String> userIds);

    /**
     * 查询岗位授权信息
     *
     * @param positionId 岗位ID
     * @return 岗位权限范围列表
     */
    List<FtbPermissionRolePersonVO> jobAuthorizationInformation(@Param("positionId") String positionId);
    /**
     * 查询岗位授权信息
     *
     * @param positionId 岗位ID
     * @return 岗位权限范围列表
     */
    List<FtbPermissionRolePersonVO> jobAuthorizationInformationWithPositionIds(@Param("positionIds") List<String> positionIds);


    /**
     * 根据用户ID列表查询员工权限信息
     *
     * @param userIds 用户ID列表
     * @return 员工权限信息列表
     */
    List<FtbEmployeePermissionPersonnelVO> employeePermission(@Param("userIds") List<String> userIds);

    /**
     * 查询角色已授权人员列表
     *
     * @param page   分页参数
     * @param roleId 角色ID
     * @return 已授权人员分页列表
     */
    Page<FtbAuthorizedPersonnelVO> authorizedPersonnel(@Param("page") Page<FtbAuthorizedPersonnelVO> page,@Param("roleId") String roleId);

    /**
     * 分页查询员工权限列表
     *
     * @param page     分页参数
     * @param userName 用户姓名
     * @param userId   用户ID
     * @param userIds
     * @return 员工权限信息分页列表
     */
    Page<FtbEmployeePermissionPersonnelVO> employeePermissionLPage(@Param("page") Page<FtbEmployeePermissionPersonnelVO> page,
                                                                   @Param("userName") String userName,
                                                                   @Param("userId")String userId,
                                                                   @Param("userIds") List<String> userIds);

    /**
     * 获取人员数据权限
     *
     * @param userId 用户ID
     * @return 人员数据权限列表
     */
    List<FtbPermissionRolePersonVO> getPeopleDataPermissions(@Param("userId") String userId);
    /**
     * 获取人员数据权限
     *
     * @param userId 用户ID
     * @return 人员数据权限列表
     */
    List<FtbPermissionRolePersonVO> getPeopleDataPermissionsWithUserIds(@Param("userIds") List<String> userIds);

}