Procházet zdrojové kódy

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

release_toaliyun_real
Stormeye Wu před 6 roky
rodič
revize
27265aa7b4
4 změnil soubory, kde provedl 84 přidání a 3 odebrání
  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 Zobrazit soubor

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


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iformall.common.ErrorCode;
import com.iformall.domain.dto.WxSharingOrderDto; import com.iformall.domain.dto.WxSharingOrderDto;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.enums.*; import com.iformall.enums.*;
@@ -122,8 +123,11 @@ public class CouponOrderExpiringSchedule {
try { try {
wxRefundOrderService.createRefundOrder(appinfo, co.getId(), EnumPayType.PAY_AUTO_REFUND, null); wxRefundOrderService.createRefundOrder(appinfo, co.getId(), EnumPayType.PAY_AUTO_REFUND, null);
} catch (MallinkException e) { } 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 Zobrazit soubor

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


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iformall.common.ErrorCode;
import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxOrder;
import com.iformall.enums.EnumAppType; import com.iformall.enums.EnumAppType;
import com.iformall.enums.EnumOrderStatus; import com.iformall.enums.EnumOrderStatus;
import com.iformall.enums.EnumOrderType; import com.iformall.enums.EnumOrderType;
import com.iformall.enums.EnumRefundStatus; import com.iformall.enums.EnumRefundStatus;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxAppinfoMapper; import com.iformall.mapper.WxAppinfoMapper;
import com.iformall.mapper.WxCouponMapper; import com.iformall.mapper.WxCouponMapper;
import com.iformall.mapper.WxOrderGroupMapper; import com.iformall.mapper.WxOrderGroupMapper;
import com.iformall.mapper.WxOrderMapper; import com.iformall.mapper.WxOrderMapper;
import com.iformall.service.WxOrderService; import com.iformall.service.WxOrderService;
import com.iformall.service.WxRefundOrderService; import com.iformall.service.WxRefundOrderService;
import com.iformall.utils.DateUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -208,10 +211,22 @@ public class OrderExpiringSchedule {
appinfo.updateTenantInfo(order); appinfo.updateTenantInfo(order);
appinfo.setType(EnumAppType.C.getCode()); appinfo.setType(EnumAppType.C.getCode());
appinfo = wxAppinfoMapper.findList(appinfo).get(0); 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()); boolean has = wxRefundOrderService.hasRefundOrder(order.getId(), EnumRefundStatus.REFUND_SUCCESS.getCode());
if (!has) { 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 Zobrazit soubor

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


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


+ 61
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java Zobrazit soubor

@@ -511,6 +511,12 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR);
} }
} else { } 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); logger.error("微信退款订单申请失败: " + response);
String errMsg = ""; String errMsg = "";
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no); JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
@@ -523,6 +529,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
} }
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode()); record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode());
wxRefundOrderMapper.updateById(record); wxRefundOrderMapper.updateById(record);
if (errDesc.equalsIgnoreCase("超期订单不允许退款")) {
// 更新券状态
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW);
}
return new ResultData(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg, returnMap); return new ResultData(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg, returnMap);
} }
} else { } else {
@@ -590,6 +600,13 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), "订单状态更新失败"); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), "订单状态更新失败");
} }
} else { } 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); logger.error("微信退款订单申请失败: " + response);
String errMsg = ""; String errMsg = "";
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no); JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
@@ -602,6 +619,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
} }
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode()); record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode());
wxRefundOrderMapper.updateById(record); wxRefundOrderMapper.updateById(record);
if (errDesc.equalsIgnoreCase("超期订单不允许退款")) {
// 更新券状态
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW);
}
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg); 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); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR);
} }
} else { } 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); logger.error("微信退款订单申请失败: " + response);
String errMsg = ""; String errMsg = "";
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no); JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
@@ -812,6 +839,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
} }
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode()); record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode());
wxRefundOrderMapper.updateById(record); wxRefundOrderMapper.updateById(record);
if (errDesc.equalsIgnoreCase("超期订单不允许退款")) {
// 更新券状态
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW);
}
return new ResultData(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg, returnMap); return new ResultData(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg, returnMap);
} }
} else { } else {
@@ -879,6 +910,12 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), "订单状态更新失败"); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), "订单状态更新失败");
} }
} else { } 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); logger.error("微信退款订单申请失败: " + response);
String errMsg = ""; String errMsg = "";
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no); JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
@@ -891,6 +928,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
} }
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode()); record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode());
wxRefundOrderMapper.updateById(record); wxRefundOrderMapper.updateById(record);
if (errDesc.equalsIgnoreCase("超期订单不允许退款")) {
// 更新券状态
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW);
}
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg); 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); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR);
} }
} else { } 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); logger.error("微信退款订单申请失败: " + response);
String errMsg = ""; String errMsg = "";
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no); JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
@@ -1416,6 +1463,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
} }
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode()); record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode());
wxRefundOrderMapper.updateById(record); wxRefundOrderMapper.updateById(record);
if (errDesc.equalsIgnoreCase("超期订单不允许退款")) {
// 更新券状态
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW);
}
return new ResultData(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg, returnMap); return new ResultData(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg, returnMap);
} }
} else { } else {
@@ -1476,6 +1527,12 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), "订单状态更新失败"); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), "订单状态更新失败");
} }
} else { } 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); logger.error("微信退款订单申请失败: " + response);
String errMsg = ""; String errMsg = "";
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no); JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
@@ -1488,6 +1545,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
} }
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode()); record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode());
wxRefundOrderMapper.updateById(record); wxRefundOrderMapper.updateById(record);
if (errDesc.equalsIgnoreCase("超期订单不允许退款")) {
// 更新券状态
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW);
}
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), errMsg);
} }
} }


Načítá se…
Zrušit
Uložit