content: 
  package com.platform.modules.system.service;
  
  import com.platform.modules.system.domain.Menu;
  import com.platform.modules.system.service.dto.MenuDto;
  import com.platform.modules.system.service.dto.MenuQueryCriteria;
  
  import javax.servlet.http.HttpServletResponse;
  import java.io.IOException;
  import java.util.List;
  import java.util.Set;
  
  /**
   * @author AllDataDC
   * @date 2023-01-27
   */
  public interface MenuService {
  
      /**
       * 查询全部数据
       * @param criteria 条件
       * @param isQuery /
       * @throws Exception /
       * @return /
       */
      List<MenuDto> queryAll(MenuQueryCriteria criteria, Boolean isQuery) throws Exception;
  
      /**
       * 根据ID查询
       * @param id /
       * @return /
       */
      MenuDto findById(long id);
  
      /**
       * 创建
       * @param resources /
       */
      void create(Menu resources);
  
      /**
       * 编辑
       * @param resources /
       */
      void update(Menu resources);
  
      /**
       * 获取所有子节点，包含自身ID
       * @param menuList /
       * @param menuSet /
       * @return /
       */
      Set<Menu> getChildMenus(List<Menu> menuList, Set<Menu> menuSet);
  
      /**
       * 构建菜单树
       * @param menuDtos 原始数据
       * @return /
       */
      List<MenuDto> buildTree(List<MenuDto> menuDtos);
  
      /**
       * 构建菜单树
       * @param menuDtos /
       * @return /
       */
      Object buildMenus(List<MenuDto> menuDtos);
  
      /**
       * 根据ID查询
       * @param id /
       * @return /
       */
      Menu findOne(Long id);
  
      /**
       * 删除
       * @param menuSet /
       */
      void delete(Set<Menu> menuSet);
  
      /**
       * 导出
       * @param queryAll 待导出的数据
       * @param response /
       * @throws IOException /
       */
      void download(List<MenuDto> queryAll, HttpServletResponse response) throws IOException;
  
      /**
       * 懒加载菜单数据
       * @param pid /
       * @return /
       */
      List<MenuDto> getMenus(Long pid);
  
      /**
       * 根据ID获取同级与上级数据
       * @param menuDto /
       * @param objects /
       * @return /
       */
      List<MenuDto> getSuperior(MenuDto menuDto, List<Menu> objects);
  
      /**
       * 根据当前用户获取菜单
       * @param currentUserId /
       * @return /
       */
      List<MenuDto> findByUser(Long currentUserId);
  }
  