Browse Source

[退款][修改]:退款出错加处理,及只处理180天内的订单,时间更久的不处理了

release_toaliyun_real
Stormeye Wu 6 years ago
parent
commit
27265aa7b4
4 changed files with 84 additions and 3 deletions
  1. +6
    -2
      mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java
  2. +16
    -1
      mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java
  3. +1
    -0
      mallinkService/src/main/java/com/iformall/common/ErrorCode.java
  4. +61
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java

+ 6
- 2
mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java View File

@@ -1,6 +1,7 @@
package com.iformall.schedule;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iformall.common.ErrorCode;
import com.iformall.domain.dto.WxSharingOrderDto;
import com.iformall.domain.po.*;
import com.iformall.enums.*;
@@ -122,8 +123,11 @@ public class CouponOrderExpiringSchedule {
try {
wxRefundOrderService.createRefundOrder(appinfo, co.getId(), EnumPayType.PAY_AUTO_REFUND, null);
} catch (MallinkException e) {
logger.error("退款失败:"+e.getMessage()+"couponOrderId="+co.getId());
throw new MallinkException(e.getErrorCode(), e.getMessage());
if (e.getErrorCode() == ErrorCode.REFUND_NOT_ALLOW.getCode()) {
} else {
logger.error("退款失败:" + e.getMessage() + "couponOrderId=" + co.getId());
throw new MallinkException(e.getErrorCode(), e.getMessage());
}
}
}



+ 16
- 1
mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java View File

@@ -1,18 +1,21 @@
package com.iformall.schedule;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iformall.common.ErrorCode;
import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxOrder;
import com.iformall.enums.EnumAppType;
import com.iformall.enums.EnumOrderStatus;
import com.iformall.enums.EnumOrderType;
import com.iformall.enums.EnumRefundStatus;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxAppinfoMapper;
import com.iformall.mapper.WxCouponMapper;
import com.iformall.mapper.WxOrderGroupMapper;
import com.iformall.mapper.WxOrderMapper;
import com.iformall.service.WxOrderService;
import com.iformall.service.WxRefundOrderService;
import com.iformall.utils.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -208,10 +211,22 @@ public class OrderExpiringSchedule {
appinfo.updateTenantInfo(order);
appinfo.setType(EnumAppType.C.getCode());
appinfo = wxAppinfoMapper.findList(appinfo).get(0);
Date limitDate = DateUtils.getTimeAfterDays(180, order.getCreateDate());
if (limitDate.before(new Date())) {
// 系统只自动处理180内的订单
return;
}
//退款流程
boolean has = wxRefundOrderService.hasRefundOrder(order.getId(), EnumRefundStatus.REFUND_SUCCESS.getCode());
if (!has) {
wxRefundOrderService.returnMoney(appinfo, order.getId());
try {
wxRefundOrderService.returnMoney(appinfo, order.getId());
} catch (MallinkException e) {
if (e.getErrorCode() == ErrorCode.REFUND_NOT_ALLOW.getCode()) {

}
throw new MallinkException(e.getErrorCode(), e.getMessage());
}
}
}


+ 1
- 0
mallinkService/src/main/java/com/iformall/common/ErrorCode.java View File

@@ -297,6 +297,7 @@ public enum ErrorCode{
REFUND_ORDER_NOTIFY_CHECK_SIGN_ERROR(12014, "退款验签失败"),
REFUND_ORDER_BUSER_IS_NULL(12015, "B端用户不存在"),
REFUND_ORDER_BUSER_NOT_EQUAL(12016, "B端用户无操作权限"),
REFUND_NOT_ALLOW(12017, "退款订单不允许退款"),

APP_ID_NOT_FOUND(12020, "APPID没找到"),
MCH_INFO_NOT_FOUND(12021, "微信商户平台信息没找到"),


+ 61
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java View File

@@ -511,6 +511,12 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR);
}
} else {
String errDesc = returnMap.get("err_code_des");
if (errDesc.equalsIgnoreCase("订单已全额退款")) {
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode());
wxRefundOrderMapper.updateById(record);
return new ResultData(Result.SUCCESS, "退款订单申请成功", returnMap);
}
logger.error("微信退款订单申请失败: " + response);
String errMsg = "";
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
@@ -523,6 +529,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
}
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode());
wxRefundOrderMapper.updateById(record);
if (errDesc.equalsIgnoreCase("超期订单不允许退款")) {
// 更新券状态
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW);
}
return new ResultData(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg, returnMap);
}
} else {
@@ -590,6 +600,13 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), "订单状态更新失败");
}
} else {
// 特殊处理
String errDesc = returnMap.get("err_code_des");
if (errDesc.equalsIgnoreCase("订单已全额退款")) {
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode());
wxRefundOrderMapper.updateById(record);
return new ResultData(Result.SUCCESS, "退款订单申请成功", returnMap);
}
logger.error("微信退款订单申请失败: " + response);
String errMsg = "";
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
@@ -602,6 +619,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
}
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode());
wxRefundOrderMapper.updateById(record);
if (errDesc.equalsIgnoreCase("超期订单不允许退款")) {
// 更新券状态
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW);
}
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg);
}
}
@@ -800,6 +821,12 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR);
}
} else {
String errDesc = returnMap.get("err_code_des");
if (errDesc.equalsIgnoreCase("订单已全额退款")) {
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode());
wxRefundOrderMapper.updateById(record);
return new ResultData(Result.SUCCESS, "退款订单申请成功", returnMap);
}
logger.error("微信退款订单申请失败: " + response);
String errMsg = "";
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
@@ -812,6 +839,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
}
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode());
wxRefundOrderMapper.updateById(record);
if (errDesc.equalsIgnoreCase("超期订单不允许退款")) {
// 更新券状态
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW);
}
return new ResultData(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg, returnMap);
}
} else {
@@ -879,6 +910,12 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), "订单状态更新失败");
}
} else {
String errDesc = returnMap.get("err_code_des");
if (errDesc.equalsIgnoreCase("订单已全额退款")) {
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode());
wxRefundOrderMapper.updateById(record);
return new ResultData(Result.SUCCESS, "退款订单申请成功", returnMap);
}
logger.error("微信退款订单申请失败: " + response);
String errMsg = "";
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
@@ -891,6 +928,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
}
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode());
wxRefundOrderMapper.updateById(record);
if (errDesc.equalsIgnoreCase("超期订单不允许退款")) {
// 更新券状态
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW);
}
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg);
}
}
@@ -1404,6 +1445,12 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR);
}
} else {
String errDesc = returnMap.get("err_code_des");
if (errDesc.equalsIgnoreCase("订单已全额退款")) {
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode());
wxRefundOrderMapper.updateById(record);
return new ResultData(Result.SUCCESS, "退款订单申请成功", returnMap);
}
logger.error("微信退款订单申请失败: " + response);
String errMsg = "";
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
@@ -1416,6 +1463,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
}
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode());
wxRefundOrderMapper.updateById(record);
if (errDesc.equalsIgnoreCase("超期订单不允许退款")) {
// 更新券状态
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW);
}
return new ResultData(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg, returnMap);
}
} else {
@@ -1476,6 +1527,12 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), "订单状态更新失败");
}
} else {
String errDesc = returnMap.get("err_code_des");
if (errDesc.equalsIgnoreCase("订单已全额退款")) {
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode());
wxRefundOrderMapper.updateById(record);
return new ResultData(Result.SUCCESS, "退款订单申请成功", returnMap);
}
logger.error("微信退款订单申请失败: " + response);
String errMsg = "";
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
@@ -1488,6 +1545,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
}
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode());
wxRefundOrderMapper.updateById(record);
if (errDesc.equalsIgnoreCase("超期订单不允许退款")) {
// 更新券状态
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW);
}
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg);
}
}


Loading…
Cancel
Save