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

import cn.nianxx.thhotel.platform.identity.common.result.AuthMenuResult;
import cn.nianxx.thhotel.platform.navigation.repository.PlatformNavigationRepository;
import cn.nianxx.thhotel.platform.navigation.service.NavigationService;
import java.util.List;
import org.springframework.stereotype.Service;

/**
 * 平台菜单服务实现。菜单响应仅返回可见入口，隐藏详情路由不作为菜单项输出。
 */
@Service
public class NavigationServiceImpl implements NavigationService {

    private final PlatformNavigationRepository navigationRepository;

    /**
     * 注入菜单仓储，菜单服务只负责权限过滤后的响应转换。
     */
    public NavigationServiceImpl(PlatformNavigationRepository navigationRepository) {
        this.navigationRepository = navigationRepository;
    }

    /**
     * 根据权限码过滤可见菜单，并转换为前端需要的稳定字段。
     */
    @Override
    public List<AuthMenuResult> listVisibleMenus(List<String> permissionCodes) {
        return navigationRepository.listVisibleMenus(permissionCodes).stream()
                .map(menu -> new AuthMenuResult(
                        menu.getMenuCode(),
                        menu.getMenuName(),
                        menu.getRoutePath(),
                        menu.getComponentKey(),
                        menu.getIconKey(),
                        menu.getPermissionCode(),
                        menu.getSortOrder()))
                .toList();
    }
}
