Commit 1d534cd1 by zhiheng.zhang

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

parents e985febb 3cabbc9e
......@@ -75,6 +75,11 @@
<scope>provided</scope>
</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>
<groupId>com.freemud.application.service.sdk</groupId>
<version>1.2.3.RELEASE</version>
......
......@@ -2,6 +2,7 @@ package cn.freemud.management.adapter;
import com.alibaba.fastjson.JSONObject;
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.response.order.QueryOrdersResponse;
import lombok.SneakyThrows;
......@@ -9,6 +10,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.UUID;
/**
* All rights Reserved, Designed By www.freemud.cn
......@@ -43,6 +45,20 @@ public class PaymentSdkAdapter {
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
public MultiOrderRefundRequest getMultiOrderPayRefundRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, BigDecimal refundAmount) {
MultiOrderRefundRequest multiQueryRequest = new MultiOrderRefundRequest();
......
......@@ -62,6 +62,8 @@ public class OrderManagerController {
return orderManagerAdapter.orderAgreeRefund(request);
case ORDER_REJECT_REFUND:
return orderManagerAdapter.orderRejectRefund(request);
case ORDER_CANCEL:
return orderManagerAdapter.orderCancel(request);
default:
return ResponseUtil.error(ResponseResult.ORDER_OPERATE_TYPE_NOT_VALIDATE);
}
......
......@@ -10,8 +10,8 @@ public enum OperateType {
ORDER_SEND("orderSend","送出"),
ORDER_AFFIRM("orderAffirm","完成"),
ORDER_AGREE_REFUND("orderAgreeRefund","同意退款"),
ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款");
ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款"),
ORDER_CANCEL("orderCancel","订单取消");
/**
* 操作类型
......
......@@ -170,6 +170,9 @@ public enum ResponseResult {
ORDER_STATUS_FAILED("45085", "订单状态错误"),
ORDER_MOVE_FAILED("45086", "三方配送正在进行,不允许操作"),
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 {
}
/**
* 取消订单
* @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
* @return
......
......@@ -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.order.enums.OldOrderAccountType;
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.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 com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -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 request
......
......@@ -10,8 +10,13 @@ import cn.freemud.management.util.RedisUtil;
import cn.freemud.redis.RedisCache;
import com.freemud.application.sdk.api.base.BaseResponse;
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.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.PayRefundStatus;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
......@@ -62,6 +67,9 @@ public class PaymentHandle {
private MulitiPaymentClient mulitiPaymentClient;
@Autowired
private RedisCache redisCache;
@Autowired
private PaymentNewService paymentNewService;
/**
* 退款
* @param request
......@@ -91,6 +99,34 @@ public class PaymentHandle {
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 orderBean
......
......@@ -10,7 +10,8 @@ public enum OperateType {
ORDER_SEND("orderSend","送出"),
ORDER_AFFIRM("orderAffirm","完成"),
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