Commit 6111c8d6 by 周晓航

新增 未接单的退款售后处理逻辑

parent 269947c8
...@@ -19,7 +19,8 @@ public enum PayRefundStatus { ...@@ -19,7 +19,8 @@ public enum PayRefundStatus {
/** /**
* 额外状态码 用于判断逻辑, * 额外状态码 用于判断逻辑,
*/ */
NOT_SUFFICIENT_FUNDS(8200201,"余额不足"); NOT_SUFFICIENT_FUNDS(8200201,"余额不足"),
COMPATIBILITY_STATUS(9999999,"兼容爱马哥报错");
private Integer code; private Integer code;
private String desc; private String desc;
......
...@@ -206,6 +206,7 @@ public enum ResponseResult { ...@@ -206,6 +206,7 @@ public enum ResponseResult {
*/ */
PAY_BACKEND_CONFIG_ERROR("58003", "支付交易异常","Abnormal payment transaction"), PAY_BACKEND_CONFIG_ERROR("58003", "支付交易异常","Abnormal payment transaction"),
PAY_SVC_CONFIG_ERROR("58004", "不支持储值卡支付",""), PAY_SVC_CONFIG_ERROR("58004", "不支持储值卡支付",""),
PAY_REFUND_ERROR("58005", "退款已受理,请等待",""),
/** /**
* 优惠券活动 * 优惠券活动
*/ */
......
...@@ -2018,9 +2018,9 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2018,9 +2018,9 @@ public class OrderServiceImpl implements Orderservice {
BaseResponse baseResponse = partnerNoTakeOrder(orderRefundVo, orderBean, orderId, AfterSalesType.USER_CANCEL, isRefundDeliveryFee); BaseResponse baseResponse = partnerNoTakeOrder(orderRefundVo, orderBean, orderId, AfterSalesType.USER_CANCEL, isRefundDeliveryFee);
if (baseResponse != null) { if (baseResponse != null) {
return baseResponse; return baseResponse;
} } // 删除订单 通知活动添加商品库存
// 删除订单 通知活动添加商品库存
orderQueueService.backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus(), orderBean.getPayStatus()); orderQueueService.backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus(), orderBean.getPayStatus());
} else { } else {
CancelOrderRequest cancelOrderRequest = new CancelOrderRequest(); CancelOrderRequest cancelOrderRequest = new CancelOrderRequest();
cancelOrderRequest.setPartnerId(orderBean.getCompanyId()); cancelOrderRequest.setPartnerId(orderBean.getCompanyId());
...@@ -2074,50 +2074,24 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2074,50 +2074,24 @@ public class OrderServiceImpl implements Orderservice {
String partnerId = orderBean.getCompanyId(); String partnerId = orderBean.getCompanyId();
int state = PayRefundStatus.SUCCESS.getCode(); int state = PayRefundStatus.SUCCESS.getCode();
if (orderBean.getAmount() != 0) { if (orderBean.getAmount() != 0) {
if (null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size() > 0) { OrderManagerRequest orderManagerRequest = new OrderManagerRequest();
//调用支付退款 orderManagerRequest.setReason(orderRefundVo.getReason());
MultiOrderRefundRequest multiOrderRefundRequest = orderAdapter.getMultiOrderPayRefundRequest(orderBean, refundId); PayRefundResponse refundResponse = paymentHandle.getCommonPayRefundResponse(orderManagerRequest, orderBean);
MultiOrderRefundResponse multiOrderRefundResponse = payServiceImpl.paymentApplicationRefund(multiOrderRefundRequest, orderBean.getCompanyId()); state = refundResponse.getPayRefundStatus().getCode();
if (multiOrderRefundResponse == null || multiOrderRefundResponse.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.ORDER_PAY_RESPONSE_SUCCESS.equals(multiOrderRefundResponse.getCode())) {
return ResponseUtil.error(ResponseResult.MULTIORDER__ERRORREFUND.getCode(), "multiOrderRefund_failed");
}
List<MultiOrderRefundResponse.RefundPlatformResponse> refundPlatformResponseList = multiOrderRefundResponse.getData().refundPlatformResponseList;
if (null != refundPlatformResponseList && refundPlatformResponseList.size() > 0) {
redisCache.save(RedisUtil.getPaymentTransIdSequenceKey(refundPlatformResponseList.get(0).getTransId()), orderBean.getOid(), 1L, TimeUnit.DAYS);
}
//获取支付返回退款状态
state = PayRefundStatus.SUCCESS.getCode();
} else {
OrderExtendedReq ext = orderBean.getOrderExtended();
if (StringUtils.isNotBlank(ext.getAgentPayerId()) && !Objects.equals(ext.getAgentPayerId(), orderBean.getUserId())) {
//代付人信息不为空 并且和订单创建人不一样,表示代付单
PayRefundResponse resp = paymentHandle.agentPayRefund(orderBean);
state = resp.getPayRefundStatus().getCode();
} else {
//调用支付退款
PayRefundRequestDto orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, fatherOrderId);
//抖音支付退款必传
orderPayRefundRequest.setRefundDesc(orderRefundVo.getReason() == null ? "用户退款" : orderRefundVo.getReason());
response = payServiceImpl.orderRefund(orderPayRefundRequest);
if (response == null || response.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(response.getCode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed");
}
//获取支付返回退款状态
state = response.getData().getRefundStatus() == null ? PayRefundStatus.SUCCESS.getCode() : response.getData().getRefundStatus();
}
}
} }
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(),
partnerId, afterSalesType, orderRefundVo.getReason(), LogThreadLocal.getTrackingNo(), refundId.toString()); partnerId, afterSalesType, orderRefundVo.getReason(), LogThreadLocal.getTrackingNo(), refundId.toString());
cancelOrderRequest.setOperator(orderBean.getUserName()); cancelOrderRequest.setOperator(orderBean.getUserName());
cancelOrderRequest.setPartnerId(orderBean.getCompanyId()); cancelOrderRequest.setPartnerId(orderBean.getCompanyId());
if (Objects.equals(PayRefundStatus.RUNNING.getCode(), state)) { if (Objects.equals(PayRefundStatus.FAIL.getCode(), state)) {
// 退款中 // 退款中
cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.RETURN_COMPLETE.getCreateEvent()); cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.RETURN_COMPLETE.getCreateEvent());
} else if (Objects.equals(PayRefundStatus.SUCCESS.getCode(), state)) { } else if (Objects.equals(PayRefundStatus.SUCCESS.getCode(), state)) {
//退款成功 //退款成功
cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.REFUND_COMPLETE.getCreateEvent()); cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.REFUND_COMPLETE.getCreateEvent());
} else if (Objects.equals(PayRefundStatus.RUNNING.getCode(), state)) {
cancelOrderRequest.setCreateEvent(null);
} }
cancelOrderRequest.setReqRemark(orderRefundVo.getRemarks()); cancelOrderRequest.setReqRemark(orderRefundVo.getRemarks());
cancelOrderRequest.setRefundDeliveryAmount(isRefundDeliveryFee); cancelOrderRequest.setRefundDeliveryAmount(isRefundDeliveryFee);
...@@ -2130,6 +2104,11 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2130,6 +2104,11 @@ public class OrderServiceImpl implements Orderservice {
if (baseOrderResponse == null || !ObjectUtils.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, baseOrderResponse.getErrcode())) { if (baseOrderResponse == null || !ObjectUtils.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, baseOrderResponse.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed"); return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed");
} }
if (state == PayRefundStatus.RUNNING.getCode().intValue()) {
// 如果退款中, 直接来个申请记录, 退款回调进行处理
return ResponseUtil.error(ResponseResult.PAY_REFUND_ERROR);
}
return null; return null;
} }
...@@ -2336,7 +2315,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2336,7 +2315,7 @@ public class OrderServiceImpl implements Orderservice {
messageTemplateRequest.setMessageEventType(messageEventType); messageTemplateRequest.setMessageEventType(messageEventType);
com.freemud.application.sdk.api.base.BaseResponse baseResponse = this.messageTemplatePushService.sendTemplateMsg(messageTemplateRequest); com.freemud.application.sdk.api.base.BaseResponse baseResponse = this.messageTemplatePushService.sendTemplateMsg(messageTemplateRequest);
if (!Objects.equals(baseResponse.getCode(), ResponseResultEnum.SUCCESS.getCode())) { if (!Objects.equals(baseResponse.getCode(), ResponseResultEnum.SUCCESS.getCode())) {
AppLogUtil.errorLog("发送支付成功模板消息 失败",orderBean.getOid(),JSON.toJSONString(baseResponse),null); AppLogUtil.errorLog("发送支付成功模板消息 失败", orderBean.getOid(), JSON.toJSONString(baseResponse), null);
} }
} catch (Exception e) { } catch (Exception e) {
AppLogUtil.errorLog("sendTemplateMsg_error", JSONObject.toJSONString(orderBean), JSONObject.toJSONString(messageTemplateRequest), e); AppLogUtil.errorLog("sendTemplateMsg_error", JSONObject.toJSONString(orderBean), JSONObject.toJSONString(messageTemplateRequest), e);
...@@ -3592,7 +3571,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3592,7 +3571,7 @@ public class OrderServiceImpl implements Orderservice {
} else { } else {
resultMap.put(orderCode, resp.getMessage()); resultMap.put(orderCode, resp.getMessage());
} }
}catch (Exception e){ } catch (Exception e) {
resultMap.put(orderCode, e.getMessage()); resultMap.put(orderCode, e.getMessage());
} }
}); });
...@@ -3623,7 +3602,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3623,7 +3602,7 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "订单已取消,无法退款"); return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "订单已取消,无法退款");
} }
// fisherman 仅仅支持 餐饮类订单进行操作 // fisherman 仅仅支持 餐饮类订单进行操作
if (BizTypeEnum.ORDINARY.getBizType().compareTo(orderBean.getBizType()) !=0) { if (BizTypeEnum.ORDINARY.getBizType().compareTo(orderBean.getBizType()) != 0) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "仅支持餐饮订单操作"); return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "仅支持餐饮订单操作");
} }
...@@ -3682,9 +3661,9 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3682,9 +3661,9 @@ public class OrderServiceImpl implements Orderservice {
Long bLong = Long.valueOf(o2.getCreateTime()); Long bLong = Long.valueOf(o2.getCreateTime());
if (bLong > aLong) { if (bLong > aLong) {
return 1; return 1;
}else if (bLong < aLong){ } else if (bLong < aLong) {
return -1; return -1;
}else { } else {
return 0; return 0;
} }
}); });
...@@ -3931,5 +3910,4 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3931,5 +3910,4 @@ public class OrderServiceImpl implements Orderservice {
} }
} }
package cn.freemud.management.entities.dto.response.pay; package cn.freemud.management.entities.dto.response.pay;
import cn.freemud.management.enums.ResponseResult;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus; import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import lombok.Data; import lombok.Data;
...@@ -28,4 +29,9 @@ public class PayRefundResponse { ...@@ -28,4 +29,9 @@ public class PayRefundResponse {
* 退款序列号 * 退款序列号
*/ */
private String refundId; private String refundId;
/**
* 兼容爱马哥退款报错的字段 ,其他场景不会有值
*/
private ResponseResult result;
} }
...@@ -11,6 +11,7 @@ import cn.freemud.management.service.handle.OrderVerifyHandle; ...@@ -11,6 +11,7 @@ import cn.freemud.management.service.handle.OrderVerifyHandle;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum; import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.NewOrderStatus;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderStatusV1; import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderStatusV1;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1; import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.RefundStatusV1; import com.freemud.application.sdk.api.ordercenter.enums.orderv1.RefundStatusV1;
...@@ -58,11 +59,12 @@ public class OrderManagerAdapter { ...@@ -58,11 +59,12 @@ public class OrderManagerAdapter {
} }
} }
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderConfirm(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderConfirm(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
} }
/** /**
* 制作完成 * 制作完成
*
* @param request * @param request
* @return * @return
*/ */
...@@ -75,14 +77,15 @@ public class OrderManagerAdapter { ...@@ -75,14 +77,15 @@ public class OrderManagerAdapter {
//订单接单参数校验 //订单接单参数校验
BaseResponse verifyResponse = orderVerifyHandle.orderDoneVerify(orderBean, request); BaseResponse verifyResponse = orderVerifyHandle.orderDoneVerify(orderBean, request);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) { if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return handleResponse(request,orderBean,verifyResponse); return handleResponse(request, orderBean, verifyResponse);
} }
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderDone(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderDone(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
} }
/** /**
* 送出 * 送出
*
* @param request * @param request
* @return * @return
*/ */
...@@ -101,19 +104,20 @@ public class OrderManagerAdapter { ...@@ -101,19 +104,20 @@ public class OrderManagerAdapter {
//订单接单参数校验 //订单接单参数校验
BaseResponse verifyResponse = orderVerifyHandle.orderDeliveryVerify(orderBean, request); BaseResponse verifyResponse = orderVerifyHandle.orderDeliveryVerify(orderBean, request);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) { if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return StringUtils.equals(verifyResponse.getCode(), ResponseResult.ORDER_IS_COMPLETE_CAN_NOT_DELIVERY.getCode()) ? handleResponse(request,orderBean,ResponseUtil.success()) : handleResponse(request,orderBean,verifyResponse); return StringUtils.equals(verifyResponse.getCode(), ResponseResult.ORDER_IS_COMPLETE_CAN_NOT_DELIVERY.getCode()) ? handleResponse(request, orderBean, ResponseUtil.success()) : handleResponse(request, orderBean, verifyResponse);
} }
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderDelivery(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderDelivery(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
} }
/** /**
* 完成 * 完成
*
* @param request * @param request
* @return * @return
*/ */
public BaseResponse<OrderManagerResponse> orderAffirm(OrderManagerRequest request,OrderBeanV1 orderBean) { public BaseResponse<OrderManagerResponse> orderAffirm(OrderManagerRequest request, OrderBeanV1 orderBean) {
if (orderBean==null){ if (orderBean == null) {
//查询订单 //查询订单
orderBean = orderBaseService.getByOrderCode(request.getOrderId()); orderBean = orderBaseService.getByOrderCode(request.getOrderId());
if (null == orderBean) { if (null == orderBean) {
...@@ -123,10 +127,10 @@ public class OrderManagerAdapter { ...@@ -123,10 +127,10 @@ public class OrderManagerAdapter {
//订单接单参数校验 //订单接单参数校验
BaseResponse verifyResponse = orderVerifyHandle.orderAffirmVerify(orderBean, request); BaseResponse verifyResponse = orderVerifyHandle.orderAffirmVerify(orderBean, request);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) { if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return handleResponse(request,orderBean,verifyResponse); return handleResponse(request, orderBean, verifyResponse);
} }
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAffirm(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAffirm(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
} }
/** /**
...@@ -143,9 +147,9 @@ public class OrderManagerAdapter { ...@@ -143,9 +147,9 @@ public class OrderManagerAdapter {
} }
//订单接单参数校验 //订单接单参数校验
BaseResponse verifyResponse; BaseResponse verifyResponse;
if(BizTypeEnum.MALL.getBizType().compareTo(orderBean.getBizType()) == 0){ if (BizTypeEnum.MALL.getBizType().compareTo(orderBean.getBizType()) == 0) {
verifyResponse = orderVerifyHandle.mallOrderRejectVerify(orderBean, request); verifyResponse = orderVerifyHandle.mallOrderRejectVerify(orderBean, request);
}else { } else {
if (!macCafePartnerId.equals(orderBean.getCompanyId())) { if (!macCafePartnerId.equals(orderBean.getCompanyId())) {
verifyResponse = orderVerifyHandle.orderRejectVerify(orderBean, request); verifyResponse = orderVerifyHandle.orderRejectVerify(orderBean, request);
} else { } else {
...@@ -153,14 +157,15 @@ public class OrderManagerAdapter { ...@@ -153,14 +157,15 @@ public class OrderManagerAdapter {
} }
} }
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) { if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return handleResponse(request,orderBean,verifyResponse); return handleResponse(request, orderBean, verifyResponse);
} }
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderReject(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderReject(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
} }
/** /**
* 同意退款 * 同意退款
*
* @param request * @param request
* @return * @return
*/ */
...@@ -172,16 +177,16 @@ public class OrderManagerAdapter { ...@@ -172,16 +177,16 @@ public class OrderManagerAdapter {
} }
//订单接单参数校验 //订单接单参数校验
BaseResponse verifyResponse; BaseResponse verifyResponse;
if(BizTypeEnum.MALL.getBizType()==orderBean.getBizType()){ if (BizTypeEnum.MALL.getBizType() == orderBean.getBizType()) {
verifyResponse = orderVerifyHandle.mallOrderAgreeRefund(orderBean, request); verifyResponse = orderVerifyHandle.mallOrderAgreeRefund(orderBean, request);
}else{ } else {
verifyResponse = orderVerifyHandle.orderAgreeRefund(orderBean, request); verifyResponse = orderVerifyHandle.orderAgreeRefund(orderBean, request);
} }
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) { if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return handleResponse(request,orderBean,verifyResponse); return handleResponse(request, orderBean, verifyResponse);
} }
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAgreeRefund(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAgreeRefund(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
} }
/** /**
...@@ -193,22 +198,23 @@ public class OrderManagerAdapter { ...@@ -193,22 +198,23 @@ public class OrderManagerAdapter {
if (null == orderBean) { if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST); return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
} }
if(CollectionUtils.isNotEmpty(orderBean.getRefundList())){ if (CollectionUtils.isNotEmpty(orderBean.getRefundList())) {
//订单接单参数校验 //订单接单参数校验
BaseResponse verifyResponse = orderVerifyHandle.orderAgreeRefundMCCafe(orderBean, request); BaseResponse verifyResponse = orderVerifyHandle.orderAgreeRefundMCCafe(orderBean, request);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) { if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return handleResponse(request,orderBean,verifyResponse); return handleResponse(request, orderBean, verifyResponse);
} }
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAgreeRefund(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAgreeRefund(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
}else { } else {
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCancel(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCancel(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
} }
} }
/** /**
* 拒绝退款 * 拒绝退款
*
* @param request * @param request
* @return * @return
*/ */
...@@ -220,22 +226,23 @@ public class OrderManagerAdapter { ...@@ -220,22 +226,23 @@ public class OrderManagerAdapter {
} }
//订单接单参数校验 //订单接单参数校验
BaseResponse verifyResponse; BaseResponse verifyResponse;
if(BizTypeEnum.MALL.getBizType()==orderBean.getBizType()){ if (BizTypeEnum.MALL.getBizType() == orderBean.getBizType()) {
verifyResponse = orderVerifyHandle.mallOrderRejectRefund(orderBean, request); verifyResponse = orderVerifyHandle.mallOrderRejectRefund(orderBean, request);
}else{ } else {
verifyResponse = orderVerifyHandle.orderRejectRefund(orderBean, request); verifyResponse = orderVerifyHandle.orderRejectRefund(orderBean, request);
} }
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) { if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return handleResponse(request,orderBean,verifyResponse); return handleResponse(request, orderBean, verifyResponse);
} }
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderRejectRefund(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderRejectRefund(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
} }
/** /**
* 取消订单 * 取消订单
*
* @param request * @param request
* @return * @return
*/ */
...@@ -246,11 +253,12 @@ public class OrderManagerAdapter { ...@@ -246,11 +253,12 @@ public class OrderManagerAdapter {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST); return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
} }
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCancel(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCancel(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
} }
/** /**
* 拒绝退款 * 拒绝退款
*
* @param request * @param request
* @return * @return
*/ */
...@@ -263,20 +271,20 @@ public class OrderManagerAdapter { ...@@ -263,20 +271,20 @@ public class OrderManagerAdapter {
//订单接单参数校验 //订单接单参数校验
BaseResponse verifyResponse = orderVerifyHandle.mcCafeOrderRejectRefund(orderBean, request); BaseResponse verifyResponse = orderVerifyHandle.mcCafeOrderRejectRefund(orderBean, request);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) { if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return handleResponse(request,orderBean,verifyResponse); return handleResponse(request, orderBean, verifyResponse);
} }
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderRejectRefund(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderRejectRefund(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
} }
private BaseResponse<OrderManagerResponse> handleResponse(OrderManagerRequest request, OrderBeanV1 orderBean,BaseResponse result) { private BaseResponse<OrderManagerResponse> handleResponse(OrderManagerRequest request, OrderBeanV1 orderBean, BaseResponse result) {
if (orderBean==null){ if (orderBean == null) {
return result; return result;
} }
RefundStatusV1 refundStatus = CollectionUtils.isNotEmpty(orderBean.getRefundList()) ? RefundStatusV1.getRefundStatusByCodeV1(orderBean.getRefundList().get(0).getStatus()) : null; RefundStatusV1 refundStatus = CollectionUtils.isNotEmpty(orderBean.getRefundList()) ? RefundStatusV1.getRefundStatusByCodeV1(orderBean.getRefundList().get(0).getStatus()) : null;
OrderStatusV1 orderStatus = OrderStatusV1.getByCode(orderBean.getStatus()); OrderStatusV1 orderStatus = OrderStatusV1.getByCode(orderBean.getStatus());
if (ObjectUtils.equals(ResponseResult.SUCCESS.getCode(),result.getCode())){ if (ObjectUtils.equals(ResponseResult.SUCCESS.getCode(), result.getCode())) {
OperateType byOpType = OperateType.getByOpType(request.getOperateType()); OperateType byOpType = OperateType.getByOpType(request.getOperateType());
if (byOpType != null) { if (byOpType != null) {
switch (byOpType) { switch (byOpType) {
...@@ -303,14 +311,15 @@ public class OrderManagerAdapter { ...@@ -303,14 +311,15 @@ public class OrderManagerAdapter {
default: default:
} }
} }
return ResponseUtil.success(new OrderManagerResponse(orderStatus,refundStatus)); return ResponseUtil.success(new OrderManagerResponse(orderStatus, refundStatus));
} }
result.setResult(new OrderManagerResponse(orderStatus,refundStatus)); result.setResult(new OrderManagerResponse(orderStatus, refundStatus));
return result; return result;
} }
/** /**
* 创建配送单 * 创建配送单
*
* @param request * @param request
* @return * @return
*/ */
...@@ -326,10 +335,10 @@ public class OrderManagerAdapter { ...@@ -326,10 +335,10 @@ public class OrderManagerAdapter {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST); return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
} }
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCreateDelivery(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCreateDelivery(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
} }
private BaseResponse<OrderBeanV1> getOrderBean(String orderId){ private BaseResponse<OrderBeanV1> getOrderBean(String orderId) {
//查询订单 //查询订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(orderId); OrderBeanV1 orderBean = orderBaseService.getByOrderCode(orderId);
// 防止NPE // 防止NPE
...@@ -341,6 +350,7 @@ public class OrderManagerAdapter { ...@@ -341,6 +350,7 @@ public class OrderManagerAdapter {
/** /**
* 取消配送 * 取消配送
*
* @param request * @param request
* @return * @return
*/ */
...@@ -352,14 +362,14 @@ public class OrderManagerAdapter { ...@@ -352,14 +362,14 @@ public class OrderManagerAdapter {
} }
OrderBeanV1 orderBean = orderBeanResp.getResult(); OrderBeanV1 orderBean = orderBeanResp.getResult();
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCancelDelivery(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCancelDelivery(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
} }
/** /**
* @see OrderManagerAdapter#orderAgreeRefund(cn.freemud.management.entities.dto.request.order.OrderManagerRequest)
* @param request * @param request
* @return 改操作 无需校验订单参数 直接退款 * @return 改操作 无需校验订单参数 直接退款
* 使用该方法 请先进行报备, 因为不暴露给外部使用, 不属于业务代码 * 使用该方法 请先进行报备, 因为不暴露给外部使用, 不属于业务代码
* @see OrderManagerAdapter#orderAgreeRefund(cn.freemud.management.entities.dto.request.order.OrderManagerRequest)
*/ */
public BaseResponse developRefund(OrderManagerRequest request) { public BaseResponse developRefund(OrderManagerRequest request) {
//查询订单 //查询订单
...@@ -368,9 +378,9 @@ public class OrderManagerAdapter { ...@@ -368,9 +378,9 @@ public class OrderManagerAdapter {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST); return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
} }
// 设置退款金额 // 设置退款金额
orderBean.setAmount(orderVerifyHandle.getRefundAmount(orderBean,false).longValue()); orderBean.setAmount(orderVerifyHandle.getRefundAmount(orderBean, false).longValue());
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAgreeRefund(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAgreeRefund(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse); return handleResponse(request, orderBean, orderManagerResponse);
} }
......
...@@ -21,6 +21,7 @@ import com.freemud.application.sdk.api.log.ErrorLog; ...@@ -21,6 +21,7 @@ import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1; import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1;
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.response.OrderBaseResp; import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
...@@ -85,6 +86,32 @@ public class PaymentHandle { ...@@ -85,6 +86,32 @@ public class PaymentHandle {
@Autowired @Autowired
private LogUtil logUtil; private LogUtil logUtil;
public PayRefundResponse getCommonPayRefundResponse(OrderManagerRequest request, OrderBeanV1 orderBean) {
PayRefundResponse refundResponse;
try {
if (null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size() > 0) {
// payment/application/refund
refundResponse = this.multiRefund(orderBean);
} else {
OrderExtendedReq ext = orderBean.getOrderExtended();
if (StringUtils.isNotBlank(ext.getAgentPayerId()) && !Objects.equals(ext.getAgentPayerId(), orderBean.getUserId())) {
//代付人信息不为空 并且和订单创建人不一样,表示代付单 payment/application/agentRefund
refundResponse = this.agentPayRefund(orderBean);
} else {
//正常订单现金退款 paymentcenter/refund
refundResponse = this.refund(request, orderBean);
}
}
} catch (OrderServiceException orderEx) { // 爱马哥兼容,不抛错
ResponseResult result = orderEx.getResult();
refundResponse = new PayRefundResponse();
refundResponse.setPayRefundStatus(PayRefundStatus.COMPATIBILITY_STATUS);
refundResponse.setResult(result);
return refundResponse;
}
return refundResponse;
}
/** /**
* 退款 * 退款
* *
......
...@@ -243,25 +243,11 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -243,25 +243,11 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
//取消配送单 //取消配送单
deliveryHandle.cancelDelivery(orderBean, request); deliveryHandle.cancelDelivery(orderBean, request);
//支付退款 //支付退款
PayRefundResponse refundResponse; PayRefundResponse refundResponse = this.getPayRefundResponse(request, orderBean);
try { // 爱马哥报错
if (null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size() > 0) { if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.COMPATIBILITY_STATUS.getCode()) == 0) {
// payment/application/refund return ResponseUtil.error(refundResponse.getResult());
refundResponse = paymentHandle.multiRefund(orderBean);
} else {
OrderExtendedReq ext = orderBean.getOrderExtended();
if (StringUtils.isNotBlank(ext.getAgentPayerId()) && !Objects.equals(ext.getAgentPayerId(), orderBean.getUserId())) {
//代付人信息不为空 并且和订单创建人不一样,表示代付单 payment/application/agentRefund
refundResponse = paymentHandle.agentPayRefund(orderBean);
} else {
//正常订单现金退款 paymentcenter/refund
refundResponse = paymentHandle.refund(request, orderBean);
}
}
} catch (OrderServiceException orderEx) { // 爱马哥兼容,不抛错
return ResponseUtil.error(orderEx.getResult());
} }
// fisherman --> 退款中的状态 阻止后续流程 等待支付回调 // fisherman --> 退款中的状态 阻止后续流程 等待支付回调
if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.RUNNING.getCode()) == 0) { if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.RUNNING.getCode()) == 0) {
return ResponseUtil.error(ResponseResult.REFUND_FAIL_WAIT_CALLBACK); return ResponseUtil.error(ResponseResult.REFUND_FAIL_WAIT_CALLBACK);
...@@ -278,6 +264,17 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -278,6 +264,17 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
} }
/** /**
* 提出 退款公共代码
*
* @param request
* @param orderBean
* @return
*/
private PayRefundResponse getPayRefundResponse(OrderManagerRequest request, OrderBeanV1 orderBean) {
return paymentHandle.getCommonPayRefundResponse(request, orderBean);
}
/**
* 拒绝退款 * 拒绝退款
* *
* @param request * @param request
...@@ -449,7 +446,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -449,7 +446,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
String refundStatus = request.getRefundStatus(); String refundStatus = request.getRefundStatus();
PayRefundStatus payRefundStatus = PayRefundStatus.SUCCESS; PayRefundStatus payRefundStatus = PayRefundStatus.SUCCESS;
if (!Objects.equals(refundStatus,"100")) { if (!Objects.equals(refundStatus, "100")) {
payRefundStatus = PayRefundStatus.FAIL; payRefundStatus = PayRefundStatus.FAIL;
} }
refundResponse.setPayRefundStatus(payRefundStatus); refundResponse.setPayRefundStatus(payRefundStatus);
...@@ -459,9 +456,10 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -459,9 +456,10 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
omRequest.setReason(reason); omRequest.setReason(reason);
omRequest.setOperator("支付退款回调系统补偿"); omRequest.setOperator("支付退款回调系统补偿");
saasOrderHandle.refundAgree(omRequest, refundResponse, orderBean); saasOrderHandle.refundAgree(omRequest, refundResponse, orderBean);
// 推送pos、微信消息中心 // 推送pos、微信消息中心 未接单前 不需要推送pos
if (!NewOrderStatus.PLACE_AN_ORDER.getIndex().equals(orderBean.getStatusV2())) {
orderBaseService.sendMessage(orderBean, ORDER_AGREE_REFUND, reason); orderBaseService.sendMessage(orderBean, ORDER_AGREE_REFUND, reason);
}
//todo 可以考虑基于订单回调异步实现 //todo 可以考虑基于订单回调异步实现
//冲正库存 //冲正库存
stockHandle.revert(omRequest, orderBean); stockHandle.revert(omRequest, orderBean);
......
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