package com.usky.system.service;

import com.usky.system.service.vo.MenuBindingsResult;
import com.usky.system.service.vo.MenuUnbindRequest;
import com.usky.system.service.vo.MenuUnbindResult;

/**
 * 菜单绑定查询 / 解绑（独立于原有单条删除逻辑）
 */
public interface SysMenuCascadeService {

    /**
     * 查询菜单的关联绑定（子菜单、角色、租户、平台、帮助中心栏目）
     *
     * @param menuId 菜单ID
     * @return 绑定详情
     */
    MenuBindingsResult getMenuBindings(Long menuId);

    /**
     * 精确解绑菜单关联：角色 → 租户 → 应用(平台)
     * <p>必须指定 roleIds / tenantIds / platformIds 中至少一类，避免清空该菜单全部绑定</p>
     *
     * @param request 解绑请求
     * @return 解绑统计
     */
    MenuUnbindResult unbindMenu(MenuUnbindRequest request);
}
