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,7 +11,10 @@ import java.util.List;
11 * 快递运费模板运费设置 Base VO,提供给添加运费模板使用 11 * 快递运费模板运费设置 Base VO,提供给添加运费模板使用
12 */ 12 */
13 @Data 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 @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]") 19 @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]")
17 @NotEmpty(message = "区域编号列表不能为空") 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,7 +6,6 @@ import lombok.EqualsAndHashCode;
6 import lombok.ToString; 6 import lombok.ToString;
7 7
8 import javax.validation.Valid; 8 import javax.validation.Valid;
9 -import java.util.Collections;  
10 import java.util.List; 9 import java.util.List;
11 10
12 @Schema(description = "管理后台 - 快递运费模板创建 Request VO") 11 @Schema(description = "管理后台 - 快递运费模板创建 Request VO")
@@ -17,10 +16,10 @@ public class DeliveryExpressTemplateCreateReqVO extends DeliveryExpressTemplateB @@ -17,10 +16,10 @@ public class DeliveryExpressTemplateCreateReqVO extends DeliveryExpressTemplateB
17 16
18 @Schema(description = "区域运费列表") 17 @Schema(description = "区域运费列表")
19 @Valid 18 @Valid
20 - private List<ExpressTemplateChargeBaseVO> templateCharge; 19 + private List<DeliveryExpressTemplateChargeBaseVO> charges;
21 20
22 @Schema(description = "包邮区域列表") 21 @Schema(description = "包邮区域列表")
23 @Valid 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,9 +17,9 @@ public class DeliveryExpressTemplateDetailRespVO extends DeliveryExpressTemplate
17 private Long id; 17 private Long id;
18 18
19 @Schema(description = "运费模板运费设置", requiredMode = Schema.RequiredMode.REQUIRED) 19 @Schema(description = "运费模板运费设置", requiredMode = Schema.RequiredMode.REQUIRED)
20 - private List<ExpressTemplateChargeBaseVO> templateCharge; 20 + private List<DeliveryExpressTemplateChargeBaseVO> charges;
21 21
22 @Schema(description = "运费模板包邮区域", requiredMode = Schema.RequiredMode.REQUIRED) 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,7 +11,7 @@ import java.util.List;
11 * 快递运费模板包邮 Base VO,提供给添加运费模板使用 11 * 快递运费模板包邮 Base VO,提供给添加运费模板使用
12 */ 12 */
13 @Data 13 @Data
14 -public class ExpressTemplateFreeBaseVO { 14 +public class DeliveryExpressTemplateFreeBaseVO {
15 15
16 @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]") 16 @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]")
17 @NotEmpty(message = "区域编号列表不能为空") 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,36 +21,10 @@ public class DeliveryExpressTemplateUpdateReqVO extends DeliveryExpressTemplateB
21 21
22 @Schema(description = "区域运费列表") 22 @Schema(description = "区域运费列表")
23 @Valid 23 @Valid
24 - private List<ExpressTemplateChargeUpdateVO> templateCharge; 24 + private List<DeliveryExpressTemplateChargeBaseVO> charges;
25 25
26 @Schema(description = "包邮区域列表") 26 @Schema(description = "包邮区域列表")
27 @Valid 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,36 +42,32 @@ public interface DeliveryExpressTemplateConvert {
42 List<DeliveryExpressTemplateChargeDO> chargeList, 42 List<DeliveryExpressTemplateChargeDO> chargeList,
43 List<DeliveryExpressTemplateFreeDO> freeList) { 43 List<DeliveryExpressTemplateFreeDO> freeList) {
44 DeliveryExpressTemplateDetailRespVO respVO = convert2(bean); 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 return respVO; 47 return respVO;
48 } 48 }
49 49
50 // ========== Template Charge ========== 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 DeliveryExpressTemplateRespBO.Charge convertTemplateCharge(DeliveryExpressTemplateChargeDO bean); 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 return CollectionUtils.convertList(list, vo -> convertTemplateCharge(templateId, chargeMode, vo)); 57 return CollectionUtils.convertList(list, vo -> convertTemplateCharge(templateId, chargeMode, vo));
60 } 58 }
61 59
62 // ========== Template Free ========== 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 DeliveryExpressTemplateRespBO.Free convertTemplateFree(DeliveryExpressTemplateFreeDO bean); 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 return CollectionUtils.convertList(list, vo -> convertTemplateFree(templateId, vo)); 71 return CollectionUtils.convertList(list, vo -> convertTemplateFree(templateId, vo));
76 } 72 }
77 73
@@ -93,4 +89,5 @@ public interface DeliveryExpressTemplateConvert { @@ -93,4 +89,5 @@ public interface DeliveryExpressTemplateConvert {
93 }); 89 });
94 return result; 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,11 +2,10 @@ package cn.iocoder.yudao.module.trade.service.delivery;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.lang.Assert; 4 import cn.hutool.core.lang.Assert;
  5 +import cn.hutool.core.util.ObjectUtil;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 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 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO; 9 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO;
11 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO; 10 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO;
12 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateFreeDO; 11 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateFreeDO;
@@ -50,21 +49,21 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla @@ -50,21 +49,21 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
50 validateTemplateNameUnique(createReqVO.getName(), null); 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 expressTemplateChargeMapper.insertBatch( 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 expressTemplateFreeMapper.insertBatch( 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 @Override 69 @Override
@@ -76,76 +75,54 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla @@ -76,76 +75,54 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
76 validateTemplateNameUnique(updateReqVO.getName(), updateReqVO.getId()); 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 DeliveryExpressTemplateDO updateObj = INSTANCE.convert(updateReqVO); 82 DeliveryExpressTemplateDO updateObj = INSTANCE.convert(updateReqVO);
84 expressTemplateMapper.updateById(updateObj); 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,14 +215,4 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
238 return INSTANCE.convertMap(areaId, templateList, chargeList, freeList); 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,17 +6,17 @@ import cn.iocoder.yudao.framework.ip.core.Area;
6 import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; 6 import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
7 import cn.iocoder.yudao.framework.ip.core.utils.IPUtils; 7 import cn.iocoder.yudao.framework.ip.core.utils.IPUtils;
8 import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO; 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 import cn.iocoder.yudao.module.system.convert.ip.AreaConvert; 9 import cn.iocoder.yudao.module.system.convert.ip.AreaConvert;
11 import io.swagger.v3.oas.annotations.Operation; 10 import io.swagger.v3.oas.annotations.Operation;
12 import io.swagger.v3.oas.annotations.Parameter; 11 import io.swagger.v3.oas.annotations.Parameter;
13 import io.swagger.v3.oas.annotations.tags.Tag; 12 import io.swagger.v3.oas.annotations.tags.Tag;
14 import org.springframework.validation.annotation.Validated; 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 import java.util.List; 19 import java.util.List;
19 -import java.util.Set;  
20 20
21 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 21 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
22 22
@@ -34,28 +34,6 @@ public class AreaController { @@ -34,28 +34,6 @@ public class AreaController {
34 return success(AreaConvert.INSTANCE.convertList(area.getChildren())); 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 @GetMapping("/get-by-ip") 37 @GetMapping("/get-by-ip")
60 @Operation(summary = "获得 IP 对应的地区名") 38 @Operation(summary = "获得 IP 对应的地区名")
61 @Parameter(name = "ip", description = "IP", required = true) 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 package cn.iocoder.yudao.module.system.convert.ip; 1 package cn.iocoder.yudao.module.system.convert.ip;
2 2
3 import cn.iocoder.yudao.framework.ip.core.Area; 3 import cn.iocoder.yudao.framework.ip.core.Area;
4 -import cn.iocoder.yudao.framework.ip.core.enums.AreaTypeEnum;  
5 import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO; 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 import cn.iocoder.yudao.module.system.controller.app.ip.vo.AppAreaNodeRespVO; 5 import cn.iocoder.yudao.module.system.controller.app.ip.vo.AppAreaNodeRespVO;
8 import org.mapstruct.Mapper; 6 import org.mapstruct.Mapper;
9 -import org.mapstruct.Mapping;  
10 import org.mapstruct.factory.Mappers; 7 import org.mapstruct.factory.Mappers;
11 8
12 import java.util.List; 9 import java.util.List;
13 -import java.util.Objects;  
14 10
15 @Mapper 11 @Mapper
16 public interface AreaConvert { 12 public interface AreaConvert {
@@ -19,15 +15,6 @@ public interface AreaConvert { @@ -19,15 +15,6 @@ public interface AreaConvert {
19 15
20 List<AreaNodeRespVO> convertList(List<Area> list); 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 List<AppAreaNodeRespVO> convertList3(List<Area> list); 18 List<AppAreaNodeRespVO> convertList3(List<Area> list);
32 19
33 } 20 }