Commit 1a53b552 by 刘继明

oms添加取消配送和自己配送功能

parent 7a953aa0
package cn.freemud.management.adapter;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.enums.DeliveryStatus;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExpressReq;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.enums.QueryDeliveryType;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.lang.math.NumberUtils;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.*;
import java.util.Date;
import java.util.LinkedList;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
@Component
......@@ -73,4 +80,38 @@ public class DeliverySdkAdapter {
}).collect(Collectors.toCollection(LinkedList::new))));
return deliveryOrderRequestDto;
}
/**
* 构建配送状态和信息
*
* @param request
* @param deliveryStatus
* @return
*/
public OrderExpressReq buildOrderExpressReq(OrderManagerRequest request, DeliveryStatus deliveryStatus) {
OrderExpressReq expressReq = new OrderExpressReq();
expressReq.setOrderCode(request.getOrderId());
//设置自配送--三方订单(美团、饿了么)使用订单表中 expressTyp, saas订单根据delivery_info表中 配送员 的 addressDetail字段为self
expressReq.setOrderSubState(deliveryStatus.getCode());
expressReq.setOperator(request.getOperator());
expressReq.setRemark(request.getReason());
//修改配送员 为infoType=0,address_detail为self,
switch (deliveryStatus) {
case RIDERSTARTDELIVERY:
expressReq.setOpType(1);
expressReq.setContactsName("");
expressReq.setMobile("");
expressReq.setAddressDetail(QueryDeliveryType.SELF.getCode());
// 是否需要task
//expressReq.setOrderTaskReq();
break;
default:
break;
}
return expressReq;
}
}
......@@ -62,6 +62,10 @@ public class OrderManagerController {
return orderManagerAdapter.orderAgreeRefund(request);
case ORDER_REJECT_REFUND:
return orderManagerAdapter.orderRejectRefund(request);
case ORDER_CANCEL_DELIVERY:
return orderManagerAdapter.orderCancelDelivery(request);
case ORDER_SWITCH_SELF_DELIVERY:
return orderManagerAdapter.orderSwitchSelfDelivery(request);
default:
return ResponseUtil.error(ResponseResult.ORDER_OPERATE_TYPE_NOT_VALIDATE);
}
......
......@@ -62,4 +62,9 @@ public class OrderManagerRequest {
private String remark;
private Boolean horseman;
/**
* 取消code
*/
private Integer cancelCode;
}
......@@ -10,7 +10,9 @@ public enum OperateType {
ORDER_SEND("orderSend","送出"),
ORDER_AFFIRM("orderAffirm","完成"),
ORDER_AGREE_REFUND("orderAgreeRefund","同意退款"),
ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款");
ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款"),
ORDER_CANCEL_DELIVERY("orderCancelDelivery","取消配送"),
ORDER_SWITCH_SELF_DELIVERY("orderSwitchSelfDelivery","切换自配送");
/**
......
......@@ -88,5 +88,25 @@ public interface OrderManagerService {
return ResponseUtil.success();
}
/**
* 取消配送
* @param request
* @param orderBean
* @return
*/
default BaseResponse<OrderManagerResponse> orderCancelDelivery(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){
return ResponseUtil.success();
}
/**
* 切换为自配送
* @param request
* @param orderBean
* @return
*/
default BaseResponse<OrderManagerResponse> orderSwitchSelfDelivery(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){
return ResponseUtil.success();
}
}
......@@ -20,6 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Objects;
@Component
public class OrderManagerAdapter {
......@@ -262,4 +264,39 @@ public class OrderManagerAdapter {
result.setResult(new OrderManagerResponse(orderStatus,refundStatus));
return result;
}
/**
* 拒绝退款
* @param request
* @return
*/
public BaseResponse orderCancelDelivery(OrderManagerRequest request) {
//查询订单
QueryOrdersResponse.DataBean.OrderBean orderBean = orderBaseService.getByOrderCode(request.getOrderId());
if (Objects.isNull(orderBean)) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
request.setCancelCode(0);
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCancelDelivery(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse);
}
/**
* 切换自配送
* @param request
* @return
*/
public BaseResponse orderSwitchSelfDelivery(OrderManagerRequest request) {
//查询订单
QueryOrdersResponse.DataBean.OrderBean orderBean = orderBaseService.getByOrderCode(request.getOrderId());
//订单接单参数校验
BaseResponse verifyResponse = orderVerifyHandle.orderSwitchSelfDelivery(orderBean, request);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return handleResponse(request,orderBean,verifyResponse);
}
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderSwitchSelfDelivery(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse);
}
}
......@@ -7,13 +7,10 @@ import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderHaltedRe
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.enums.DeliveryStatus;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.DeliveryServiceException;
import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.thirdparty.DeliveryMCCafeClient;
import cn.freemud.management.util.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.deliverycenter.dto.CancelDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.deliverycenter.response.CreateDeliveryOrderResponseDto;
......@@ -21,10 +18,7 @@ import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseD
import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.service.EmailAlertService;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.enums.OrderSourceType;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
......@@ -121,9 +115,9 @@ public class DeliveryHandle {
}
CancelDeliveryOrderRequestDto cancelDeliveryOrderRequestDto = new CancelDeliveryOrderRequestDto();
cancelDeliveryOrderRequestDto.setDeliveryId(data.getAddInfo().getDeliveryId());
cancelDeliveryOrderRequestDto.setOrderCancelCode(4);
cancelDeliveryOrderRequestDto.setOrderCancelCode(request.getCancelCode());
//商家退款取消配送
cancelDeliveryOrderRequestDto.setOrderCancelDescription("顾客取消订单");
cancelDeliveryOrderRequestDto.setOrderCancelDescription(request.getReason());
DeliveryResponseDto deliveryResponse = deliveryService.deliveryOrderCancel(cancelDeliveryOrderRequestDto, LogThreadLocal.getTrackingNo());
if (deliveryResponse == null || !StringUtils.equals(ResponseResult.SUCCESS.getCode(), deliveryResponse.getCode()+"")) {
return ResponseUtil.error(ResponseResult.DELIVERY_CANCEL_ORDER_ERROR);
......
package cn.freemud.management.service.handle;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.entities.dto.response.pay.RefundConfig;
import cn.freemud.management.enums.*;
import cn.freemud.management.util.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerWxappConfig;
import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OperateClient;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant;
import com.freemud.sdk.api.assortment.message.enums.OrderType;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType;
import com.freemud.sdk.api.assortment.order.enums.OldOrderType;
import com.freemud.sdk.api.assortment.order.enums.RefundStatus;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import org.apache.commons.collections4.CollectionUtils;
......@@ -29,7 +23,10 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
......@@ -474,6 +471,24 @@ public class OrderVerifyHandle {
return ResponseUtil.success();
}
/**
* 校验切换自配送参数
* @param orderBean
* @param request
* @return
*/
public BaseResponse orderSwitchSelfDelivery(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderManagerRequest request) {
if (Objects.isNull(orderBean)) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
//校验订单配送状态
if (DeliveryStatus.DELIVERYCANCEL.getCode()!=orderBean.getDeliverStatus()){
return ResponseUtil.error(ResponseResult.ORDER_STATUS_FAILED);
}
return ResponseUtil.success();
}
/**
* 通用校验
......
......@@ -3,6 +3,7 @@ package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderRequest;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.service.handle.DeliveryHandle;
......@@ -56,7 +57,18 @@ public class OrderDeliveryService {
if (null == data) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
return deliveryHandle.cancelDelivery(data, null);
return deliveryHandle.cancelDelivery(data, buildOrderManagerRequest());
}
/**
* 构建取消参数
* @return
*/
private OrderManagerRequest buildOrderManagerRequest(){
OrderManagerRequest request=new OrderManagerRequest();
request.setCancelCode(4);
request.setReason("顾客取消订单");
return request;
}
......
package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.adapter.DeliverySdkAdapter;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.DeliveryStatus;
import cn.freemud.management.enums.OperateType;
import cn.freemud.management.enums.RefundStatus;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.service.OrderManagerService;
import cn.freemud.management.service.handle.*;
import cn.freemud.management.service.handle.DeliveryHandle;
import cn.freemud.management.service.handle.PaymentHandle;
import cn.freemud.management.service.handle.SaasOrderHandle;
import cn.freemud.management.service.handle.StockHandle;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.ordercenter.request.OrderExpressReq;
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;
......@@ -19,6 +27,8 @@ import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* All rights Reserved, Designed By www.freemud.cn
*
......@@ -46,6 +56,10 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
private StockHandle stockHandle;
@Autowired
private DeliveryHandle deliveryHandle;
@Autowired
private OrderSdkService orderSdkService;
@Autowired
private DeliverySdkAdapter deliverySdkAdapter;
/**
* 接单
......@@ -197,4 +211,39 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
return ResponseUtil.success();
}
/**
* 取消配送
* @param request
* @param orderBean
* @return
*/
@Override
public BaseResponse<OrderManagerResponse> orderCancelDelivery(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//取消配送
BaseResponse baseResponse = deliveryHandle.cancelDelivery(orderBean, request);
if (Objects.equals(baseResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
// 修改配送状态为取消
baseResponse = updateDeliveryInfo(deliverySdkAdapter.buildOrderExpressReq(request, DeliveryStatus.DELIVERYCANCEL));
}
return baseResponse;
}
@Override
public BaseResponse<OrderManagerResponse> orderSwitchSelfDelivery(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//设置自配送--三方订单(美团、饿了么)使用订单表中 expressTyp, saas订单根据delivery_info表中 配送员 的 addressDetail字段为self
request.setReason(OperateType.ORDER_SWITCH_SELF_DELIVERY.getOpName());
return updateDeliveryInfo(deliverySdkAdapter.buildOrderExpressReq(request,DeliveryStatus.RIDERSTARTDELIVERY));
}
/**
* 修改配送信息和状态,并转换返回
* @param expressReq
* @return
*/
private BaseResponse updateDeliveryInfo(OrderExpressReq expressReq){
com.freemud.application.sdk.api.ordercenter.response.BaseResponse response= orderSdkService.updateDeliveryInfo(expressReq, "");
return ResponseUtil.error(response.getCode(),response.getMessage());
}
}
......@@ -8,6 +8,7 @@ import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.service.OrderManagerService;
import cn.freemud.management.service.handle.DeliveryHandle;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.takeaway.request.order.*;
import com.freemud.application.sdk.api.takeaway.service.WaimaiOrderService;
......@@ -35,6 +36,8 @@ public class WaimaiOrderMangerServiceImpl implements OrderManagerService {
private WaimaiOrderService waimaiOrderService;
@Autowired
private WaimaiSdkAdapter waimaiSdkAdapter;
@Autowired
private DeliveryHandle deliveryHandle;
/**
* 接单
......@@ -153,4 +156,18 @@ public class WaimaiOrderMangerServiceImpl implements OrderManagerService {
return ResponseUtil.success();
}
/**
* 取消配送
* @param request
* @param orderBean
* @return
*/
@Override
public BaseResponse<OrderManagerResponse> orderCancelDelivery(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//取消配送
return deliveryHandle.cancelDelivery(orderBean,request);
}
}
......@@ -10,7 +10,9 @@ public enum OperateType {
ORDER_SEND("orderSend","送出"),
ORDER_AFFIRM("orderAffirm","完成"),
ORDER_AGREE_REFUND("orderAgreeRefund","同意退款"),
ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款");
ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款"),
ORDER_CANCEL_DELIVERY("orderCancelDelivery","取消配送"),
ORDER_SWITCH_SELF_DELIVERY("orderSwitchSelfDelivery","切换自配送");
/**
......
......@@ -88,5 +88,10 @@ public class OrderExpressReq {
*/
public Long estimateArriveTime;
/**
* 详细地址
*/
private String addressDetail;
}
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