From e945210caff1996759905e0e13119ec410498513 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 18 Jun 2020 20:56:26 +0800 Subject: [PATCH] update --- .../schedule/OrderExpiringSchedule.java | 39 +++++++++++-------- .../src/main/resources/application-dev.yml | 2 +- .../service/impl/WxOrderGroupServiceImpl.java | 6 ++- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java index 5827ad2eb..125df3c65 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java @@ -98,7 +98,7 @@ public class OrderExpiringSchedule { List orderCoupons = wxOrderMapper.findListOfUnpaidOrderByDate(dateMap); orderCoupons.stream().forEach( o -> { try { - proxy.orderExpired(o); + proxy.orderExpired(o,true); } catch (Exception e) { logger.error("券过期失败" + e.getMessage()); } @@ -112,7 +112,7 @@ public class OrderExpiringSchedule { List orderPresss = wxOrderMapper.findListOfCompleteUnPaidPressOrderByDate(dateMap); orderPresss.stream().forEach( o -> { try { - proxy.orderPressExpired(o, true); + proxy.orderPressExpired(o, true,true); } catch (Exception e) { logger.error("砍价券支付过期失败" + e.getMessage()); } @@ -123,7 +123,7 @@ public class OrderExpiringSchedule { orderPresss = wxOrderMapper.findListOfUnpaidPressOrderByDate(dateMap); orderPresss.stream().forEach( o -> { try { - proxy.orderPressExpired(o, false); + proxy.orderPressExpired(o, false,true); } catch (Exception e) { logger.error("砍价券过期失败" +e.getMessage()); } @@ -135,7 +135,7 @@ public class OrderExpiringSchedule { order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode()); wxOrderMapper.selectList(new QueryWrapper(order)).stream().forEach(o -> { try { - proxy.orderGroupExpired((WxOrder) o); + proxy.orderGroupExpired((WxOrder) o,true); } catch (Exception e) { logger.error("拼团取消失败" + e.getMessage()); } @@ -147,7 +147,9 @@ public class OrderExpiringSchedule { order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_OVERTIME.getCode()); wxOrderMapper.selectList(new QueryWrapper(order)).stream().forEach(o -> { try { - proxy.returnMoney((WxOrder) o); + proxy.orderGroupExpired((WxOrder) o,false); + //wxOrderService.stockBack(order); + //proxy.returnMoney((WxOrder) o); } catch (Exception e) { logger.error("拼团过期退款失败" + e.getMessage()); } @@ -178,8 +180,7 @@ public class OrderExpiringSchedule { order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_SCHEDU_REFUND.getCode()); wxOrderMapper.selectList(new QueryWrapper(order)).stream().forEach(o -> { try { - wxOrderService.stockBack(order); - proxy.returnMoney((WxOrder) o); + proxy.orderGroupExpired((WxOrder) o,false); } catch (Exception e) { logger.error("参团失败退款失败" + e.getMessage()); } @@ -227,9 +228,11 @@ public class OrderExpiringSchedule { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void orderExpired(WxOrder order) { - if (wxPaySuccess(order)) { - return; + public void orderExpired(WxOrder order,boolean checkRealPay) { + if (checkRealPay) { + if (wxPaySuccess(order)) { + return; + } } // 库存退回 wxOrderService.stockBack(order); @@ -248,9 +251,11 @@ public class OrderExpiringSchedule { } @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void orderPressExpired(WxOrder order, boolean payExpired) { - if (wxPaySuccess(order)) { - return; + public void orderPressExpired(WxOrder order, boolean payExpired,boolean checkRealPay) { + if (checkRealPay) { + if (wxPaySuccess(order)) { + return; + } } Date curDate = new Date(); @@ -272,9 +277,11 @@ public class OrderExpiringSchedule { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void orderGroupExpired(WxOrder order) { - if (wxPaySuccess(order)) { - return; + public void orderGroupExpired(WxOrder order,boolean checkRealPay) { + if (checkRealPay) { + if (wxPaySuccess(order)) { + return; + } } Date curDate = new Date(); diff --git a/mallinkSchedule/src/main/resources/application-dev.yml b/mallinkSchedule/src/main/resources/application-dev.yml index 5570f70a0..d7f7849f7 100644 --- a/mallinkSchedule/src/main/resources/application-dev.yml +++ b/mallinkSchedule/src/main/resources/application-dev.yml @@ -4,7 +4,7 @@ spring: #include: rabbitMQ # JDBC datasource: - url: jdbc:mysql://rm-2zel9i9t555zy7lft.mysql.rds.aliyuncs.com:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true + url: jdbc:mysql://zc349w82qvn56ftl5e64-rw4rm.rwlb.rds.aliyuncs.com:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true username: ENC(dZ8fmrtuBMQYaRytKQgTqg==) password: ENC(IKH7HxMZwIqMttMc9+QsqWa1KMsJvTs4) type: com.alibaba.druid.pool.DruidDataSource diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java index e4e834320..a7378ca88 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java @@ -112,14 +112,16 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService { if(wxOrderGroup.getRemainPeople()<1) { //如果是定时任务处理订单时候补程序发现拼团已满,则此时发起退款,回滚库存, 不能设置为未付款,回引起死循环 if(isScheduleTask) { - //错误,更新状态,定时任务会发起退款,回滚库存 + //错误,更新状态,定时任务会发起退款,回滚库存,到此结束 order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_SCHEDU_REFUND.getCode()); wxOrderMapper.updateById(order); + //此处不要抛出异常,会导致事务回滚,状态写不上 + return; }else { order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode()); wxOrderMapper.updateById(order); + throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"参团人数已满,将稍后退款。"); } - throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"参团人数已满,将稍后退款。"); } int remainPeople = updateOrderGroup(wxOrderGroup,order,wxCoupon);