package io.gisbi.application.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import io.gisbi.application.system.domain.Menu;

import java.util.List;
import java.util.Map;
/**
 * <p>
 * 菜单及按钮 服务类
 * </p>
 *
 * @author lilin
 * @since 2025-05-08
 */
public interface IMenuService extends IService<Menu> {
    /***********************************
     * 用途说明：获取菜单结构树（含按钮）
     * 参数说明
     *  appId      应用ID 关联应用系统
     *  name       名称
     * isdisplay   是否显示
     * 返回值说明:  菜单结构树集合
     ***********************************/
    List<Map<String, Object>> getMenuTree(String appId, String name, String isdisplay);


    /***********************************
     * 用途说明：新增菜单及按钮
     * 参数说明
     * sysMenu        菜单或按钮表对象
     * 返回值说明:   是否添加成功提示
     ***********************************/
    boolean addMenu(Menu menu);

    /***********************************
     * 用途说明：根据id删除菜单或按钮
     * 参数说明
     * id        删除列的id
     * 返回值说明:   是否删除成功
     ***********************************/
    boolean deleteMenuById(String id);

    /***********************************
     * 用途说明：获取分配权限
     * 参数说明
     *  appId      系统id
     *  roleId     角色ID
     * 返回值说明:  菜单结构树集合
     ***********************************/
    List<Map<String, Object>> permissionAssignment(String appId ,String roleId);

    boolean changeOrder(String menuId, String direction);

    boolean moveMenu(String menuId, String targetParentId);


}
