Commit 8c6db0e2 by box

卖券订单退款时,由于退款失败率更高,故逻辑修改为先退款再作废优惠券

那么如果退款成功,优惠券必须作废,因此移除优惠券作废前校验是否可以作废的逻辑
即不管券状态是否已使用还是部分使用,通通作废
parent 6d01bc42
...@@ -48,10 +48,10 @@ public class OrderCouponHandle { ...@@ -48,10 +48,10 @@ public class OrderCouponHandle {
if (couponCodes.isEmpty()) { if (couponCodes.isEmpty()) {
return ResponseUtil.error(ResponseResult.SYSTEM_ERROR.getCode(), "订单中优惠券数据为空。"); return ResponseUtil.error(ResponseResult.SYSTEM_ERROR.getCode(), "订单中优惠券数据为空。");
} }
// 校验券状态是否已被使用 // // 校验券状态是否已被使用
if (couponQueryHandle.isCouponUsed(partnerId, couponCodes)) { // if (couponQueryHandle.isCouponUsed(partnerId, couponCodes)) {
return ResponseUtil.error(ResponseResult.SYSTEM_ERROR.getCode(), "作废优惠券失败,部分券已被使用。"); // return ResponseUtil.error(ResponseResult.SYSTEM_ERROR.getCode(), "作废优惠券失败,部分券已被使用。");
} // }
BatchCouponDiscardReq discardReq = new BatchCouponDiscardReq(); BatchCouponDiscardReq discardReq = new BatchCouponDiscardReq();
discardReq.setCoupons(couponCodes.stream().map(code -> { discardReq.setCoupons(couponCodes.stream().map(code -> {
......
...@@ -13,6 +13,7 @@ import cn.freemud.management.service.handle.PaymentHandle; ...@@ -13,6 +13,7 @@ import cn.freemud.management.service.handle.PaymentHandle;
import cn.freemud.management.service.handle.SaasOrderHandle; import cn.freemud.management.service.handle.SaasOrderHandle;
import cn.freemud.management.service.handle.StockHandle; import cn.freemud.management.service.handle.StockHandle;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.log.ApiLog; import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
...@@ -68,11 +69,6 @@ public class SaleCouponOrderMangerServiceImpl implements OrderManagerService { ...@@ -68,11 +69,6 @@ public class SaleCouponOrderMangerServiceImpl implements OrderManagerService {
*/ */
@Override @Override
public BaseResponse<OrderManagerResponse> orderAgreeRefund(OrderManagerRequest request, OrderBeanV1 orderBean) { public BaseResponse<OrderManagerResponse> orderAgreeRefund(OrderManagerRequest request, OrderBeanV1 orderBean) {
// 退款前先作废券
BaseResponse response = orderCouponHandle.discardOrderCoupon(request.getPartnerId(), orderBean);
if (!isSuccess(response)) {
return response;
}
// 支付退款 包括线上小程序付款的订单,订单宝其他支付方式收款(汇来米,收钱吧,现金,其他)老板通发起退款 // 支付退款 包括线上小程序付款的订单,订单宝其他支付方式收款(汇来米,收钱吧,现金,其他)老板通发起退款
PayRefundResponse refundResponse = this.payRefundCommon(request, orderBean); PayRefundResponse refundResponse = this.payRefundCommon(request, orderBean);
...@@ -85,6 +81,17 @@ public class SaleCouponOrderMangerServiceImpl implements OrderManagerService { ...@@ -85,6 +81,17 @@ public class SaleCouponOrderMangerServiceImpl implements OrderManagerService {
return ResponseUtil.error(ResponseResult.REFUND_FAIL.getCode(), refundResponse.getMessage()); return ResponseUtil.error(ResponseResult.REFUND_FAIL.getCode(), refundResponse.getMessage());
} }
// 先退款再作废券,因为退款经常出现余额不足而失败。券作废失败不影响后面的流程
try {
BaseResponse response = orderCouponHandle.discardOrderCoupon(request.getPartnerId(), orderBean);
if (!isSuccess(response)) {
ApiLog.warnMessage("卖券订单已退款,优惠券作废失败 oid:{} resp:{}", orderBean.getOid(), JSONObject.toJSONString(response));
}
} catch (Throwable e) {
ApiLog.warnMessage("卖券订单已退款,优惠券作废异常 oid:{} ex:{}", orderBean.getOid(), e.getMessage());
}
//订单同意退款 //订单同意退款
saasOrderHandle.refundAgree(request, refundResponse, orderBean); saasOrderHandle.refundAgree(request, refundResponse, orderBean);
// 推送pos、微信消息中心 // 推送pos、微信消息中心
......
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