package com.ruoyi.basic.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.basic.entity.City;
|
import com.ruoyi.basic.entity.District;
|
import com.ruoyi.basic.entity.Province;
|
import com.ruoyi.basic.entity.dto.TreeSelectOption;
|
import com.ruoyi.basic.mapper.CityMapper;
|
import com.ruoyi.basic.mapper.DistrictMapper;
|
import com.ruoyi.basic.mapper.ProvinceMapper;
|
import com.ruoyi.basic.service.ProvinceService;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 省表 服务实现类
|
* </p>
|
*
|
* @author ruoyi
|
* @since 2025-05-31
|
*/
|
@Service
|
@RequiredArgsConstructor
|
public class ProvinceServiceImpl extends ServiceImpl<ProvinceMapper, Province> implements ProvinceService {
|
|
@Autowired
|
private ProvinceMapper provinceMapper;
|
|
@Autowired
|
private CityMapper cityMapper;
|
|
@Autowired
|
private DistrictMapper districtMapper;
|
|
@Override
|
public List<TreeSelectOption> getAreaOptions() {
|
List<TreeSelectOption> res = new ArrayList<>();
|
List<Province> list = provinceMapper.selectList(null);
|
for (Province province : list) {
|
// 查询省下面的市
|
List<City> cityList = cityMapper.selectList(new LambdaQueryWrapper<City>().eq(City::getProvinceId, province.getId()));
|
List<TreeSelectOption> cities = new ArrayList<>();
|
for (City city : cityList) {
|
// 查询市下面的区
|
List<District> districtList = districtMapper.selectList(new LambdaQueryWrapper<District>().eq(District::getCityId, city.getId()));
|
List<TreeSelectOption> districts = new ArrayList<>();
|
for (District district : districtList) {
|
districts.add(new TreeSelectOption(district.getId().toString(), district.getName(), district.getId(), null));
|
}
|
|
TreeSelectOption cityTreeSelectOption = new TreeSelectOption();
|
cityTreeSelectOption.setValue(city.getId().toString());
|
cityTreeSelectOption.setLabel(city.getName());
|
cityTreeSelectOption.setId(city.getId());
|
cityTreeSelectOption.setChildren(districts);
|
|
cities.add(cityTreeSelectOption);
|
}
|
|
TreeSelectOption treeSelectOption = new TreeSelectOption();
|
treeSelectOption.setValue(province.getId().toString());
|
treeSelectOption.setLabel(province.getName());
|
treeSelectOption.setId(province.getId());
|
treeSelectOption.setChildren(cities);
|
res.add(treeSelectOption);
|
}
|
|
return res;
|
}
|
|
@Override
|
public String getAreaDisplay(Long provinceId, Long cityId, Long districtId) {
|
Province province = provinceMapper.selectById(provinceId);
|
if (province == null) {
|
throw new RuntimeException("省不存在");
|
}
|
City city = cityMapper.selectById(cityId);
|
if (city == null) {
|
throw new RuntimeException("市不存在");
|
}
|
District district = districtMapper.selectById(districtId);
|
if (district == null) {
|
throw new RuntimeException("区不存在");
|
}
|
|
// 如果省和市同名
|
if (province.getName().equals(city.getName())) {
|
return province.getName() + " " + district.getName();
|
}
|
return province.getName() + city.getName() + district.getName();
|
}
|
}
|