xiaohanzi 6 лет назад
Родитель
Сommit
e945210caf
3 измененных файлов: 28 добавлений и 19 удалений
  1. +23
    -16
      mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java
  2. +1
    -1
      mallinkSchedule/src/main/resources/application-dev.yml
  3. +4
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java

+ 23
- 16
mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java Просмотреть файл

@@ -98,7 +98,7 @@ public class OrderExpiringSchedule {
List<WxOrder> 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<WxOrder> 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();


+ 1
- 1
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


+ 4
- 2
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);


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