package com.ruoyi.system.service.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.system.mapper.SysAreaMapper; import com.ruoyi.system.domain.SysArea; import com.ruoyi.system.service.ISysAreaService; /** * 区域-省市区县Service业务层处理 * * @author ruoyi * @date 2025-09-29 */ @Service public class SysAreaServiceImpl implements ISysAreaService { @Autowired private SysAreaMapper sysAreaMapper; /** * 查询区域-省市区县 * * @param areaId 区域-省市区县主键 * @return 区域-省市区县 */ @Override public SysArea selectSysAreaByAreaId(Long areaId) { return sysAreaMapper.selectSysAreaByAreaId(areaId); } /** * 查询区域-省市区县列表 * * @param sysArea 区域-省市区县 * @return 区域-省市区县 */ @Override public List selectSysAreaList(SysArea sysArea) { return sysAreaMapper.selectSysAreaList(sysArea); } @Override public List selectSysAreaListByIds(List ids) { return sysAreaMapper.selectSysAreaListByIds(ids); } @Override public List listTree(SysArea criteria) { List list = selectSysAreaList(criteria); Map cache = list.stream().collect(Collectors.toMap(SysArea::getAreaId, v -> v)); List res = new ArrayList<>(6); for (SysArea row : list) { Long parentId = row.getParentId(); if (null == parentId || parentId == 0l || !cache.containsKey(parentId)) { res.add(row); } else { cache.get(parentId).addChildren(row); } } return res; // Map cache = new HashMap<>(); // List res = new ArrayList<>(); // // 先将所有节点放入缓存 // for (SysArea area : list) { // cache.put(area.getAreaId(), area); // // 初始化children列表 // if (area.getChildren() == null) { // area.setChildren(new ArrayList<>()); // } // } // // // 建立父子关系 // for (SysArea area : list) { // Long parentId = area.getParentId(); // if (parentId != null && parentId != 0L && cache.containsKey(parentId)) { // SysArea parent = cache.get(parentId); // if (parent.getChildren() == null) { // parent.setChildren(new ArrayList<>()); // } // parent.getChildren().add(area); // } // } // // // 只返回根节点 // for (SysArea area : list) { // Long parentId = area.getParentId(); // if (parentId == null || parentId == 0L || !cache.containsKey(parentId)) { // res.add(area); // } // } // return res; } /** * 新增区域-省市区县 * * @param sysArea 区域-省市区县 * @return 结果 */ @Override public int insertSysArea(SysArea sysArea) { return sysAreaMapper.insertSysArea(sysArea); } /** * 修改区域-省市区县 * * @param sysArea 区域-省市区县 * @return 结果 */ @Override public int updateSysArea(SysArea sysArea) { return sysAreaMapper.updateSysArea(sysArea); } /** * 批量删除区域-省市区县 * * @param areaIds 需要删除的区域-省市区县主键 * @return 结果 */ @Override public int deleteSysAreaByAreaIds(Long[] areaIds) { return sysAreaMapper.deleteSysAreaByAreaIds(areaIds); } /** * 删除区域-省市区县信息 * * @param areaId 区域-省市区县主键 * @return 结果 */ @Override public int deleteSysAreaByAreaId(Long areaId) { return sysAreaMapper.deleteSysAreaByAreaId(areaId); } }