SettingService.java 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package com.izouma.nineth.service;
  2. import com.alibaba.fastjson.JSON;
  3. import com.izouma.nineth.domain.Setting;
  4. import com.izouma.nineth.dto.PageQuery;
  5. import com.izouma.nineth.repo.SettingRepo;
  6. import com.izouma.nineth.utils.JpaUtils;
  7. import lombok.AllArgsConstructor;
  8. import org.springframework.data.domain.Page;
  9. import org.springframework.stereotype.Service;
  10. import java.util.*;
  11. @Service
  12. @AllArgsConstructor
  13. public class SettingService {
  14. private SettingRepo settingRepo;
  15. public Page<Setting> all(PageQuery pageQuery) {
  16. return settingRepo.findAll(JpaUtils.toSpecification(pageQuery, Setting.class), JpaUtils.toPageRequest(pageQuery));
  17. }
  18. public List<Setting> getTree(List<Setting> list1) {
  19. String s = JSON.toJSONString(list1);
  20. List<Setting> list = JSON.parseArray(s, Setting.class);
  21. Map<Long, Setting> dtoMap = new HashMap<>();
  22. for (Setting node : list) {
  23. dtoMap.put(node.getId(), node);
  24. }
  25. List<Setting> resultList = new ArrayList<>();
  26. for (Map.Entry<Long, Setting> entry : dtoMap.entrySet()) {
  27. Setting node = entry.getValue();
  28. if (node.getParent() == null) {
  29. // 如果是顶层节点,直接添加到结果集合中
  30. resultList.add(node);
  31. } else {
  32. // 如果不是顶层节点,找其父节点,并且添加到父节点的子节点集合中
  33. if (dtoMap.get(node.getParent()) != null) {
  34. dtoMap.get(node.getParent()).getChildren().add(node);
  35. }
  36. }
  37. }
  38. resultList.sort(Comparator.comparing(Setting::getId));
  39. return resultList;
  40. }
  41. }