From fa7c4b8c4c615450e8ae409cfeba8135ce229379 Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Fri, 16 Jan 2026 10:48:22 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E9=80=81=E8=B4=B9=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ShopStoreSameCityTransportBaseDTO.java | 35 ++++++++++++------- ...ShopStoreSameCityTransportServiceImpl.java | 34 +++++++++++++++++- 2 files changed, 56 insertions(+), 13 deletions(-) diff --git a/mall-common/src/main/java/com/suisung/mall/common/pojo/dto/ShopStoreSameCityTransportBaseDTO.java b/mall-common/src/main/java/com/suisung/mall/common/pojo/dto/ShopStoreSameCityTransportBaseDTO.java index 5be54a60..053cd08e 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/pojo/dto/ShopStoreSameCityTransportBaseDTO.java +++ b/mall-common/src/main/java/com/suisung/mall/common/pojo/dto/ShopStoreSameCityTransportBaseDTO.java @@ -17,6 +17,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.util.Date; import java.util.List; @Data @@ -25,29 +26,39 @@ import java.util.List; @ApiModel(value = "同城配送基础设置DTO", description = "同城配送基础设置DTO") public class ShopStoreSameCityTransportBaseDTO implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "店铺同城快递运费设置(起送条件+优惠条件)") - public List transportList; + private List transportList; + @ApiModelProperty(value = "店铺同城快递基础运费设置") - ShopStoreSameCityTransportBase transportBase; + private ShopStoreSameCityTransportBase transportBase; public void rebuildTransportList() { - if (this.transportBase == null || this.transportList.isEmpty()) { + if (this.transportBase == null || this.transportList == null || this.transportList.isEmpty()) { return; } - for (ShopStoreSameCityTransport transport : this.transportList) { - transport.setTransport_base_id(this.transportBase.getTransport_base_id()); - transport.setUpdated_by(this.transportBase.getUpdated_by()); - transport.setUpdated_at(this.transportBase.getUpdated_at()); - transport.setStore_id(this.transportBase.getStore_id()); + // 缓存基础设置的属性值,避免在循环中重复调用getter方法 + Long transportBaseId = this.transportBase.getTransport_base_id(); + Long storeId = this.transportBase.getStore_id(); + Integer updatedBy = this.transportBase.getUpdated_by(); + Date updatedAt = this.transportBase.getUpdated_at(); - if (transport.getCreated_by() == null && transport.getUpdated_by() != null) { - transport.setCreated_by(transport.getUpdated_by()); + for (ShopStoreSameCityTransport transport : this.transportList) { + transport.setTransport_base_id(transportBaseId); + transport.setStore_id(storeId); + transport.setUpdated_by(updatedBy); + transport.setUpdated_at(updatedAt); + + // 设置创建时间相关字段 + if (transport.getCreated_by() == null && updatedBy != null) { + transport.setCreated_by(updatedBy); } - if (transport.getCreated_at() == null && transport.getUpdated_at() != null) { - transport.setCreated_at(transport.getUpdated_at()); + if (transport.getCreated_at() == null && updatedAt != null) { + transport.setCreated_at(updatedAt); } } } } + diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportServiceImpl.java index ac789165..1747baca 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportServiceImpl.java @@ -28,6 +28,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; import static com.suisung.mall.common.utils.ContextUtil.getCurrentUser; @@ -113,7 +114,7 @@ public class ShopStoreSameCityTransportServiceImpl extends BaseServiceImpl existingRecordsWrapper = new LambdaQueryWrapper<>(); + existingRecordsWrapper.eq(ShopStoreSameCityTransport::getTransport_base_id, transportBaseId) + .eq(ShopStoreSameCityTransport::getStore_id, storeId); + List existingRecords = list(existingRecordsWrapper); + + // 提取transportList中记录的transport_id,用于判断哪些记录需要删除 + List transportIdsInList = transportList.stream() + .filter(t -> t.getTransport_id() != null && t.getTransport_id() > 0) + .map(ShopStoreSameCityTransport::getTransport_id) + .collect(Collectors.toList()); + + // 删除不在transportList中的现有记录 + for (ShopStoreSameCityTransport existingRecord : existingRecords) { + if (!transportIdsInList.contains(existingRecord.getTransport_id())) { + removeById(existingRecord.getTransport_id()); + } + } + int count = 0; for (ShopStoreSameCityTransport transport : transportList) { try { @@ -169,6 +200,7 @@ public class ShopStoreSameCityTransportServiceImpl extends BaseServiceImpl