Commit fdb10aeced87df8fdb8d31cb4812898a4a499b48
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 | } | ... | ... |