Commit fdb10aeced87df8fdb8d31cb4812898a4a499b48

Authored by YunaiV
1 parent 6f4c04d9

trade:优化运费模版的实现

Showing 10 changed files with 68 additions and 182 deletions
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/expresstemplate/ExpressTemplateChargeBaseVO.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/expresstemplate/DeliveryExpressTemplateChargeBaseVO.java
... ... @@ -11,7 +11,10 @@ import java.util.List;
11 11 * 快递运费模板运费设置 Base VO,提供给添加运费模板使用
12 12 */
13 13 @Data
14   -public class ExpressTemplateChargeBaseVO {
  14 +public class DeliveryExpressTemplateChargeBaseVO {
  15 +
  16 + @Schema(description = "编号", example = "6592", hidden = true) // 由于想简单一点,复用这个 VO 在更新操作,所以 hidden 为 false
  17 + private Long id;
15 18  
16 19 @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]")
17 20 @NotEmpty(message = "区域编号列表不能为空")
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/expresstemplate/DeliveryExpressTemplateCreateReqVO.java
... ... @@ -6,7 +6,6 @@ import lombok.EqualsAndHashCode;
6 6 import lombok.ToString;
7 7  
8 8 import javax.validation.Valid;
9   -import java.util.Collections;
10 9 import java.util.List;
11 10  
12 11 @Schema(description = "管理后台 - 快递运费模板创建 Request VO")
... ... @@ -17,10 +16,10 @@ public class DeliveryExpressTemplateCreateReqVO extends DeliveryExpressTemplateB
17 16  
18 17 @Schema(description = "区域运费列表")
19 18 @Valid
20   - private List<ExpressTemplateChargeBaseVO> templateCharge;
  19 + private List<DeliveryExpressTemplateChargeBaseVO> charges;
21 20  
22 21 @Schema(description = "包邮区域列表")
23 22 @Valid
24   - private List<ExpressTemplateFreeBaseVO> templateFree;
  23 + private List<DeliveryExpressTemplateFreeBaseVO> frees;
25 24  
26 25 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/expresstemplate/DeliveryExpressTemplateDetailRespVO.java
... ... @@ -17,9 +17,9 @@ public class DeliveryExpressTemplateDetailRespVO extends DeliveryExpressTemplate
17 17 private Long id;
18 18  
19 19 @Schema(description = "运费模板运费设置", requiredMode = Schema.RequiredMode.REQUIRED)
20   - private List<ExpressTemplateChargeBaseVO> templateCharge;
  20 + private List<DeliveryExpressTemplateChargeBaseVO> charges;
21 21  
22 22 @Schema(description = "运费模板包邮区域", requiredMode = Schema.RequiredMode.REQUIRED)
23   - private List<ExpressTemplateFreeBaseVO> templateFree;
  23 + private List<DeliveryExpressTemplateFreeBaseVO> frees;
24 24  
25 25 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/expresstemplate/ExpressTemplateFreeBaseVO.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/expresstemplate/DeliveryExpressTemplateFreeBaseVO.java
... ... @@ -11,7 +11,7 @@ import java.util.List;
11 11 * 快递运费模板包邮 Base VO,提供给添加运费模板使用
12 12 */
13 13 @Data
14   -public class ExpressTemplateFreeBaseVO {
  14 +public class DeliveryExpressTemplateFreeBaseVO {
15 15  
16 16 @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]")
17 17 @NotEmpty(message = "区域编号列表不能为空")
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/expresstemplate/DeliveryExpressTemplateUpdateReqVO.java
... ... @@ -21,36 +21,10 @@ public class DeliveryExpressTemplateUpdateReqVO extends DeliveryExpressTemplateB
21 21  
22 22 @Schema(description = "区域运费列表")
23 23 @Valid
24   - private List<ExpressTemplateChargeUpdateVO> templateCharge;
  24 + private List<DeliveryExpressTemplateChargeBaseVO> charges;
25 25  
26 26 @Schema(description = "包邮区域列表")
27 27 @Valid
28   - private List<ExpressTemplateFreeUpdateVO> templateFree;
  28 + private List<DeliveryExpressTemplateFreeBaseVO> frees;
29 29  
30   - @Schema(description = "管理后台 - 快递运费模板区域运费更新 Request VO")
31   - @Data
32   - public static class ExpressTemplateChargeUpdateVO extends ExpressTemplateChargeBaseVO {
33   -
34   - @Schema(description = "编号", example = "6592")
35   - private Long id;
36   -
37   - // TODO @jason:这几个字段,应该不通过前端传递,而是后端查询后去赋值的
38   - @Schema(description = "配送模板编号", example = "1")
39   - private Long templateId;
40   -
41   - @Schema(description = "配送计费方式", example = "1")
42   - private Integer chargeMode;
43   -
44   - }
45   -
46   - @Schema(description = "管理后台 - 快递运费模板包邮区域更新 Request VO")
47   - @Data
48   - public static class ExpressTemplateFreeUpdateVO extends ExpressTemplateFreeBaseVO {
49   -
50   - @Schema(description = "编号", example = "6592")
51   - private Long id;
52   -
53   - @Schema(description = "配送模板编号", example = "1")
54   - private Long templateId;
55   - }
56 30 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/delivery/DeliveryExpressTemplateConvert.java
... ... @@ -42,36 +42,32 @@ public interface DeliveryExpressTemplateConvert {
42 42 List<DeliveryExpressTemplateChargeDO> chargeList,
43 43 List<DeliveryExpressTemplateFreeDO> freeList) {
44 44 DeliveryExpressTemplateDetailRespVO respVO = convert2(bean);
45   - respVO.setTemplateCharge(convertTemplateChargeList(chargeList));
46   - respVO.setTemplateFree(convertTemplateFreeList(freeList));
  45 + respVO.setCharges(convertTemplateChargeList(chargeList));
  46 + respVO.setFrees(convertTemplateFreeList(freeList));
47 47 return respVO;
48 48 }
49 49  
50 50 // ========== Template Charge ==========
51 51  
52   - DeliveryExpressTemplateChargeDO convertTemplateCharge(Long templateId, Integer chargeMode, ExpressTemplateChargeBaseVO vo);
53   -
54   - DeliveryExpressTemplateChargeDO convertTemplateCharge(DeliveryExpressTemplateUpdateReqVO.ExpressTemplateChargeUpdateVO vo);
  52 + DeliveryExpressTemplateChargeDO convertTemplateCharge(Long templateId, Integer chargeMode, DeliveryExpressTemplateChargeBaseVO vo);
55 53  
56 54 DeliveryExpressTemplateRespBO.Charge convertTemplateCharge(DeliveryExpressTemplateChargeDO bean);
57 55  
58   - default List<DeliveryExpressTemplateChargeDO> convertTemplateChargeList(Long templateId, Integer chargeMode, List<ExpressTemplateChargeBaseVO> list) {
  56 + default List<DeliveryExpressTemplateChargeDO> convertTemplateChargeList(Long templateId, Integer chargeMode, List<DeliveryExpressTemplateChargeBaseVO> list) {
59 57 return CollectionUtils.convertList(list, vo -> convertTemplateCharge(templateId, chargeMode, vo));
60 58 }
61 59  
62 60 // ========== Template Free ==========
63 61  
64   - DeliveryExpressTemplateFreeDO convertTemplateFree(Long templateId, ExpressTemplateFreeBaseVO vo);
65   -
66   - DeliveryExpressTemplateFreeDO convertTemplateFree(DeliveryExpressTemplateUpdateReqVO.ExpressTemplateFreeUpdateVO vo);
  62 + DeliveryExpressTemplateFreeDO convertTemplateFree(Long templateId, DeliveryExpressTemplateFreeBaseVO vo);
67 63  
68 64 DeliveryExpressTemplateRespBO.Free convertTemplateFree(DeliveryExpressTemplateFreeDO bean);
69 65  
70   - List<ExpressTemplateChargeBaseVO> convertTemplateChargeList(List<DeliveryExpressTemplateChargeDO> list);
  66 + List<DeliveryExpressTemplateChargeBaseVO> convertTemplateChargeList(List<DeliveryExpressTemplateChargeDO> list);
71 67  
72   - List<ExpressTemplateFreeBaseVO> convertTemplateFreeList(List<DeliveryExpressTemplateFreeDO> list);
  68 + List<DeliveryExpressTemplateFreeBaseVO> convertTemplateFreeList(List<DeliveryExpressTemplateFreeDO> list);
73 69  
74   - default List<DeliveryExpressTemplateFreeDO> convertTemplateFreeList(Long templateId, List<ExpressTemplateFreeBaseVO> list) {
  70 + default List<DeliveryExpressTemplateFreeDO> convertTemplateFreeList(Long templateId, List<DeliveryExpressTemplateFreeBaseVO> list) {
75 71 return CollectionUtils.convertList(list, vo -> convertTemplateFree(templateId, vo));
76 72 }
77 73  
... ... @@ -93,4 +89,5 @@ public interface DeliveryExpressTemplateConvert {
93 89 });
94 90 return result;
95 91 }
  92 +
96 93 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressTemplateServiceImpl.java
... ... @@ -2,11 +2,10 @@ package cn.iocoder.yudao.module.trade.service.delivery;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
4 4 import cn.hutool.core.lang.Assert;
  5 +import cn.hutool.core.util.ObjectUtil;
5 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6   -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.expresstemplate.DeliveryExpressTemplateCreateReqVO;
7   -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.expresstemplate.DeliveryExpressTemplateDetailRespVO;
8   -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.expresstemplate.DeliveryExpressTemplatePageReqVO;
9   -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.expresstemplate.DeliveryExpressTemplateUpdateReqVO;
  7 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  8 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.expresstemplate.*;
10 9 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO;
11 10 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO;
12 11 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateFreeDO;
... ... @@ -50,21 +49,21 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
50 49 validateTemplateNameUnique(createReqVO.getName(), null);
51 50  
52 51 // 插入
53   - DeliveryExpressTemplateDO deliveryExpressTemplate = INSTANCE.convert(createReqVO);
54   - expressTemplateMapper.insert(deliveryExpressTemplate);
  52 + DeliveryExpressTemplateDO template = INSTANCE.convert(createReqVO);
  53 + expressTemplateMapper.insert(template);
55 54 // 插入运费模板计费表
56   - if (CollUtil.isNotEmpty(createReqVO.getTemplateCharge())) {
  55 + if (CollUtil.isNotEmpty(createReqVO.getCharges())) {
57 56 expressTemplateChargeMapper.insertBatch(
58   - INSTANCE.convertTemplateChargeList(deliveryExpressTemplate.getId(), createReqVO.getChargeMode(), createReqVO.getTemplateCharge())
  57 + INSTANCE.convertTemplateChargeList(template.getId(), createReqVO.getChargeMode(), createReqVO.getCharges())
59 58 );
60 59 }
61 60 // 插入运费模板包邮表
62   - if (CollUtil.isNotEmpty(createReqVO.getTemplateFree())) {
  61 + if (CollUtil.isNotEmpty(createReqVO.getFrees())) {
63 62 expressTemplateFreeMapper.insertBatch(
64   - INSTANCE.convertTemplateFreeList(deliveryExpressTemplate.getId(), createReqVO.getTemplateFree())
  63 + INSTANCE.convertTemplateFreeList(template.getId(), createReqVO.getFrees())
65 64 );
66 65 }
67   - return deliveryExpressTemplate.getId();
  66 + return template.getId();
68 67 }
69 68  
70 69 @Override
... ... @@ -76,76 +75,54 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
76 75 validateTemplateNameUnique(updateReqVO.getName(), updateReqVO.getId());
77 76  
78 77 // 更新运费从表
79   - updateExpressTemplateCharge(updateReqVO);
  78 + updateExpressTemplateCharge(updateReqVO.getId(), updateReqVO.getChargeMode(), updateReqVO.getCharges());
80 79 // 更新包邮从表
81   - updateExpressTemplateFree(updateReqVO);
  80 + updateExpressTemplateFree(updateReqVO.getId(), updateReqVO.getFrees());
82 81 // 更新模板主表
83 82 DeliveryExpressTemplateDO updateObj = INSTANCE.convert(updateReqVO);
84 83 expressTemplateMapper.updateById(updateObj);
85 84 }
86 85  
87   - private void updateExpressTemplateFree(DeliveryExpressTemplateUpdateReqVO updateReqVO) {
88   - // 1.1 获得新增/修改的区域列表
89   - List<DeliveryExpressTemplateFreeDO> oldFreeList = expressTemplateFreeMapper.selectListByTemplateId(updateReqVO.getId());
90   - List<DeliveryExpressTemplateUpdateReqVO.ExpressTemplateFreeUpdateVO> newFreeList = updateReqVO.getTemplateFree();
91   - List<DeliveryExpressTemplateFreeDO> addFreeList = new ArrayList<>(newFreeList.size()); // 新增包邮区域列表
92   - List<DeliveryExpressTemplateFreeDO> updateFreeList = new ArrayList<>(newFreeList.size()); // 更新包邮区域列表
93   - for (DeliveryExpressTemplateUpdateReqVO.ExpressTemplateFreeUpdateVO item : newFreeList) {
94   - if (Objects.nonNull(item.getId())) {
95   - updateFreeList.add(INSTANCE.convertTemplateFree(item));
96   - } else {
97   - item.setTemplateId(updateReqVO.getId());
98   - addFreeList.add(INSTANCE.convertTemplateFree(item));
99   - }
100   - }
101   - // 1.2 新增
102   - if (CollUtil.isNotEmpty(addFreeList)) {
103   - expressTemplateFreeMapper.insertBatch(addFreeList);
  86 + private void updateExpressTemplateFree(Long templateId, List<DeliveryExpressTemplateFreeBaseVO> frees) {
  87 + // 第一步,对比新老数据,获得添加、修改、删除的列表
  88 + List<DeliveryExpressTemplateFreeDO> oldList = expressTemplateFreeMapper.selectListByTemplateId(templateId);
  89 + List<DeliveryExpressTemplateFreeDO> newList = INSTANCE.convertTemplateFreeList(templateId, frees);
  90 + List<List<DeliveryExpressTemplateFreeDO>> diffList = CollectionUtils.diffList(oldList, newList,
  91 + (oldVal, newVal) -> ObjectUtil.equal(oldVal.getId(), newVal.getTemplateId()));
  92 +
  93 + // 第二步,批量添加、修改、删除
  94 + if (CollUtil.isNotEmpty(diffList.get(0))) {
  95 + expressTemplateFreeMapper.insertBatch(diffList.get(0));
104 96 }
105   - // 1.3 修改
106   - if (CollUtil.isNotEmpty(updateFreeList)) {
107   - expressTemplateFreeMapper.updateBatch(updateFreeList);
  97 + if (CollUtil.isNotEmpty(diffList.get(1))) {
  98 + expressTemplateFreeMapper.updateBatch(diffList.get(1));
108 99 }
109   -
110   - // 2. 删除
111   - Set<Long> deleteFreeIds = convertSet(oldFreeList, DeliveryExpressTemplateFreeDO::getId);
112   - deleteFreeIds.removeAll(convertSet(updateFreeList, DeliveryExpressTemplateFreeDO::getId));
113   - if (CollUtil.isNotEmpty(deleteFreeIds)) {
114   - expressTemplateFreeMapper.deleteBatchIds(deleteFreeIds);
  100 + if (CollUtil.isNotEmpty(diffList.get(2))) {
  101 + expressTemplateFreeMapper.deleteBatchIds(convertList(diffList.get(2), DeliveryExpressTemplateFreeDO::getId));
115 102 }
116 103 }
117 104  
118   - private void updateExpressTemplateCharge(DeliveryExpressTemplateUpdateReqVO updateReqVO) {
119   - // 1.1 获得新增/修改的区域列表
120   - List<DeliveryExpressTemplateChargeDO> oldChargeList = expressTemplateChargeMapper.selectListByTemplateId(updateReqVO.getId());
121   - List<DeliveryExpressTemplateUpdateReqVO.ExpressTemplateChargeUpdateVO> newChargeList = updateReqVO.getTemplateCharge();
122   - List<DeliveryExpressTemplateChargeDO> addList = new ArrayList<>(newChargeList.size()); // 新增运费区域列表
123   - List<DeliveryExpressTemplateChargeDO> updateList = new ArrayList<>(newChargeList.size()); // 更新运费区域列表
124   - for (DeliveryExpressTemplateUpdateReqVO.ExpressTemplateChargeUpdateVO item : newChargeList) {
125   - if (item.getId() != null) {
126   - // 计费模式以主表为准
127   - item.setChargeMode(updateReqVO.getChargeMode());
128   - updateList.add(INSTANCE.convertTemplateCharge(item));
129   - } else {
130   - item.setTemplateId(updateReqVO.getId());
131   - item.setChargeMode(updateReqVO.getChargeMode());
132   - addList.add(INSTANCE.convertTemplateCharge(item));
  105 + private void updateExpressTemplateCharge(Long templateId, Integer chargeMode, List<DeliveryExpressTemplateChargeBaseVO> charges) {
  106 + // 第一步,对比新老数据,获得添加、修改、删除的列表
  107 + List<DeliveryExpressTemplateChargeDO> oldList = expressTemplateChargeMapper.selectListByTemplateId(templateId);
  108 + List<DeliveryExpressTemplateChargeDO> newList = INSTANCE.convertTemplateChargeList(templateId, chargeMode, charges);
  109 + List<List<DeliveryExpressTemplateChargeDO>> diffList = diffList(oldList, newList, (oldVal, newVal) -> {
  110 + boolean same = ObjectUtil.equal(oldVal.getId(), newVal.getId());
  111 + if (same) {
  112 + newVal.setChargeMode(chargeMode); // 更新下收费模式
133 113 }
  114 + return same;
  115 + });
  116 +
  117 + // 第二步,批量添加、修改、删除
  118 + if (CollUtil.isNotEmpty(diffList.get(0))) {
  119 + expressTemplateChargeMapper.insertBatch(diffList.get(0));
134 120 }
135   - // 1.2 新增
136   - if (CollUtil.isNotEmpty(addList)) {
137   - expressTemplateChargeMapper.insertBatch(addList);
  121 + if (CollUtil.isNotEmpty(diffList.get(1))) {
  122 + expressTemplateChargeMapper.updateBatch(diffList.get(1));
138 123 }
139   - // 1.3 修改
140   - if (CollUtil.isNotEmpty(updateList)) {
141   - expressTemplateChargeMapper.updateBatch(updateList);
142   - }
143   -
144   - // 2. 删除
145   - Set<Long> deleteChargeIds = convertSet(oldChargeList, DeliveryExpressTemplateChargeDO::getId);
146   - deleteChargeIds.removeAll(convertSet(updateList, DeliveryExpressTemplateChargeDO::getId));
147   - if (CollUtil.isNotEmpty(deleteChargeIds)) {
148   - expressTemplateChargeMapper.deleteBatchIds(deleteChargeIds);
  124 + if (CollUtil.isNotEmpty(diffList.get(2))) {
  125 + expressTemplateChargeMapper.deleteBatchIds(convertList(diffList.get(2), DeliveryExpressTemplateChargeDO::getId));
149 126 }
150 127 }
151 128  
... ... @@ -238,14 +215,4 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
238 215 return INSTANCE.convertMap(areaId, templateList, chargeList, freeList);
239 216 }
240 217  
241   - private DeliveryExpressTemplateRespBO.Charge findMatchExpressTemplateCharge(
242   - List<DeliveryExpressTemplateChargeDO> templateChargeList, Integer areaId) {
243   - return INSTANCE.convertTemplateCharge(findFirst(templateChargeList, item -> item.getAreaIds().contains(areaId)));
244   - }
245   -
246   - private DeliveryExpressTemplateRespBO.Free findMatchExpressTemplateFree(
247   - List<DeliveryExpressTemplateFreeDO> templateFreeList, Integer areaId) {
248   - return INSTANCE.convertTemplateFree(findFirst(templateFreeList, item -> item.getAreaIds().contains(areaId)));
249   - }
250   -
251 218 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/ip/AreaController.java
... ... @@ -6,17 +6,17 @@ import cn.iocoder.yudao.framework.ip.core.Area;
6 6 import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
7 7 import cn.iocoder.yudao.framework.ip.core.utils.IPUtils;
8 8 import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO;
9   -import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeSimpleRespVO;
10 9 import cn.iocoder.yudao.module.system.convert.ip.AreaConvert;
11 10 import io.swagger.v3.oas.annotations.Operation;
12 11 import io.swagger.v3.oas.annotations.Parameter;
13 12 import io.swagger.v3.oas.annotations.tags.Tag;
14 13 import org.springframework.validation.annotation.Validated;
15   -import org.springframework.web.bind.annotation.*;
  14 +import org.springframework.web.bind.annotation.GetMapping;
  15 +import org.springframework.web.bind.annotation.RequestMapping;
  16 +import org.springframework.web.bind.annotation.RequestParam;
  17 +import org.springframework.web.bind.annotation.RestController;
16 18  
17   -import java.util.ArrayList;
18 19 import java.util.List;
19   -import java.util.Set;
20 20  
21 21 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
22 22  
... ... @@ -34,28 +34,6 @@ public class AreaController {
34 34 return success(AreaConvert.INSTANCE.convertList(area.getChildren()));
35 35 }
36 36  
37   - @GetMapping("/get-children")
38   - @Operation(summary = "获得地区的下级区域")
39   - @Parameter(name = "id", description = "区域编号", required = true, example = "150000")
40   - public CommonResult<List<AreaNodeSimpleRespVO>> getChildren(@RequestParam("id") Integer id) {
41   - Area area = AreaUtils.getArea(id);
42   - Assert.notNull(area, String.format("获取不到 id : %d 的区域", id));
43   - return success(AreaConvert.INSTANCE.convertList2(area.getChildren()));
44   - }
45   -
46   - // 4)方法改成 getAreaChildrenList 获得子节点们;5)url 可以已改成 children-list
47   - //@芋艿 是不是叫 getAreaListByIds 更合适。 因为不一定是子节点。 用于前端树选择获取缓存数据。 见 <el-tree-select :cache-data="areaCache">
48   - @GetMapping("/get-by-ids")
49   - @Operation(summary = "通过区域 ids 获得地区列表")
50   - @Parameter(name = "ids", description = "区域编号 ids", required = true, example = "1,150000")
51   - public CommonResult<List<AreaNodeSimpleRespVO>> getAreaListByIds(@RequestParam("ids") Set<Integer> ids) {
52   - List<Area> areaList = new ArrayList<>(ids.size());
53   - for (Integer areaId : ids) {
54   - areaList.add(AreaUtils.getArea(areaId));
55   - }
56   - return success(AreaConvert.INSTANCE.convertList2(areaList));
57   - }
58   -
59 37 @GetMapping("/get-by-ip")
60 38 @Operation(summary = "获得 IP 对应的地区名")
61 39 @Parameter(name = "ip", description = "IP", required = true)
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/ip/vo/AreaNodeSimpleRespVO.java deleted
1   -package cn.iocoder.yudao.module.system.controller.admin.ip.vo;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -
6   -@Schema(description = "管理后台 - 简洁的地区节点 Response VO")
7   -@Data
8   -public class AreaNodeSimpleRespVO {
9   -
10   - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "110000")
11   - private Integer id;
12   -
13   - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "北京")
14   - private String name;
15   -
16   - @Schema(description = "是否叶子节点", example = "false")
17   - private Boolean leaf;
18   -
19   -}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/ip/AreaConvert.java
1 1 package cn.iocoder.yudao.module.system.convert.ip;
2 2  
3 3 import cn.iocoder.yudao.framework.ip.core.Area;
4   -import cn.iocoder.yudao.framework.ip.core.enums.AreaTypeEnum;
5 4 import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO;
6   -import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeSimpleRespVO;
7 5 import cn.iocoder.yudao.module.system.controller.app.ip.vo.AppAreaNodeRespVO;
8 6 import org.mapstruct.Mapper;
9   -import org.mapstruct.Mapping;
10 7 import org.mapstruct.factory.Mappers;
11 8  
12 9 import java.util.List;
13   -import java.util.Objects;
14 10  
15 11 @Mapper
16 12 public interface AreaConvert {
... ... @@ -19,15 +15,6 @@ public interface AreaConvert {
19 15  
20 16 List<AreaNodeRespVO> convertList(List<Area> list);
21 17  
22   - List<AreaNodeSimpleRespVO> convertList2(List<Area> list);
23   -
24   - @Mapping(source = "type", target = "leaf")
25   - AreaNodeSimpleRespVO convert(Area area);
26   -
27   - default Boolean convertAreaType(Integer type) {
28   - return Objects.equals(AreaTypeEnum.DISTRICT.getType(), type);
29   - }
30   -
31 18 List<AppAreaNodeRespVO> convertList3(List<Area> list);
32 19  
33 20 }
... ...