/** * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). *

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springblade.system.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringPool; import org.springblade.system.entity.Region; import org.springblade.system.mapper.RegionMapper; import org.springblade.system.service.IRegionService; import org.springblade.system.vo.RegionVO; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; /** * 行政区划表 服务实现类 * * @author Chill */ @Service public class RegionServiceImpl extends ServiceImpl implements IRegionService { public static final int PROVINCE_LEVEL = 1; public static final int CITY_LEVEL = 2; public static final int DISTRICT_LEVEL = 3; public static final int TOWN_LEVEL = 4; public static final int VILLAGE_LEVEL = 5; @Override public boolean submit(Region region) { Long cnt = baseMapper.selectCount(Wrappers.query().lambda().eq(Region::getCode, region.getCode())); if (cnt > 0) { return this.updateById(region); } // 设置祖区划编号 Region parent = baseMapper.selectById(region.getParentCode()); if (Func.isNotEmpty(parent) || Func.isNotEmpty(parent.getCode())) { String ancestors = parent.getAncestors() + StringPool.COMMA + parent.getCode(); region.setAncestors(ancestors); } // 设置省、市、区、镇、村 Integer level = region.getLevel(); String code = region.getCode(); String name = region.getName(); if (level == PROVINCE_LEVEL) { region.setProvinceCode(code); region.setProvinceName(name); } else if (level == CITY_LEVEL) { region.setCityCode(code); region.setCityName(name); } else if (level == DISTRICT_LEVEL) { region.setDistrictCode(code); region.setDistrictName(name); } else if (level == TOWN_LEVEL) { region.setTownCode(code); region.setTownName(name); } else if (level == VILLAGE_LEVEL) { region.setVillageCode(code); region.setVillageName(name); } return this.save(region); } @Override public boolean removeRegion(String id) { Long cnt = baseMapper.selectCount(Wrappers.query().lambda().eq(Region::getParentCode, id)); if (cnt > 0) { throw new ServiceException("请先删除子节点!"); } return removeById(id); } @Override public List lazyList(String parentCode, Map param) { return baseMapper.lazyList(parentCode, param); } @Override public List lazyTree(String parentCode, Map param) { return baseMapper.lazyTree(parentCode, param); } }