配送费删除问题修正

This commit is contained in:
Jack 2026-01-16 10:48:22 +08:00
parent d4038dac85
commit fa7c4b8c4c
2 changed files with 56 additions and 13 deletions

View File

@ -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<ShopStoreSameCityTransport> transportList;
private List<ShopStoreSameCityTransport> 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);
}
}
}
}

View File

@ -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<ShopS
}
/**
* 保存同城配送扩展设置列表存在就更新不存在就新增
* 保存同城配送扩展设置列表存在就更新不存在就新增不在列表中的记录会被删除
*
* @param transportList
* @return 成功的记录数
@ -125,6 +126,36 @@ public class ShopStoreSameCityTransportServiceImpl extends BaseServiceImpl<ShopS
return 0;
}
// 获取第一个记录的transport_base_id和store_id作为标识
ShopStoreSameCityTransport firstTransport = transportList.get(0);
if (firstTransport == null || CheckUtil.isEmpty(firstTransport.getTransport_base_id()) ||
CheckUtil.isEmpty(firstTransport.getStore_id())) {
logger.error("缺少 transport_base_id 或 store_id 必要参数!");
return 0;
}
Long transportBaseId = firstTransport.getTransport_base_id();
Long storeId = firstTransport.getStore_id();
// 查询数据库中现有的相关记录
LambdaQueryWrapper<ShopStoreSameCityTransport> existingRecordsWrapper = new LambdaQueryWrapper<>();
existingRecordsWrapper.eq(ShopStoreSameCityTransport::getTransport_base_id, transportBaseId)
.eq(ShopStoreSameCityTransport::getStore_id, storeId);
List<ShopStoreSameCityTransport> existingRecords = list(existingRecordsWrapper);
// 提取transportList中记录的transport_id用于判断哪些记录需要删除
List<Long> 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<ShopS
return count;
}
/**
* 根据区域设置自增id和店铺id修改一条区域配送设置
*