Merge remote-tracking branch 'origin/cc_20230520_partner' into cc_20230520_partner

This commit is contained in:
苏竹红
2023-06-29 09:48:25 +08:00
7 changed files with 120 additions and 1 deletions

View File

@@ -1,10 +1,18 @@
package com.cool.store.vo;
import com.cool.store.entity.HyOpenAreaInfoDO;
import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @Author suzhuhong
@@ -36,5 +44,77 @@ public class OpenAreaTreeVO {
private String detailBanner;
@ApiModelProperty("子区域")
List<OpenAreaTreeVO> childNode;
private List<OpenAreaTreeVO> childNode;
public static List<OpenAreaTreeVO> convertTree(List<HyOpenAreaInfoDO> allOpenArea, String keyword){
List<HyOpenAreaInfoDO> firstArea = allOpenArea.stream().filter(o -> Objects.isNull(o.getParentId())).collect(Collectors.toList());
Map<Long, List<HyOpenAreaInfoDO>> openAreaParentMap = allOpenArea.stream().filter(o->Objects.nonNull(o.getParentId())).collect(Collectors.groupingBy(k -> k.getParentId()));
List<OpenAreaTreeVO> allTree = new ArrayList<>();
for (HyOpenAreaInfoDO openAreaInfo : firstArea) {
OpenAreaTreeVO node = copyProperties(openAreaInfo);
List<OpenAreaTreeVO> childList = dealChild(openAreaInfo, openAreaParentMap);
node.setChildNode(childList);
allTree.add(node);
}
Map<Long, List<OpenAreaTreeVO>> childMap = allTree.stream().collect(Collectors.toMap(k -> k.getId(), v -> v.getChildNode()));
List<HyOpenAreaInfoDO> filterList = allOpenArea.stream().filter(o -> o.getAreaPath().contains(keyword)).collect(Collectors.toList());
Map<Long, HyOpenAreaInfoDO> openAreaMap = allOpenArea.stream().collect(Collectors.toMap(k -> k.getId(), Function.identity()));
List<HyOpenAreaInfoDO> list = new ArrayList<>();
//向上处理节点
for (HyOpenAreaInfoDO openAreaInfo : filterList) {
list.add(openAreaInfo);
while (Objects.nonNull(openAreaInfo) && Objects.nonNull(openAreaInfo.getParentId())){
openAreaInfo = openAreaMap.get(openAreaInfo.getParentId());
if(Objects.isNull(openAreaInfo)){
continue;
}
list.add(openAreaInfo);
}
}
List<OpenAreaTreeVO> resultList = new ArrayList<>();
List<HyOpenAreaInfoDO> filterFirstArea = list.stream().filter(o -> Objects.isNull(o.getParentId())).distinct().collect(Collectors.toList());
Map<Long, List<HyOpenAreaInfoDO>> filterOpenAreaParentMap = list.stream().filter(Objects::nonNull).filter(o->Objects.nonNull(o.getParentId())).collect(Collectors.groupingBy(k -> k.getParentId()));
for (HyOpenAreaInfoDO openAreaInfo : filterFirstArea) {
OpenAreaTreeVO node = copyProperties(openAreaInfo);
List<OpenAreaTreeVO> childList = dealChild(openAreaInfo, filterOpenAreaParentMap);
if(CollectionUtils.isEmpty(childList)){
childList = childMap.get(node.getId());
}
node.setChildNode(childList);
resultList.add(node);
}
return resultList;
}
public static List<OpenAreaTreeVO> dealChild(HyOpenAreaInfoDO areaInfo, Map<Long, List<HyOpenAreaInfoDO>> openAreaParentMap){
List<HyOpenAreaInfoDO> childList = openAreaParentMap.get(areaInfo.getId());
if(CollectionUtils.isEmpty(childList)){
return Lists.newArrayList();
}
List<OpenAreaTreeVO> resultList = new ArrayList<>();
for (HyOpenAreaInfoDO hyOpenAreaInfo : childList) {
OpenAreaTreeVO openAreaTree = copyProperties(hyOpenAreaInfo);
openAreaTree.setChildNode(dealChild(hyOpenAreaInfo, openAreaParentMap));
resultList.add(openAreaTree);
}
return resultList;
}
/**
* 属性处理
* @param area
* @return
*/
public static OpenAreaTreeVO copyProperties(HyOpenAreaInfoDO area){
OpenAreaTreeVO result = new OpenAreaTreeVO();
result.setId(area.getId());
result.setParentId(area.getParentId());
result.setAreaName(area.getAreaName());
result.setAreaPath(area.getAreaPath());
result.setAreaStatus(area.getAreaStatus());
result.setBackgroundBanner(area.getBackgroundBanner());
result.setDetailBanner(area.getDetailBanner());
return result;
}
}