/**
 * Copyright &copy; 2021-2026 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
 */
package com.jeeplus.sys.mapper;

import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jeeplus.sys.domain.Role;
import com.jeeplus.sys.service.dto.RoleDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 角色MAPPER接口
 *
 * @author jeeplus
 * @version 2021-09-05
 */
public interface RoleMapper extends BaseMapper <Role> {

    /**
     * 查询关联的菜单Id
     */
    List <String> getMenuIdListByRoleId(@Param("roleId") String roleId);

    /**
     * 查询关联的权限Id
     */
    List <String> getDataRuleIdListByRoleId(@Param("roleId") String roleId);

    /**
     * 查询角色的所有无下属菜单ID
     *
     * @param id
     * @return
     */
    List <String> queryAllNotChildrenMenuId(@Param("id") String id);

    /**
     * 维护角色与菜单权限关系
     *
     * @param id
     * @return
     */
    int deleteRoleMenu(@Param("id") String id);

    int insertRoleMenu(@Param("roleId") String roleId, @Param("menuId") String menuId);

    /**
     * 维护角色与数据权限关系
     *
     * @param id
     * @return
     */
    int deleteRoleDataRule(@Param("id") String id);

    int insertRoleDataRule(@Param("roleId") String roleId, @Param("dataRuleId") String dataRuleId);

    /**
     * 扫码登录用
     * @param name
     * @return
     */
    @InterceptorIgnore(tenantLine = "true")
    RoleDTO getRoleByName2(@Param("name") String name);

    @InterceptorIgnore(tenantLine = "true")
    Role getRoleDTOByNameAndTenantId(@Param("name")String name,@Param("tenantId")String tenantId);

    /**
     * 根据id获取角色(移动端)
     * @param id
     * @return
     */
    @InterceptorIgnore(tenantLine = "true")
    RoleDTO getRoleDTOByIdForApp(@Param("id")String id);
    /*8
    根据租户获取角色信息
     */
    @InterceptorIgnore(tenantLine = "true")
    List<Role> getRoleByTenant(@Param("tenantId")String tenantId);

    @InterceptorIgnore(tenantLine = "true")
    int existsUserDataRule(@Param("userId") String userId,@Param("dataRuleId") String dataRuleId);
}
