
package com.tmerclub.cloud.rbac.mapper;

import com.tmerclub.cloud.rbac.model.Role;
import com.tmerclub.cloud.rbac.vo.RoleVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 角色
 *
 * @author tmerclub
 * @date 2020-09-17 19:15:44
 */
public interface RoleMapper {

    /**
     * 获取角色列表
     *
     * @param sysType
     * @param tenantId
     * @param roleName
     * @return 角色列表
     */
    List<RoleVO> list(@Param("sysType") Integer sysType, @Param("tenantId") Long tenantId, @Param("roleName") String roleName);

    /**
     * 根据角色id获取角色
     *
     * @param roleId 角色id
     * @return 角色
     */
    RoleVO getByRoleId(@Param("roleId") Long roleId);

    /**
     * 保存角色
     *
     * @param role 角色
     */
    void save(@Param("role") Role role);

    /**
     * 更新角色
     *
     * @param role 角色
     */
    void update(@Param("role") Role role);

    /**
     * 根据角色id删除角色
     *
     * @param roleId  角色id
     * @param sysType 系统类型
     */
    void deleteById(@Param("roleId") Long roleId, @Param("sysType") Integer sysType);

    /**
     * 根据角色id获取该角色所在系统
     *
     * @param roleId 角色id
     * @return sysType
     */
    Integer getBizType(@Param("roleId") Long roleId);

    /**
     * 统计角色名称的使用数量
     *
     * @param role
     * @return
     */
    int countRoleName(@Param("role") Role role);
}
