123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- package com.nokia.service;
- import com.nokia.common.R;
- import com.nokia.dao.AreaDao;
- import com.nokia.pojo.Area;
- import com.nokia.pojo.UserRoleCity;
- import com.nokia.vo.GetAreasByCityIdDto;
- import com.nokia.vo.TreeAreaVo;
- import org.springframework.stereotype.Service;
- import javax.servlet.http.HttpSession;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- @Service
- public class AreaService {
- private final AreaDao areaDao;
- private final UserService userService;
- public AreaService(AreaDao areaDao, UserService userService) {
- this.areaDao = areaDao;
- this.userService = userService;
- }
- public R<TreeAreaVo> tree(HttpSession session) {
- UserRoleCity role = userService.getUserRoleCity(session);
- Integer cityId = role.getCityId();
- // 河北省用户返回省市区三级
- if (cityId.equals(-1)) {
- List<TreeAreaVo> secondVoList = new ArrayList<>();
- TreeAreaVo vo = new TreeAreaVo();
- vo.setLabel("河北省");
- vo.setValue(-1);
- vo.setChildren(secondVoList);
- // 查询所有地区
- List<Area> areas = areaDao.getAll();
- Map<Integer, List<Area>> parentMap = getParentMap(areas);
- // 地市列表
- List<Area> secondList = parentMap.get(-1);
- for (Area tt : secondList) {
- List<TreeAreaVo> thirdVoList = new ArrayList<>();
- TreeAreaVo secondVo = new TreeAreaVo();
- secondVo.setLabel(tt.getAreaName());
- secondVo.setValue(tt.getAreaId());
- secondVo.setChildren(thirdVoList);
- secondVoList.add(secondVo);
- // 区县列表
- List<Area> thirdList = parentMap.get(tt.getAreaId());
- for (Area ttt : thirdList) {
- TreeAreaVo thirdVo = new TreeAreaVo();
- thirdVo.setLabel(ttt.getAreaName());
- thirdVo.setValue(ttt.getAreaId());
- thirdVoList.add(thirdVo);
- }
- }
- return R.ok(vo);
- }
- // 地市用户返回市区两级
- Area area = areaDao.selectById(cityId);
- List<TreeAreaVo> thirdVoList = new ArrayList<>();
- TreeAreaVo vo = new TreeAreaVo();
- vo.setLabel(area.getAreaName());
- vo.setValue(area.getAreaId());
- vo.setChildren(thirdVoList);
- // 查询区县列表
- List<Area> areas = areaDao.getByParentId(cityId);
- for (Area t : areas) {
- TreeAreaVo thirdVo = new TreeAreaVo();
- thirdVo.setLabel(t.getAreaName());
- thirdVo.setValue(t.getAreaId());
- thirdVoList.add(thirdVo);
- }
- return R.ok(vo);
- }
- public R<TreeAreaVo> treeProvinceCity(HttpSession session) {
- UserRoleCity role = userService.getUserRoleCity(session);
- Integer cityId = role.getCityId();
- // 河北省用户返回省市两级
- if (cityId.equals(-1)) {
- List<TreeAreaVo> secondVoList = new ArrayList<>();
- TreeAreaVo vo = new TreeAreaVo();
- vo.setLabel("河北省");
- vo.setValue(-1);
- vo.setChildren(secondVoList);
- // 查询地市列表
- List<Area> areas = areaDao.getByParentId(-1);
- for (Area t : areas) {
- TreeAreaVo secondVo = new TreeAreaVo();
- secondVo.setLabel(t.getAreaName());
- secondVo.setValue(t.getAreaId());
- secondVoList.add(secondVo);
- }
- return R.ok(vo);
- }
- // 地市用户返回地市一级
- Area area = areaDao.selectById(cityId);
- TreeAreaVo vo = new TreeAreaVo();
- vo.setLabel(area.getAreaName());
- vo.setValue(area.getAreaId());
- return R.ok(vo);
- }
- public R<List<Area>> getAreasByCityId(GetAreasByCityIdDto dto) {
- return R.ok(areaDao.getAreasByCityId(dto.getCityId()));
- }
- /**
- * 得到地区父地图
- *
- * @param areas 区域
- * @return {@link Map}<{@link Integer}, {@link List}<{@link Area}>>
- */
- private Map<Integer, List<Area>> getParentMap(List<Area> areas) {
- Map<Integer, List<Area>> parentMap = new HashMap<>();
- for (Area t : areas)
- {
- parentMap.putIfAbsent(t.getParentId(), new ArrayList<>());
- parentMap.get(t.getParentId()).add(t);
- }
- return parentMap;
- }
- }
|