Quellcode durchsuchen

地址存储在后端

LiRong vor 1 Woche
Ursprung
Commit
f700d56fff

+ 48 - 0
leromro-core/src/main/java/com/leromro/core/controller/RegionController.java

@@ -0,0 +1,48 @@
+package com.leromro.core.controller;
+
+import com.leromro.common.core.domain.R;
+import com.leromro.core.domain.dto.RegionTreeDTO;
+import com.leromro.core.service.RegionService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+
+/**
+ * 地址信息接口
+ *
+ * @author Chopper
+ */
+@RestController
+@Api(tags = "省市区信息接口")
+@RequestMapping("/utils/common/region")
+public class RegionController {
+
+    @Autowired
+    private RegionService regionService;
+
+
+    @GetMapping("/tree")
+    @ApiOperation("获取地区树")
+    public R<List<RegionTreeDTO>> getRegionTree() {
+        List<RegionTreeDTO> regionTree = regionService.getRegionTree();
+        return R.ok(regionTree);
+    }
+
+ /*   @GetMapping(value = "/item/{id}")
+    @ApiImplicitParam(name = "id", value = "地区ID", required = true, dataType = "String", paramType = "path")
+    @ApiOperation(value = "通过id获取子地区")
+    public R<List<Region>> getItem(@PathVariable String id) {
+        return R.ok(regionService.getItem(id));
+    }
+
+    @GetMapping("/tree")
+    @ApiOperation("获取地区树")
+    public List<RegionTreeDTO> getRegionTree() {
+        return regionService.getRegionTree();
+    }*/
+
+}

+ 54 - 0
leromro-core/src/main/java/com/leromro/core/domain/Region.java

@@ -0,0 +1,54 @@
+package com.leromro.core.domain;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.leromro.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 行政地区
+ * @author Chopper
+ * @since 2020-02-25 14:10:16
+ */
+@Data
+@TableName("l_region")
+@ApiModel(value = "行政地区")
+public class Region extends BaseEntity {
+
+    private static final long serialVersionUID = 418341656517240988L;
+
+    @ApiModelProperty(value = "id")
+    private String id;
+
+    @ApiModelProperty(value = "区域编码")
+    private String regionCode;
+
+    @ApiModelProperty(value = "父id")
+    private String parentRegionCode;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value =
+            "行政区划级别" +
+                    "province:省份(直辖市会在province和city显示)" +
+                    "city:市(直辖市会在province和city显示)" +
+                    "district:区县")
+    private String level;
+
+    @ApiModelProperty(value = "简称拼音缩写")
+    private String acronym;
+    @ApiModelProperty(value = "拼音")
+    private String pinyin;
+
+    @ApiModelProperty(value = "首字母")
+    private String initial;
+
+
+
+}

+ 39 - 0
leromro-core/src/main/java/com/leromro/core/domain/dto/RegionTreeDTO.java

@@ -0,0 +1,39 @@
+package com.leromro.core.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Data
+@ApiModel("地区树")
+@Getter
+@Setter
+public class RegionTreeDTO {
+    @ApiModelProperty(value = "主键id")
+    private String id;
+
+    @ApiModelProperty(value = "区域编码")
+    private String regionCode;
+
+    @ApiModelProperty(value = "父id")
+    private String parentRegionCode;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value =
+            "行政区划级别" +
+                    "province:省份(直辖市会在province和city显示)" +
+                    "city:市(直辖市会在province和city显示)" +
+                    "district:区县")
+    private String level;
+
+    @ApiModelProperty(value = "子节点")
+    private List<RegionTreeDTO> children;
+}

+ 17 - 0
leromro-core/src/main/java/com/leromro/core/mapper/RegionMapper.java

@@ -0,0 +1,17 @@
+package com.leromro.core.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.leromro.core.domain.Region;
+
+import java.util.List;
+
+/**
+ * 行政地区数据处理层
+ *
+ * @author Chopper
+ * @since 2020/12/8 9:46
+ */
+public interface RegionMapper extends BaseMapper<Region> {
+;
+}

+ 36 - 0
leromro-core/src/main/java/com/leromro/core/service/RegionService.java

@@ -0,0 +1,36 @@
+package com.leromro.core.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.leromro.core.domain.Region;
+import com.leromro.core.domain.dto.RegionTreeDTO;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 行政地区业务层
+ *
+ * @author Chopper
+ * @since 2020/12/2 14:14
+ */
+/*@CacheConfig(cacheNames = "{regions}")*/
+public interface RegionService extends IService<Region> {
+    List<RegionTreeDTO> getRegionTree();
+
+
+    /**
+     * 获取地区列表
+     *
+     * @param id 地区ID
+     * @return 地区列表
+     */
+/*    //@Cacheable(key = "#id")
+    List<Region> getItem(String id);
+
+
+    List<RegionTreeDTO> getRegionTree();*/
+}

+ 119 - 0
leromro-core/src/main/java/com/leromro/core/service/impl/RegionServiceImpl.java

@@ -0,0 +1,119 @@
+package com.leromro.core.service.impl;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.leromro.common.utils.bean.BeanUtils;
+import com.leromro.core.domain.Region;
+import com.leromro.core.domain.dto.RegionTreeDTO;
+import com.leromro.core.mapper.RegionMapper;
+
+import com.leromro.core.service.RegionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 行政地区业务层实现
+ *
+ * @author Chopper
+ * @since 2020/12/2 11:11
+ */
+@Service
+public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> implements RegionService {
+
+    @Autowired
+    private RegionMapper regionMapper;
+
+
+    public List<RegionTreeDTO> getRegionTree() {
+        List<Region> regions = regionMapper.selectList(null);
+
+        // 转换成 DTO 列表
+        List<RegionTreeDTO> dtoList = regions.stream()
+                .map(region -> {
+                    RegionTreeDTO dto = new RegionTreeDTO();
+                    com.leromro.common.utils.bean.BeanUtils.copyProperties(region, dto); // 注意顺序
+                    return dto;
+                }).collect(Collectors.toList());
+
+        // 构建树
+        Map<String, RegionTreeDTO> theMap = new HashMap<>();
+        dtoList.forEach(dto -> theMap.put(dto.getRegionCode(), dto));
+
+        List<RegionTreeDTO> rootList = new ArrayList<>();
+
+        dtoList.forEach(dto -> {
+            if ("0".equals(dto.getParentRegionCode()) || dto.getParentRegionCode() == null) {
+                rootList.add(dto);
+            } else {
+                RegionTreeDTO parent = theMap.get(dto.getParentRegionCode());
+                if (parent != null) {
+                    if (parent.getChildren() == null) {
+                        parent.setChildren(new ArrayList<>());
+                    }
+                    parent.getChildren().add(dto);
+                }
+            }
+        });
+
+        return rootList;
+    }
+
+/*
+    @Override
+    public List<Region> getItem(String id) {
+        LambdaQueryWrapper<Region> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(Region::getParentId, id);
+        List<Region> regions = this.list(lambdaQueryWrapper);
+        regions.sort(Comparator.comparing(Region::getOrderNum));
+        return regions;
+    }
+
+    @Override
+    public List<RegionTreeDTO> getRegionTree() {
+        // 查询所有地区数据
+        List<Region> regions = regionMapper.selectList(null);
+
+        // 转换为 DTO 列表
+        List<RegionTreeDTO> dtoList = regions.stream().map(region -> {
+            RegionTreeDTO dto = new RegionTreeDTO();
+            BeanUtils.copyProperties(region, dto);
+            return dto;
+        }).collect(Collectors.toList());
+
+        // 构建树
+        return buildTree(dtoList);
+    }
+    private List<RegionTreeDTO> buildTree(List<RegionTreeDTO> nodeList) {
+        Map<String, RegionTreeDTO> nodeMap = new HashMap<>();
+        List<RegionTreeDTO> rootList = new ArrayList<>();
+
+        // 将每个节点放入 map 中,方便后续查找
+        for (RegionTreeDTO node : nodeList) {
+            nodeMap.put(node.getId(), node);
+        }
+
+        // 设置父子关系
+        for (RegionTreeDTO current : nodeList) {
+            if ("0".equals(current.getParentId())) { // 根节点判断条件,请根据实际修改
+                rootList.add(current);
+            } else {
+                RegionTreeDTO parent = nodeMap.get(current.getParentId());
+                if (parent != null) {
+                    if (parent.getChildren() == null) {
+                        parent.setChildren(new ArrayList<>());
+                    }
+                    parent.getChildren().add(current);
+                }
+            }
+        }
+
+        return rootList;
+    }*/
+
+}