package com.njcn.user.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.user.pojo.param.RoleParam;
import com.njcn.user.pojo.po.Role;
import com.njcn.user.pojo.vo.RoleVO;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author hongawen
 * @since 2021-12-13
 */
public interface IRoleService extends IService<Role> {

    /**
     * 根据用户id获取角色名
     * @param id 用户id
     * @return 角色名集合
     */
    List<String> getRoleNameByUserId(String id);

    /**
     * 根据用户id获取角色名称 name
     * @param id 用户id
     * @return 角色名集合
     */
    List<String> getNameByUserId(String id);

    /**
     * 根据用户id获取角色id
     * @param id 用户id
     * @return 角色名集合
     */
    List<String> getIdByUserId(String id);

    /**
     * 根据角色id获取角色code
     * @param list 角色id
     * @return 角色名集合
     */
    List<String> getCodeByList(List<String> list);

    /**
     * 分页查询角色列表
     * @param queryParam 查询参数
     */
    Page<RoleVO> listRole(RoleParam.QueryParam queryParam);

    /**
     * 根据权限类型分页查询角色列表
     * @param id 角色类型
     */
    List<Role> selectRoleDetail(Integer id);

    /**
     * 新增部门
     *
     * @param deptParam 角色信息
     * @return 操作结果
     */
    boolean addRole(RoleParam deptParam);

    /**
     * 修改部门信息
     *
     * @param updateParam 角色数据
     * @return 操作结果
     */
    boolean updateRole(RoleParam.RoleUpdateParam updateParam);

    /**
     * 批量逻辑删除角色数据
     *
     * @param ids 角色id集合
     * @return 操作结果
     */
    boolean deleteRole(List<String> ids);

    /**
     * 判断角色id是否有相关联的资源和组件
     * @param ids 角色id
     */
    Boolean selectRelevance(List<String> ids);

    /**
     * 根据角色code获取角色
     * @param code 角色code
     */
    Role getRoleByCode(String code);

    List<Role> allRoleList();

    List<Role> simpleList();
}
