|
@@ -1,32 +1,60 @@
|
|
|
package com.ydd.app.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
+import com.ydd.api.DeliveryService;
|
|
|
+import com.ydd.app.dto.OrderCancelReq;
|
|
|
+import com.ydd.app.dto.OrderLocationReq;
|
|
|
import com.ydd.app.dto.OrderCreateReq;
|
|
|
import com.ydd.app.dto.OrderReq;
|
|
|
-import com.ydd.app.dto.PushOrderDto;
|
|
|
+import com.ydd.app.dto.OrderPushReq;
|
|
|
import com.ydd.app.service.ApiOrderNewService;
|
|
|
import com.ydd.app.service.OpenApiOrderService;
|
|
|
+import com.ydd.app.vo.OrderLocationVo;
|
|
|
import com.ydd.app.vo.OrderCreateVo;
|
|
|
import com.ydd.app.vo.PushOrderVo;
|
|
|
import com.ydd.common.constant.RedisKeyConstant;
|
|
|
import com.ydd.common.core.domain.ResponseResult;
|
|
|
import com.ydd.common.core.redis.RedisCache;
|
|
|
+import com.ydd.common.enums.DeliveryTypeEnums;
|
|
|
import com.ydd.common.enums.ResponseResultCodeEnum;
|
|
|
+import com.ydd.common.enums.WaimaiTypeEnums;
|
|
|
import com.ydd.common.utils.SnCodeUtils;
|
|
|
import com.ydd.common.utils.StringUtils;
|
|
|
-import com.ydd.module.domain.Order;
|
|
|
-import com.ydd.module.domain.Product;
|
|
|
-import com.ydd.module.domain.Shop;
|
|
|
-import com.ydd.module.service.IOrderService;
|
|
|
-import com.ydd.module.service.IProductService;
|
|
|
-import com.ydd.module.service.IShopService;
|
|
|
+import com.ydd.ecloud.core.enums.DeletedEnum;
|
|
|
+import com.ydd.ecloud.core.utils.BigDecimalUtils;
|
|
|
+import com.ydd.module.CancelOrderUtils;
|
|
|
+import com.ydd.module.domain.*;
|
|
|
+import com.ydd.module.dto.CancelOrderDto;
|
|
|
+import com.ydd.module.dto.CouponDto;
|
|
|
+import com.ydd.module.enums.DeliveryStatusEnum;
|
|
|
+import com.ydd.module.enums.MemberCouponStatusEnum;
|
|
|
+import com.ydd.module.enums.OrderCancelTypeEnum;
|
|
|
+import com.ydd.module.enums.PayStatusEnum;
|
|
|
+import com.ydd.module.service.*;
|
|
|
+import com.ydd.third.common.utils.CoordinateUtils;
|
|
|
+import com.ydd.third.common.vo.ResObject;
|
|
|
+import com.ydd.third.common.vo.huolalavo.HirtualPhoneInfo;
|
|
|
+import com.ydd.third.common.vo.vo.order.*;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+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.interceptor.TransactionAspectSupport;
|
|
|
+
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
* 订单类开放接口 ServiceImpl
|
|
|
+ *
|
|
|
* @author 叶君翔
|
|
|
* @date 2022/04/08 15:20
|
|
|
*/
|
|
@@ -36,73 +64,88 @@ import org.springframework.stereotype.Service;
|
|
|
public class OpenApiOrderServiceImpl implements OpenApiOrderService {
|
|
|
|
|
|
private final IOrderService iOrderService;
|
|
|
+ private final IOrderLogService iOrderLogService;
|
|
|
|
|
|
private final IProductService iProductService;
|
|
|
|
|
|
private final IShopService iShopService;
|
|
|
+ private final IDspDeliveryService iDspDeliveryService;
|
|
|
|
|
|
- private final RedisCache redisCache;
|
|
|
+ private final IShopDeliveryBindService iShopDeliveryBindService;
|
|
|
+ private final IOrderDeliveryService iOrderDeliveryService;
|
|
|
|
|
|
private final ApiOrderNewService apiOrderNewService;
|
|
|
|
|
|
+ private final IOrderTipService iOrderTipService;
|
|
|
+
|
|
|
+ // redis控制台
|
|
|
+ private final RedisTemplate redisTemplate;
|
|
|
+
|
|
|
+ private final RedisCache redisCache;
|
|
|
+
|
|
|
+ private final DeliveryService client;
|
|
|
+
|
|
|
+ private final IShopWaimaiService iShopWaimaiService;
|
|
|
+ private final IDspWaimaiService iDspWaimaiService;
|
|
|
+
|
|
|
@Override
|
|
|
- public ResponseResult pushOrder(PushOrderDto orderDto) {
|
|
|
+ public ResponseResult pushOrder(OrderPushReq pushReq) {
|
|
|
// 特殊必填处理
|
|
|
- ResponseResult result = specialJudge(orderDto);
|
|
|
- if (result.getCode() == 1) {
|
|
|
+ ResponseResult result = specialJudge(pushReq);
|
|
|
+ if (result.getCode() != ResponseResultCodeEnum.SUCCESS.getCode()) {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- Order order = iOrderService.getOne(new QueryWrapper<Order>().eq("deleted", 0).eq("out_trade_no", orderDto.getOutOrderSn()));
|
|
|
+ Order order = iOrderService.getOne(new QueryWrapper<Order>().eq("deleted", 0).eq("out_trade_no", pushReq.getOutOrderSn()));
|
|
|
if (order == null) {
|
|
|
order = new Order();
|
|
|
}
|
|
|
|
|
|
// 添加订单其它属性
|
|
|
- order.setOutTradeNo(orderDto.getOutOrderSn());
|
|
|
- order.setProductId(orderDto.getCategoryId().longValue());
|
|
|
+ order.setOutTradeNo(pushReq.getOutOrderSn());
|
|
|
+ order.setProductId(pushReq.getCategoryId().longValue());
|
|
|
Product product = iProductService.getById(order.getProductId());
|
|
|
order.setProductName(product.getName());
|
|
|
- order.setWeight(orderDto.getWeight());
|
|
|
- if (StringUtils.isNotBlank(orderDto.getRemark())) {
|
|
|
- order.setTakeRemark(orderDto.getRemark());
|
|
|
- }
|
|
|
- order.setReceiptContactName(orderDto.getReceiverName());
|
|
|
- order.setReceiptPhone(orderDto.getReceiverPhone());
|
|
|
- order.setReceiptProvinceName(orderDto.getReceiverProvinceName());
|
|
|
- order.setReceiptCityName(orderDto.getReceiverCityName());
|
|
|
- if (StringUtils.isNotBlank(orderDto.getReceiverDistrictName())) {
|
|
|
- order.setReceiptDistrictName(orderDto.getReceiverDistrictName());
|
|
|
- }
|
|
|
- order.setReceiptAddress(orderDto.getReceiverAddress());
|
|
|
- if (StringUtils.isNotBlank(orderDto.getReceiverHouseNumber())) {
|
|
|
- order.setReceiptStreet(orderDto.getReceiverHouseNumber());
|
|
|
- }
|
|
|
- order.setReceiptLng(orderDto.getReceiverLng());
|
|
|
- order.setReceiptLat(orderDto.getReceiverLat());
|
|
|
- if (StringUtils.isNotBlank(orderDto.getShopCode())) {
|
|
|
- Shop shop = iShopService.getOne(new QueryWrapper<Shop>().eq("deleted", 0).eq("code", orderDto.getShopCode()));
|
|
|
+ order.setWeight(pushReq.getWeight());
|
|
|
+ if (StringUtils.isNotBlank(pushReq.getRemark())) {
|
|
|
+ order.setTakeRemark(pushReq.getRemark());
|
|
|
+ }
|
|
|
+ order.setReceiptContactName(pushReq.getReceiverName());
|
|
|
+ order.setReceiptPhone(pushReq.getReceiverPhone());
|
|
|
+ order.setReceiptProvinceName(pushReq.getReceiverProvinceName());
|
|
|
+ order.setReceiptCityName(pushReq.getReceiverCityName());
|
|
|
+ if (StringUtils.isNotBlank(pushReq.getReceiverDistrictName())) {
|
|
|
+ order.setReceiptDistrictName(pushReq.getReceiverDistrictName());
|
|
|
+ }
|
|
|
+ order.setReceiptAddress(pushReq.getReceiverAddress());
|
|
|
+ if (StringUtils.isNotBlank(pushReq.getReceiverHouseNumber())) {
|
|
|
+ order.setReceiptStreet(pushReq.getReceiverHouseNumber());
|
|
|
+ }
|
|
|
+ order.setReceiptLng(pushReq.getReceiverLng());
|
|
|
+ order.setReceiptLat(pushReq.getReceiverLat());
|
|
|
+ if (StringUtils.isNotBlank(pushReq.getShopCode())) {
|
|
|
+ Shop shop = iShopService.getOne(new QueryWrapper<Shop>().eq("deleted", 0).eq("code", pushReq.getShopCode()));
|
|
|
if (shop != null) {
|
|
|
order.setMerchantId(shop.getMerchantId());
|
|
|
order.setShopId(shop.getId());
|
|
|
order.setShopName(shop.getName());
|
|
|
}
|
|
|
} else {
|
|
|
- order.setSendContactName(orderDto.getSendName());
|
|
|
- order.setSendPhone(orderDto.getSendPhone());
|
|
|
- order.setSendProvinceName(orderDto.getSendProvinceName());
|
|
|
- order.setSendCityName(orderDto.getSendCityName());
|
|
|
- if (StringUtils.isNotBlank(orderDto.getSendDistrictName())) {
|
|
|
- order.setSendDistrictName(orderDto.getSendDistrictName());
|
|
|
+ order.setSendContactName(pushReq.getSendName());
|
|
|
+ order.setSendPhone(pushReq.getSendPhone());
|
|
|
+ order.setSendProvinceName(pushReq.getSendProvinceName());
|
|
|
+ order.setSendCityName(pushReq.getSendCityName());
|
|
|
+ if (StringUtils.isNotBlank(pushReq.getSendDistrictName())) {
|
|
|
+ order.setSendDistrictName(pushReq.getSendDistrictName());
|
|
|
}
|
|
|
- order.setSendAddress(orderDto.getSendAddress());
|
|
|
- if (StringUtils.isNotBlank(orderDto.getSendHouseNumber())) {
|
|
|
- order.setSendStreet(orderDto.getSendHouseNumber());
|
|
|
+ order.setSendAddress(pushReq.getSendAddress());
|
|
|
+ if (StringUtils.isNotBlank(pushReq.getSendHouseNumber())) {
|
|
|
+ order.setSendStreet(pushReq.getSendHouseNumber());
|
|
|
}
|
|
|
- order.setSendLng(orderDto.getSendLng());
|
|
|
- order.setSendLat(orderDto.getSendLat());
|
|
|
+ order.setSendLng(pushReq.getSendLng());
|
|
|
+ order.setSendLat(pushReq.getSendLat());
|
|
|
}
|
|
|
- order.setLbDaySeq(orderDto.getDaySeq());
|
|
|
+ order.setLbDaySeq(pushReq.getDaySeq());
|
|
|
order.setOrderSn(SnCodeUtils.createSn());
|
|
|
|
|
|
if (order.getId() == null) {
|
|
@@ -112,19 +155,13 @@ public class OpenApiOrderServiceImpl implements OpenApiOrderService {
|
|
|
}
|
|
|
|
|
|
PushOrderVo vo = new PushOrderVo();
|
|
|
- vo.setOutOrderSn(orderDto.getOutOrderSn());
|
|
|
+ vo.setOutOrderSn(pushReq.getOutOrderSn());
|
|
|
vo.setOrderSn(order.getOrderSn());
|
|
|
result.setData(vo);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public Boolean cancelOrder(OrderReq orderReq) {
|
|
|
- // Order order = iOrderService.selectOrderBySn(orderReq.getOrderSn(), orderReq.getoutt);
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- private ResponseResult specialJudge(PushOrderDto orderDto) {
|
|
|
+ private ResponseResult specialJudge(OrderPushReq orderDto) {
|
|
|
ResponseResult result = ResponseResult.success();
|
|
|
if (StringUtils.isBlank(orderDto.getShopCode())) {
|
|
|
if (StringUtils.isBlank(orderDto.getSendName())) {
|
|
@@ -153,6 +190,512 @@ public class OpenApiOrderServiceImpl implements OpenApiOrderService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ public ResponseResult cancelOrder(OrderCancelReq cancelReq) {
|
|
|
+ ResponseResult result = ResponseResult.success();
|
|
|
+ Order order = iOrderService.selectOrderBySn(cancelReq.getOrderSn(), cancelReq.getOutOrderSn());
|
|
|
+
|
|
|
+ if (Objects.isNull(order)) {
|
|
|
+ return ResponseResult.error(ResponseResultCodeEnum.ORDER_NOT_EXIST);
|
|
|
+ }
|
|
|
+
|
|
|
+ int count = 0;
|
|
|
+ ResponseResult responseResult = new ResponseResult();
|
|
|
+ Integer orderStatus = DeliveryStatusEnum.CANCEL.status;
|
|
|
+ try {
|
|
|
+ boolean flag = (order.getDeliveryStatus().equals(DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status) || order.getDeliveryStatus().equals(DeliveryStatusEnum.TO_BE_DELIVERED.status))
|
|
|
+ || order.getDeliveryStatus().equals(DeliveryStatusEnum.IN_DELIVERY.status);
|
|
|
+ if (flag) {
|
|
|
+ if (redisTemplate.hasKey(order.getOrderSn() + "_cancel")) {
|
|
|
+ Long size = redisTemplate.opsForList().size(order.getOrderSn() + "_cancel");
|
|
|
+ if (size != null) {
|
|
|
+ for (long i = 0; i < size; i++) {
|
|
|
+ OrderResultVo vo = (OrderResultVo) redisTemplate.opsForList().rightPop(order.getOrderSn() + "_cancel");
|
|
|
+ responseResult = cancelThirdOrder(order, vo.getDeliveryId(), count, vo.getAptOrderId(), vo.getPhone(), null, cancelReq.getCancelReason());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (order.getDeliveryStatus().intValue() >= DeliveryStatusEnum.TO_BE_DELIVERED.status.intValue()) {
|
|
|
+ cancelOrder(order, order.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);
|
|
|
+ } else if (order.getDeliveryStatus().equals(DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status)) {
|
|
|
+ cancelOrder(order, order.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());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (order.getStatus().equals(PayStatusEnum.NO_PAYED.status) && order.getDeliveryStatus().equals(DeliveryStatusEnum.ORDERS_TO_BE_BILLED.status)) {
|
|
|
+ cancelOrder(order, order.getCancelReason(), orderStatus);
|
|
|
+ } else if (DeliveryStatusEnum.ABNORMAL.status.equals(order.getDeliveryStatus()) && DeliveryStatusEnum.CANCEL.status.equals(orderStatus)) {
|
|
|
+ cancelOrder(order, order.getCancelReason(), orderStatus);
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ count += 1;
|
|
|
+ // 回滚事务
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (count > 0 || responseResult.getCode() == ResponseResultCodeEnum.FAIL.getCode()) {
|
|
|
+ return ResponseResult.error(ResponseResultCodeEnum.FAIL);
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ public ResponseResult cancelThirdOrder(Order order,Long deliveryId,int result,Integer aptOrderId,String aptPhone,Integer cancelType,String cancenlResonMsg){
|
|
|
+ ResponseResult responseResult = new ResponseResult();
|
|
|
+ responseResult.setCode(ResponseResultCodeEnum.SUCCESS.getCode());
|
|
|
+ DspDelivery delivery = iDspDeliveryService.getById(deliveryId);
|
|
|
+ OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>().eq("order_sn", order.getOrderSn()).eq("delivery_id", deliveryId));
|
|
|
+ // 违约金处理
|
|
|
+ BigDecimal deductFee = BigDecimal.ZERO;
|
|
|
+ if (DeliveryStatusEnum.CANCEL.status.equals(orderDelivery.getDeliveryStatus())) {
|
|
|
+ // 三方平台已取消
|
|
|
+ cancelSf(deductFee, order,deliveryId,"");
|
|
|
+ } else {
|
|
|
+ //调用配送平台取消接口
|
|
|
+ ResObject<CancelOrderResultVo> resObject = getCancelOrderResultVoResObject(orderDelivery.getChildOrderSn(), orderDelivery.getOutTradeNo(), orderDelivery.getUuptOpenId(), aptOrderId,
|
|
|
+ aptPhone, order.getId(), delivery, cancelType, cancenlResonMsg);
|
|
|
+ if (resObject.getCode() != 0) {
|
|
|
+ result += 1;
|
|
|
+ orderDelivery.setCancelResult(resObject.getMsg());
|
|
|
+ iOrderDeliveryService.update(orderDelivery, new UpdateWrapper<OrderDelivery>().eq("order_sn", order.getOrderSn()).eq("delivery_id", deliveryId));
|
|
|
+ if(resObject.getCode() !=2011&&!orderDelivery.getDeliveryName().contains("达达")){
|
|
|
+ responseResult.setCode(ResponseResultCodeEnum.FAIL.getCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (resObject.getData() != null&&!DeliveryTypeEnums.SHAN_SONG.getType().equals(delivery.getType())) {
|
|
|
+ deductFee = resObject.getData().getDeductFee() == null ? BigDecimal.ZERO : resObject.getData().getDeductFee();
|
|
|
+ if (deductFee.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ redisCache.setCacheObject("deuctFee_"+order.getOrderSn(), deductFee);
|
|
|
+ redisCache.expire("deuctFee_"+order.getOrderSn(),2, TimeUnit.HOURS);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //商家取消订单 顺丰是实时处理不回调
|
|
|
+ if (DeliveryTypeEnums.SHUN_FENG.getType().equals(delivery.getType()) || DeliveryTypeEnums.FENG_NIAO.getType().equals(delivery.getType())
|
|
|
+ || DeliveryTypeEnums.FENG_NIAO_PT.getType().equals(delivery.getType())
|
|
|
+ || DeliveryTypeEnums.MEI_TUAN_ZB.getType().equals(delivery.getType())
|
|
|
+ || DeliveryTypeEnums.MEI_TUAN_SG_ZB.getType().equals(delivery.getType())) {
|
|
|
+ cancelSf(deductFee, order,deliveryId,resObject.getMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (result > 0) {
|
|
|
+ responseResult.setCode(ResponseResultCodeEnum.FAIL.getCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return responseResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void cancelOrder(Order order, String cancelReason, Integer orderStatus) {
|
|
|
+ order.setStatus(PayStatusEnum.CANCEL.status);
|
|
|
+ order.setDeliveryStatus(orderStatus);
|
|
|
+ order.setCancelReason(cancelReason);
|
|
|
+ iOrderService.updateById(order);
|
|
|
+ iOrderLogService.addOrderLog(order.getId(), order.getDeliveryStatus());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void cancelSf(BigDecimal deductFee, Order order,Long deliveryId,String cancelResult) {
|
|
|
+ OrderDelivery orderDelivery = new OrderDelivery();
|
|
|
+ orderDelivery.setDeliveryStatus(DeliveryStatusEnum.CANCEL.status);
|
|
|
+ orderDelivery.setCancelTime(new Date());
|
|
|
+ orderDelivery.setCancelResult(cancelResult);
|
|
|
+ iOrderDeliveryService.update(orderDelivery, new UpdateWrapper<OrderDelivery>().eq("order_sn", order.getOrderSn()).eq("delivery_id", deliveryId));
|
|
|
+ int count = iOrderDeliveryService.count(new QueryWrapper<OrderDelivery>().eq("order_sn", order.getOrderSn())
|
|
|
+ .ne("delivery_status", DeliveryStatusEnum.CANCEL.status).ne("out_trade_no", -1).isNotNull("out_trade_no"));
|
|
|
+
|
|
|
+ BigDecimal result = redisCache.getCacheObject(order.getOrderSn());
|
|
|
+ if (result != null) {
|
|
|
+ deductFee = result;
|
|
|
+ redisCache.deleteObject(order.getOrderSn());
|
|
|
+ }
|
|
|
+ if (count == 0) {
|
|
|
+ order = iOrderService.getById(order.getId());
|
|
|
+ if (order.getRefundMoney().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ order.setRefundMoney(order.getPayAmount().subtract(deductFee));
|
|
|
+ List<OrderTip> orderTips = iOrderTipService.list(new QueryWrapper<OrderTip>().eq("order_no", order.getOrderSn()).eq("status", PayStatusEnum.PAYED.status));
|
|
|
+ BigDecimal refundMoney = order.getPayAmount().subtract(deductFee);
|
|
|
+
|
|
|
+ BigDecimal tips = orderTips.stream().map(OrderTip::getAmount).reduce(BigDecimal.ZERO, BigDecimalUtils::sum);
|
|
|
+ refundMoney = refundMoney.subtract(tips);
|
|
|
+ apiOrderNewService.refundTip(orderTips, "加小费退款", order.getMemberId(), order.getMerchantId());
|
|
|
+
|
|
|
+ apiOrderNewService.refund(order.getOrderSn(), refundMoney, "取消订单退款", order.getMemberId(), order.getMerchantId());
|
|
|
+ redisTemplate.delete(order.getOrderSn()+"to_recive:");
|
|
|
+ }
|
|
|
+ iOrderService.updateById(order);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private ResObject<CancelOrderResultVo> getCancelOrderResultVoResObject(String orderNo, String outTradeNo, String uuptOpenId, Integer aptOrderId, String aptPhone,
|
|
|
+ Long orderId, DspDelivery delivery, Integer cancelType,String cancenlResonMsg) {
|
|
|
+ OrderDelivery orderDelivery = iOrderDeliveryService.getOne(new QueryWrapper<OrderDelivery>().eq("child_order_sn", orderNo));
|
|
|
+
|
|
|
+ CancelOrderDto dto = new CancelOrderDto();
|
|
|
+ dto.setOrderSn(orderNo);
|
|
|
+ dto.setReason(OrderCancelTypeEnum.getNameByType(cancelType));
|
|
|
+ dto.setCancelCode(cancelType);
|
|
|
+ dto.setCancenlResonMsg(cancenlResonMsg);
|
|
|
+ dto.setOutTradeNo(outTradeNo);
|
|
|
+ dto.setUuptOpenId(uuptOpenId);
|
|
|
+
|
|
|
+ dto.setAptOrderId(aptOrderId);
|
|
|
+ dto.setAptPhone(aptPhone);
|
|
|
+
|
|
|
+ dto.setKfAccessToken(orderDelivery.getKfToken());
|
|
|
+
|
|
|
+ // 美团众包
|
|
|
+ dto.setZbOrderSn(orderDelivery.getOutTradeNo());
|
|
|
+ dto.setZbAccessToken(orderDelivery.getZbToken());
|
|
|
+
|
|
|
+ // 美团在我们平台的订单id
|
|
|
+ dto.setOrderId(orderId);
|
|
|
+ dto.setIsMine(orderDelivery.getIsMine());
|
|
|
+ // 货拉拉订单状态
|
|
|
+ dto.setHllStatus(orderDelivery.getHllStatus());
|
|
|
+ //顺丰需要shopId delivery配送平台信息
|
|
|
+
|
|
|
+ CancelOrderVo orderVo = CancelOrderUtils.createOrderVo(dto, delivery);
|
|
|
+ Order order = iOrderService.getById(orderId);
|
|
|
+ if (order.getMerchantId() != null && orderDelivery.getIsMine().equals(1)) {
|
|
|
+ ShopDeliveryBind shopDeliveryBind = iShopDeliveryBindService.getShopDeliveryBind(order.getMerchantId(), order.getShopId(), delivery.getId(), delivery.getType());
|
|
|
+ if (shopDeliveryBind != null) {
|
|
|
+ orderVo.setAccessToken(shopDeliveryBind.getAuthToken());
|
|
|
+ orderVo.setMerchantId(shopDeliveryBind.getThirdShopId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //订单取消返回结果
|
|
|
+ ResObject<CancelOrderResultVo> resObject = client.cancelOrder(orderVo);
|
|
|
+ if (resObject.getCode() != 0) {
|
|
|
+ try {
|
|
|
+ log.info("<===========>重新发起取消开始********************");
|
|
|
+ TimeUnit.SECONDS.sleep(5);
|
|
|
+ resObject = client.cancelOrder(orderVo);
|
|
|
+ } catch (Exception e) {
|
|
|
+
|
|
|
+ }
|
|
|
+ log.error("取消订单失败" + JSONObject.toJSONString(orderVo));
|
|
|
+ }
|
|
|
+ return resObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResponseResult riderLocation(OrderLocationReq locationReq) {
|
|
|
+ ResponseResult result = ResponseResult.success();
|
|
|
+ Order order = iOrderService.selectOrderBySn(locationReq.getOrderSn(), locationReq.getOutOrderSn());
|
|
|
+ if (Objects.isNull(order)) {
|
|
|
+ return ResponseResult.error(ResponseResultCodeEnum.ORDER_NOT_EXIST);
|
|
|
+ }
|
|
|
+
|
|
|
+ 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)
|
|
|
+ .eq("order_sn", order.getOrderSn())
|
|
|
+ .eq("delivery_id", order.getDeliveryId()));
|
|
|
+ DspDelivery delivery = iDspDeliveryService.findById(order.getDeliveryId());
|
|
|
+
|
|
|
+ OrderLocationVo vo = getRiderLocation(order, orderDelivery, delivery);
|
|
|
+ if (Objects.isNull(vo)) {
|
|
|
+ return ResponseResult.error(ResponseResultCodeEnum.FAIL);
|
|
|
+ }else {
|
|
|
+ result.setData(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private OrderLocationVo getRiderLocation(Order order, OrderDelivery orderDelivery, DspDelivery delivery) {
|
|
|
+ OrderLocationVo locationVo = new OrderLocationVo();
|
|
|
+
|
|
|
+ if (DeliveryTypeEnums.DADA.getType().equals(delivery.getType())&&orderDelivery!=null) {
|
|
|
+ OrderQueryVo orderQueryVo = new OrderQueryVo();
|
|
|
+ orderQueryVo.setLbClient(DeliveryTypeEnums.DADA.getName());
|
|
|
+ orderQueryVo.setOrderNo(orderDelivery.getChildOrderSn());
|
|
|
+ orderQueryVo.setIsDirectDelivery(0);
|
|
|
+ if (orderDelivery.getIsMine() == 1L){
|
|
|
+ ShopDeliveryBind shopDeliveryBind = iShopDeliveryBindService.getShopDeliveryBind(order.getMerchantId(), order.getShopId(), delivery.getId(), delivery.getType());
|
|
|
+ if (shopDeliveryBind != null){
|
|
|
+ orderQueryVo.setMerchantId(shopDeliveryBind.getThirdShopId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ResObject<OrderQueryResultVo> resObject = client.queryOrderInfo(orderQueryVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(resObject.getCode())) {
|
|
|
+ String riderLat = resObject.getData().getRiderLat().toString();
|
|
|
+ String riderLng = resObject.getData().getRiderLng().toString();
|
|
|
+ locationVo.setShipperLat(riderLat);
|
|
|
+ locationVo.setShipperLng(riderLng);
|
|
|
+ locationVo.setShipperName(resObject.getData().getRiderName());
|
|
|
+ locationVo.setShipperPhone(resObject.getData().getRiderPhone());
|
|
|
+ }
|
|
|
+ } else if (DeliveryTypeEnums.DADA_YZ.getType().equals(delivery.getType())&&orderDelivery!=null) {
|
|
|
+ OrderQueryVo orderQueryVo = new OrderQueryVo();
|
|
|
+ orderQueryVo.setLbClient(DeliveryTypeEnums.DADA_YZ.getName());
|
|
|
+ orderQueryVo.setOrderNo(orderDelivery.getChildOrderSn());
|
|
|
+ orderQueryVo.setIsDirectDelivery(1);
|
|
|
+ if (orderDelivery.getIsMine() == 1){
|
|
|
+ ShopDeliveryBind shopDeliveryBind = iShopDeliveryBindService.getShopDeliveryBind(order.getMerchantId(), order.getShopId(), delivery.getId(), delivery.getType());
|
|
|
+
|
|
|
+ if (shopDeliveryBind != null){
|
|
|
+ orderQueryVo.setMerchantId(shopDeliveryBind.getThirdShopId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ResObject<OrderQueryResultVo> resObject = client.queryOrderInfo(orderQueryVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(resObject.getCode())) {
|
|
|
+ String riderLat = resObject.getData().getRiderLat().toString();
|
|
|
+ String riderLng = resObject.getData().getRiderLng().toString();
|
|
|
+ locationVo.setShipperLat(riderLat);
|
|
|
+ locationVo.setShipperLng(riderLng);
|
|
|
+ locationVo.setShipperName(resObject.getData().getRiderName());
|
|
|
+ locationVo.setShipperPhone(resObject.getData().getRiderPhone());
|
|
|
+ }
|
|
|
+ } else if (DeliveryTypeEnums.UUPT.getType().equals(delivery.getType())) {
|
|
|
+ OrderQueryVo orderQueryVo = new OrderQueryVo();
|
|
|
+ orderQueryVo.setLbClient(DeliveryTypeEnums.UUPT.getName());
|
|
|
+ orderQueryVo.setOrderNo(order.getOutTradeNo());
|
|
|
+ orderQueryVo.setUuptOpenId(order.getUuptOpenId());
|
|
|
+ ResObject<OrderQueryResultVo> resObject = client.queryOrderInfo(orderQueryVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(resObject.getCode())) {
|
|
|
+ if(resObject.getData().getRiderLat() != null){
|
|
|
+ double[] receiverGps = CoordinateUtils.bd09_To_Gcj02(resObject.getData().getRiderLat().doubleValue(), resObject.getData().getRiderLng().doubleValue());
|
|
|
+ locationVo.setShipperLat(receiverGps[0] + "");
|
|
|
+ locationVo.setShipperLng(receiverGps[1] + "");
|
|
|
+ locationVo.setShipperName(resObject.getData().getRiderName());
|
|
|
+ locationVo.setShipperPhone(resObject.getData().getRiderPhone());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (DeliveryTypeEnums.AIPT.getType().equals(delivery.getType())) {
|
|
|
+ OrderQueryVo orderQueryVo = new OrderQueryVo();
|
|
|
+ orderQueryVo.setLbClient(DeliveryTypeEnums.AIPT.getName());
|
|
|
+ orderQueryVo.setAptOrderId(order.getAptOrderId());
|
|
|
+ orderQueryVo.setAptPhone(order.getAptPhone());
|
|
|
+ if (order.getDeliveryStatus() > DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status) {
|
|
|
+ ResObject<OrderQueryResultVo> resObject = client.queryOrderInfo(orderQueryVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(resObject.getCode())) {
|
|
|
+ if(resObject.getData().getRiderLat() != null){
|
|
|
+ double[] receiverGps = CoordinateUtils.bd09_To_Gcj02(resObject.getData().getRiderLat().doubleValue(), resObject.getData().getRiderLng().doubleValue());
|
|
|
+ locationVo.setShipperLat(receiverGps[0] + "");
|
|
|
+ locationVo.setShipperLng(receiverGps[1] + "");
|
|
|
+ locationVo.setShipperName(resObject.getData().getRiderName());
|
|
|
+ locationVo.setShipperPhone(resObject.getData().getRiderPhone());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (DeliveryTypeEnums.FENG_NIAO.getType().equals(delivery.getType())&&orderDelivery!=null) {
|
|
|
+ if (order.getDeliveryStatus() > DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status) {
|
|
|
+ OrderQueryVo orderQueryVo = new OrderQueryVo();
|
|
|
+ orderQueryVo.setLbClient(DeliveryTypeEnums.FENG_NIAO.getName());
|
|
|
+ orderQueryVo.setOrderNo(orderDelivery.getChildOrderSn());
|
|
|
+ orderQueryVo.setAccessToken(delivery.getAuthToken());
|
|
|
+ orderQueryVo.setMerchantId(delivery.getShopId());
|
|
|
+ ResObject<OrderQueryResultVo> resObject = client.queryOrderInfo(orderQueryVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(resObject.getCode())) {
|
|
|
+ locationVo.setShipperName(resObject.getData().getRiderName());
|
|
|
+ locationVo.setShipperPhone(resObject.getData().getRiderPhone());
|
|
|
+ }
|
|
|
+ RiderLocationVo riderLocationVo = new RiderLocationVo();
|
|
|
+ riderLocationVo.setLbClient(DeliveryTypeEnums.FENG_NIAO.getName());
|
|
|
+ riderLocationVo.setOrderNo(orderDelivery.getChildOrderSn());
|
|
|
+ riderLocationVo.setAccessToken(delivery.getAuthToken());
|
|
|
+ riderLocationVo.setMerchantId(delivery.getShopId());
|
|
|
+ ResObject<RiderLocationResultVo> res = client.getRiderLocation(riderLocationVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(res.getCode())) {
|
|
|
+ String riderLat = res.getData().getLat().toString();
|
|
|
+ String riderLng = res.getData().getLng().toString();
|
|
|
+ locationVo.setShipperLat(riderLat);
|
|
|
+ locationVo.setShipperLng(riderLng);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (DeliveryTypeEnums.MEI_TUAN.getType().equals(delivery.getType())) {
|
|
|
+ if (order.getDeliveryStatus() > DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status) {
|
|
|
+ RiderLocationVo orderQueryVo = new RiderLocationVo();
|
|
|
+ orderQueryVo.setLbClient(DeliveryTypeEnums.MEI_TUAN.getName());
|
|
|
+ // 美团订单号
|
|
|
+ orderQueryVo.setOrderNo(order.getOutTradeNo());
|
|
|
+ // 我们平台订单号
|
|
|
+ orderQueryVo.setDeliveryId(order.getId());
|
|
|
+ ResObject<RiderLocationResultVo> resObject = client.getRiderLocation(orderQueryVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(resObject.getCode())) {
|
|
|
+ String riderLat = resObject.getData().getLat().toString();
|
|
|
+ String riderLng = resObject.getData().getLng().toString();
|
|
|
+ locationVo.setShipperLat(riderLat);
|
|
|
+ locationVo.setShipperLng(riderLng);
|
|
|
+ }
|
|
|
+ OrderQueryVo orderQuery = new OrderQueryVo();
|
|
|
+ orderQuery.setLbClient(DeliveryTypeEnums.MEI_TUAN.getName());
|
|
|
+ // 美团订单号
|
|
|
+ orderQuery.setOrderNo(order.getOutTradeNo());
|
|
|
+ // 我们平台订单号
|
|
|
+ orderQuery.setDeliveryId(order.getId());
|
|
|
+ ResObject<OrderQueryResultVo> resObject1 = client.queryOrderInfo(orderQuery);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(resObject1.getCode())) {
|
|
|
+ locationVo.setShipperName(resObject1.getData().getRiderName());
|
|
|
+ locationVo.setShipperPhone(resObject1.getData().getRiderPhone());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (DeliveryTypeEnums.MEI_TUAN_ZB.getType().equals(delivery.getType())) {
|
|
|
+ if (order.getDeliveryStatus() > DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status) {
|
|
|
+ RiderLocationVo orderQueryVo = new RiderLocationVo();
|
|
|
+ orderQueryVo.setLbClient(DeliveryTypeEnums.MEI_TUAN_ZB.getName());
|
|
|
+ // 美团订单号
|
|
|
+ orderQueryVo.setOrderNo(orderDelivery.getOutTradeNo());
|
|
|
+ // token
|
|
|
+ orderQueryVo.setAccessToken(orderDelivery.getZbToken());
|
|
|
+ ResObject<RiderLocationResultVo> resObject = client.getRiderLocation(orderQueryVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(resObject.getCode())) {
|
|
|
+ String riderLat = resObject.getData().getLat().toString();
|
|
|
+ String riderLng = resObject.getData().getLng().toString();
|
|
|
+ locationVo.setShipperLat(riderLat);
|
|
|
+ locationVo.setShipperLng(riderLng);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (DeliveryTypeEnums.SHAN_SONG.getType().equals(delivery.getType())&&orderDelivery!=null) {
|
|
|
+ OrderQueryVo orderQueryVo = new OrderQueryVo();
|
|
|
+ orderQueryVo.setLbClient(DeliveryTypeEnums.SHAN_SONG.getName());
|
|
|
+ orderQueryVo.setOrderNo(orderDelivery.getChildOrderSn());
|
|
|
+ orderQueryVo.setIssOrderNo(order.getOutTradeNo());
|
|
|
+ if (orderDelivery.getIsMine() == 1){
|
|
|
+ orderQueryVo.setIsShansongSH(true);
|
|
|
+ ShopDeliveryBind shopDeliveryBind = iShopDeliveryBindService.getShopDeliveryBind(order.getMerchantId(), order.getShopId(), delivery.getId(), delivery.getType());
|
|
|
+
|
|
|
+ if (shopDeliveryBind != null){
|
|
|
+ orderQueryVo.setAccessToken(shopDeliveryBind.getAuthToken());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (order.getDeliveryStatus() > DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status) {
|
|
|
+ ResObject<OrderQueryResultVo> resObject = client.queryOrderInfo(orderQueryVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(resObject.getCode())) {
|
|
|
+ if(resObject.getData().getRiderLat() != null){
|
|
|
+ double[] receiverGps = CoordinateUtils.bd09_To_Gcj02(resObject.getData().getRiderLat().doubleValue(), resObject.getData().getRiderLng().doubleValue());
|
|
|
+ locationVo.setShipperLat(receiverGps[0] + "");
|
|
|
+ locationVo.setShipperLng(receiverGps[1] + "");
|
|
|
+ locationVo.setShipperName(resObject.getData().getRiderName());
|
|
|
+ locationVo.setShipperPhone(resObject.getData().getRiderPhone());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (DeliveryTypeEnums.KUAI_FU.getType().equals(delivery.getType())&&orderDelivery!=null) {
|
|
|
+ OrderQueryVo orderQueryVo = new OrderQueryVo();
|
|
|
+ orderQueryVo.setLbClient(DeliveryTypeEnums.KUAI_FU.getName());
|
|
|
+ orderQueryVo.setOrderNo(orderDelivery.getChildOrderSn());
|
|
|
+ orderQueryVo.setIssOrderNo(order.getOutTradeNo());
|
|
|
+ // 现在快服相关信息
|
|
|
+ orderQueryVo.setAccessToken(orderDelivery.getKfToken());
|
|
|
+ orderQueryVo.setKfOpenId(orderDelivery.getKfOpenId());
|
|
|
+ orderQueryVo.setIsMine(orderDelivery.getIsMine() );
|
|
|
+
|
|
|
+ if (order.getDeliveryStatus() > DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status) {
|
|
|
+ ResObject<OrderQueryResultVo> resObject = client.queryOrderInfo(orderQueryVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(resObject.getCode())) {
|
|
|
+ if(resObject.getData().getRiderLat() != null){
|
|
|
+ double[] receiverGps = CoordinateUtils.bd09_To_Gcj02(resObject.getData().getRiderLat().doubleValue(), resObject.getData().getRiderLng().doubleValue());
|
|
|
+ locationVo.setShipperLat(receiverGps[0] + "");
|
|
|
+ locationVo.setShipperLng(receiverGps[1] + "");
|
|
|
+ locationVo.setShipperName(resObject.getData().getRiderName());
|
|
|
+ locationVo.setShipperPhone(resObject.getData().getRiderPhone());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if (DeliveryTypeEnums.HUO_LA_LA.getType().equals(delivery.getType())&&orderDelivery!=null){
|
|
|
+ OrderQueryVo orderQueryVo = new OrderQueryVo();
|
|
|
+ orderQueryVo.setLbClient(DeliveryTypeEnums.HUO_LA_LA.getName());
|
|
|
+ orderQueryVo.setIssOrderNo(orderDelivery.getOutTradeNo());
|
|
|
+ orderQueryVo.setAccessToken(delivery.getAuthToken());
|
|
|
+ ResObject<OrderQueryResultVo> orderInfo = client.queryOrderInfo(orderQueryVo);
|
|
|
+ if (orderInfo!=null) {
|
|
|
+ locationVo.setShipperName(orderInfo.getData().getRiderName());
|
|
|
+ locationVo.setShipperPhone(orderInfo.getData().getRiderPhone());
|
|
|
+ List<HirtualPhoneInfo> list = orderInfo.getData().getHllPhones();
|
|
|
+ if(!org.springframework.util.CollectionUtils.isEmpty(list)){
|
|
|
+ for(HirtualPhoneInfo info:list ){
|
|
|
+ if(info.getUser_phone_no().equals(order.getSendPhone())){
|
|
|
+ locationVo.setShipperPhone(info.getConnect_phone_no());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ String phone = client.bindVirtualPhone(delivery.getAuthToken(),orderDelivery.getOutTradeNo(),order.getSendPhone());
|
|
|
+ locationVo.setShipperPhone(phone);
|
|
|
+ }
|
|
|
+ String riderLat = orderInfo.getData().getRiderLat().toString();
|
|
|
+ String riderLng = orderInfo.getData().getRiderLng().toString();
|
|
|
+ locationVo.setShipperLat(riderLat);
|
|
|
+ locationVo.setShipperLng(riderLng);
|
|
|
+ }
|
|
|
+ } else if (DeliveryTypeEnums.SHUN_FENG.getType().equals(delivery.getType())) {
|
|
|
+ RiderLocationVo orderQueryVo = new RiderLocationVo();
|
|
|
+ orderQueryVo.setLbClient(DeliveryTypeEnums.SHUN_FENG.getName());
|
|
|
+ orderQueryVo.setOrderNo(order.getOutTradeNo());
|
|
|
+ orderQueryVo.setOrderType(1);
|
|
|
+ ResObject<RiderLocationResultVo> resObject = client.getRiderLocation(orderQueryVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(resObject.getCode())) {
|
|
|
+ if(resObject.getData().getLat() != null){
|
|
|
+ String riderLat = resObject.getData().getLat().toString();
|
|
|
+ String riderLng = resObject.getData().getLng().toString();
|
|
|
+ locationVo.setShipperLat(riderLat);
|
|
|
+ locationVo.setShipperLng(riderLng);
|
|
|
+ locationVo.setShipperName(resObject.getData().getName());
|
|
|
+ locationVo.setShipperPhone(resObject.getData().getPhone());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (DeliveryTypeEnums.MEI_TUAN_SG_ZB.getType().equals(delivery.getType())) {
|
|
|
+ if (order.getDeliveryStatus() > DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status) {
|
|
|
+ DspWaimai waiMai = iDspWaimaiService.findOne(WaimaiTypeEnums.MEI_TUAN.getType());
|
|
|
+ ShopWaimai shopWaimai = iShopWaimaiService.findByToken(order.getShopId(), waiMai.getId(),orderDelivery.getZbToken());
|
|
|
+ RiderLocationVo orderQueryVo = new RiderLocationVo();
|
|
|
+ orderQueryVo.setLbClient(DeliveryTypeEnums.MEI_TUAN_SG_ZB.getName());
|
|
|
+ // 美团订单号
|
|
|
+ orderQueryVo.setOrderNo(orderDelivery.getOutTradeNo());
|
|
|
+ // token
|
|
|
+ orderQueryVo.setAccessToken(orderDelivery.getZbToken());
|
|
|
+ orderQueryVo.setThirdShopId(shopWaimai.getThirdShopId());
|
|
|
+ ResObject<RiderLocationResultVo> resObject = client.getRiderLocation(orderQueryVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(resObject.getCode())) {
|
|
|
+ String riderLat = resObject.getData().getLat().toString();
|
|
|
+ String riderLng = resObject.getData().getLng().toString();
|
|
|
+ locationVo.setShipperLat(riderLat);
|
|
|
+ locationVo.setShipperLng(riderLng);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if (DeliveryTypeEnums.FENG_NIAO_PT.getType().equals(delivery.getType())&&orderDelivery!=null) {
|
|
|
+ if (order.getDeliveryStatus() > DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status) {
|
|
|
+ OrderQueryVo orderQueryVo = new OrderQueryVo();
|
|
|
+ orderQueryVo.setLbClient(DeliveryTypeEnums.FENG_NIAO_PT.getName());
|
|
|
+ orderQueryVo.setOrderNo(orderDelivery.getChildOrderSn());
|
|
|
+ orderQueryVo.setAccessToken(delivery.getAuthToken());
|
|
|
+ orderQueryVo.setMerchantId(delivery.getShopId());
|
|
|
+ ResObject<OrderQueryResultVo> resObject = client.queryOrderInfo(orderQueryVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(resObject.getCode())) {
|
|
|
+ locationVo.setShipperName(resObject.getData().getRiderName());
|
|
|
+ locationVo.setShipperPhone(resObject.getData().getRiderPhone());
|
|
|
+ }
|
|
|
+ RiderLocationVo riderLocationVo = new RiderLocationVo();
|
|
|
+ riderLocationVo.setLbClient(DeliveryTypeEnums.FENG_NIAO_PT.getName());
|
|
|
+ riderLocationVo.setOrderNo(orderDelivery.getChildOrderSn());
|
|
|
+ riderLocationVo.setAccessToken(delivery.getAuthToken());
|
|
|
+ riderLocationVo.setMerchantId(delivery.getShopId());
|
|
|
+ ResObject<RiderLocationResultVo> res = client.getRiderLocation(riderLocationVo);
|
|
|
+ if (DeletedEnum.NO.getValue().equals(res.getCode())) {
|
|
|
+ String riderLat = res.getData().getLat().toString();
|
|
|
+ String riderLng = res.getData().getLng().toString();
|
|
|
+ locationVo.setShipperLat(riderLat);
|
|
|
+ locationVo.setShipperLng(riderLng);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return locationVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
public ResponseResult createOrder(OrderCreateReq orderCreateReq) {
|
|
|
// 计价结果缓存到redis, 10分钟有效, 到时需重新计价
|
|
|
if (!redisCache.hasKey(RedisKeyConstant.VALUATION_RESULT + orderCreateReq.getOutOrderSn())) {
|