package com.usky.ems.service;

import com.usky.common.mybatis.core.CrudService;
import com.usky.ems.domain.BaseSpace;
import com.usky.ems.service.vo.BaseSpaceForestNodeVO;

import java.util.List;

/**
 * 空间服务（base_space）
 */
public interface BaseSpaceService extends CrudService<BaseSpace> {

    /**
     * 构建空间树
     *
     * @return 根节点（如存在多个根，则返回一个虚拟根节点）
     */
    BaseSpaceForestNodeVO tree();

    /**
     * 获取当前用户在指定空间下有权限访问的空间ID列表
     * 目前简单返回传入的 spaceId 本身，后续可根据实际权限模型扩展
     */
    List<Long> getAuthorizedSpaceIds(Long spaceId);

    /**
     * 递归获取某空间节点下的所有子节点（不包含自身）
     */
    List<BaseSpace> recursiveAllChildrenNode(Long spaceId);

    /**
     * 更新项目根空间名称（与 ems_project 名称同步）
     */
    void updateProjectSpaceName(Long spaceId, String newName);

    /**
     * 是否叶子节点：无子空间
     */
    boolean isLeafSpace(Long spaceId);
}
