|
@@ -40,6 +40,7 @@ import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
|
|
@@ -219,8 +220,12 @@ public class OpenApiOrderServiceImpl implements OpenApiOrderService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public ResponseResult cancelOrder(OrderCancelReq cancelReq) {
|
|
|
ResponseResult result = ResponseResult.success();
|
|
|
+ if (StringUtils.isBlank(cancelReq.getOrderSn()) && StringUtils.isBlank(cancelReq.getOutOrderSn())) {
|
|
|
+ return ResponseResult.error(ResponseResultCodeEnum.FIELD_EMPTY, "订单号", null);
|
|
|
+ }
|
|
|
Order order = iOrderService.selectOrderBySn(cancelReq.getOrderSn(), cancelReq.getOutOrderSn());
|
|
|
|
|
|
if (Objects.isNull(order)) {
|
|
@@ -243,23 +248,23 @@ public class OpenApiOrderServiceImpl implements OpenApiOrderService {
|
|
|
}
|
|
|
}
|
|
|
} else if (order.getDeliveryStatus().intValue() >= DeliveryStatusEnum.TO_BE_DELIVERED.status.intValue()) {
|
|
|
- cancelOrder(order, order.getCancelReason(), orderStatus);
|
|
|
+ cancelOrder(order, cancelReq.getCancelReason(), orderStatus);
|
|
|
responseResult = cancelThirdOrder(order,order.getDeliveryId(),count,order.getAptOrderId(),order.getAptPhone(),null,order.getCancelReason());
|
|
|
} else if (order.getDeliveryStatus().intValue() == DeliveryStatusEnum.ORDERS_TO_BE_BILLED.status.intValue()) {
|
|
|
- cancelOrder(order, order.getCancelReason(), orderStatus);
|
|
|
+ cancelOrder(order, cancelReq.getCancelReason(), orderStatus);
|
|
|
} else if (order.getDeliveryStatus().equals(DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status)) {
|
|
|
- cancelOrder(order, order.getCancelReason(), orderStatus);
|
|
|
+ cancelOrder(order, cancelReq.getCancelReason(), orderStatus);
|
|
|
List<OrderDelivery> list = iOrderDeliveryService.list(new QueryWrapper<OrderDelivery>().eq("order_sn", order.getOrderSn()).ne("delivery_id",19).ge("delivery_status",DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status));
|
|
|
if(CollectionUtils.isNotEmpty(list)){
|
|
|
for(OrderDelivery orderDelivery:list){
|
|
|
- responseResult = cancelThirdOrder(order,orderDelivery.getDeliveryId(),count,null,null,null,order.getCancelReason());
|
|
|
+ responseResult = cancelThirdOrder(order,orderDelivery.getDeliveryId(),count,null,null,null,cancelReq.getCancelReason());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
} else if (order.getStatus().equals(PayStatusEnum.NO_PAYED.status) && order.getDeliveryStatus().equals(DeliveryStatusEnum.ORDERS_TO_BE_BILLED.status)) {
|
|
|
- cancelOrder(order, order.getCancelReason(), orderStatus);
|
|
|
+ cancelOrder(order, cancelReq.getCancelReason(), orderStatus);
|
|
|
} else if (DeliveryStatusEnum.ABNORMAL.status.equals(order.getDeliveryStatus()) && DeliveryStatusEnum.CANCEL.status.equals(orderStatus)) {
|
|
|
- cancelOrder(order, order.getCancelReason(), orderStatus);
|
|
|
+ cancelOrder(order, cancelReq.getCancelReason(), orderStatus);
|
|
|
}
|
|
|
|
|
|
} catch (Exception e) {
|
|
@@ -415,6 +420,9 @@ public class OpenApiOrderServiceImpl implements OpenApiOrderService {
|
|
|
@Override
|
|
|
public ResponseResult riderLocation(OrderLocationReq locationReq) {
|
|
|
ResponseResult result = ResponseResult.success();
|
|
|
+ if (StringUtils.isBlank(locationReq.getOrderSn()) && StringUtils.isBlank(locationReq.getOutOrderSn())) {
|
|
|
+ return ResponseResult.error(ResponseResultCodeEnum.FIELD_EMPTY, "订单号", null);
|
|
|
+ }
|
|
|
Order order = iOrderService.selectOrderBySn(locationReq.getOrderSn(), locationReq.getOutOrderSn());
|
|
|
if (Objects.isNull(order)) {
|
|
|
return ResponseResult.error(ResponseResultCodeEnum.ORDER_NOT_EXIST);
|
|
@@ -422,9 +430,7 @@ public class OpenApiOrderServiceImpl implements OpenApiOrderService {
|
|
|
|
|
|
boolean flag = order.getDeliveryStatus() > DeliveryStatusEnum.IN_DELIVERY.getStatus() ||
|
|
|
DeliveryStatusEnum.CANCEL.status.equals(order.getDeliveryStatus()) || DeliveryStatusEnum.ABNORMAL.status.equals(order.getDeliveryStatus());
|
|
|
- if (flag) {
|
|
|
- return ResponseResult.error(ResponseResultCodeEnum.ORDER_STATUS_FAIL);
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>()
|
|
|
.eq("deleted", 0)
|
|
@@ -432,6 +438,10 @@ public class OpenApiOrderServiceImpl implements OpenApiOrderService {
|
|
|
.eq("delivery_id", order.getDeliveryId()));
|
|
|
DspDelivery delivery = iDspDeliveryService.findById(order.getDeliveryId());
|
|
|
|
|
|
+ if (flag || Objects.isNull(delivery) || Objects.isNull(orderDelivery)) {
|
|
|
+ return ResponseResult.error(ResponseResultCodeEnum.ORDER_STATUS_FAIL);
|
|
|
+ }
|
|
|
+
|
|
|
OrderLocationVo vo = getRiderLocation(order, orderDelivery, delivery);
|
|
|
if (Objects.isNull(vo)) {
|
|
|
return ResponseResult.error(ResponseResultCodeEnum.FAIL);
|