feat(order): 添加订单快递单号同步到发货单功能
- 在订单更新时检查并同步快递单号到发货单表 - 使用LambdaQueryWrapper查询相关发货单记录 - 支持新增发货单或更新现有发货单的快递单号 - 添加异常处理避免同步失败影响主流程 - 实现手动录入和无需物流两种配送方式的处理 - 添加日志记录同步失败的情况便于排查问题
This commit is contained in:
@@ -4,6 +4,7 @@ import cn.hutool.core.util.IdUtil;
|
|||||||
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.gxwebsoft.common.core.config.ConfigProperties;
|
import com.gxwebsoft.common.core.config.ConfigProperties;
|
||||||
import com.gxwebsoft.common.core.config.CertificateProperties;
|
import com.gxwebsoft.common.core.config.CertificateProperties;
|
||||||
import com.gxwebsoft.common.core.utils.RedisUtil;
|
import com.gxwebsoft.common.core.utils.RedisUtil;
|
||||||
@@ -320,6 +321,45 @@ public class ShopOrderController extends BaseController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
if (shopOrderService.updateById(shopOrder)) {
|
if (shopOrderService.updateById(shopOrder)) {
|
||||||
|
// 如果订单上带了快递单号(常见于后台手工修正/补录),同步到发货单表,避免发货单还是旧单号
|
||||||
|
if (StrUtil.isNotBlank(shopOrder.getExpressNo()) && shopOrder.getOrderId() != null) {
|
||||||
|
try {
|
||||||
|
List<ShopOrderDelivery> deliveryList = shopOrderDeliveryService.list(
|
||||||
|
new LambdaQueryWrapper<ShopOrderDelivery>()
|
||||||
|
.eq(ShopOrderDelivery::getOrderId, shopOrder.getOrderId())
|
||||||
|
);
|
||||||
|
if (deliveryList == null || deliveryList.isEmpty()) {
|
||||||
|
ShopOrderDelivery delivery = new ShopOrderDelivery();
|
||||||
|
delivery.setOrderId(shopOrder.getOrderId());
|
||||||
|
delivery.setTenantId(ObjectUtil.defaultIfNull(shopOrder.getTenantId(), shopOrderNow.getTenantId()));
|
||||||
|
delivery.setExpressId(ObjectUtil.defaultIfNull(shopOrder.getExpressId(), shopOrderNow.getExpressId()));
|
||||||
|
delivery.setExpressNo(shopOrder.getExpressNo());
|
||||||
|
// 10手动录入 / 20无需物流
|
||||||
|
if (delivery.getExpressId() == null || delivery.getExpressId() == 0) {
|
||||||
|
delivery.setDeliveryMethod(20);
|
||||||
|
} else {
|
||||||
|
delivery.setDeliveryMethod(10);
|
||||||
|
}
|
||||||
|
delivery.setSendName(ObjectUtil.defaultIfNull(shopOrder.getSendName(), shopOrderNow.getSendName()));
|
||||||
|
delivery.setSendPhone(ObjectUtil.defaultIfNull(shopOrder.getSendPhone(), shopOrderNow.getSendPhone()));
|
||||||
|
delivery.setSendAddress(ObjectUtil.defaultIfNull(shopOrder.getSendAddress(), shopOrderNow.getSendAddress()));
|
||||||
|
shopOrderDeliveryService.save(delivery);
|
||||||
|
} else {
|
||||||
|
for (ShopOrderDelivery d : deliveryList) {
|
||||||
|
if (d == null || d.getDeliveryId() == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ShopOrderDelivery patch = new ShopOrderDelivery();
|
||||||
|
patch.setDeliveryId(d.getDeliveryId());
|
||||||
|
patch.setExpressNo(shopOrder.getExpressNo());
|
||||||
|
shopOrderDeliveryService.updateById(patch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.warn("同步更新发货单运单号失败 - orderId={}, expressNo={}",
|
||||||
|
shopOrder.getOrderId(), shopOrder.getExpressNo(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
return success("修改成功");
|
return success("修改成功");
|
||||||
}
|
}
|
||||||
return fail("修改失败");
|
return fail("修改失败");
|
||||||
|
|||||||
Reference in New Issue
Block a user