liusheng
2025-04-23 ae3d8d1b4e5d77323197aa298e3c767dc4859f0e
smartor/src/main/java/com/smartor/service/impl/SvyCategoryServiceImpl.java
@@ -16,7 +16,10 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -51,23 +54,31 @@
    @Override
    public List<SvyCategoryVO> selectSvyCategoryList(SvyCategory svyCategory) {
        List<SvyCategory> svyCategories = svyCategoryMapper.selectSvyCategoryList(svyCategory);
        //将pid为空的,过滤掉
//        svyCategories = svyCategories.stream().filter(assort -> assort.getPid() == null).collect(Collectors.toList());
        List<SvyCategoryVO> svyCategoryVOS = DtoConversionUtils.sourceToTarget(svyCategories, SvyCategoryVO.class);
        //遍历查出来的数据,通过 id=pid 获取他们的子数据
        for (SvyCategoryVO svyCategoryVO : svyCategoryVOS) {
//            if (svyCategoryVO.getPid() != null) {
//                continue;
//            }
            SvyCategory svyCategory1 = new SvyCategory();
            svyCategory1.setPid(svyCategoryVO.getId());
            List<SvyCategory> svyCategoryList = svyCategoryMapper.selectSvyCategoryList(svyCategory1);
            if (!Collections.isEmpty(svyCategoryList)) {
                svyCategoryVO.setSvyCategoryList(svyCategoryList);
        List<SvyCategoryVO> rootList = new ArrayList<>();
        Map<Long, SvyCategoryVO> categoryMap = new HashMap<>();
        // 建立id->对象的映射
        for (SvyCategoryVO category : svyCategoryVOS) {
            categoryMap.put(category.getId(), category);
        }
        for (SvyCategoryVO category : svyCategoryVOS) {
            if (category.getPid() == null || category.getPid() == -1) {
                // 顶层节点
                rootList.add(category);
            } else {
                // 找到父节点,并添加到其子节点列表
                SvyCategoryVO parent = categoryMap.get(category.getPid());
                if (parent != null) {
                    SvyCategory sc = DtoConversionUtils.sourceToTarget(category, SvyCategory.class);
                    parent.getSvyCategoryList().add(sc);
                }
            }
        }
        return svyCategoryVOS;
        return rootList;
    }
    /**