Commit 97e9ad97 by 邓杰

配送进程

parent ec942dc6
...@@ -42,7 +42,7 @@ public class DeliveryController { ...@@ -42,7 +42,7 @@ public class DeliveryController {
@ApiOperation(value = "配送回调", notes = "配送回调", produces = "application/json") @ApiOperation(value = "配送回调", notes = "配送回调", produces = "application/json")
@PostMapping("/delivery/callbackUrl") @PostMapping("/delivery/callbackUrl")
public BaseResponse callbackUrl(@Valid @LogParams @RequestBody CallbackUrlRequestDto request) { public BaseResponse callbackUrl(@Valid @LogParams @RequestBody CallbackUrlRequestDto request) {
return deliveryService. callbackUrl(request); return deliveryService.callbackUrl(request);
} }
@ApiAnnotation(logMessage = "麦咖啡配送回调") @ApiAnnotation(logMessage = "麦咖啡配送回调")
......
...@@ -13,10 +13,14 @@ public class DeliveryStatusAndRiderPositionDto { ...@@ -13,10 +13,14 @@ public class DeliveryStatusAndRiderPositionDto {
*/ */
private String deliveryId; private String deliveryId;
/** /**
* 经纬度 * 骑手经纬度
*/ */
private String currentPoint; private String currentPoint;
/** /**
* 门店经纬度
*/
private String storePoint;
/**
* 配送状态 * 配送状态
*/ */
private Integer devlieryStatus; private Integer devlieryStatus;
......
...@@ -17,9 +17,9 @@ public class DeliveryErrorReminder { ...@@ -17,9 +17,9 @@ public class DeliveryErrorReminder {
private String createTime; private String createTime;
/** /**
* 户电话 * 户电话
*/ */
private String customerPhone; private String merchantPhone;
/** /**
* 订单号 * 订单号
......
...@@ -18,6 +18,10 @@ public class SubscribeMessageRequest { ...@@ -18,6 +18,10 @@ public class SubscribeMessageRequest {
* 渠道 * 渠道
*/ */
private Integer channel; private Integer channel;
/**
*
*/
private String scene;
private DeliveryErrorReminder deliveryErrorReminder; private DeliveryErrorReminder deliveryErrorReminder;
......
...@@ -17,9 +17,29 @@ public class OrderRiderResponseVo { ...@@ -17,9 +17,29 @@ public class OrderRiderResponseVo {
*/ */
private String deliveryId; private String deliveryId;
/** /**
* 经纬 * 骑手经
*/ */
private String currentPoint; private String riderLongitude;
/**
* 骑手纬度
*/
private String riderLatitude;
/**
* 用户经度
*/
private String userLongitude;
/**
* 用户纬度
*/
private String userLatitude;
/**
* 门店经度
*/
private String shopLongitude;
/**
* 门店纬度
*/
private String shopLatitude;
/** /**
* 配送状态 * 配送状态
*/ */
......
...@@ -5,6 +5,8 @@ import cn.freemud.amp.service.ProduceMQService; ...@@ -5,6 +5,8 @@ import cn.freemud.amp.service.ProduceMQService;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal; import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.entities.dto.delivery.*; import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.ecology.DeliveryErrorReminder;
import cn.freemud.entities.dto.ecology.OrderDeliveryScene;
import cn.freemud.entities.dto.ecology.SubscribeMessageRequest; import cn.freemud.entities.dto.ecology.SubscribeMessageRequest;
import cn.freemud.entities.dto.pos.PosBaseRequestDto; import cn.freemud.entities.dto.pos.PosBaseRequestDto;
import cn.freemud.entities.vo.delivery.DeliveryAmountVo; import cn.freemud.entities.vo.delivery.DeliveryAmountVo;
...@@ -21,17 +23,24 @@ import cn.freemud.service.ThirdDeliveryService; ...@@ -21,17 +23,24 @@ import cn.freemud.service.ThirdDeliveryService;
import cn.freemud.service.thirdparty.DeliveryFeiginClient; import cn.freemud.service.thirdparty.DeliveryFeiginClient;
import cn.freemud.service.thirdparty.EcologyAdminApplicationClient; import cn.freemud.service.thirdparty.EcologyAdminApplicationClient;
import cn.freemud.service.thirdparty.PosClient; import cn.freemud.service.thirdparty.PosClient;
import cn.freemud.utils.DateTimeUtil;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.freemud.application.sdk.api.constant.ResponseConstant; import com.freemud.application.sdk.api.constant.ResponseConstant;
import com.freemud.application.sdk.api.deliverycenter.dto.CancelDeliveryOrderRequestDto; import com.freemud.application.sdk.api.deliverycenter.dto.CancelDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto; import com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto; import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService; import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.request.OrderCollectReq; import com.freemud.application.sdk.api.ordercenter.request.OrderCollectReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto; import com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto;
import com.freemud.application.sdk.api.structure.service.MessageCenterClient; import com.freemud.application.sdk.api.structure.service.MessageCenterClient;
import com.freemud.sdk.api.assortment.order.request.order.AssortmentUpdateDeliveryAbnormalRequest; import com.freemud.sdk.api.assortment.order.request.order.AssortmentUpdateDeliveryAbnormalRequest;
...@@ -50,6 +59,8 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -50,6 +59,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -90,6 +101,8 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -90,6 +101,8 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
private String deliveryMicroMessagePartner; private String deliveryMicroMessagePartner;
@Autowired @Autowired
private EcologyAdminApplicationClient ecologyAdminApplicationClient; private EcologyAdminApplicationClient ecologyAdminApplicationClient;
@Autowired
private StoreCenterService storeCenterService;
@Override @Override
public BaseResponse callbackUrl(CallbackUrlRequestDto request) { public BaseResponse callbackUrl(CallbackUrlRequestDto request) {
...@@ -134,11 +147,9 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -134,11 +147,9 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
posBaseRequestDto.setDelivery_status(DeliveryStatus.ALLOTRIDER.getCode()); posBaseRequestDto.setDelivery_status(DeliveryStatus.ALLOTRIDER.getCode());
posBaseRequestDto.setPartner_id(partnerId); posBaseRequestDto.setPartner_id(partnerId);
sendPosService(deliveryStatus,posBaseRequestDto); sendPosService(deliveryStatus,posBaseRequestDto);
sendMicroMessage(partnerId,request.getOrderId());
} else if (deliveryStatus == DeliveryStatus.RIDERGETMEAL.getCode() || deliveryStatus == DeliveryStatus.RIDERSTARTDELIVERY.getCode()) { } else if (deliveryStatus == DeliveryStatus.RIDERGETMEAL.getCode() || deliveryStatus == DeliveryStatus.RIDERSTARTDELIVERY.getCode()) {
// 订单配送 // 订单配送
sendPosService(deliveryStatus,posBaseRequestDto); sendPosService(deliveryStatus,posBaseRequestDto);
sendMicroMessage(partnerId,request.getOrderId());
} else if (deliveryStatus == DeliveryStatus.DELIVERYARRIVED.getCode()) { } else if (deliveryStatus == DeliveryStatus.DELIVERYARRIVED.getCode()) {
// 订单已完成 // 订单已完成
sendPosService(deliveryStatus,posBaseRequestDto); sendPosService(deliveryStatus,posBaseRequestDto);
...@@ -150,8 +161,6 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -150,8 +161,6 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
sendPosDeliveryStatus = 81; sendPosDeliveryStatus = 81;
} }
sendPosMessage(partnerId, storeCode, request.getOrderId(), sendPosDeliveryStatus, request.getRemark()); sendPosMessage(partnerId, storeCode, request.getOrderId(), sendPosDeliveryStatus, request.getRemark());
sendMicroMessage(partnerId,request.getOrderId());
// 取消外卖中台配送单 订单异常 // 取消外卖中台配送单 订单异常
// 如果 "配送单异常并且顾客更改配送地址" 不取消配送单 // 如果 "配送单异常并且顾客更改配送地址" 不取消配送单
if (!isDeliveryAbnormalAndCustomerChangedAddress(request)) { if (!isDeliveryAbnormalAndCustomerChangedAddress(request)) {
...@@ -168,6 +177,8 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -168,6 +177,8 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
produceMQService.sendOfDeliveryInfo(request); produceMQService.sendOfDeliveryInfo(request);
produceMQService.sendRocketMqOfDeliveryInfo(request); produceMQService.sendRocketMqOfDeliveryInfo(request);
} }
//配送订阅消息
sendMicroMessage(partnerId,request.getOrderId(),deliveryStatus);
// else { // else {
// return ResponseUtil.error(ResponseResult.SYSTEM_ERROR.getCode(), "订单回调状态有误"); // return ResponseUtil.error(ResponseResult.SYSTEM_ERROR.getCode(), "订单回调状态有误");
...@@ -370,7 +381,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -370,7 +381,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
/** /**
* 配送消息推送 * 配送消息推送
*/ */
public void sendMicroMessage(String partnerId, String orderId){ public void sendMicroMessage(String partnerId,String orderId,int deliveryStatus){
//如果商户配置了配送订阅消息推送 //如果商户配置了配送订阅消息推送
if(deliveryMicroMessagePartner.contains(partnerId)){ if(deliveryMicroMessagePartner.contains(partnerId)){
try { try {
...@@ -380,6 +391,50 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -380,6 +391,50 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest); QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData(); QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
SubscribeMessageRequest request = new SubscribeMessageRequest(); SubscribeMessageRequest request = new SubscribeMessageRequest();
OrderExtInfoDto extInfoDto = JSONObject.parseObject(orderBean.getExtInfo(), new TypeReference<OrderExtInfoDto>() {});
request.setMiniAppId(extInfoDto.getAppid());
List<String> userList = new ArrayList<>();
userList.add(extInfoDto.getOpenid());
request.setOpenIdList(userList);
request.setScene("scene_delivery");
//默认微信
request.setChannel(1);
//支付宝
if("3".equals(orderBean.getOrderClient())){
request.setChannel(2);
}
//配送订阅模板消息
if(deliveryStatus == DeliveryStatus.ALLOTRIDER.getCode()){
request.setMessageEventType("ORDER_DELIVERY");
OrderDeliveryScene orderDeliveryScene = new OrderDeliveryScene();
orderDeliveryScene.setAddress(orderBean.getAddress());
Long createTime = orderBean.getGmtCreate();
// 获取门店信息
StoreInfoRequest storeInfoRequest = new StoreInfoRequest(partnerId, orderBean.getShopId(),null);
StoreResponse storeResponse = storeCenterService.getStoreInfo(storeInfoRequest, LogThreadLocal.getTrackingNo());
//立即单外卖
if (OrderType.GENERAL_EXPRESS.getIndex().equals(orderBean.getNewOrderType())) {
if(storeResponse != null && storeResponse.getBizVO() != null && storeResponse.getBizVO().getServiceTime() != null){
createTime = createTime + storeResponse.getBizVO().getServiceTime()*1000*60;
orderDeliveryScene.setEstimateArrivalTime(DateTimeUtil.timeStampToTime(createTime));
}
}//预约单外卖
if(OrderType.RESERVED_EXPRESS.getIndex().equals(orderBean.getNewOrderType())&&orderBean.getGmtExpect()!=null){
orderDeliveryScene.setEstimateArrivalTime(DateTimeUtil.timeStampToTime(orderBean.getGmtExpect()));
}
orderDeliveryScene.setMerchantPhone(storeResponse.getBizVO().getPhone());
orderDeliveryScene.setOrderNo(orderId);
}
//配送异常模板消息
if(deliveryStatus == DeliveryStatus.DELIVERYCANCEL.getCode() || deliveryStatus == DeliveryStatus.DELIVERYERROR.getCode()){
request.setMessageEventType("DELIVERY_ERROR_REMINDER");
DeliveryErrorReminder deliveryErrorReminder = new DeliveryErrorReminder();
deliveryErrorReminder.setCreateTime(DateTimeUtil.timeStampToTime(orderBean.getGmtCreate()));
deliveryErrorReminder.setOrderId(orderId);
deliveryErrorReminder.setMerchantPhone(orderBean.getShopPhone());
deliveryErrorReminder.setAddress(orderBean.getAddress());
deliveryErrorReminder.setRemark("订单配送异常,请电话联系门店确认哦");
}
ecologyAdminApplicationClient.subscribeMessage(request); ecologyAdminApplicationClient.subscribeMessage(request);
}catch (Exception e){ }catch (Exception e){
log.error("配送订阅消息推送失败:{},失败原因:{}",orderId,e.getMessage()); log.error("配送订阅消息推送失败:{},失败原因:{}",orderId,e.getMessage());
......
...@@ -1131,7 +1131,14 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1131,7 +1131,14 @@ public class OrderServiceImpl implements Orderservice {
}); });
responseVo.setOperationList(operationList); responseVo.setOperationList(operationList);
responseVo.setOrderId(deliveryBaseResponse.getData().getDeliveryId()); responseVo.setOrderId(deliveryBaseResponse.getData().getDeliveryId());
responseVo.setCurrentPoint(deliveryBaseResponse.getData().getCurrentPoint()); String currentPoint[] = deliveryBaseResponse.getData().getCurrentPoint().split(",");
String storePoint[] = deliveryBaseResponse.getData().getStorePoint().split(",");
responseVo.setRiderLongitude(currentPoint[0]);
responseVo.setRiderLatitude(currentPoint[1]);
responseVo.setUserLongitude(String.valueOf(orderBean.getLongitude()));
responseVo.setUserLatitude(String.valueOf(orderBean.getLatitude()));
responseVo.setShopLongitude(storePoint[0]);
responseVo.setShopLatitude(storePoint[1]);
responseVo.setDistance(deliveryBaseResponse.getData().getDistance()); responseVo.setDistance(deliveryBaseResponse.getData().getDistance());
responseVo.setDeliveryId(deliveryBaseResponse.getData().getDeliveryId()); responseVo.setDeliveryId(deliveryBaseResponse.getData().getDeliveryId());
responseVo.setDevlieryStatus(deliveryBaseResponse.getData().getDevlieryStatus()); responseVo.setDevlieryStatus(deliveryBaseResponse.getData().getDevlieryStatus());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment