package com.gz.service.system;

import cn.hutool.core.lang.tree.Tree;
import com.github.pagehelper.PageInfo;
import com.gz.dto.system.ArchivesTreeDTO;

import java.util.List;

/**
 * @description 档案树Service
 * @author LiuChangLan
 * @since 2021/2/23 15:50
 */
public interface ArchivesTreeService {

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

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

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

    /**
     * @description 查
     * @author LiuChangLan
     * @since 2020/9/4 14:46
     */
    List<ArchivesTreeDTO> selectAll();

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

    /**
     * @description 查询列表（根据排序）
     * @author LiuChangLan
     * @since 2021/2/23 16:18
     */
    List<ArchivesTreeDTO> selectByOrder();

    /**
     * @description 查询树行
     * @author LiuChangLan
     * @since 2021/2/23 16:34
     */
    List<Tree<String>> selectTree();

    /**
     * @description 上移
     * @author LiuChangLan
     * @since 2020/9/8 10:46
     */
    void upMove(Integer id);

    /**
     * @description 下移
     * @author LiuChangLan
     * @since 2020/9/8 11:02
     */
    void downMove(Integer id);

    /**
     * @description 根据id查询子项
     * @author LiuChangLan
     * @since 2021/2/24 16:57
     */
    List<ArchivesTreeDTO> selectChildById(Integer id);

    /**
     * @description 根据code 查询父节点信息 找不到返回本节点信息
     * @author LiuChangLan
     * @since 2021/2/24 17:23
     */
    ArchivesTreeDTO selectParentByCode(String code);

    /**
     * @description 查询档案树权限
     * @author LiuChangLan
     * @since 2021/3/7 23:12
     */
    List<Tree<String>> selectArchiveRole(Integer roleId);
}
