AreaService.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package com.nokia.service;
  2. import com.nokia.common.R;
  3. import com.nokia.dao.AreaDao;
  4. import com.nokia.pojo.Area;
  5. import com.nokia.pojo.UserRoleCity;
  6. import com.nokia.vo.GetAreasByCityIdDto;
  7. import com.nokia.vo.TreeAreaVo;
  8. import org.springframework.stereotype.Service;
  9. import javax.servlet.http.HttpSession;
  10. import java.util.ArrayList;
  11. import java.util.HashMap;
  12. import java.util.List;
  13. import java.util.Map;
  14. @Service
  15. public class AreaService {
  16. private final AreaDao areaDao;
  17. private final UserService userService;
  18. public AreaService(AreaDao areaDao, UserService userService) {
  19. this.areaDao = areaDao;
  20. this.userService = userService;
  21. }
  22. public R<TreeAreaVo> tree(HttpSession session) {
  23. UserRoleCity role = userService.getUserRoleCity(session);
  24. Integer cityId = role.getCityId();
  25. // 河北省用户返回省市区三级
  26. if (cityId.equals(-1)) {
  27. List<TreeAreaVo> secondVoList = new ArrayList<>();
  28. TreeAreaVo vo = new TreeAreaVo();
  29. vo.setLabel("河北省");
  30. vo.setValue(-1);
  31. vo.setChildren(secondVoList);
  32. // 查询所有地区
  33. List<Area> areas = areaDao.getAll();
  34. Map<Integer, List<Area>> parentMap = getParentMap(areas);
  35. // 地市列表
  36. List<Area> secondList = parentMap.get(-1);
  37. for (Area tt : secondList) {
  38. List<TreeAreaVo> thirdVoList = new ArrayList<>();
  39. TreeAreaVo secondVo = new TreeAreaVo();
  40. secondVo.setLabel(tt.getAreaName());
  41. secondVo.setValue(tt.getAreaId());
  42. secondVo.setChildren(thirdVoList);
  43. secondVoList.add(secondVo);
  44. // 区县列表
  45. List<Area> thirdList = parentMap.get(tt.getAreaId());
  46. for (Area ttt : thirdList) {
  47. TreeAreaVo thirdVo = new TreeAreaVo();
  48. thirdVo.setLabel(ttt.getAreaName());
  49. thirdVo.setValue(ttt.getAreaId());
  50. thirdVoList.add(thirdVo);
  51. }
  52. }
  53. return R.ok(vo);
  54. }
  55. // 地市用户返回市区两级
  56. Area area = areaDao.selectById(cityId);
  57. List<TreeAreaVo> thirdVoList = new ArrayList<>();
  58. TreeAreaVo vo = new TreeAreaVo();
  59. vo.setLabel(area.getAreaName());
  60. vo.setValue(area.getAreaId());
  61. vo.setChildren(thirdVoList);
  62. // 查询区县列表
  63. List<Area> areas = areaDao.getByParentId(cityId);
  64. for (Area t : areas) {
  65. TreeAreaVo thirdVo = new TreeAreaVo();
  66. thirdVo.setLabel(t.getAreaName());
  67. thirdVo.setValue(t.getAreaId());
  68. thirdVoList.add(thirdVo);
  69. }
  70. return R.ok(vo);
  71. }
  72. public R<TreeAreaVo> treeProvinceCity(HttpSession session) {
  73. UserRoleCity role = userService.getUserRoleCity(session);
  74. Integer cityId = role.getCityId();
  75. // 河北省用户返回省市两级
  76. if (cityId.equals(-1)) {
  77. List<TreeAreaVo> secondVoList = new ArrayList<>();
  78. TreeAreaVo vo = new TreeAreaVo();
  79. vo.setLabel("河北省");
  80. vo.setValue(-1);
  81. vo.setChildren(secondVoList);
  82. // 查询地市列表
  83. List<Area> areas = areaDao.getByParentId(-1);
  84. for (Area t : areas) {
  85. TreeAreaVo secondVo = new TreeAreaVo();
  86. secondVo.setLabel(t.getAreaName());
  87. secondVo.setValue(t.getAreaId());
  88. secondVoList.add(secondVo);
  89. }
  90. return R.ok(vo);
  91. }
  92. // 地市用户返回地市一级
  93. Area area = areaDao.selectById(cityId);
  94. TreeAreaVo vo = new TreeAreaVo();
  95. vo.setLabel(area.getAreaName());
  96. vo.setValue(area.getAreaId());
  97. return R.ok(vo);
  98. }
  99. public R<List<Area>> getAreasByCityId(GetAreasByCityIdDto dto) {
  100. return R.ok(areaDao.getAreasByCityId(dto.getCityId()));
  101. }
  102. /**
  103. * 得到地区父地图
  104. *
  105. * @param areas 区域
  106. * @return {@link Map}<{@link Integer}, {@link List}<{@link Area}>>
  107. */
  108. private Map<Integer, List<Area>> getParentMap(List<Area> areas) {
  109. Map<Integer, List<Area>> parentMap = new HashMap<>();
  110. for (Area t : areas)
  111. {
  112. parentMap.putIfAbsent(t.getParentId(), new ArrayList<>());
  113. parentMap.get(t.getParentId()).add(t);
  114. }
  115. return parentMap;
  116. }
  117. }