Commit 9ec4ebd6 by 邓杰

配送进程

parent 9812b224
...@@ -663,7 +663,7 @@ public class QueryOrdersResponse { ...@@ -663,7 +663,7 @@ public class QueryOrdersResponse {
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class OperationHistory { public static class OperationHistory {
private Long createTime; private String createTime;
private String operationDesc; private String operationDesc;
private String operationMethod; private String operationMethod;
private String orderCode; private String orderCode;
......
...@@ -360,10 +360,9 @@ public class OrderController { ...@@ -360,10 +360,9 @@ public class OrderController {
* @return * @return
*/ */
@ApiAnnotation(logMessage = "queryOrderRider") @ApiAnnotation(logMessage = "queryOrderRider")
@PostMapping("queryOrderRider") @PostMapping("/queryOrderRider")
public BaseResponse queryOrderRider(@Validated @LogParams @RequestBody OrderRiderRequestVo requestVo){ public BaseResponse<OrderRiderResponseVo> queryOrderRider(@Validated @LogParams @RequestBody OrderRiderRequestVo requestVo){
return orderservice.queryOrderRider(requestVo); return orderservice.queryOrderRider(requestVo);
} }
} }
package cn.freemud.entities.dto.delivery;
import lombok.Data;
@Data
public class DeliveryBaseResponse<T> {
private Integer code;
private String msg;
private T data;
}
package cn.freemud.entities.dto.delivery;
import lombok.Data;
@Data
public class DeliveryStatusAndRiderPositionDto {
/**
* 订单号
*/
private String orderId;
/**
* 配送号
*/
private String deliveryId;
/**
* 经纬度
*/
private String currentPoint;
/**
* 配送状态
*/
private Integer devlieryStatus;
/**
* 距离
*/
private Integer distance;
}
package cn.freemud.entities.dto.delivery;
import lombok.Data;
@Data
public class QueryDeliveryBaseRequest {
private String deliveryId;
}
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.Data; import lombok.Data;
import org.omg.PortableInterceptor.INACTIVE;
import java.util.List;
@Data @Data
public class OrderRiderResponseVo { public class OrderRiderResponseVo {
/**
//static class * 订单号
*/
private String orderId;
/**
* 配送号
*/
private String deliveryId;
/**
* 经纬度
*/
private String currentPoint;
/**
* 配送状态
*/
private Integer devlieryStatus;
/**
* 距离
*/
private Integer distance;
/**
* 操作日志
*/
private List<Operation> operationList;
@Data
public static class Operation{
private String createTime;
private String operationDesc;
private String operationMethod;
private String operator;
}
} }
...@@ -210,6 +210,7 @@ public enum ResponseResult { ...@@ -210,6 +210,7 @@ public enum ResponseResult {
DELIVERY_QUERY_RIDER_STATUS_ERROR("53014", "订单状态不是配送中,不能查询骑手位置"), DELIVERY_QUERY_RIDER_STATUS_ERROR("53014", "订单状态不是配送中,不能查询骑手位置"),
DELIVERY_REMINDER_ERROR("53015","催单失败"), DELIVERY_REMINDER_ERROR("53015","催单失败"),
DELIVERY_QUERY_RIDER_ERROR("53016","查询骑手位置失败"), DELIVERY_QUERY_RIDER_ERROR("53016","查询骑手位置失败"),
DELIVERY_NOT_EXIST("53017","当前订单不是没有配送单"),
/** /**
* 配送信息 * 配送信息
......
...@@ -5,6 +5,7 @@ import cn.freemud.amp.service.ProduceMQService; ...@@ -5,6 +5,7 @@ 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.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;
import cn.freemud.enums.DeliveryReviewStatus; import cn.freemud.enums.DeliveryReviewStatus;
...@@ -18,6 +19,7 @@ import cn.freemud.management.service.adapter.OrderManagerAdapter; ...@@ -18,6 +19,7 @@ import cn.freemud.management.service.adapter.OrderManagerAdapter;
import cn.freemud.service.Orderservice; import cn.freemud.service.Orderservice;
import cn.freemud.service.ThirdDeliveryService; 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.PosClient; import cn.freemud.service.thirdparty.PosClient;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
...@@ -33,8 +35,11 @@ import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; ...@@ -33,8 +35,11 @@ import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
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;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.UpdateDeliveryInfoByIdRequest; import com.freemud.sdk.api.assortment.order.request.order.UpdateDeliveryInfoByIdRequest;
import com.freemud.sdk.api.assortment.order.response.order.OrderBaseResponse; import com.freemud.sdk.api.assortment.order.response.order.OrderBaseResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService; import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.gson.Gson; import com.google.gson.Gson;
...@@ -42,6 +47,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -42,6 +47,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
...@@ -80,6 +86,10 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -80,6 +86,10 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
private MessageNoticeAdapter messageNoticeAdapter; private MessageNoticeAdapter messageNoticeAdapter;
@Autowired @Autowired
private MessageCenterClient messageNoticeClient; private MessageCenterClient messageNoticeClient;
@Value("${delivery.micro.message.partner}")
private String deliveryMicroMessagePartner;
@Autowired
private EcologyAdminApplicationClient ecologyAdminApplicationClient;
@Override @Override
public BaseResponse callbackUrl(CallbackUrlRequestDto request) { public BaseResponse callbackUrl(CallbackUrlRequestDto request) {
...@@ -102,7 +112,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -102,7 +112,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
requestDto.setExpressChannelName(request.getChannelName()); requestDto.setExpressChannelName(request.getChannelName());
requestDto.setExpressNo(request.getChannelDeliveryId()); requestDto.setExpressNo(request.getChannelDeliveryId());
requestDto.setOrderSubState(deliveryStatus); requestDto.setOrderSubState(deliveryStatus);
requestDto.setRemark(DeliveryStatus.getDeliveryStatusByCode(deliveryStatus).getDesc()); requestDto.setRemark(request.getRemark());
if (StringUtils.isNotBlank(request.getRemark())) if (StringUtils.isNotBlank(request.getRemark()))
{ {
requestDto.setRemark("配送:"+request.getRemark()); requestDto.setRemark("配送:"+request.getRemark());
...@@ -124,9 +134,11 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -124,9 +134,11 @@ 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);
...@@ -138,6 +150,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -138,6 +150,7 @@ 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());
// 取消外卖中台配送单 订单异常 // 取消外卖中台配送单 订单异常
// 如果 "配送单异常并且顾客更改配送地址" 不取消配送单 // 如果 "配送单异常并且顾客更改配送地址" 不取消配送单
...@@ -155,6 +168,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -155,6 +168,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
produceMQService.sendOfDeliveryInfo(request); produceMQService.sendOfDeliveryInfo(request);
produceMQService.sendRocketMqOfDeliveryInfo(request); produceMQService.sendRocketMqOfDeliveryInfo(request);
} }
// else { // else {
// return ResponseUtil.error(ResponseResult.SYSTEM_ERROR.getCode(), "订单回调状态有误"); // return ResponseUtil.error(ResponseResult.SYSTEM_ERROR.getCode(), "订单回调状态有误");
// } // }
...@@ -353,5 +367,23 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -353,5 +367,23 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
messageNoticeClient.createMessage(pushMessageNoticeDto, LogThreadLocal.getTrackingNo()); messageNoticeClient.createMessage(pushMessageNoticeDto, LogThreadLocal.getTrackingNo());
} }
/**
* 配送消息推送
*/
public void sendMicroMessage(String partnerId, String orderId){
//如果商户配置了配送订阅消息推送
if(deliveryMicroMessagePartner.contains(partnerId)){
try {
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(orderId);
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
SubscribeMessageRequest request = new SubscribeMessageRequest();
ecologyAdminApplicationClient.subscribeMessage(request);
}catch (Exception e){
log.error("配送订阅消息推送失败:{},失败原因:{}",orderId,e.getMessage());
}
}
}
} }
...@@ -25,14 +25,12 @@ import cn.freemud.constant.OrderRefundConstant; ...@@ -25,14 +25,12 @@ import cn.freemud.constant.OrderRefundConstant;
import cn.freemud.constant.RedisKeyConstant; import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.MCCafeDeliveryBaseResponse;
import cn.freemud.entities.dto.PayAccessResponse; import cn.freemud.entities.dto.PayAccessResponse;
import cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean; import cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto; import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto;
import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto; import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto;
import cn.freemud.entities.dto.delivery.OrderRemindRequestDto; import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.delivery.QueryDeliveryAmountResponseDto;
import cn.freemud.entities.dto.delivery.QueryLocusRiderTrackDto;
import cn.freemud.entities.dto.delivery.ResRiderTrackDto;
import cn.freemud.entities.dto.order.CreateOrderOperateDto; import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto; import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.order.FacePayRequestDto; import cn.freemud.entities.dto.order.FacePayRequestDto;
...@@ -83,7 +81,6 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq; ...@@ -83,7 +81,6 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq; import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp; import com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse; import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
...@@ -1101,6 +1098,10 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1101,6 +1098,10 @@ public class OrderServiceImpl implements Orderservice {
@Override @Override
public BaseResponse<OrderRiderResponseVo> queryOrderRider(OrderRiderRequestVo requestVo) { public BaseResponse<OrderRiderResponseVo> queryOrderRider(OrderRiderRequestVo requestVo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(requestVo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest(); BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(requestVo.getOid()); baseQueryOrderRequest.setOrderId(requestVo.getOid());
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo()); baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
...@@ -1109,10 +1110,31 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1109,10 +1110,31 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR); return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
} }
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData(); QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
if(!StringUtils.isNotEmpty(orderBean.getAddInfo().getDeliveryId())){
return ResponseUtil.error(ResponseResult.DELIVERY_NOT_EXIST);
}
return null; QueryDeliveryBaseRequest queryDeliveryBaseRequest = new QueryDeliveryBaseRequest();
queryDeliveryBaseRequest.setDeliveryId(orderBean.getAddInfo().getDeliveryId());
DeliveryBaseResponse<DeliveryStatusAndRiderPositionDto> deliveryBaseResponse = deliveryFeiginClient.queryDeliveryStatusAndRiderPosition(queryDeliveryBaseRequest);
if(RESPONSE_SUCCESS_CODE != deliveryBaseResponse.getCode() && deliveryBaseResponse.getData() !=null){
return ResponseUtil.error(ResponseResult.DELIVERY_QUERY_RIDER_ERROR);
}
OrderRiderResponseVo responseVo = new OrderRiderResponseVo();
List<OrderRiderResponseVo.Operation> operationList = new ArrayList<>();
orderBean.getOrderOperationHistoryList().stream().forEach(operationHistory -> {
OrderRiderResponseVo.Operation operation = new OrderRiderResponseVo.Operation();
operation.setCreateTime(operationHistory.getCreateTime());
operation.setOperationDesc(operationHistory.getOperationDesc());
operation.setOperationMethod(operationHistory.getOperationMethod());
operation.setOperator(operationHistory.getOperator());
});
responseVo.setOperationList(operationList);
responseVo.setOrderId(deliveryBaseResponse.getData().getDeliveryId());
responseVo.setCurrentPoint(deliveryBaseResponse.getData().getCurrentPoint());
responseVo.setDistance(deliveryBaseResponse.getData().getDistance());
responseVo.setDeliveryId(deliveryBaseResponse.getData().getDeliveryId());
responseVo.setDevlieryStatus(deliveryBaseResponse.getData().getDevlieryStatus());
return ResponseUtil.success(responseVo);
} }
private String getRedpacketsPicture(String activityId) { private String getRedpacketsPicture(String activityId) {
......
package cn.freemud.service.thirdparty; package cn.freemud.service.thirdparty;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.BaseResponseDto;
import cn.freemud.entities.dto.MCCafeDeliveryBaseResponse; import cn.freemud.entities.dto.MCCafeDeliveryBaseResponse;
import cn.freemud.entities.dto.delivery.*; import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.delivery.QueryDeliveryAmountRequestDto; import cn.freemud.entities.dto.delivery.QueryDeliveryAmountRequestDto;
...@@ -27,5 +25,7 @@ public interface DeliveryFeiginClient { ...@@ -27,5 +25,7 @@ public interface DeliveryFeiginClient {
@PostMapping("/delivery/create") @PostMapping("/delivery/create")
CreateDeliveryOrderResponseDto deliveryOrderAdd(@RequestBody CreateDeliveryVo request); CreateDeliveryOrderResponseDto deliveryOrderAdd(@RequestBody CreateDeliveryVo request);
@PostMapping("/delivery/getDeliveryStatusAndRiderPosition")
DeliveryBaseResponse<DeliveryStatusAndRiderPositionDto> queryDeliveryStatusAndRiderPosition(@RequestBody QueryDeliveryBaseRequest queryDeliveryBaseRequest);
} }
...@@ -17,7 +17,7 @@ import lombok.Data; ...@@ -17,7 +17,7 @@ import lombok.Data;
@Data @Data
public class OrderOperationHistoryResp { public class OrderOperationHistoryResp {
private Long createTime; private String createTime;
//操作描述 //操作描述
private String operationDesc; private String operationDesc;
//操作方法 //操作方法
......
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