package com.cpop.system.business.service;

import com.cpop.system.business.bo.MenuBo;
import com.cpop.system.business.bo.MenuListBo;
import com.cpop.system.business.vo.MenuRouteVo;
import com.cpop.system.business.vo.MenuVo;
import com.mybatisflex.core.service.IService;
import com.cpop.system.business.entity.Menu;

import java.util.List;

/**
 * 系统菜单表 服务层。
 *
 * @author DB
 * @since 2023-10-19
 */
public interface MenuService extends IService<Menu> {


    /**
     * @descriptions 获取菜单路由
     * @author DB
     * @date 2023/10/19 16:32
     * @return: java.util.List<com.cpop.system.business.vo.MenuRouteVo>
     */
    List<MenuRouteVo> getSysMenuList();

    /**
     * @descriptions 获取系统菜单树列表
     * @author DB
     * @date 2023/09/07 15:53
     * @param bo 请求参数
     * @return java.util.List<com.jambox.oam.business.vo.OamMenuVo>
     */
    List<MenuVo> getSysMenuTreeList(MenuListBo bo);

    /**
     * @descriptions 获取目录与菜单树
     * @author DB
     * @date 2023/09/07 17:42
     * @return java.util.List<com.jambox.system.business.vo.SysMenuVo>
     */
    List<MenuVo> getDirectoryAndMenuTreeList();

    /**
     * @descriptions 新增系统菜单
     * @author DB
     * @date 2023/09/07 17:50
     * @param bo 请求参数
     */
    void insertSysMenu(MenuBo bo);

    /**
     * @Description: 修改系统菜单表
     * @param bo 请求参数
     * @Author: DB
     * @Date: 2023/5/10 16:01
     **/
    void updateSysMenu(MenuBo bo);

    /**
     * @Description: 删除系统菜单表
     * @param id 主键id
     * @Author: DB
     * @Date: 2023/5/10 16:01
     **/
    void removeSysMenu(String id);
}
