package com.dxhy.admin.sys.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dxhy.admin.sys.entity.SysMenuEntity;
import com.dxhy.common.utils.PageUtils;

/**
 * 菜单管理
 *
 * @author jiaohongyang
 */
public interface SysMenuService extends IService<SysMenuEntity> {
    /**
     * 分页查询菜单信息
     *
     * @param params
     *            查询条件
     * @return 分页信息
     */
    PageUtils queryPage(Map<String, Object> params);

    /**
     * 根据父菜单，查询子菜单
     *
     * @param parentId
     *            父菜单ID
     * @param menuIdList
     *            用户菜单ID
     * @return 菜单信息
     */
    List<SysMenuEntity> queryListParentId(Long parentId, List<Long> menuIdList);

    /**
     * 根据父菜单，查询子菜单
     *
     * @param parentId
     *            父菜单ID
     * @return 菜单信息
     */
    List<SysMenuEntity> queryListParentId(Long parentId);

    /**
     * 获取不包含按钮的菜单列表
     *
     * @return 菜单信息
     */
    List<SysMenuEntity> queryNotButtonList();

    /**
     * 获取用户菜单列表
     *
     * @param userId
     *            用户id
     * @return 菜单信息
     */
    List<SysMenuEntity> getUserMenuList(Long userId);

    /**
     * 删除
     *
     * @param menuId
     *            菜单id
     */
    void delete(Long menuId);

    /**
     * 保存菜单信息
     *
     * @param menu
     *            菜单信息
     * @return 返回信息
     */
    boolean saveMenu(SysMenuEntity menu);

    /**
     * 修改菜单信息
     *
     * @param menu
     *            菜单信息
     * @return 是否成功
     */
    boolean updateMenu(SysMenuEntity menu);

    /**
     * 根据集团编码和用户id查询菜单信息
     *
     * @param company
     *            集团编码
     * @param userId
     *            用户id
     * @return 菜单信息
     */
    List<SysMenuEntity> querylistMenu(String company, Long userId);

    /**
     * 查询所有菜单信息
     *
     * @return 菜单信息
     */
    List<SysMenuEntity> getMenuAll();

    /**
     * 查询菜单信息
     *
     * @return 菜单信息
     */
    List<SysMenuEntity> selectList();

    /**
     * 根据 id 查询菜单信息
     *
     * @param id
     *            主键id
     * @return 菜单信息
     */
    SysMenuEntity queryMenuById(Long id);

    /**
     * 日志 根据请求地址查询菜单信息
     *
     * @param menuUrl
     *            请求地址
     * @return 菜单信息
     */
    List<SysMenuEntity> queryMenuLog(String menuUrl);

    /**
     * 根据url 获取菜单信息
     *
     * @param url
     *            url
     * @param type
     *            类型
     * @return 菜单信息
     */
    SysMenuEntity queryMenuType(String url, int type, String systemCode);

    /**
     * 批量保存菜单信息
     *
     * @param menu
     *            菜单信息
     * @return 返回
     */
    void saveMenuBatch(List<SysMenuEntity> menu);

    /**
     * 获取集团编码关联菜单信息
     *
     * @param company
     *            集团编码
     * @return 菜单信息
     */
    List<SysMenuEntity> queryMenuRoleCompanyList(String company);

    /**
     * 保存 查询条件信息
     *
     * @param dataList
     *            显示列表信息
     * @return 返回信息
     */
    int saveQuery(String dataList);

    /**
     * 获取查询条件信息，供itax使用
     * 
     * @param menuId
     *            菜单id
     * @param type
     *            类型
     * @return 返回
     */
    List<SysMenuEntity> getQueryList(long menuId, int type);

    /**
     * 根据菜单id获取显示列表id
     * 
     * @param menuIds
     *            菜单ids
     * @return 显示列表ID
     */
    List<Long> queryIdList(List<Long> menuIds);
}
