package com.yida.data.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yida.data.common.core.entity.CurrentUser;
import com.yida.data.common.core.entity.system.Menu;
import com.yida.data.common.core.entity.system.Role;

import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author MrBird
 */
public interface RoleMapper extends BaseMapper<Role> {

    /**
     * 通过用户名查找用户角色
     *
     * @param username 用户名
     * @return 用户角色集合
     */
    List<Role> findUserRole(String username);

    /**
     * 查找角色详情
     *
     * @param page 分页
     * @param role 角色
     * @param <T>  type
     * @return IPage<User>
     */
    <T> IPage<Role> findRolePage(Page<T> page, @Param("role") Role role);

    List<Menu> listMenuByRole(@Param("roleIds") Long[] roleIds);

    List<Menu> listMenuByRoleName(@Param("roleNames") String[] roleNames);

    /**
     * 查询自己创建的角色+当前登陆账号部门以下的角色
     *
     * @param page        分页
     * @param role        角色
     * @param childIdList 子部门id集合
     * @param currentUser 当前登陆用户数据
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.yida.data.common.core.entity.system.Role>
     * @author ZYJ
     * @date 2021/12/8 14:26
     */
    IPage<Role> findRoleCheckPage(Page<Role> page,
                                  @Param("role") Role role,
                                  @Param("childIdList") List<Long> childIdList,
                                  @Param("currentUser") CurrentUser currentUser);

    /**
     * 获取主角色信息
     *
     * @param username 登陆用户名
     * @return java.util.List<com.yida.data.common.core.entity.system.Role>
     * @author ZYJ
     * @date 2022/1/14 17:14
     */
    List<Role> findMainRole(@Param("username") String username);
}