Commit cd9c5e0d by zhiheng.zhang

Merge branch 'feature/20210513-7天关闭自动退款-张志恒'

# Conflicts:
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/OrderCenterSdkService.java
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/order/OrderCenterSdkServiceImpl.java
#	order-management/pom.xml
parents 8a3ba7b8 52a45c15
......@@ -398,4 +398,8 @@ public interface OrderCenterSdkService {
OrderStateInfoResp queryOrderStateInfo(String orderCode, String partnerId, Byte orderClient, String trackNo);
/**
* 订单POS拒单 POS
*/
BaseOrderResponse mallOrderReject(CancelOrderRequest cancelOrderRequest);
}
......@@ -2152,4 +2152,27 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
request.getThirdOrderCode(), 1, request.getTrackingNo());
return orderSdkAdapter.convent2OrderStateInfoResp(orderInfo);
}
/**
* 订单POS拒单 POS
*/
@Override
public BaseOrderResponse mallOrderReject(CancelOrderRequest cancelOrderRequest) {
OrderCancelReq request = new OrderCancelReq();
//商户号必传
request.setPartnerId(cancelOrderRequest.getPartnerId());
request.setOrderCode(cancelOrderRequest.getOrderId());
//售后单类型 1:其他取消 2:用户取消 3:商户取消 4:未支付超时关单 5:商户接单超时取消 6:商家拒单
// 7:配送用户拒收 8:用户售后退货/售后退款 9:系统取消 10:客服取消 11:用户统一取消,
request.setAfterSalesType(cancelOrderRequest.getAfterSalesType().getIndex() == null ? 1 : cancelOrderRequest.getAfterSalesType().getIndex());
request.setOrderClient(OrderClientType.SAASMALL.getIndex());
request.setCancelReason(cancelOrderRequest.getReason());
//若为4,默认做【创建】+【同意并退款完成】,售后单状态为【完成】
request.setCreateEvent(4);
request.setOperator(cancelOrderRequest.getOperator());
request.setAfterSerialNo(cancelOrderRequest.getRefundSerialNo());
com.freemud.application.sdk.api.ordercenter.response.BaseResponse response = orderSdkService.cancelOrder(request, cancelOrderRequest.getTrackingNo());
return orderSdkAdapter.convent2BaseOrderResponse(response);
}
}
......@@ -124,10 +124,14 @@ public class OrderManagerAdapter {
QueryOrdersResponse.DataBean.OrderBean orderBean = orderBaseService.getByOrderCode(request.getOrderId());
//订单接单参数校验
BaseResponse verifyResponse;
if (!macCafePartnerId.equals(orderBean.getCompanyId())) {
verifyResponse = orderVerifyHandle.orderRejectVerify(orderBean, request);
} else {
verifyResponse = orderVerifyHandle.mcCafeOrderRejectVerify(orderBean, request);
if(OrderClientType.SAASMALL.getIndex().toString().equalsIgnoreCase(orderBean.getOrderClient())){
verifyResponse = orderVerifyHandle.mallOrderRejectVerify(orderBean, request);
}else {
if (!macCafePartnerId.equals(orderBean.getCompanyId())) {
verifyResponse = orderVerifyHandle.orderRejectVerify(orderBean, request);
} else {
verifyResponse = orderVerifyHandle.mcCafeOrderRejectVerify(orderBean, request);
}
}
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return handleResponse(request,orderBean,verifyResponse);
......
......@@ -118,4 +118,22 @@ public class MallOrderHandle {
}
return ResponseUtil.success();
}
/**
* 拒单
*
* @param request
* @param orderBean
* @return
*/
public BaseResponse mallOrderReject(OrderManagerRequest request, PayRefundResponse refundResponse, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//作废订单
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.getCancelOrderRequest(request.getOperator(), request.getReason(), refundResponse.getPayRefundStatus(), refundResponse.getRefundId(), orderBean);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.mallOrderReject(cancelOrderRequest);
if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
return ResponseUtil.error(ResponseResult.AFFIRM_ORDER_FAIL);
}
return ResponseUtil.success();
}
}
......@@ -240,6 +240,36 @@ public class OrderVerifyHandle {
* @param request
* @return
*/
public BaseResponse mallOrderRejectVerify(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderManagerRequest request) {
if (orderBean == null) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
Integer status = orderBean.getStatus();
//判断订单是否已经被拒单
if (OrderStatus.REFUSE.getCode().equals(status)) {
return ResponseUtil.error(ResponseResult.REJECT_FAIL_REPETITION, getOrderManagerResponse(orderBean));
}
//判断订单是否已经取消
if (OrderStatus.CANCEL.getCode().equals(status)) {
return ResponseUtil.error(ResponseResult.ORDER_HAS_CANCELED, getOrderManagerResponse(orderBean));
}
//判断订单是否在配送中
if (OrderStatus.DISTRIBUTION.getCode().equals(status)) {
return ResponseUtil.error(ResponseResult.REJECT_FAIL_ORDER_IS_DELIVERY, getOrderManagerResponse(orderBean));
}
//判断订单是否已送达
if (OrderStatus.COMPLETE.getCode().equals(status)) {
return ResponseUtil.error(ResponseResult.REJECT_FAIL_ORDER_IS_COMPLETE, getOrderManagerResponse(orderBean));
}
return ResponseUtil.success();
}
/**
* 拒单
*
* @param orderBean
* @param request
* @return
*/
public BaseResponse mcCafeOrderRejectVerify(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderManagerRequest request) {
if (orderBean == null) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
......@@ -315,8 +345,7 @@ public class OrderVerifyHandle {
return ResponseUtil.error(ResponseResult.ORDER_HAS_CANCELED);
}
//判断订单是否有申请退款
if (orderBean.getHasRefund() == null
|| !orderBean.getHasRefund()) {
if (orderBean.getHasRefund() == null || !orderBean.getHasRefund()) {
return ResponseUtil.error(ResponseResult.ORDER_REFUND_NOT_APPLY);
}
//订单是否支持退款
......
......@@ -77,7 +77,7 @@ public class MallOrderMangerServiceImpl implements OrderManagerService {
}
}
if(Objects.equals(RefundModeEnum.REFUND_ALL.getIndex(),refundMode) && Objects.nonNull(orderBean.getAfterSalesOrderResp()) && Objects.equals(AfterSalesStatus.PENDING.getIndex(), orderBean.getAfterSalesOrderResp().getAfterSalesStatus())){
if((StringUtils.isNotEmpty(request.getOperator()) && !"自动任务".equalsIgnoreCase(request.getOperator())) && Objects.equals(RefundModeEnum.REFUND_ALL.getIndex(),refundMode) && Objects.nonNull(orderBean.getAfterSalesOrderResp()) && Objects.equals(AfterSalesStatus.PENDING.getIndex(), orderBean.getAfterSalesOrderResp().getAfterSalesStatus())){
// 修改售后单状态为退货中
mallOrderHandle.mallOrderAgreeApply(request, orderBean);
}else {
......@@ -125,4 +125,34 @@ public class MallOrderMangerServiceImpl implements OrderManagerService {
return ResponseUtil.success();
}
/**
* 拒单
*
* @param request
* @param orderBean
* @return
*/
@Override
public BaseResponse<OrderManagerResponse> orderReject(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//支付退款
PayRefundResponse refundResponse = new PayRefundResponse();
try {
if(null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size()>0){
refundResponse = paymentHandle.multiRefund(orderBean);
}else{
refundResponse = paymentHandle.refund(request, orderBean);
}
} catch (OrderServiceException orderEx){ // 爱马哥兼容,不抛错
return ResponseUtil.error(orderEx.getResult());
}
//订单拒单
mallOrderHandle.mallOrderReject(request, refundResponse, orderBean);
// 推送pos、微信消息中心
orderBaseService.sendMessage(orderBean, OperateType.ORDER_REJECT, request.getReason());
//todo 可以考虑基于订单回调异步实现
//冲正库存
stockHandle.revert(request,orderBean);
return ResponseUtil.success();
}
}
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