package com.gz.service.system;

import cn.hutool.core.lang.tree.Tree;
import cn.hutool.json.JSONObject;
import com.github.pagehelper.PageInfo;
import com.gz.dto.system.RoleDTO;
import com.gz.vo.system.RoleMenuVO;
import com.gz.vo.system.RoleVO;

import java.util.List;

public interface RoleService {

    /**
     * @description 增
     * @author LiuChangLan
     * @since 2020/9/4 14:46
     */
    Integer insert(RoleDTO roleDTO);

    /**
     * @description 删
     * @author LiuChangLan
     * @since 2020/9/4 14:46
     */
    Integer delete(Integer id);

    /**
     * @description 改
     * @author LiuChangLan
     * @since 2020/9/4 14:46
     */
    Integer update(RoleDTO roleDTO);

    /**
     * @description 查(给分页参数查分页 没给查全部)
     * @author LiuChangLan
     * @since 2020/9/4 14:46
     */
    PageInfo<RoleDTO> select(RoleVO roleVO);

    /**
     * @description 根据主键查询
     * @author LiuChangLan
     * @since 2020/9/4 16:35
     */
    RoleDTO selectByPrimaryKey(Integer id);

    /**
     * @description 设置权限
     * @author LiuChangLan
     * @since 2020/9/22 9:51
     */
    Integer setRole(RoleMenuVO vo);


    /**
     * @description 查询权限树
     * @author LiuChangLan
     * @since 2021/3/31 13:50
     */
    List<Tree<String>> selectRoleList(Integer roleId);

    /**
     * @description 查询所有权限
     * @author LiuChangLan
     * @since 2021/3/31 13:50
     */
    List<RoleDTO> selectAllRole();

    /**
     * @description 查询档案信息权限
     * @author LiuChangLan
     * @since 2021/3/31 14:31
     */
    List<JSONObject> selectShowArchive(Integer roleId);

}
