package com.lesingle.creation.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lesingle.creation.dto.menu.CreateMenuDTO;
import com.lesingle.creation.dto.menu.UpdateMenuDTO;
import com.lesingle.creation.entity.Menu;
import com.lesingle.creation.vo.menu.MenuDetailVO;
import com.lesingle.creation.vo.menu.MenuTreeVO;

import java.util.List;

/**
 * 菜单服务接口
 */
public interface MenuService extends IService<Menu> {

    /**
     * 创建菜单
     *
     * @param dto 创建菜单 DTO
     * @param operatorId 操作人 ID
     * @return 菜单详情 VO
     */
    MenuDetailVO create(CreateMenuDTO dto, Long operatorId);

    /**
     * 获取菜单树
     *
     * @return 菜单树
     */
    List<MenuTreeVO> tree();

    /**
     * 获取用户菜单（根据用户角色权限）
     *
     * @param userId 用户 ID
     * @param tenantId 租户 ID
     * @return 用户菜单树
     */
    List<MenuTreeVO> getUserMenus(Long userId, Long tenantId);

    /**
     * 根据 ID 查询菜单详情
     *
     * @param id 菜单 ID
     * @return 菜单详情 VO
     */
    MenuDetailVO detail(Long id);

    /**
     * 更新菜单
     *
     * @param id 菜单 ID
     * @param dto 更新菜单 DTO
     * @return 菜单详情 VO
     */
    MenuDetailVO update(Long id, UpdateMenuDTO dto);

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