Commit 1d534cd1 by zhiheng.zhang

Merge remote-tracking branch 'remotes/origin/feature/20210610-开放平台取消订单接口移动-张志恒'

parents e985febb 3cabbc9e
...@@ -75,6 +75,11 @@ ...@@ -75,6 +75,11 @@
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>paymentcenter-sdk</artifactId>
<version>2.9.8.RELEASE</version>
</dependency>
<dependency>
<artifactId>structure-center-sdk</artifactId> <artifactId>structure-center-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<version>1.2.3.RELEASE</version> <version>1.2.3.RELEASE</version>
......
...@@ -2,6 +2,7 @@ package cn.freemud.management.adapter; ...@@ -2,6 +2,7 @@ package cn.freemud.management.adapter;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.paymentcenter.client.request.OrderRefundNewRequest;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest; import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.SneakyThrows; import lombok.SneakyThrows;
...@@ -9,6 +10,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -9,6 +10,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.UUID;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
...@@ -43,6 +45,20 @@ public class PaymentSdkAdapter { ...@@ -43,6 +45,20 @@ public class PaymentSdkAdapter {
return refundRequestDTO; return refundRequestDTO;
} }
public OrderRefundNewRequest convert2OrderRefundNewRequest(QueryOrdersResponse.DataBean.OrderBean order, OrderExtInfoDto orderExtInfoDto) {
OrderRefundNewRequest refundRequest = new OrderRefundNewRequest();
refundRequest.setPartnerId(order.getCompanyId());
refundRequest.setVer(2);
refundRequest.setStoreId(order.getShopId());
refundRequest.setStationId("1");
refundRequest.setTransId(order.getOid());
refundRequest.setFmId(orderExtInfoDto.getFmId());
refundRequest.setRefundId(UUID.randomUUID().toString());
refundRequest.setTotalAmount(Long.valueOf(orderExtInfoDto.getSvcAmount()));
refundRequest.setRefundAmount(Long.valueOf(orderExtInfoDto.getSvcAmount()));
return refundRequest;
}
@SneakyThrows @SneakyThrows
public MultiOrderRefundRequest getMultiOrderPayRefundRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, BigDecimal refundAmount) { public MultiOrderRefundRequest getMultiOrderPayRefundRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, BigDecimal refundAmount) {
MultiOrderRefundRequest multiQueryRequest = new MultiOrderRefundRequest(); MultiOrderRefundRequest multiQueryRequest = new MultiOrderRefundRequest();
......
...@@ -62,6 +62,8 @@ public class OrderManagerController { ...@@ -62,6 +62,8 @@ public class OrderManagerController {
return orderManagerAdapter.orderAgreeRefund(request); return orderManagerAdapter.orderAgreeRefund(request);
case ORDER_REJECT_REFUND: case ORDER_REJECT_REFUND:
return orderManagerAdapter.orderRejectRefund(request); return orderManagerAdapter.orderRejectRefund(request);
case ORDER_CANCEL:
return orderManagerAdapter.orderCancel(request);
default: default:
return ResponseUtil.error(ResponseResult.ORDER_OPERATE_TYPE_NOT_VALIDATE); return ResponseUtil.error(ResponseResult.ORDER_OPERATE_TYPE_NOT_VALIDATE);
} }
......
...@@ -10,8 +10,8 @@ public enum OperateType { ...@@ -10,8 +10,8 @@ public enum OperateType {
ORDER_SEND("orderSend","送出"), ORDER_SEND("orderSend","送出"),
ORDER_AFFIRM("orderAffirm","完成"), ORDER_AFFIRM("orderAffirm","完成"),
ORDER_AGREE_REFUND("orderAgreeRefund","同意退款"), ORDER_AGREE_REFUND("orderAgreeRefund","同意退款"),
ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款"); ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款"),
ORDER_CANCEL("orderCancel","订单取消");
/** /**
* 操作类型 * 操作类型
......
...@@ -170,6 +170,9 @@ public enum ResponseResult { ...@@ -170,6 +170,9 @@ public enum ResponseResult {
ORDER_STATUS_FAILED("45085", "订单状态错误"), ORDER_STATUS_FAILED("45085", "订单状态错误"),
ORDER_MOVE_FAILED("45086", "三方配送正在进行,不允许操作"), ORDER_MOVE_FAILED("45086", "三方配送正在进行,不允许操作"),
AGREE_REFUND_APPLY_ORDER_FAIL("45087", "同意退款申请失败"), AGREE_REFUND_APPLY_ORDER_FAIL("45087", "同意退款申请失败"),
AGREE_REFUND_APPLY_ORDER_NOT_ALLOW("45088", "商户配置不允许退款,请检查商户配置"),
PARTNER_ORDER_CANCEL_ERROR("45089", "取消订单失败"),
/** /**
* 支付 * 支付
*/ */
......
package cn.freemud.management.enums;
public enum SettlementTypeEnum {
OFFLINE_PAY(219, "线下支付"),
POINTS(200, "积分抵扣"),
CASH_COUPON(10, "代金券"),
DISCOUNT_COUPON(208, "折扣券"),
PRODUCT_COUPON(118, "商品券"),
;
private int settlementType;
private String desc;
SettlementTypeEnum(int settlementType, String desc) {
this.settlementType = settlementType;
this.desc = desc;
}
public int getSettlementType() {
return settlementType;
}
public String getDesc() {
return desc;
}
}
...@@ -207,6 +207,18 @@ public class OrderManagerAdapter { ...@@ -207,6 +207,18 @@ public class OrderManagerAdapter {
} }
/** /**
* 取消订单
* @param request
* @return
*/
public BaseResponse orderCancel(OrderManagerRequest request) {
//查询订单
QueryOrdersResponse.DataBean.OrderBean orderBean = orderBaseService.getByOrderCode(request.getOrderId());
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCancel(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse);
}
/**
* 拒绝退款 * 拒绝退款
* @param request * @param request
* @return * @return
......
...@@ -17,11 +17,13 @@ import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant; ...@@ -17,11 +17,13 @@ import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant;
import com.freemud.sdk.api.assortment.message.enums.OrderType; import com.freemud.sdk.api.assortment.message.enums.OrderType;
import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType; 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.OldOrderType;
import com.freemud.sdk.api.assortment.order.enums.OrderSourceType;
import com.freemud.sdk.api.assortment.order.enums.RefundStatus; 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.request.order.CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse; 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.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 org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -418,6 +420,26 @@ public class OrderVerifyHandle { ...@@ -418,6 +420,26 @@ public class OrderVerifyHandle {
} }
/** /**
* 取消退款
* @param orderBean
* @param request
* @return
*/
public BaseResponse orderCancel(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderManagerRequest request,String opType) {
List<String> standardPaymentRefundSourceList = Lists.newArrayList(OrderSourceType.SAAS.getCode(), OrderSourceType.APP.getCode(), OrderSourceType.ALIPAY.getCode());
// 商家同意退款时,校验订单是否能退款(B端后台"订单退款设置")
boolean isCanRefund = true;
if (Objects.equals(OperateType.ORDER_AGREE_REFUND, opType) && standardPaymentRefundSourceList.contains(orderBean.getSource())) {
isCanRefund = getRefundConfig(orderBean);
if (!isCanRefund) {
return ResponseUtil.error(ResponseResult.AGREE_REFUND_APPLY_ORDER_NOT_ALLOW);
}
}
return ResponseUtil.success();
}
/**
* 拒绝退款 * 拒绝退款
* @param orderBean * @param orderBean
* @param request * @param request
......
...@@ -10,8 +10,13 @@ import cn.freemud.management.util.RedisUtil; ...@@ -10,8 +10,13 @@ import cn.freemud.management.util.RedisUtil;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import com.freemud.application.sdk.api.base.BaseResponse; import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
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;
import com.freemud.application.sdk.api.paymentcenter.client.request.OrderRefundNewRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.RefundNewResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.sdk.api.assortment.order.enums.OldOrderType; import com.freemud.sdk.api.assortment.order.enums.OldOrderType;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus; import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest; import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
...@@ -62,6 +67,9 @@ public class PaymentHandle { ...@@ -62,6 +67,9 @@ public class PaymentHandle {
private MulitiPaymentClient mulitiPaymentClient; private MulitiPaymentClient mulitiPaymentClient;
@Autowired @Autowired
private RedisCache redisCache; private RedisCache redisCache;
@Autowired
private PaymentNewService paymentNewService;
/** /**
* 退款 * 退款
* @param request * @param request
...@@ -91,6 +99,34 @@ public class PaymentHandle { ...@@ -91,6 +99,34 @@ public class PaymentHandle {
return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId()); return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId());
} }
/** /**
* 退款
* @param orderBean
* @return
*/
public PayRefundResponse newOrderRefund(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderExtInfoDto orderExtInfoDto){
PayRefundStatus refundStatus=PayRefundStatus.SUCCESS;
OrderRefundNewRequest refundRequest = paymentSdkAdapter.convert2OrderRefundNewRequest(orderBean, orderExtInfoDto);
if (ObjectUtils.equals(orderBean.getAmount(), 0L)) {
return handlePayRefundResponse(refundStatus,refundRequest.getRefundId());
}
com.freemud.application.sdk.api.base.BaseResponse<RefundNewResponse> orderRefundResponse;
try {
orderRefundResponse = paymentNewService.newOrderRefund(refundRequest, LogThreadLocal.getTrackingNo());
}catch (Exception ex){
ErrorLog.errorConvertJson(this.getClass(), "paymentNewService.newOrderRefundError", ex);
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
}
if (orderRefundResponse==null){
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
}
if (ObjectUtils.notEqual(orderRefundResponse.getCode(),SUCCESS)){
throw new OrderServiceException(ResponseResult.REFUND_FAIL,orderRefundResponse.getMessage());
}
refundStatus=ObjectUtils.equals( PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getCode())?PayRefundStatus.SUCCESS:PayRefundStatus.FAIL;
return handlePayRefundResponse(refundStatus,refundRequest.getRefundId());
}
/**
* 麦咖啡退款 * 麦咖啡退款
* @param request * @param request
* @param orderBean * @param orderBean
......
...@@ -10,7 +10,8 @@ public enum OperateType { ...@@ -10,7 +10,8 @@ public enum OperateType {
ORDER_SEND("orderSend","送出"), ORDER_SEND("orderSend","送出"),
ORDER_AFFIRM("orderAffirm","完成"), ORDER_AFFIRM("orderAffirm","完成"),
ORDER_AGREE_REFUND("orderAgreeRefund","同意退款"), ORDER_AGREE_REFUND("orderAgreeRefund","同意退款"),
ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款"); ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款"),
ORDER_CANCEL("orderCancel","订单取消");
/** /**
......
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