Commit 97e9ad97 by 邓杰

配送进程

parent ec942dc6
......@@ -42,7 +42,7 @@ public class DeliveryController {
@ApiOperation(value = "配送回调", notes = "配送回调", produces = "application/json")
@PostMapping("/delivery/callbackUrl")
public BaseResponse callbackUrl(@Valid @LogParams @RequestBody CallbackUrlRequestDto request) {
return deliveryService. callbackUrl(request);
return deliveryService.callbackUrl(request);
}
@ApiAnnotation(logMessage = "麦咖啡配送回调")
......
......@@ -13,10 +13,14 @@ public class DeliveryStatusAndRiderPositionDto {
*/
private String deliveryId;
/**
* 经纬度
* 骑手经纬度
*/
private String currentPoint;
/**
* 门店经纬度
*/
private String storePoint;
/**
* 配送状态
*/
private Integer devlieryStatus;
......
......@@ -17,9 +17,9 @@ public class DeliveryErrorReminder {
private String createTime;
/**
* 户电话
* 户电话
*/
private String customerPhone;
private String merchantPhone;
/**
* 订单号
......
......@@ -18,6 +18,10 @@ public class SubscribeMessageRequest {
* 渠道
*/
private Integer channel;
/**
*
*/
private String scene;
private DeliveryErrorReminder deliveryErrorReminder;
......
......@@ -17,9 +17,29 @@ public class OrderRiderResponseVo {
*/
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;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
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.pos.PosBaseRequestDto;
import cn.freemud.entities.vo.delivery.DeliveryAmountVo;
......@@ -21,17 +23,24 @@ import cn.freemud.service.ThirdDeliveryService;
import cn.freemud.service.thirdparty.DeliveryFeiginClient;
import cn.freemud.service.thirdparty.EcologyAdminApplicationClient;
import cn.freemud.service.thirdparty.PosClient;
import cn.freemud.utils.DateTimeUtil;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.freemud.application.sdk.api.constant.ResponseConstant;
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.DeliveryResponseDto;
import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
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.OrderExtInfoDto;
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.service.MessageCenterClient;
import com.freemud.sdk.api.assortment.order.request.order.AssortmentUpdateDeliveryAbnormalRequest;
......@@ -50,6 +59,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
......@@ -90,6 +101,8 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
private String deliveryMicroMessagePartner;
@Autowired
private EcologyAdminApplicationClient ecologyAdminApplicationClient;
@Autowired
private StoreCenterService storeCenterService;
@Override
public BaseResponse callbackUrl(CallbackUrlRequestDto request) {
......@@ -134,11 +147,9 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
posBaseRequestDto.setDelivery_status(DeliveryStatus.ALLOTRIDER.getCode());
posBaseRequestDto.setPartner_id(partnerId);
sendPosService(deliveryStatus,posBaseRequestDto);
sendMicroMessage(partnerId,request.getOrderId());
} else if (deliveryStatus == DeliveryStatus.RIDERGETMEAL.getCode() || deliveryStatus == DeliveryStatus.RIDERSTARTDELIVERY.getCode()) {
// 订单配送
sendPosService(deliveryStatus,posBaseRequestDto);
sendMicroMessage(partnerId,request.getOrderId());
} else if (deliveryStatus == DeliveryStatus.DELIVERYARRIVED.getCode()) {
// 订单已完成
sendPosService(deliveryStatus,posBaseRequestDto);
......@@ -150,8 +161,6 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
sendPosDeliveryStatus = 81;
}
sendPosMessage(partnerId, storeCode, request.getOrderId(), sendPosDeliveryStatus, request.getRemark());
sendMicroMessage(partnerId,request.getOrderId());
// 取消外卖中台配送单 订单异常
// 如果 "配送单异常并且顾客更改配送地址" 不取消配送单
if (!isDeliveryAbnormalAndCustomerChangedAddress(request)) {
......@@ -168,6 +177,8 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
produceMQService.sendOfDeliveryInfo(request);
produceMQService.sendRocketMqOfDeliveryInfo(request);
}
//配送订阅消息
sendMicroMessage(partnerId,request.getOrderId(),deliveryStatus);
// else {
// return ResponseUtil.error(ResponseResult.SYSTEM_ERROR.getCode(), "订单回调状态有误");
......@@ -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)){
try {
......@@ -380,6 +391,50 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
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);
}catch (Exception e){
log.error("配送订阅消息推送失败:{},失败原因:{}",orderId,e.getMessage());
......
......@@ -1131,7 +1131,14 @@ public class OrderServiceImpl implements Orderservice {
});
responseVo.setOperationList(operationList);
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.setDeliveryId(deliveryBaseResponse.getData().getDeliveryId());
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