package com.njcn.gather.user.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.gather.user.user.pojo.param.SysFunctionParam;
import com.njcn.gather.user.user.pojo.po.SysFunction;
import com.njcn.gather.user.user.pojo.vo.MenuVO;

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

/**
 * @author caozehui
 * @date 2024-11-12
 */
public interface ISysFunctionService extends IService<SysFunction> {

    /**
     * 根据关键字模糊查询菜单（资源）树
     *
     * @param keyword 关键字
     * @return 菜单（资源）树
     */
    List<SysFunction> getFunctionTreeByKeyword(String keyword);

    /**
     * 添加菜单（资源）
     *
     * @param functionParam 资源参数
     * @return 是否添加成功
     */
    boolean addFunction(SysFunctionParam functionParam);

    /**
     * 修改菜单（资源）
     *
     * @param functionParam 资源参数
     * @return 是否更新成功
     */
    boolean updateFunction(SysFunctionParam.UpdateParam functionParam);

    /**
     * 删除菜单（资源）
     *
     * @param id 资源id
     */
    boolean deleteFunction(String id);

    /**
     * 获取树形结构的菜单（资源
     *
     * @param isContainButton 是否包含按钮
     * @return 树形结构的资源
     */
    List<SysFunction> getFunctionTree(boolean isContainButton);

    /**
     * 根据用户id获取菜单
     *
     * @return 路由菜单
     */
    List<MenuVO> getMenuByUserId(String userId);

    /**
     * 根据用户id获取按钮
     * @param userId 用户id
     * @return 按钮
     */
    Map<String, List<String>> getButtonByUserId(String userId);

}
