package com.yhy.module.core.service.resource;

import com.yhy.module.core.controller.admin.resource.vo.ResourceCategorySimpleRespVO;
import com.yhy.module.core.controller.admin.resource.vo.ResourceCategoryTreeNodeVO;
import com.yhy.module.core.controller.admin.resource.vo.ResourceCategoryTreeSaveReqVO;
import com.yhy.module.core.controller.admin.resource.vo.ResourceCategoryTreeMappingSaveReqVO;

import java.util.List;

/**
 * 工料机机类树 Service
 *
 * @author yihuiyong
 */
public interface ResourceCategoryTreeService {

    /**
     * 创建工料机机类树节点
     */
    Long createNode(ResourceCategoryTreeSaveReqVO reqVO);

    /**
     * 更新工料机机类树节点
     */
    void updateNode(ResourceCategoryTreeSaveReqVO reqVO);

    /**
     * 删除工料机机类树节点
     */
    void deleteNode(Long id);

    /**
     * 获取工料机机类树
     */
    List<ResourceCategoryTreeNodeVO> getTree();

    /**
     * 获取指定节点下的类别列表（简化版，只返回基本信息）
     */
    List<ResourceCategorySimpleRespVO> getCategoriesByTreeNode(Long treeNodeId);

    /**
     * 添加树节点与类别的关联
     */
    void addCategoryMapping(ResourceCategoryTreeMappingSaveReqVO reqVO);

    /**
     * 删除树节点与类别的关联
     */
    void removeCategoryMapping(Long treeNodeId, Long categoryId);
    
    /**
     * 交换两个节点的排序
     *
     * @param nodeId1 节点1的ID
     * @param nodeId2 节点2的ID
     */
    void swapSortOrder(Long nodeId1, Long nodeId2);
}
