From 664e75a55c879fbe6eebd9ec488216a6006298a6 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期二, 21 一月 2025 14:14:56 +0800 Subject: [PATCH] 1 --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RegionController.java | 25 ++++++++++++ ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Region.java | 21 ++++++++++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/RegionService.java | 10 +++++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RegionMapper.java | 7 +++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RegionServiceImpl.java | 57 ++++++++++++++++++++++++++++ 5 files changed, 120 insertions(+), 0 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Region.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Region.java new file mode 100644 index 0000000..6b77db3 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Region.java @@ -0,0 +1,21 @@ +package com.ruoyi.system.api.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +@Data +@TableName("sys_region") +public class Region { + private Integer id; + private String name; + private String code; + private String citycode; + private Integer parentId; + private String english; + + @TableField(exist = false) // 表示该字段不在数据库表中 + private List<Region> children; // 子节点 +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RegionController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RegionController.java new file mode 100644 index 0000000..e4c7a90 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RegionController.java @@ -0,0 +1,25 @@ +package com.ruoyi.system.controller; + +import com.ruoyi.system.api.domain.Region; +import com.ruoyi.system.service.RegionService; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import java.util.List; + +@RestController +@RequestMapping("/region") +@Tag(name = "区域管理") +public class RegionController { + + @Autowired + private RegionService regionService; + + @GetMapping("/tree") + @Tag(name = "获取区域树") + public List<Region> getRegionTree() { + return regionService.getRegionTree(); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RegionMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RegionMapper.java new file mode 100644 index 0000000..385abc0 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RegionMapper.java @@ -0,0 +1,7 @@ +package com.ruoyi.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.system.api.domain.Region; + +public interface RegionMapper extends BaseMapper<Region> { +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/RegionService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/RegionService.java new file mode 100644 index 0000000..b1cd1fa --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/RegionService.java @@ -0,0 +1,10 @@ +package com.ruoyi.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.system.api.domain.Region; + +import java.util.List; + +public interface RegionService extends IService<Region> { + List<Region> getRegionTree(); +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RegionServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RegionServiceImpl.java new file mode 100644 index 0000000..2fc7c79 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RegionServiceImpl.java @@ -0,0 +1,57 @@ +package com.ruoyi.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.system.api.domain.Region; +import com.ruoyi.system.mapper.RegionMapper; +import com.ruoyi.system.service.RegionService; +import org.springframework.stereotype.Service; +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> implements RegionService { + + @Override + public List<Region> getRegionTree() { + // 查询所有数据 + List<Region> allRegions = list(); + + // 构建树形结构 + return buildTree(allRegions); + } + + /** + * 构建树形结构 + * + * @param allRegions 所有地区数据 + * @return 树形结构数据 + */ + private List<Region> buildTree(List<Region> allRegions) { + // 1. 找到所有省份(parentId为null或0) + List<Region> provinces = allRegions.stream() + .filter(region -> region.getParentId() == null || region.getParentId() == 0) + .collect(Collectors.toList()); + + // 2. 递归设置子节点 + provinces.forEach(province -> { + province.setChildren(getChildren(province, allRegions)); + }); + + return provinces; + } + + /** + * 递归获取子节点 + * + * @param parent 父节点 + * @param allRegions 所有地区数据 + * @return 子节点列表 + */ + private List<Region> getChildren(Region parent, List<Region> allRegions) { + return allRegions.stream() + .filter(region -> parent.getId().equals(region.getParentId())) + .peek(region -> region.setChildren(getChildren(region, allRegions))) + .collect(Collectors.toList()); + } +} -- Gitblit v1.7.1