package com.njcn.msgpush.module.system.service.permission;

import com.njcn.msgpush.module.system.controller.admin.permission.vo.menu.MenuListReqVO;
import com.njcn.msgpush.module.system.controller.admin.permission.vo.menu.MenuSaveVO;
import com.njcn.msgpush.module.system.dal.dataobject.permission.MenuDO;

import java.util.Collection;
import java.util.List;

public interface MenuService {

    Long createMenu(MenuSaveVO createReqVO);

    void updateMenu(MenuSaveVO updateReqVO);

    void deleteMenu(Long id);

    void deleteMenuList(List<Long> ids);

    List<MenuDO> getMenuList();

    List<MenuDO> filterDisableMenus(List<MenuDO> list);

    List<MenuDO> getMenuList(MenuListReqVO reqVO);

    List<Long> getMenuIdListByPermissionFromCache(String permission);

    MenuDO getMenu(Long id);

    List<MenuDO> getMenuList(Collection<Long> ids);

    /**
     * 校验菜单们是否有效。如下情况，视为无效：
     * 1. 菜单编号不存在
     * 2. 菜单被禁用
     *
     * @param ids 菜单编号数组
     */
    void validateMenuList(Collection<Long> ids);

}
