package cn.estsh.i3plus.core.api.iservice.busi;


import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
 * @Description : 系统功能业务接口 
 * @Reference   :
 * @Author      : wei.peng
 * @Date        : 2018-10-22 15:18:14.958
 * @Modify      :
 **/
public interface ISysMenuService {

    /**
     * 修改数据
     *
     * @param sysMenu
     */
    @ApiOperation(value = "更新菜单信息")
    void updateSysMenu(SysMenu sysMenu);

    /**
     * 修改权限状态
     * @param id        修改权限状态
     * @param status    状态
     * @param user      当前会话用户
     * @return
     */
    @ApiOperation(value = "更新菜单信息",notes = "根据ID 更新菜单状态信息")
    void updateSysMenuStatus(Long id, int status, SessionUser user);

    /**
     * 批量修改状态
     * @param ids
     * @param status
     * @param user
     */
    @ApiOperation(value = "更新菜单信息",notes = "根据ID 批量更新菜单状态信息")
    void updateSysMenuStatusByIds(Long[] ids, int status, SessionUser user);

    /**
     * 根据Key 删除数据
     * @param id
     * @return
     */
    @ApiOperation(value = "删除菜单信息",notes = "根据ID 删除菜单信息")
    void deleteSysMenuById(Long id);

    /**
     * 根据id批量删除
     * @param ids id数组
     * @return
     */
    @ApiOperation(value = "删除菜单信息",notes = "根据ID 批量删除菜单信息")
    void deleteSysMenuByIds(Long[] ids);

    /**
     * 新增数据
     *
     * @param sysMenu
     * @return
     */
    @ApiOperation(value = "新增菜单信息")
    SysMenu insertSysMenu(SysMenu sysMenu);

    /**
     * 查询所有数据
     *
     * @return
     */
    @ApiOperation(value = "查询菜单信息",notes = "查询所有菜单信息")
    List<SysMenu> findSysMenuAll();

    @ApiOperation(value = "查询菜单信息",notes = "根据父节点 ID 查询所有菜单信息")
    List<SysMenu> findSysMenuByParentId(Long parentId);

    /**
     * 根据id 数据
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "查询菜单信息",notes = "根据ID查询菜单信息")
    SysMenu getSysMenuById(Long id);

    /**
     * 复杂查询
     * @param menu
     * @param pager
     * @return
     */
    @ApiOperation(value = "查询菜单信息",notes = "查询菜单信息(分页、组合)")
    ListPager<SysMenu> querySysMenu(SysMenu menu, Pager pager);



}
