package com.qiaoba.api.system.service;

import com.qiaoba.api.system.entity.SysMenu;
import com.qiaoba.api.system.entity.param.SysMenuParam;
import com.qiaoba.api.system.entity.vo.RouterVo;
import com.qiaoba.api.system.entity.vo.SysMenuVo;

import java.util.List;

/**
 * 菜单对外暴露接口
 *
 * @author ailanyin
 * @version 1.0
 * @since 2023-5-5 11:25:33
 */
public interface SysMenuApiService {

    /**
     * 新增菜单
     *
     * @param sysMenu sysMenu
     * @return > 0 = success
     */
    int insert(SysMenu sysMenu);

    /**
     * 更新菜单
     *
     * @param sysMenu sysMenu
     * @return > 0 = success
     */
    int updateById(SysMenu sysMenu);

    /**
     * 查询列表
     *
     * @param param 条件
     * @return 菜单列表
     */
    List<SysMenu> selectList(SysMenuParam param);

    /**
     * 查询详细
     *
     * @param menuId 菜单Id
     * @return 菜单信息
     */
    SysMenu selectById(String menuId);

    /**
     * 删除菜单
     *
     * @param menuId 菜单Id
     * @return > 0 = success
     */
    int deleteById(String menuId);

    /**
     * 通过 userId 查询目录和菜单
     *
     * @param userId userId
     * @return list
     */
    List<SysMenuVo> selectByUserId(String userId);

    /**
     * 菜单转路由
     *
     * @param menus 菜单列表
     * @return 路由列表
     */
    List<RouterVo> menusToRouters(List<SysMenuVo> menus);

}
