mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 10:18:42 +08:00 
			
		
		
		
	trade:优化运费模版的实现
This commit is contained in:
		| @@ -11,7 +11,10 @@ import java.util.List; | |||||||
|  * 快递运费模板运费设置 Base VO,提供给添加运费模板使用 |  * 快递运费模板运费设置 Base VO,提供给添加运费模板使用 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class ExpressTemplateChargeBaseVO { | public class DeliveryExpressTemplateChargeBaseVO { | ||||||
|  | 
 | ||||||
|  |     @Schema(description = "编号", example = "6592", hidden = true) // 由于想简单一点,复用这个 VO 在更新操作,所以 hidden 为 false | ||||||
|  |     private Long id; | ||||||
| 
 | 
 | ||||||
|     @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]") |     @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]") | ||||||
|     @NotEmpty(message = "区域编号列表不能为空") |     @NotEmpty(message = "区域编号列表不能为空") | ||||||
| @@ -6,7 +6,6 @@ import lombok.EqualsAndHashCode; | |||||||
| import lombok.ToString; | import lombok.ToString; | ||||||
|  |  | ||||||
| import javax.validation.Valid; | import javax.validation.Valid; | ||||||
| import java.util.Collections; |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| @Schema(description = "管理后台 - 快递运费模板创建 Request VO") | @Schema(description = "管理后台 - 快递运费模板创建 Request VO") | ||||||
| @@ -17,10 +16,10 @@ public class DeliveryExpressTemplateCreateReqVO extends DeliveryExpressTemplateB | |||||||
|  |  | ||||||
|     @Schema(description = "区域运费列表") |     @Schema(description = "区域运费列表") | ||||||
|     @Valid |     @Valid | ||||||
|     private List<ExpressTemplateChargeBaseVO> templateCharge; |     private List<DeliveryExpressTemplateChargeBaseVO> charges; | ||||||
|  |  | ||||||
|     @Schema(description = "包邮区域列表") |     @Schema(description = "包邮区域列表") | ||||||
|     @Valid |     @Valid | ||||||
|     private List<ExpressTemplateFreeBaseVO> templateFree; |     private List<DeliveryExpressTemplateFreeBaseVO> frees; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -17,9 +17,9 @@ public class DeliveryExpressTemplateDetailRespVO extends DeliveryExpressTemplate | |||||||
|     private Long id; |     private Long id; | ||||||
|  |  | ||||||
|     @Schema(description = "运费模板运费设置", requiredMode = Schema.RequiredMode.REQUIRED) |     @Schema(description = "运费模板运费设置", requiredMode = Schema.RequiredMode.REQUIRED) | ||||||
|     private List<ExpressTemplateChargeBaseVO> templateCharge; |     private List<DeliveryExpressTemplateChargeBaseVO> charges; | ||||||
|  |  | ||||||
|     @Schema(description = "运费模板包邮区域", requiredMode = Schema.RequiredMode.REQUIRED) |     @Schema(description = "运费模板包邮区域", requiredMode = Schema.RequiredMode.REQUIRED) | ||||||
|     private List<ExpressTemplateFreeBaseVO> templateFree; |     private List<DeliveryExpressTemplateFreeBaseVO> frees; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ import java.util.List; | |||||||
|  * 快递运费模板包邮 Base VO,提供给添加运费模板使用 |  * 快递运费模板包邮 Base VO,提供给添加运费模板使用 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class ExpressTemplateFreeBaseVO { | public class DeliveryExpressTemplateFreeBaseVO { | ||||||
| 
 | 
 | ||||||
|     @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]") |     @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]") | ||||||
|     @NotEmpty(message = "区域编号列表不能为空") |     @NotEmpty(message = "区域编号列表不能为空") | ||||||
| @@ -21,36 +21,10 @@ public class DeliveryExpressTemplateUpdateReqVO extends DeliveryExpressTemplateB | |||||||
|  |  | ||||||
|     @Schema(description = "区域运费列表") |     @Schema(description = "区域运费列表") | ||||||
|     @Valid |     @Valid | ||||||
|     private List<ExpressTemplateChargeUpdateVO> templateCharge; |     private List<DeliveryExpressTemplateChargeBaseVO> charges; | ||||||
|  |  | ||||||
|     @Schema(description = "包邮区域列表") |     @Schema(description = "包邮区域列表") | ||||||
|     @Valid |     @Valid | ||||||
|     private List<ExpressTemplateFreeUpdateVO> templateFree; |     private List<DeliveryExpressTemplateFreeBaseVO> frees; | ||||||
|  |  | ||||||
|     @Schema(description = "管理后台 - 快递运费模板区域运费更新 Request VO") |  | ||||||
|     @Data |  | ||||||
|     public static class ExpressTemplateChargeUpdateVO extends ExpressTemplateChargeBaseVO { |  | ||||||
|  |  | ||||||
|         @Schema(description = "编号", example = "6592") |  | ||||||
|         private Long id; |  | ||||||
|  |  | ||||||
|         // TODO @jason:这几个字段,应该不通过前端传递,而是后端查询后去赋值的 |  | ||||||
|         @Schema(description = "配送模板编号", example = "1") |  | ||||||
|         private Long templateId; |  | ||||||
|  |  | ||||||
|         @Schema(description = "配送计费方式", example = "1") |  | ||||||
|         private Integer chargeMode; |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Schema(description = "管理后台 - 快递运费模板包邮区域更新 Request VO") |  | ||||||
|     @Data |  | ||||||
|     public static class ExpressTemplateFreeUpdateVO extends ExpressTemplateFreeBaseVO { |  | ||||||
|  |  | ||||||
|         @Schema(description = "编号", example = "6592") |  | ||||||
|         private Long id; |  | ||||||
|  |  | ||||||
|         @Schema(description = "配送模板编号", example = "1") |  | ||||||
|         private Long templateId; |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -42,36 +42,32 @@ public interface DeliveryExpressTemplateConvert { | |||||||
|                                                         List<DeliveryExpressTemplateChargeDO> chargeList, |                                                         List<DeliveryExpressTemplateChargeDO> chargeList, | ||||||
|                                                         List<DeliveryExpressTemplateFreeDO> freeList) { |                                                         List<DeliveryExpressTemplateFreeDO> freeList) { | ||||||
|         DeliveryExpressTemplateDetailRespVO respVO = convert2(bean); |         DeliveryExpressTemplateDetailRespVO respVO = convert2(bean); | ||||||
|         respVO.setTemplateCharge(convertTemplateChargeList(chargeList)); |         respVO.setCharges(convertTemplateChargeList(chargeList)); | ||||||
|         respVO.setTemplateFree(convertTemplateFreeList(freeList)); |         respVO.setFrees(convertTemplateFreeList(freeList)); | ||||||
|         return respVO; |         return respVO; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // ========== Template Charge ========== |     // ========== Template Charge ========== | ||||||
|  |  | ||||||
|     DeliveryExpressTemplateChargeDO convertTemplateCharge(Long templateId, Integer chargeMode, ExpressTemplateChargeBaseVO vo); |     DeliveryExpressTemplateChargeDO convertTemplateCharge(Long templateId, Integer chargeMode, DeliveryExpressTemplateChargeBaseVO vo); | ||||||
|  |  | ||||||
|     DeliveryExpressTemplateChargeDO convertTemplateCharge(DeliveryExpressTemplateUpdateReqVO.ExpressTemplateChargeUpdateVO vo); |  | ||||||
|  |  | ||||||
|     DeliveryExpressTemplateRespBO.Charge convertTemplateCharge(DeliveryExpressTemplateChargeDO bean); |     DeliveryExpressTemplateRespBO.Charge convertTemplateCharge(DeliveryExpressTemplateChargeDO bean); | ||||||
|  |  | ||||||
|     default List<DeliveryExpressTemplateChargeDO> convertTemplateChargeList(Long templateId, Integer chargeMode, List<ExpressTemplateChargeBaseVO> list) { |     default List<DeliveryExpressTemplateChargeDO> convertTemplateChargeList(Long templateId, Integer chargeMode, List<DeliveryExpressTemplateChargeBaseVO> list) { | ||||||
|         return CollectionUtils.convertList(list, vo -> convertTemplateCharge(templateId, chargeMode, vo)); |         return CollectionUtils.convertList(list, vo -> convertTemplateCharge(templateId, chargeMode, vo)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // ========== Template Free ========== |     // ========== Template Free ========== | ||||||
|  |  | ||||||
|     DeliveryExpressTemplateFreeDO convertTemplateFree(Long templateId, ExpressTemplateFreeBaseVO vo); |     DeliveryExpressTemplateFreeDO convertTemplateFree(Long templateId, DeliveryExpressTemplateFreeBaseVO vo); | ||||||
|  |  | ||||||
|     DeliveryExpressTemplateFreeDO convertTemplateFree(DeliveryExpressTemplateUpdateReqVO.ExpressTemplateFreeUpdateVO vo); |  | ||||||
|  |  | ||||||
|     DeliveryExpressTemplateRespBO.Free convertTemplateFree(DeliveryExpressTemplateFreeDO bean); |     DeliveryExpressTemplateRespBO.Free convertTemplateFree(DeliveryExpressTemplateFreeDO bean); | ||||||
|  |  | ||||||
|     List<ExpressTemplateChargeBaseVO> convertTemplateChargeList(List<DeliveryExpressTemplateChargeDO> list); |     List<DeliveryExpressTemplateChargeBaseVO> convertTemplateChargeList(List<DeliveryExpressTemplateChargeDO> list); | ||||||
|  |  | ||||||
|     List<ExpressTemplateFreeBaseVO> convertTemplateFreeList(List<DeliveryExpressTemplateFreeDO> list); |     List<DeliveryExpressTemplateFreeBaseVO> convertTemplateFreeList(List<DeliveryExpressTemplateFreeDO> list); | ||||||
|  |  | ||||||
|     default List<DeliveryExpressTemplateFreeDO> convertTemplateFreeList(Long templateId, List<ExpressTemplateFreeBaseVO> list) { |     default List<DeliveryExpressTemplateFreeDO> convertTemplateFreeList(Long templateId, List<DeliveryExpressTemplateFreeBaseVO> list) { | ||||||
|         return CollectionUtils.convertList(list, vo -> convertTemplateFree(templateId, vo)); |         return CollectionUtils.convertList(list, vo -> convertTemplateFree(templateId, vo)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -93,4 +89,5 @@ public interface DeliveryExpressTemplateConvert { | |||||||
|         }); |         }); | ||||||
|         return result; |         return result; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -2,11 +2,10 @@ package cn.iocoder.yudao.module.trade.service.delivery; | |||||||
|  |  | ||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
| import cn.hutool.core.lang.Assert; | import cn.hutool.core.lang.Assert; | ||||||
|  | import cn.hutool.core.util.ObjectUtil; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.expresstemplate.DeliveryExpressTemplateCreateReqVO; | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||||||
| import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.expresstemplate.DeliveryExpressTemplateDetailRespVO; | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.expresstemplate.*; | ||||||
| import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.expresstemplate.DeliveryExpressTemplatePageReqVO; |  | ||||||
| import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.expresstemplate.DeliveryExpressTemplateUpdateReqVO; |  | ||||||
| import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO; | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO; | ||||||
| import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO; | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO; | ||||||
| import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateFreeDO; | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateFreeDO; | ||||||
| @@ -50,21 +49,21 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla | |||||||
|         validateTemplateNameUnique(createReqVO.getName(), null); |         validateTemplateNameUnique(createReqVO.getName(), null); | ||||||
|  |  | ||||||
|         // 插入 |         // 插入 | ||||||
|         DeliveryExpressTemplateDO deliveryExpressTemplate = INSTANCE.convert(createReqVO); |         DeliveryExpressTemplateDO template = INSTANCE.convert(createReqVO); | ||||||
|         expressTemplateMapper.insert(deliveryExpressTemplate); |         expressTemplateMapper.insert(template); | ||||||
|         // 插入运费模板计费表 |         // 插入运费模板计费表 | ||||||
|         if (CollUtil.isNotEmpty(createReqVO.getTemplateCharge())) { |         if (CollUtil.isNotEmpty(createReqVO.getCharges())) { | ||||||
|             expressTemplateChargeMapper.insertBatch( |             expressTemplateChargeMapper.insertBatch( | ||||||
|                     INSTANCE.convertTemplateChargeList(deliveryExpressTemplate.getId(), createReqVO.getChargeMode(), createReqVO.getTemplateCharge()) |                     INSTANCE.convertTemplateChargeList(template.getId(), createReqVO.getChargeMode(), createReqVO.getCharges()) | ||||||
|             ); |             ); | ||||||
|         } |         } | ||||||
|         // 插入运费模板包邮表 |         // 插入运费模板包邮表 | ||||||
|         if (CollUtil.isNotEmpty(createReqVO.getTemplateFree())) { |         if (CollUtil.isNotEmpty(createReqVO.getFrees())) { | ||||||
|             expressTemplateFreeMapper.insertBatch( |             expressTemplateFreeMapper.insertBatch( | ||||||
|                     INSTANCE.convertTemplateFreeList(deliveryExpressTemplate.getId(), createReqVO.getTemplateFree()) |                     INSTANCE.convertTemplateFreeList(template.getId(), createReqVO.getFrees()) | ||||||
|             ); |             ); | ||||||
|         } |         } | ||||||
|         return deliveryExpressTemplate.getId(); |         return template.getId(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
| @@ -76,76 +75,54 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla | |||||||
|         validateTemplateNameUnique(updateReqVO.getName(), updateReqVO.getId()); |         validateTemplateNameUnique(updateReqVO.getName(), updateReqVO.getId()); | ||||||
|  |  | ||||||
|         // 更新运费从表 |         // 更新运费从表 | ||||||
|         updateExpressTemplateCharge(updateReqVO); |         updateExpressTemplateCharge(updateReqVO.getId(), updateReqVO.getChargeMode(), updateReqVO.getCharges()); | ||||||
|         // 更新包邮从表 |         // 更新包邮从表 | ||||||
|         updateExpressTemplateFree(updateReqVO); |         updateExpressTemplateFree(updateReqVO.getId(), updateReqVO.getFrees()); | ||||||
|         // 更新模板主表 |         // 更新模板主表 | ||||||
|         DeliveryExpressTemplateDO updateObj = INSTANCE.convert(updateReqVO); |         DeliveryExpressTemplateDO updateObj = INSTANCE.convert(updateReqVO); | ||||||
|         expressTemplateMapper.updateById(updateObj); |         expressTemplateMapper.updateById(updateObj); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private void updateExpressTemplateFree(DeliveryExpressTemplateUpdateReqVO updateReqVO) { |     private void updateExpressTemplateFree(Long templateId, List<DeliveryExpressTemplateFreeBaseVO> frees) { | ||||||
|         // 1.1 获得新增/修改的区域列表 |         // 第一步,对比新老数据,获得添加、修改、删除的列表 | ||||||
|         List<DeliveryExpressTemplateFreeDO> oldFreeList = expressTemplateFreeMapper.selectListByTemplateId(updateReqVO.getId()); |         List<DeliveryExpressTemplateFreeDO> oldList = expressTemplateFreeMapper.selectListByTemplateId(templateId); | ||||||
|         List<DeliveryExpressTemplateUpdateReqVO.ExpressTemplateFreeUpdateVO> newFreeList = updateReqVO.getTemplateFree(); |         List<DeliveryExpressTemplateFreeDO> newList = INSTANCE.convertTemplateFreeList(templateId, frees); | ||||||
|         List<DeliveryExpressTemplateFreeDO> addFreeList = new ArrayList<>(newFreeList.size()); // 新增包邮区域列表 |         List<List<DeliveryExpressTemplateFreeDO>> diffList = CollectionUtils.diffList(oldList, newList, | ||||||
|         List<DeliveryExpressTemplateFreeDO> updateFreeList = new ArrayList<>(newFreeList.size()); // 更新包邮区域列表 |                 (oldVal, newVal) -> ObjectUtil.equal(oldVal.getId(), newVal.getTemplateId())); | ||||||
|         for (DeliveryExpressTemplateUpdateReqVO.ExpressTemplateFreeUpdateVO item : newFreeList) { |  | ||||||
|             if (Objects.nonNull(item.getId())) { |  | ||||||
|                 updateFreeList.add(INSTANCE.convertTemplateFree(item)); |  | ||||||
|             } else { |  | ||||||
|                 item.setTemplateId(updateReqVO.getId()); |  | ||||||
|                 addFreeList.add(INSTANCE.convertTemplateFree(item)); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         // 1.2 新增 |  | ||||||
|         if (CollUtil.isNotEmpty(addFreeList)) { |  | ||||||
|             expressTemplateFreeMapper.insertBatch(addFreeList); |  | ||||||
|         } |  | ||||||
|         // 1.3 修改 |  | ||||||
|         if (CollUtil.isNotEmpty(updateFreeList)) { |  | ||||||
|             expressTemplateFreeMapper.updateBatch(updateFreeList); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         // 2. 删除 |         // 第二步,批量添加、修改、删除 | ||||||
|         Set<Long> deleteFreeIds = convertSet(oldFreeList, DeliveryExpressTemplateFreeDO::getId); |         if (CollUtil.isNotEmpty(diffList.get(0))) { | ||||||
|         deleteFreeIds.removeAll(convertSet(updateFreeList, DeliveryExpressTemplateFreeDO::getId)); |             expressTemplateFreeMapper.insertBatch(diffList.get(0)); | ||||||
|         if (CollUtil.isNotEmpty(deleteFreeIds)) { |         } | ||||||
|             expressTemplateFreeMapper.deleteBatchIds(deleteFreeIds); |         if (CollUtil.isNotEmpty(diffList.get(1))) { | ||||||
|  |             expressTemplateFreeMapper.updateBatch(diffList.get(1)); | ||||||
|  |         } | ||||||
|  |         if (CollUtil.isNotEmpty(diffList.get(2))) { | ||||||
|  |             expressTemplateFreeMapper.deleteBatchIds(convertList(diffList.get(2), DeliveryExpressTemplateFreeDO::getId)); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private void updateExpressTemplateCharge(DeliveryExpressTemplateUpdateReqVO updateReqVO) { |     private void updateExpressTemplateCharge(Long templateId, Integer chargeMode, List<DeliveryExpressTemplateChargeBaseVO> charges) { | ||||||
|         // 1.1 获得新增/修改的区域列表 |         // 第一步,对比新老数据,获得添加、修改、删除的列表 | ||||||
|         List<DeliveryExpressTemplateChargeDO> oldChargeList = expressTemplateChargeMapper.selectListByTemplateId(updateReqVO.getId()); |         List<DeliveryExpressTemplateChargeDO> oldList = expressTemplateChargeMapper.selectListByTemplateId(templateId); | ||||||
|         List<DeliveryExpressTemplateUpdateReqVO.ExpressTemplateChargeUpdateVO> newChargeList = updateReqVO.getTemplateCharge(); |         List<DeliveryExpressTemplateChargeDO> newList = INSTANCE.convertTemplateChargeList(templateId, chargeMode, charges); | ||||||
|         List<DeliveryExpressTemplateChargeDO> addList = new ArrayList<>(newChargeList.size()); // 新增运费区域列表 |         List<List<DeliveryExpressTemplateChargeDO>> diffList = diffList(oldList, newList, (oldVal, newVal) -> { | ||||||
|         List<DeliveryExpressTemplateChargeDO> updateList = new ArrayList<>(newChargeList.size()); // 更新运费区域列表 |             boolean same = ObjectUtil.equal(oldVal.getId(), newVal.getId()); | ||||||
|         for (DeliveryExpressTemplateUpdateReqVO.ExpressTemplateChargeUpdateVO item : newChargeList) { |             if (same) { | ||||||
|             if (item.getId() != null) { |                 newVal.setChargeMode(chargeMode); // 更新下收费模式 | ||||||
|                 // 计费模式以主表为准 |  | ||||||
|                 item.setChargeMode(updateReqVO.getChargeMode()); |  | ||||||
|                 updateList.add(INSTANCE.convertTemplateCharge(item)); |  | ||||||
|             } else { |  | ||||||
|                 item.setTemplateId(updateReqVO.getId()); |  | ||||||
|                 item.setChargeMode(updateReqVO.getChargeMode()); |  | ||||||
|                 addList.add(INSTANCE.convertTemplateCharge(item)); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         // 1.2 新增 |  | ||||||
|         if (CollUtil.isNotEmpty(addList)) { |  | ||||||
|             expressTemplateChargeMapper.insertBatch(addList); |  | ||||||
|         } |  | ||||||
|         // 1.3 修改 |  | ||||||
|         if (CollUtil.isNotEmpty(updateList)) { |  | ||||||
|             expressTemplateChargeMapper.updateBatch(updateList); |  | ||||||
|             } |             } | ||||||
|  |             return same; | ||||||
|  |         }); | ||||||
|  |  | ||||||
|         // 2. 删除 |         // 第二步,批量添加、修改、删除 | ||||||
|         Set<Long> deleteChargeIds = convertSet(oldChargeList, DeliveryExpressTemplateChargeDO::getId); |         if (CollUtil.isNotEmpty(diffList.get(0))) { | ||||||
|         deleteChargeIds.removeAll(convertSet(updateList, DeliveryExpressTemplateChargeDO::getId)); |             expressTemplateChargeMapper.insertBatch(diffList.get(0)); | ||||||
|         if (CollUtil.isNotEmpty(deleteChargeIds)) { |         } | ||||||
|             expressTemplateChargeMapper.deleteBatchIds(deleteChargeIds); |         if (CollUtil.isNotEmpty(diffList.get(1))) { | ||||||
|  |             expressTemplateChargeMapper.updateBatch(diffList.get(1)); | ||||||
|  |         } | ||||||
|  |         if (CollUtil.isNotEmpty(diffList.get(2))) { | ||||||
|  |             expressTemplateChargeMapper.deleteBatchIds(convertList(diffList.get(2), DeliveryExpressTemplateChargeDO::getId)); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -238,14 +215,4 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla | |||||||
|         return INSTANCE.convertMap(areaId, templateList, chargeList, freeList); |         return INSTANCE.convertMap(areaId, templateList, chargeList, freeList); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private DeliveryExpressTemplateRespBO.Charge findMatchExpressTemplateCharge( |  | ||||||
|             List<DeliveryExpressTemplateChargeDO> templateChargeList, Integer areaId) { |  | ||||||
|         return INSTANCE.convertTemplateCharge(findFirst(templateChargeList, item -> item.getAreaIds().contains(areaId))); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     private DeliveryExpressTemplateRespBO.Free findMatchExpressTemplateFree( |  | ||||||
|             List<DeliveryExpressTemplateFreeDO> templateFreeList, Integer areaId) { |  | ||||||
|         return INSTANCE.convertTemplateFree(findFirst(templateFreeList, item -> item.getAreaIds().contains(areaId))); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -6,17 +6,17 @@ import cn.iocoder.yudao.framework.ip.core.Area; | |||||||
| import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; | import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; | ||||||
| import cn.iocoder.yudao.framework.ip.core.utils.IPUtils; | import cn.iocoder.yudao.framework.ip.core.utils.IPUtils; | ||||||
| import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO; | import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO; | ||||||
| import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeSimpleRespVO; |  | ||||||
| import cn.iocoder.yudao.module.system.convert.ip.AreaConvert; | import cn.iocoder.yudao.module.system.convert.ip.AreaConvert; | ||||||
| import io.swagger.v3.oas.annotations.Operation; | import io.swagger.v3.oas.annotations.Operation; | ||||||
| import io.swagger.v3.oas.annotations.Parameter; | import io.swagger.v3.oas.annotations.Parameter; | ||||||
| import io.swagger.v3.oas.annotations.tags.Tag; | import io.swagger.v3.oas.annotations.tags.Tag; | ||||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.GetMapping; | ||||||
|  | import org.springframework.web.bind.annotation.RequestMapping; | ||||||
|  | import org.springframework.web.bind.annotation.RequestParam; | ||||||
|  | import org.springframework.web.bind.annotation.RestController; | ||||||
|  |  | ||||||
| import java.util.ArrayList; |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Set; |  | ||||||
|  |  | ||||||
| import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||||||
|  |  | ||||||
| @@ -34,28 +34,6 @@ public class AreaController { | |||||||
|         return success(AreaConvert.INSTANCE.convertList(area.getChildren())); |         return success(AreaConvert.INSTANCE.convertList(area.getChildren())); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @GetMapping("/get-children") |  | ||||||
|     @Operation(summary = "获得地区的下级区域") |  | ||||||
|     @Parameter(name = "id", description = "区域编号", required = true, example = "150000") |  | ||||||
|     public CommonResult<List<AreaNodeSimpleRespVO>> getChildren(@RequestParam("id") Integer id) { |  | ||||||
|         Area area = AreaUtils.getArea(id); |  | ||||||
|         Assert.notNull(area, String.format("获取不到 id : %d 的区域", id)); |  | ||||||
|         return success(AreaConvert.INSTANCE.convertList2(area.getChildren())); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     // 4)方法改成 getAreaChildrenList 获得子节点们;5)url 可以已改成 children-list |  | ||||||
|     //@芋艿 是不是叫 getAreaListByIds 更合适。 因为不一定是子节点。 用于前端树选择获取缓存数据。 见 <el-tree-select :cache-data="areaCache"> |  | ||||||
|     @GetMapping("/get-by-ids") |  | ||||||
|     @Operation(summary = "通过区域 ids 获得地区列表") |  | ||||||
|     @Parameter(name = "ids", description = "区域编号 ids", required = true, example = "1,150000") |  | ||||||
|     public CommonResult<List<AreaNodeSimpleRespVO>> getAreaListByIds(@RequestParam("ids") Set<Integer> ids) { |  | ||||||
|         List<Area> areaList = new ArrayList<>(ids.size()); |  | ||||||
|         for (Integer areaId : ids) { |  | ||||||
|             areaList.add(AreaUtils.getArea(areaId)); |  | ||||||
|         } |  | ||||||
|         return success(AreaConvert.INSTANCE.convertList2(areaList)); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @GetMapping("/get-by-ip") |     @GetMapping("/get-by-ip") | ||||||
|     @Operation(summary = "获得 IP 对应的地区名") |     @Operation(summary = "获得 IP 对应的地区名") | ||||||
|     @Parameter(name = "ip", description = "IP", required = true) |     @Parameter(name = "ip", description = "IP", required = true) | ||||||
|   | |||||||
| @@ -1,19 +0,0 @@ | |||||||
| package cn.iocoder.yudao.module.system.controller.admin.ip.vo; |  | ||||||
|  |  | ||||||
| import io.swagger.v3.oas.annotations.media.Schema; |  | ||||||
| import lombok.Data; |  | ||||||
|  |  | ||||||
| @Schema(description = "管理后台 - 简洁的地区节点 Response VO") |  | ||||||
| @Data |  | ||||||
| public class AreaNodeSimpleRespVO { |  | ||||||
|  |  | ||||||
|     @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "110000") |  | ||||||
|     private Integer id; |  | ||||||
|  |  | ||||||
|     @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "北京") |  | ||||||
|     private String name; |  | ||||||
|  |  | ||||||
|     @Schema(description = "是否叶子节点", example = "false") |  | ||||||
|     private Boolean leaf; |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @@ -1,16 +1,12 @@ | |||||||
| package cn.iocoder.yudao.module.system.convert.ip; | package cn.iocoder.yudao.module.system.convert.ip; | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.framework.ip.core.Area; | import cn.iocoder.yudao.framework.ip.core.Area; | ||||||
| import cn.iocoder.yudao.framework.ip.core.enums.AreaTypeEnum; |  | ||||||
| import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO; | import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO; | ||||||
| import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeSimpleRespVO; |  | ||||||
| import cn.iocoder.yudao.module.system.controller.app.ip.vo.AppAreaNodeRespVO; | import cn.iocoder.yudao.module.system.controller.app.ip.vo.AppAreaNodeRespVO; | ||||||
| import org.mapstruct.Mapper; | import org.mapstruct.Mapper; | ||||||
| import org.mapstruct.Mapping; |  | ||||||
| import org.mapstruct.factory.Mappers; | import org.mapstruct.factory.Mappers; | ||||||
|  |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Objects; |  | ||||||
|  |  | ||||||
| @Mapper | @Mapper | ||||||
| public interface AreaConvert { | public interface AreaConvert { | ||||||
| @@ -19,15 +15,6 @@ public interface AreaConvert { | |||||||
|  |  | ||||||
|     List<AreaNodeRespVO> convertList(List<Area> list); |     List<AreaNodeRespVO> convertList(List<Area> list); | ||||||
|  |  | ||||||
|     List<AreaNodeSimpleRespVO> convertList2(List<Area> list); |  | ||||||
|  |  | ||||||
|     @Mapping(source = "type", target = "leaf") |  | ||||||
|     AreaNodeSimpleRespVO convert(Area area); |  | ||||||
|  |  | ||||||
|     default Boolean convertAreaType(Integer type) { |  | ||||||
|         return Objects.equals(AreaTypeEnum.DISTRICT.getType(), type); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     List<AppAreaNodeRespVO> convertList3(List<Area> list); |     List<AppAreaNodeRespVO> convertList3(List<Area> list); | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV