package com.yfd.platform.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yfd.platform.system.domain.SysRole;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 系统角色 Mapper 接口
 * </p>
 *
 *
 * @since 2021-12-15
 */
public interface SysRoleMapper extends BaseMapper<SysRole> {

    /***********************************
     * 用途说明：根据角色id查询是否存在用户
     * 参数说明
     * roleid     角色id
     * 返回值说明:   该角色下是否存在用户
     ************************************/
    List<Map<String, String>> isRoleUsersByroleid(String roleid);

    /***********************************
     * 用途说明：根据角色id查询是否存在权限
     * 参数说明
     * roleid     角色id
     * 返回值说明:   该角色下是否存在权限
     ************************************/
    List<Map<String, String>> isRoleMenuByRoleId(String roleId);

    /***********************************
     * 用途说明：查询已分配的用户
     * 参数说明
     *orgid         所属组织
     *username      用户名称
     *status        状态
     *level         角色级别  '1-超级管理员 2-单位管理员 3-普通用户'
     * rolename     角色名称
     * isvaild      角色是否有效
     * 返回值说明:  系统用户角色数据集合
     ***********************************/
    List<Map> listRoleUsers(String orgid, String username, String status,
                            String level, String rolename, String isvaild);

    /***********************************
     * 用途说明：根据 角色id和用户id 删除 （admin除外）
     * 参数说明
     *roleid        角色id
     * urserid      用户id
     * 返回值说明:  是否删除成功
     ***********************************/
    boolean deleteRoleUsers(String roleid, String urserid);

    /**********************************
     * 用途说明: 根据用户id获取角色信息
     * 参数说明 id 角色id
     * 返回值说明: void
     ***********************************/
    List<SysRole> getRoleByUserId(String id);

    /**********************************
     * 用途说明: 根据角色ID删除菜单与角色关联信息
     * 参数说明 id 角色id
     * 返回值说明: void
     ***********************************/
    boolean deleteRoleMenus(String id);

    /**********************************
     * 用途说明: 根据角色ID删除用户与角色关联信息
     * 参数说明 id 角色id
     * 返回值说明: void
     ***********************************/
    boolean deleteRoleUser(String id);

    /**********************************
     * 用途说明: 根据角色id获取用户id
     * 参数说明 id 角色id
     * 返回值说明: 用户id
     ***********************************/
    List<String> getUserIdById(String id);

    void addRoleMenu(@Param("id") String id, @Param("roleid") String roleid,
                     @Param("menuid") String menuid);
}
