package shop.alien.store.service;

import shop.alien.entity.result.R;
import shop.alien.entity.store.LifeSysMenu;

import java.util.List;

/**
 * 菜单权限表 服务接口
 *
 * @author system
 * @since 2025-01-XX
 */
public interface LifeSysMenuService {

    /**
     * 新增菜单
     *
     * @param menu 菜单信息
     * @return R<LifeSysMenu>
     */
    R<LifeSysMenu> addMenu(LifeSysMenu menu);

    /**
     * 更新菜单
     *
     * @param menu 菜单信息
     * @return R<LifeSysMenu>
     */
    R<LifeSysMenu> updateMenu(LifeSysMenu menu);

    /**
     * 删除菜单
     *
     * @param menuId 菜单ID
     * @return R<Boolean>
     */
    R<Boolean> deleteMenu(Long menuId);

    /**
     * 根据ID查询菜单
     *
     * @param menuId 菜单ID
     * @return R<LifeSysMenu>
     */
    R<LifeSysMenu> getMenuById(Long menuId);

    /**
     * 查询菜单树形结构（可选根据菜单名称模糊查询）
     *
     * @param menuName 菜单名称（模糊查询）
     * @return R<List<LifeSysMenu>>
     */
    R<List<LifeSysMenu>> getMenuTree(String menuName);

    /**
     * 根据父菜单ID查询子菜单列表
     *
     * @param parentId 父菜单ID
     * @return R<List<LifeSysMenu>>
     */
    R<List<LifeSysMenu>> getMenuListByParentId(Long parentId);

     /**
     * 根据用户ID查询用户菜单树形结构
     *
     * @param userId 用户ID
     * @return R<List<LifeSysMenu>>
     */
    R<List<LifeSysMenu>> getMenuByUserId(Long userId, Long ifTree);
}

