Просмотр исходного кода

[库存][修改]:支付失败库存退回bug

release_toaliyun_real
Stormeye Wu 6 лет назад
Родитель
Сommit
6eac0d4c5d
3 измененных файлов: 27 добавлений и 37 удалений
  1. +1
    -1
      mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java
  2. +17
    -36
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  3. +9
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java

+ 1
- 1
mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java Просмотреть файл

@@ -133,7 +133,7 @@ public class WxPayOrderController extends BaseController {
order = wxOrderService.getById(orderId);
return new ResultData(Result.SUCCESS, "支付状态更新成功", order);
} else {
return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态,请等待!!");
return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态未知,请等待!!");
}
} else if (status.equals(EnumPayStatus.PAY_STATUS_FAIL.getCode())) {
// 有价券支付失败


+ 17
- 36
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java Просмотреть файл

@@ -1168,43 +1168,24 @@ public class WxOrderServiceImpl implements WxOrderService {
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public int updateOrderStatus(WxOrder updateOrder, EnumOrderStatus enumOrderStatus) {
Date currentDate = new Date();
switch (enumOrderStatus) {
case ORDER_STATUS_OVERTIME_CANCEL: // 支付取消,库存退回
case ORDER_STATUS_REFUND_SUCCESS: { // 退款成功,库存退回
try {
stockBack(updateOrder);
} catch (Exception e) {
logger.error("库存+1失败, e:" + e.getMessage());
throw new MallinkException(ErrorCode.REMAIN_BACK_FAIL);
}
break;
}
case ORDER_STATUS_COOPERATING_OVERTIME: { // 拼团超时,退库存
try {
stockBack(updateOrder);
} catch (Exception e) {
logger.error("库存+1失败, e:" + e.getMessage());
throw new MallinkException(ErrorCode.REMAIN_BACK_FAIL);
}
break;
}
case ORDER_STATUS_COOPERATING_CANCEL: { // 拼团取消,退库存
try {
stockBack(updateOrder);
} catch (Exception e) {
logger.error("库存+1失败, e:" + e.getMessage());
throw new MallinkException(ErrorCode.REMAIN_BACK_FAIL);
}
break;
}
case ORDER_STATUS_COOPERATING_COMPLETE: { // 拼团完成,退库存
try {
stockBack(updateOrder);
} catch (Exception e) {
logger.error("库存+1失败, e:" + e.getMessage());
throw new MallinkException(ErrorCode.REMAIN_BACK_FAIL);
WxOrder oldOrder = wxOrderMapper.selectById(updateOrder.getId());
if (!oldOrder.getOrderStatus().equals(enumOrderStatus.getCode())) {
// 状态已更新,库存不退回, 保证不会多退
switch (enumOrderStatus) {
case ORDER_STATUS_OVERTIME_CANCEL: // 支付取消,库存退回
case ORDER_STATUS_REFUND_SUCCESS: // 退款成功,库存退回
case ORDER_STATUS_COOPERATING_OVERTIME: // 拼团超时,退库存
case ORDER_STATUS_COOPERATING_CANCEL: // 拼团取消,退库存
case ORDER_STATUS_COOPERATING_COMPLETE: // 拼团完成,退库存
{
try {
stockBack(updateOrder);
} catch (Exception e) {
logger.error("库存+1失败, e:" + e.getMessage());
throw new MallinkException(ErrorCode.REMAIN_BACK_FAIL);
}
break;
}
break;
}
}
WxOrder refOrder = new WxOrder();


+ 9
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java Просмотреть файл

@@ -1609,6 +1609,15 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
} catch (Exception e) {
logger.error("支付订单失败状态更新异常: " + e.getMessage());
}
try {
int _count = wxOrderService.updateOrderStatus(order, EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL);
if (_count > 1) {
throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
}
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL);
}
throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "支付订单未成功");
}
}


Загрузка…
Отмена
Сохранить