diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/OpenAreaTreeVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/OpenAreaTreeVO.java index b0ffe2fc3..484a13c96 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/OpenAreaTreeVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/OpenAreaTreeVO.java @@ -54,7 +54,7 @@ public class OpenAreaTreeVO { public static List convertTree(List allOpenArea, String keyword, Boolean applyFlag){ long startTime = System.currentTimeMillis(); List firstArea = allOpenArea.stream().filter(o -> Objects.isNull(o.getParentId())).collect(Collectors.toList()); - Map> openAreaParentMap = allOpenArea.stream().filter(o->Objects.nonNull(o.getParentId())).collect(Collectors.groupingBy(k -> k.getParentId())); + Map> openAreaParentMap = allOpenArea.stream().distinct().filter(o->Objects.nonNull(o.getParentId())).collect(Collectors.groupingBy(k -> k.getParentId())); List allTree = new ArrayList<>(); for (HyOpenAreaInfoDO openAreaInfo : firstArea) { OpenAreaTreeVO node = copyProperties(openAreaInfo); @@ -68,23 +68,23 @@ public class OpenAreaTreeVO { && (Objects.isNull(applyFlag) || AreaStatusEnum.OPEN.getCode().equals(o.getAreaStatus()) || AreaStatusEnum.OPEN.getCode().equals(o.getAreaStatus()))) .collect(Collectors.toList()); Map openAreaMap = allOpenArea.stream().collect(Collectors.toMap(k -> k.getId(), Function.identity())); - List list = new ArrayList<>(); + List filterAndParentList = new ArrayList<>(); //向上处理节点 for (HyOpenAreaInfoDO openAreaInfo : filterList) { - list.add(openAreaInfo); + filterAndParentList.add(openAreaInfo); while (Objects.nonNull(openAreaInfo) && Objects.nonNull(openAreaInfo.getParentId())){ openAreaInfo = openAreaMap.get(openAreaInfo.getParentId()); - if(Objects.isNull(openAreaInfo)){ - continue; + if(Objects.nonNull(openAreaInfo) && !filterAndParentList.contains(openAreaInfo)){ + filterAndParentList.add(openAreaInfo); } - list.add(openAreaInfo); } } log.info("2#耗时:{}", System.currentTimeMillis() - startTime); List resultList = new ArrayList<>(); - List filterFirstArea = list.stream().filter(o -> Objects.isNull(o.getParentId())).distinct().collect(Collectors.toList()); - Map> filterOpenAreaParentMap = list.stream().filter(Objects::nonNull).filter(o->Objects.nonNull(o.getParentId())).collect(Collectors.groupingBy(k -> k.getParentId())); + List filterFirstArea = filterAndParentList.stream().filter(o -> Objects.isNull(o.getParentId())).collect(Collectors.toList()); + Map> filterOpenAreaParentMap = filterAndParentList.stream().filter(Objects::nonNull).filter(o->Objects.nonNull(o.getParentId())).collect(Collectors.groupingBy(k -> k.getParentId())); for (HyOpenAreaInfoDO openAreaInfo : filterFirstArea) { + Long id = openAreaInfo.getId(); OpenAreaTreeVO node = copyProperties(openAreaInfo); List childList = dealChild(openAreaInfo, filterOpenAreaParentMap); if(CollectionUtils.isEmpty(childList)){ diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/controller/OpenAreaController.java b/coolstore-partner-webc/src/main/java/com/cool/store/controller/OpenAreaController.java index 6a3d2c16e..cd2b641af 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/controller/OpenAreaController.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/controller/OpenAreaController.java @@ -53,7 +53,7 @@ public class OpenAreaController { }) public ResponseResult> getOpenAreaList(@RequestParam(value = "keyword",required = false)String keyword, @RequestParam(value = "applyFlag",required = false)Boolean applyFlag){ - List openAreaTreeVOS = openAreaService.queryAllOpenAreaByKeyword(keyword,applyFlag,Boolean.FALSE); + List openAreaTreeVOS = openAreaService.searchOpenArea(keyword,applyFlag,Boolean.FALSE); return ResponseResult.success(openAreaTreeVOS); }