package com.securitycontrol.system.base.mapper;

import com.securitycontrol.entity.system.dto.RoleDto;
import com.securitycontrol.entity.system.vo.RoleVo;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author：cwchen
 * @date：2024-02-23-18:34
 * @version：1.0
 * @description：角色管理-数据库访问层
 */
@Repository(value = "IRoleMapper")
public interface IRoleMapper {

    /**
     * 角色列表
     *
     * @param dto
     * @return List<RoleVo>
     * @description 角色列表
     * @author cwchen
     * @date 2024/2/26 9:34
     */
    List<RoleVo> getRoleLists(RoleDto dto);

    /**
     * 新增/修改角色
     *
     * @param vo
     * @description
     * @author cwchen
     * @date 2024/2/26 10:32
     */
    void addOrUpdateRole(RoleVo vo);

    /**
     * 角色是否存在
     *
     * @param roleName
     * @return int
     * @description 角色是否存在
     * @author cwchen
     * @date 2024/2/26 10:38
     */
    int isRoleName(String roleName);

    /**
     * 角色详情
     *
     * @param dto
     * @return RoleVo
     * @description 角色详情
     * @author cwchen
     * @date 2024/2/26 10:45
     */
    RoleVo getRoleById(RoleDto dto);

    /**
     * 是否存在用户使用该角色
     *
     * @param dto
     * @return int
     * @description 是否存在用户使用该角色
     * @author cwchen
     * @date 2024/2/26 10:50
     */
    int isUserUse(RoleDto dto);

    /**
     * 删除角色
     *
     * @param dto
     * @description 删除角色
     * @author cwchen
     * @date 2024/2/26 10:51
     */
    void deleteRole(RoleDto dto);

    /**
     * 删除角色已授权的菜单数据
     *
     * @param vo
     * @description
     * @author cwchen
     * @date 2024/2/26 14:49
     */
    void delRoleMenu(RoleVo vo);

    /**
     * 新增角色授权的菜单数据
     *
     * @param vo
     * @description
     * @author cwchen
     * @date 2024/2/26 14:49
     */
    void addRoleMenu(RoleVo vo);

    /**
     * 获取角色授权的菜单
     *
     * @param dto
     * @return List<String>
     * @description 获取角色授权的菜单
     * @author cwchen
     * @date 2024/2/26 14:55
     */
    List<String> getAuthMenu(RoleDto dto);
}
