package com.sptg.permissions.biz.service;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.sptg.common.core.beans.ResultBean;
import com.sptg.permissions.api.dto.MenuDto;
import com.sptg.permissions.api.entity.Menu;

import java.io.Serializable;
import java.util.List;

/**
 * title: MenuServiceInterface
 * package: com.sptg.permissions.biz.security
 * description: 菜单-服务层接口
 *
 *                  
 *                 
 */
public interface MenuServiceInterface {

    /**
     * 功能描述:根据Id查询菜单，并将查询结果缓存到Redis中
     * @param id 主键
     * @return Menu
     *                  
     *                       
     */
    Menu selectById(Serializable id);

    /**
     * 功能描述: 根据角色Id列表获取菜单列表
     * @param roleIdList 角色Id列表
     * @return List<Menu> 菜单列表
     *                  
     * date:  2018/10/29 22:38
     */
    List<Menu> selectListByRoleIdList(List<Long> roleIdList);

    /**
     * 功能描述: 根据查询条件,查询所有的菜单列表（查询数据库）
     * @param wrapper 查询条件
     * @return List<Menu> 菜单列表
     *                  
     * date:  2018/11/2 0:46
     */
    List<Menu> selectList(Wrapper<Menu> wrapper);

    /**
     * 功能描述: 创建菜单
     * @param menu 菜单信息
     * @return boolean：{ true：成功,false：失败 }
     *                  
     *                     
     */
    ResultBean<Boolean> insertMenu(MenuDto menu);

    /**
     * 功能描述: 修改菜单
     * @param menuDto 菜单信息
     * @return boolean：{ true：成功,false：失败 }
     *                  
     * date:  2018/11/4 18:49
     */
    ResultBean<Boolean> updateMenu(MenuDto menuDto);

    /**
     * 功能描述: 删除菜单
     * @param menuDto 菜单信息
     * @return boolean：{ true：成功,false：失败 }
     *                  
     *                      
     */
    ResultBean<Boolean> deleteMenu(MenuDto menuDto);

    List<Menu> getMenuWithTree(Long rootId);

    List<Menu> getListByPid(Long pid);
}
