fix: prevent duplicate delivery assignments
This commit is contained in:
@@ -62,6 +62,7 @@ public class DeliveryAssignmentService {
|
||||
task.setBizType(BIZ_TYPE_GOODS_ORDER);
|
||||
task.setBizOrderId(order.getId());
|
||||
task.setBizOrderNo(order.getOrderNo());
|
||||
ensureNotAssigned(task.getBizType(), task.getBizOrderId());
|
||||
enrichAddressContact(task, order.getUserId(), order.getAddressId());
|
||||
task.setAmountCent(order.getPayableAmountCent());
|
||||
task.setRemark(order.getRemark());
|
||||
@@ -82,6 +83,7 @@ public class DeliveryAssignmentService {
|
||||
task.setBizType(BIZ_TYPE_EXPRESS_ORDER);
|
||||
task.setBizOrderId(order.getId());
|
||||
task.setBizOrderNo(order.getOrderNo());
|
||||
ensureNotAssigned(task.getBizType(), task.getBizOrderId());
|
||||
task.setContactName(order.getContactName());
|
||||
task.setContactPhone(order.getContactPhone());
|
||||
task.setAddress(order.getDeliveryAddress());
|
||||
@@ -107,6 +109,7 @@ public class DeliveryAssignmentService {
|
||||
task.setBizType(BIZ_TYPE_GROUP_BUY_ORDER);
|
||||
task.setBizOrderId(order.getId());
|
||||
task.setBizOrderNo(order.getOrderNo());
|
||||
ensureNotAssigned(task.getBizType(), task.getBizOrderId());
|
||||
enrichAddressContact(task, order.getUserId(), order.getAddressId());
|
||||
task.setAmountCent(order.getAmountCent());
|
||||
task.setRemark(order.getRemark());
|
||||
@@ -171,6 +174,14 @@ public class DeliveryAssignmentService {
|
||||
return task;
|
||||
}
|
||||
|
||||
private void ensureNotAssigned(String bizType, Long bizOrderId) {
|
||||
for (DeliveryOrderResponse task : tasks.values()) {
|
||||
if (bizType.equals(task.getBizType()) && bizOrderId.equals(task.getBizOrderId())) {
|
||||
throw new BizException("订单已派单");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void enrichAddressContact(DeliveryOrderResponse task, Long userId, Long addressId) {
|
||||
if (addressId == null) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user