Bladeren bron

* 商品详情接口bug修复

libo 4 jaren geleden
bovenliggende
commit
da723d398a

+ 28 - 0
src/main/java/com/tdba/cxb/ares/api/controller/RegionController.java

@@ -0,0 +1,28 @@
1
+package com.tdba.cxb.ares.api.controller;
2
+
3
+import com.tdba.cxb.ares.api.model.TDBAResponse;
4
+import com.tdba.cxb.ares.api.service.DistrictService;
5
+import com.tdba.cxb.ares.api.util.TDBAController;
6
+import org.springframework.web.bind.annotation.GetMapping;
7
+
8
+import javax.annotation.Resource;
9
+
10
+import static com.tdba.cxb.ares.api.model.TDBAResponseBuilder.buildSuccess;
11
+
12
+/**
13
+ * @program: order-web
14
+ * @description: 地区
15
+ * @author: libo
16
+ * @create: 2022-06-02 18:23:33
17
+ */
18
+@TDBAController("/api/v1/system/city")
19
+public class RegionController {
20
+
21
+    @Resource
22
+    private DistrictService districtService;
23
+
24
+    @GetMapping("lst")
25
+    public TDBAResponse list(){
26
+        return buildSuccess(districtService.regionList());
27
+    }
28
+}

+ 40 - 0
src/main/java/com/tdba/cxb/ares/api/model/Region.java

@@ -0,0 +1,40 @@
1
+package com.tdba.cxb.ares.api.model;
2
+
3
+/**
4
+ * @program: order-web
5
+ * @description: 地区
6
+ * @author: libo
7
+ * @create: 2022-06-02 18:07:29
8
+ */
9
+public class Region {
10
+
11
+    private Integer id;
12
+
13
+    private String name;
14
+
15
+    private Integer pid;
16
+
17
+    public Integer getId() {
18
+        return id;
19
+    }
20
+
21
+    public void setId(Integer id) {
22
+        this.id = id;
23
+    }
24
+
25
+    public String getName() {
26
+        return name;
27
+    }
28
+
29
+    public void setName(String name) {
30
+        this.name = name;
31
+    }
32
+
33
+    public Integer getPid() {
34
+        return pid;
35
+    }
36
+
37
+    public void setPid(Integer pid) {
38
+        this.pid = pid;
39
+    }
40
+}

+ 93 - 0
src/main/java/com/tdba/cxb/ares/api/model/RegionVo.java

@@ -0,0 +1,93 @@
1
+package com.tdba.cxb.ares.api.model;
2
+
3
+import java.util.List;
4
+
5
+/**
6
+ * @program: order-web
7
+ * @description: 地区
8
+ * @author: libo
9
+ * @create: 2022-06-02 18:08:07
10
+ */
11
+public class RegionVo {
12
+
13
+    private Integer city_id;
14
+    private String name;
15
+    private Integer parent_id;
16
+
17
+    private List<RegionVo> children;
18
+
19
+    public Integer getCity_id() {
20
+        return city_id;
21
+    }
22
+
23
+    public void setCity_id(Integer city_id) {
24
+        this.city_id = city_id;
25
+    }
26
+
27
+    public String getName() {
28
+        return name;
29
+    }
30
+
31
+    public void setName(String name) {
32
+        this.name = name;
33
+    }
34
+
35
+    public Integer getParent_id() {
36
+        return parent_id;
37
+    }
38
+
39
+    public void setParent_id(Integer parent_id) {
40
+        this.parent_id = parent_id;
41
+    }
42
+
43
+    public List<RegionVo> getChildren() {
44
+        return children;
45
+    }
46
+
47
+    public void setChildren(List<RegionVo> children) {
48
+        this.children = children;
49
+    }
50
+
51
+    public static final class RegionVoBuilder {
52
+        private Integer city_id;
53
+        private String name;
54
+        private Integer parent_id;
55
+        private List<RegionVo> children;
56
+
57
+        private RegionVoBuilder() {
58
+        }
59
+
60
+        public static RegionVoBuilder aRegionVo() {
61
+            return new RegionVoBuilder();
62
+        }
63
+
64
+        public RegionVoBuilder withCity_id(Integer city_id) {
65
+            this.city_id = city_id;
66
+            return this;
67
+        }
68
+
69
+        public RegionVoBuilder withName(String name) {
70
+            this.name = name;
71
+            return this;
72
+        }
73
+
74
+        public RegionVoBuilder withParent_id(Integer parent_id) {
75
+            this.parent_id = parent_id;
76
+            return this;
77
+        }
78
+
79
+        public RegionVoBuilder withChildren(List<RegionVo> children) {
80
+            this.children = children;
81
+            return this;
82
+        }
83
+
84
+        public RegionVo build() {
85
+            RegionVo regionVo = new RegionVo();
86
+            regionVo.setCity_id(city_id);
87
+            regionVo.setName(name);
88
+            regionVo.setParent_id(parent_id);
89
+            regionVo.setChildren(children);
90
+            return regionVo;
91
+        }
92
+    }
93
+}

+ 20 - 0
src/main/java/com/tdba/cxb/ares/api/repository/RegionMapper.java

@@ -0,0 +1,20 @@
1
+package com.tdba.cxb.ares.api.repository;
2
+
3
+import com.tdba.cxb.ares.api.model.MerchantVo;
4
+import com.tdba.cxb.ares.api.model.Region;
5
+import org.apache.ibatis.annotations.Mapper;
6
+import org.apache.ibatis.annotations.Param;
7
+
8
+import java.util.List;
9
+
10
+/**
11
+ * @program: order-web
12
+ * @description: 地区
13
+ * @author: libo
14
+ * @create: 2022-05-23 15:53:02
15
+ */
16
+@Mapper
17
+public interface RegionMapper {
18
+
19
+    List<Region> selectList();
20
+}

+ 60 - 0
src/main/java/com/tdba/cxb/ares/api/service/DistrictService.java

@@ -0,0 +1,60 @@
1
+package com.tdba.cxb.ares.api.service;
2
+
3
+import com.tdba.cxb.ares.api.model.Region;
4
+import com.tdba.cxb.ares.api.model.RegionVo;
5
+import com.tdba.cxb.ares.api.repository.RegionMapper;
6
+import org.springframework.cache.annotation.Cacheable;
7
+import org.springframework.stereotype.Service;
8
+
9
+import javax.annotation.Resource;
10
+import java.util.List;
11
+
12
+/**
13
+ * @program: order-web
14
+ * @description: 地区
15
+ * @author: libo
16
+ * @create: 2022-06-02 18:05:22
17
+ */
18
+@Service
19
+public class DistrictService {
20
+
21
+    @Resource
22
+    private RegionMapper regionMapper;
23
+
24
+    @Cacheable(value = "dict", unless = "#result == null")
25
+    public List<RegionVo> regionList(){
26
+        List<Region> list = regionMapper.selectList();
27
+        List<RegionVo> topList = list.stream().filter(row -> row.getPid() == 0)
28
+                .map(row -> RegionVo.RegionVoBuilder.aRegionVo()
29
+                        .withCity_id(row.getId())
30
+                        .withName(row.getName())
31
+                        .withParent_id(row.getPid())
32
+                        .build()).toList();
33
+
34
+        topList.stream().forEach(row -> {
35
+            row.setChildren(list.stream().filter(innerRow -> innerRow.getPid() == row.getCity_id()).map(innerRow -> RegionVo.RegionVoBuilder.aRegionVo()
36
+                    .withCity_id(innerRow.getId())
37
+                    .withName(innerRow.getName())
38
+                    .withParent_id(innerRow.getPid())
39
+                    .build()).toList());
40
+
41
+            row.getChildren().stream().forEach(cityRow -> {
42
+                cityRow.setChildren(list.stream().filter(innerRow -> innerRow.getPid() == cityRow.getCity_id()).map(innerRow -> RegionVo.RegionVoBuilder.aRegionVo()
43
+                        .withCity_id(innerRow.getId())
44
+                        .withName(innerRow.getName())
45
+                        .withParent_id(innerRow.getPid())
46
+                        .build()).toList());
47
+
48
+                cityRow.getChildren().stream().forEach(streetRow -> {
49
+                    streetRow.setChildren(list.stream().filter(innerRow -> innerRow.getPid() == streetRow.getCity_id()).map(innerRow -> RegionVo.RegionVoBuilder.aRegionVo()
50
+                            .withCity_id(innerRow.getId())
51
+                            .withName(innerRow.getName())
52
+                            .withParent_id(innerRow.getPid())
53
+                            .build()).toList());
54
+
55
+                });
56
+            });
57
+        });
58
+        return topList;
59
+    }
60
+}

+ 1 - 0
src/main/java/module-info.java

@@ -22,4 +22,5 @@ open module order.web {
22 22
     requires spring.webmvc;
23 23
     requires org.mybatis;
24 24
     requires spring.aop;
25
+    requires jdk.unsupported;
25 26
 }

+ 8 - 0
src/main/resources/mapper/RegionMapper.xml

@@ -0,0 +1,8 @@
1
+<?xml version="1.0" encoding="UTF-8" ?>
2
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
3
+<mapper namespace="com.tdba.cxb.ares.api.repository.RegionMapper">
4
+
5
+    <select id="selectList" resultType="com.tdba.cxb.ares.api.model.Region">
6
+        select id, name, pid from rrx_regions
7
+    </select>
8
+</mapper>