package cn.nianxx.thhotel.platform.navigation.service;

import cn.nianxx.thhotel.platform.navigation.common.request.AdminMenuCreateRequest;
import cn.nianxx.thhotel.platform.navigation.common.request.AdminMenuUpdateRequest;
import cn.nianxx.thhotel.platform.common.result.PlatformPageResult;
import cn.nianxx.thhotel.platform.navigation.common.result.AdminMenuResult;
import cn.nianxx.thhotel.platform.security.common.dto.AuthenticatedUserContext;

/**
 * 管理后台菜单管理服务。第一版提供菜单查询。
 */
public interface AdminMenuManagementService {

    /**
     * 分页查询菜单列表。
     */
    PlatformPageResult<AdminMenuResult> queryMenus(
            String keyword,
            String menuStatus,
            Integer pageNum,
            Integer pageSize);

    /**
     * 查询菜单详情。
     */
    AdminMenuResult getMenu(String menuId);

    /**
     * 新增菜单定义。
     */
    AdminMenuResult createMenu(AdminMenuCreateRequest request, AuthenticatedUserContext actor);

    /**
     * 编辑菜单定义，菜单代码不允许修改。
     */
    AdminMenuResult updateMenu(String menuId, AdminMenuUpdateRequest request, AuthenticatedUserContext actor);
}
