package com.codvision.auth.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.codvision.auth.entity.SysMenu;
import com.codvision.auth.entity.dto.SysMenuQueryDTO;
import com.codvision.auth.entity.vo.SysMenuVO;
import com.codvision.webcore.bean.QueryPage;
import com.codvision.webcore.service.IBaseService;

import java.util.List;

/**
 * <p>
 * 系统菜单 服务类
 * </p>
 *
 * @author lingee
 * @since 2023-11-09
 */
public interface ISysMenuService extends IBaseService<SysMenu, SysMenuVO> {

    /**
     * 获取系统菜单详情
     *
     * @param id
     * @return 系统菜单
     */
    SysMenuVO getDetail(Long id);

    /**
     * 根据条件查询系统菜单
     *
     * @param queryBean 查询条件
     * @return 系统菜单列表
     */
    List<SysMenuVO> listAll(SysMenu queryBean);

    /**
     * 根据查询条件查询菜单分页列表
     *
     * @param queryPage 分页条件
     * @param queryDTO  查询条件
     * @return 分页结果
     */
    IPage<SysMenuVO> findAll(QueryPage<SysMenu> queryPage, SysMenuQueryDTO queryDTO);

    /**
     * 添加系统菜单
     *
     * @param sysMenu 系统菜单
     */
    void addSysMenu(SysMenu sysMenu);

    /**
     * 更新系统菜单
     *
     * @param sysMenu 系统菜单
     */
    void updateSysMenu(SysMenu sysMenu);

    /**
     * 获取用户菜单权限
     *
     * @param queryDTO 查询条件
     * @return 菜单权限
     */
    List<SysMenuVO> getUserMenuList(SysMenuQueryDTO queryDTO);
}
