package cn.cslg.pas.service;

import cn.cslg.pas.common.model.dto.QueryPathStructureNameDTO;
import cn.cslg.pas.common.model.dto.StructureAddNewDTO;
import cn.cslg.pas.common.model.dto.StructureQueryPageDTO;
import cn.cslg.pas.common.model.dto.StructureUpdateDTO;
import cn.cslg.pas.common.model.vo.PathStructureNameVO;
import cn.cslg.pas.common.model.vo.StructureVO;
import cn.cslg.pas.domain.Structure;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 架构的Service层接口
 *
 * @Author chenyu
 * @Date 2023/3/10
 */
public interface IStructureService extends IService<Structure> {
    /**
     * 新增架构
     *
     * @param structureAddNewDTO 新增架构DTO对象
     * @param files              架构图片
     */
    @Transactional
    void addNew(StructureAddNewDTO structureAddNewDTO, List<MultipartFile> files);


    /**
     * 修改架构
     *
     * @param structureUpdateDTO 修改架构DTO对象
     * @param files              架构图片
     */
    @Transactional
    void update(StructureUpdateDTO structureUpdateDTO, List<MultipartFile> files);

    /**
     * 分页查询架构树
     *
     * @param structureQueryPageDTO 分页信息
     * @return 返回查询到的数据
     */
    StructureVO query(StructureQueryPageDTO structureQueryPageDTO);

    /**
     * 查询所有架构的路径和路径拼接成的架构名称
     *
     * @param queryPathStructureNameDTO   数据DTO对象
     * @return 返回查询到的数据
     */
    List<PathStructureNameVO> queryPathStructureName(QueryPathStructureNameDTO queryPathStructureNameDTO);

    /**
     * 删除架构
     *
     * @param structureId 架构id
     */
    @Transactional
    void delete(Integer structureId);

}
