Browse Source

更新@Transactional 本地自调用不生效,Aop proxy bean注入不生效的bug

release_toaliyun_real
xiaohanzi 6 years ago
parent
commit
a676467162
1 changed files with 11 additions and 3 deletions
  1. +11
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java

+ 11
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java View File

@@ -35,6 +35,9 @@ import java.util.*;
public class WxPayOrderServiceImpl implements WxPayOrderService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
WxPayOrderServiceImpl wxPayOrderServiceImpl;
@Autowired
WxAppinfoMapper wxAppinfoMapper;

@@ -115,8 +118,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
"\"REQUIRE_POST_METHOD\":{\"detail\":\"请使用post方法\",\"reason\":\"未使用post传递参数\",\"resolution\":\"请检查请求参数是否通过post方法提交\"}," +
"\"XML_FORMAT_ERROR\":{\"detail\":\"XML格式错误\t\",\"reason\":\"XML格式错误\",\"reason\":\"请检查XML参数格式是否正确\"}}");

//方法必须为public AopContext.currentProxy()
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
private void handleSuccessOrder(WxPayOrder oldRecord,WxOrder order,Map<String, String> retMap) {
public void handleSuccessOrder(WxPayOrder oldRecord,WxOrder order,Map<String, String> retMap) {
Date curDate = new Date();
if (oldRecord.getPayOrderStatus() != EnumPayStatus.PAY_STATUS_SUCCESS.getCode()) {
//更新wxPayOrder
@@ -340,7 +344,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
throw new MallinkException(ErrorCode.PAY_ORDER_PAYING.getCode(),"订单微信查询支付状态失败!");
}
//如果是支付错误,可以重新支付
}else if(oldRecord.getPayOrderStatus()==EnumPayStatus.PAY_STATUS_FAIL.getCode()) {
}else if(oldRecord.getPayOrderStatus()==EnumPayStatus.PAY_STATUS_FAIL.getCode()||
oldRecord.getPayOrderStatus()==EnumPayStatus.PAY_STATUS_NOTPAY.getCode()) {
oldRecord.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode());
//重新设置支付no
Long payno = idworker.nextId();
@@ -376,7 +381,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
// 支付单号
record.setPayOrderNo(payOrderNo);
record.setPayAmount(order.getPayment());
record.setPayVendor(EnumPayWay.PAY_WAY_WEAPP.getCode());
record.setPayFrom(payWay.getCode());
record.setPayVendor(payWay.getCode());
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode());
record.setShare(isShare.getCode());
if (isShare == EnumPayShare.YES) {
@@ -555,8 +561,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
}
}
} catch (RuntimeException e) {
logger.error("createwxpayorder error:",e);
throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage());
} catch (Exception e) {
logger.error("createwxpayorder error:",e);
throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage());
}
}


Loading…
Cancel
Save