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; /** *

* 省表 服务实现类 *

* * @author ruoyi * @since 2025-05-31 */ @Service @RequiredArgsConstructor public class ProvinceServiceImpl extends ServiceImpl implements ProvinceService { @Autowired private ProvinceMapper provinceMapper; @Autowired private CityMapper cityMapper; @Autowired private DistrictMapper districtMapper; @Override public List getAreaOptions() { List res = new ArrayList<>(); List list = provinceMapper.selectList(null); for (Province province : list) { // 查询省下面的市 List cityList = cityMapper.selectList(new LambdaQueryWrapper().eq(City::getProvinceId, province.getId())); List cities = new ArrayList<>(); for (City city : cityList) { // 查询市下面的区 List districtList = districtMapper.selectList(new LambdaQueryWrapper().eq(District::getCityId, city.getId())); List 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(); } }