Commit c3455215 by shuhu.hou@freemud.cn

退款退配送费

parent dcdee5d1
package cn.freemud.management.entities.dto.response.pay;
import lombok.Data;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: RefundConfig
* @Package cn.freemud.management.entities.dto.response.pay
* @Description:
* @author: shuhu.hou
* @date: 2020/5/7 17:18
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class RefundConfig {
/**
* 是否退配送费
*/
private boolean isRefundDeliveryFee;
/**
* 是否支持订单完成退款
*/
private boolean isFinishRefund;
public RefundConfig(){
}
public RefundConfig(boolean isFinishRefund,boolean isRefundDeliveryFee){
this.isFinishRefund=isFinishRefund;
this.isRefundDeliveryFee=isRefundDeliveryFee;
}
}
...@@ -18,7 +18,8 @@ public enum OrderRefundEnum { ...@@ -18,7 +18,8 @@ public enum OrderRefundEnum {
REFUND_DATA_RANGE("refundDateRange", "退款允许日期"), REFUND_DATA_RANGE("refundDateRange", "退款允许日期"),
TAKEORDER_REFUND("takeOrderRefund", "未接单是否支持退款"), TAKEORDER_REFUND("takeOrderRefund", "未接单是否支持退款"),
RECEIPTORDER_REFUND("receiptOrderRefund", "已接单是否支持退款"), RECEIPTORDER_REFUND("receiptOrderRefund", "已接单是否支持退款"),
COMPLETEMAKEORDER_REFUND("completeMakeOrderRefund", "制作完成是否支持退款"); COMPLETEMAKEORDER_REFUND("completeMakeOrderRefund", "制作完成是否支持退款"),
REFUND_DELIVERY_FEE_ENABLE("refundShippingFee","商家同意退款时是否退配送费");
private String keyValue; private String keyValue;
......
...@@ -3,6 +3,7 @@ package cn.freemud.management.service.handle; ...@@ -3,6 +3,7 @@ package cn.freemud.management.service.handle;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; 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.order.OrderManagerResponse;
import cn.freemud.management.entities.dto.response.pay.RefundConfig;
import cn.freemud.management.enums.OrderRefundEnum; import cn.freemud.management.enums.OrderRefundEnum;
import cn.freemud.management.enums.OrderSource; import cn.freemud.management.enums.OrderSource;
import cn.freemud.management.enums.OrderStatus; import cn.freemud.management.enums.OrderStatus;
...@@ -18,6 +19,7 @@ import com.freemud.sdk.api.assortment.order.enums.OldOrderType; ...@@ -18,6 +19,7 @@ import com.freemud.sdk.api.assortment.order.enums.OldOrderType;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
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.apache.commons.lang.builder.ToStringBuilder;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -45,7 +47,11 @@ public class OrderVerifyHandle { ...@@ -45,7 +47,11 @@ public class OrderVerifyHandle {
/** /**
* 允许退款 * 允许退款
*/ */
public static final String ALLOW_REFUND = "1"; private static final String ALLOW_REFUND = "1";
/**
* svc储值卡支付,可用于判断订单是否用储值卡支付
*/
private static final String PAY_CODE_10102 = "10102";
@Autowired @Autowired
private CacheOpenPlatformPartnerWxappConfigManager cacheOpenPlatformPartnerWxappConfigManager; private CacheOpenPlatformPartnerWxappConfigManager cacheOpenPlatformPartnerWxappConfigManager;
...@@ -215,16 +221,19 @@ public class OrderVerifyHandle { ...@@ -215,16 +221,19 @@ public class OrderVerifyHandle {
|| orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() != 1) { || orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() != 1) {
return ResponseUtil.error(ResponseResult.ORDER_REFUND_NOT_APPLY); return ResponseUtil.error(ResponseResult.ORDER_REFUND_NOT_APPLY);
} }
boolean isCanRefund = false; boolean isFinishRefund = false;
boolean isRefundDeliveryFee=false;
//saas渠道订单,已完成的订单不能操作, 商户配置已完成订单可退款可退款 //saas渠道订单,已完成的订单不能操作, 商户配置已完成订单可退款可退款
if (ObjectUtils.equals(orderBean.getSource(), OrderSource.SAAS.getSource())) { if (ObjectUtils.equals(orderBean.getSource(), OrderSource.SAAS.getSource())) {
isCanRefund = isCanRefund(orderBean); RefundConfig refundConfig = getRefundConfig(orderBean);
if (!isCanRefund) { isFinishRefund=refundConfig.isFinishRefund();
isRefundDeliveryFee=refundConfig.isRefundDeliveryFee();
if (!isFinishRefund) {
return ResponseUtil.error(ResponseResult.ORDER_HAD_AFFIRM_CAN_NOT_REFUND); return ResponseUtil.error(ResponseResult.ORDER_HAD_AFFIRM_CAN_NOT_REFUND);
} }
} }
if (isCanRefund) { if (isFinishRefund) {
orderBean.setAmount(getRefundAmount(orderBean).longValue()); orderBean.setAmount(getRefundAmount(orderBean,isRefundDeliveryFee).longValue());
} }
return ResponseUtil.success(); return ResponseUtil.success();
} }
...@@ -302,7 +311,7 @@ public class OrderVerifyHandle { ...@@ -302,7 +311,7 @@ public class OrderVerifyHandle {
* @param data * @param data
* @return true=可同意退款 * @return true=可同意退款
*/ */
private boolean isCanRefund(QueryOrdersResponse.DataBean.OrderBean data) { private RefundConfig getRefundConfig(QueryOrdersResponse.DataBean.OrderBean data) {
boolean isFinishRefund = false; boolean isFinishRefund = false;
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto extInfo = null; com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto extInfo = null;
JSONObject jsonObject1 = JSONObject.parseObject(data.getExtInfo()); JSONObject jsonObject1 = JSONObject.parseObject(data.getExtInfo());
...@@ -345,15 +354,24 @@ public class OrderVerifyHandle { ...@@ -345,15 +354,24 @@ public class OrderVerifyHandle {
break; break;
} }
return isFinishRefund; boolean isRefundDeliveryFee = false;
AssortmentOpenPlatformPartnerWxappConfig refundDeliveryFeeConfig = configMap.get(OrderRefundEnum.REFUND_DELIVERY_FEE_ENABLE.getKeyValue());
// 0、null表示 关闭 ; 1 表示开启
if (null != refundDeliveryFeeConfig && ALLOW_REFUND.equals(refundDeliveryFeeConfig.getAppValue())) {
isRefundDeliveryFee = true;
}
return new RefundConfig(isFinishRefund,isRefundDeliveryFee);
} }
/** /**
* 获取已完成订单退款金额 * 获取已完成订单退款金额
*/ */
private BigDecimal getRefundAmount(QueryOrdersResponse.DataBean.OrderBean data) { private BigDecimal getRefundAmount(QueryOrdersResponse.DataBean.OrderBean data,boolean isRefundDeliveryFee) {
//是否配置已完成订单可退款 //是否配置已完成订单可退款
BigDecimal refundAmount = new BigDecimal(data.getAmount()); BigDecimal refundAmount = new BigDecimal(data.getAmount());
if (isRefundDeliveryFee || isPayBySVC(data)){
return refundAmount;
}
List<QueryOrdersResponse.DataBean.OrderBean.AccountBean> accountList = data.getAccountList(); List<QueryOrdersResponse.DataBean.OrderBean.AccountBean> accountList = data.getAccountList();
//外卖订单,已完成,不退配送费 //外卖订单,已完成,不退配送费
if (data.getStatus() == OldOrderStatus.COMPLETE.getCode() && data.getType() == OldOrderType.TAKE_OUT.getCode()) { if (data.getStatus() == OldOrderStatus.COMPLETE.getCode() && data.getType() == OldOrderType.TAKE_OUT.getCode()) {
...@@ -365,4 +383,13 @@ public class OrderVerifyHandle { ...@@ -365,4 +383,13 @@ public class OrderVerifyHandle {
} }
return refundAmount; return refundAmount;
} }
/**
* 订单是否使用储值卡支付(储值卡支付的订单,不支持部分退款)
*
* @param order
* @return true-是,false-不是
*/
private boolean isPayBySVC(QueryOrdersResponse.DataBean.OrderBean order) {
return PAY_CODE_10102.equalsIgnoreCase(order.getPayChannel());
}
} }
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