fix: 优化拼团活动流程,活动结束时间小于24小时则按照拼团结束时间延时

This commit is contained in:
misworga831 2023-07-17 17:55:34 +08:00
parent ecb330cc57
commit 7b13ae13ad

View File

@ -769,7 +769,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
this.systemCancel(entry.getKey(), reason); this.systemCancel(entry.getKey(), reason);
} else { } else {
for (Order order : entry.getValue()) { for (Order order : entry.getValue()) {
this.systemCancel(order.getSn(), reason); if (!CharSequenceUtil.equalsAny(order.getOrderStatus(), OrderStatusEnum.COMPLETED.name(), OrderStatusEnum.DELIVERED.name(), OrderStatusEnum.TAKE.name(), OrderStatusEnum.STAY_PICKED_UP.name())) {
this.systemCancel(order.getSn(), reason);
}
} }
} }
} else if (Boolean.TRUE.equals(fictitious)) { } else if (Boolean.TRUE.equals(fictitious)) {
@ -785,7 +787,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
* @param entry 订单列表 * @param entry 订单列表
* @param requiredNum 必须参团人数 * @param requiredNum 必须参团人数
*/ */
private void fictitiousPintuan(Map.Entry<String, List<Order>> entry, Integer requiredNum) { @Transactional(rollbackFor = Exception.class)
public void fictitiousPintuan(Map.Entry<String, List<Order>> entry, Integer requiredNum) {
Map<String, List<Order>> listMap = entry.getValue().stream().collect(Collectors.groupingBy(Order::getPayStatus)); Map<String, List<Order>> listMap = entry.getValue().stream().collect(Collectors.groupingBy(Order::getPayStatus));
//未付款订单 //未付款订单
List<Order> unpaidOrders = listMap.get(PayStatusEnum.UNPAID.name()); List<Order> unpaidOrders = listMap.get(PayStatusEnum.UNPAID.name());
@ -813,9 +816,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
paidOrders.add(order); paidOrders.add(order);
} }
for (Order paidOrder : paidOrders) { for (Order paidOrder : paidOrders) {
paidOrder.setOrderStatus(OrderStatusEnum.UNDELIVERED.name()); if (!CharSequenceUtil.equalsAny(paidOrder.getOrderStatus(), OrderStatusEnum.COMPLETED.name(), OrderStatusEnum.DELIVERED.name(), OrderStatusEnum.TAKE.name(), OrderStatusEnum.STAY_PICKED_UP.name())) {
this.updateById(paidOrder); if (OrderTypeEnum.NORMAL.name().equals(paidOrder.getOrderType())) {
orderStatusMessage(paidOrder); paidOrder.setOrderStatus(OrderStatusEnum.UNDELIVERED.name());
} else if (OrderTypeEnum.VIRTUAL.name().equals(paidOrder.getOrderType())) {
paidOrder.setOrderStatus(OrderStatusEnum.TAKE.name());
}
this.updateById(paidOrder);
orderStatusMessage(paidOrder);
}
} }
} }
} }
@ -871,7 +880,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
* @param pintuanId 拼团活动ID * @param pintuanId 拼团活动ID
* @param parentOrderSn 拼团父订单编号 * @param parentOrderSn 拼团父订单编号
*/ */
private void checkPintuanOrder(String pintuanId, String parentOrderSn) { @Transactional(rollbackFor = Exception.class)
public void checkPintuanOrder(String pintuanId, String parentOrderSn) {
//获取拼团配置 //获取拼团配置
Pintuan pintuan = pintuanService.getById(pintuanId); Pintuan pintuan = pintuanService.getById(pintuanId);
List<Order> list = this.getPintuanOrder(pintuanId, parentOrderSn); List<Order> list = this.getPintuanOrder(pintuanId, parentOrderSn);
@ -881,6 +891,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
PintuanOrderMessage pintuanOrderMessage = new PintuanOrderMessage(); PintuanOrderMessage pintuanOrderMessage = new PintuanOrderMessage();
//开团结束时间 //开团结束时间
long startTime = DateUtil.offsetHour(new Date(), 24).getTime(); long startTime = DateUtil.offsetHour(new Date(), 24).getTime();
if (DateUtil.compare(DateUtil.offsetHour(pintuan.getStartTime(), 24), pintuan.getEndTime()) > 0) {
startTime = pintuan.getEndTime().getTime();
}
pintuanOrderMessage.setOrderSn(parentOrderSn); pintuanOrderMessage.setOrderSn(parentOrderSn);
pintuanOrderMessage.setPintuanId(pintuanId); pintuanOrderMessage.setPintuanId(pintuanId);
TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR, TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR,
@ -923,7 +936,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
* *
* @param orderList 需要更新拼团状态为成功的拼团订单列表 * @param orderList 需要更新拼团状态为成功的拼团订单列表
*/ */
private void pintuanOrderSuccess(List<Order> orderList) { @Transactional(rollbackFor = Exception.class)
public void pintuanOrderSuccess(List<Order> orderList) {
for (Order order : orderList) { for (Order order : orderList) {
if (order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name())) { if (order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name())) {
this.virtualOrderConfirm(order.getSn()); this.virtualOrderConfirm(order.getSn());