|
@@ -160,7 +160,7 @@ public class ChannelOrderServiceImpl extends
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Transactional
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public boolean cancelOrder(Long channelId, String orderId) {
|
|
|
ChannelOrder channelOrder = channelOrderService.getOne(new LambdaQueryWrapper<ChannelOrder>()
|
|
|
.eq(ChannelOrder::getChannelId, channelId).eq(ChannelOrder::getOrderId, orderId));
|
|
@@ -174,15 +174,8 @@ public class ChannelOrderServiceImpl extends
|
|
|
for (ChannelOrderItem orderItem : orderItemList) {
|
|
|
TicketBox ticketBox = ticketBoxService.getById(orderItem.getBoxId());
|
|
|
// 恢复盲票组的已销售数和状态,乐观锁
|
|
|
- boolean rst = ticketBoxService.update(new LambdaUpdateWrapper<TicketBox>()
|
|
|
- .set(
|
|
|
- ticketBox.getStatus() == TicketBoxStatusEnum.PUT_OFF && ticketBox.getManualOff() != 1,
|
|
|
- TicketBox::getStatus,
|
|
|
- TicketBoxStatusEnum.PUT_ON)
|
|
|
- .set(TicketBox::getSalePkgQty, ticketBox.getSalePkgQty() - orderItem.getOrderNum())
|
|
|
- .eq(TicketBox::getSalePkgQty, ticketBox.getSalePkgQty())
|
|
|
- .eq(TicketBox::getBoxId, ticketBox.getBoxId()));
|
|
|
- if (!rst) {
|
|
|
+ boolean rst = rollbackTicketStatusAndSalePkgQty(orderItem, ticketBox);
|
|
|
+ if (!rst) {
|
|
|
LogUtil.error(logger, "渠道采购票组订单取消时,更新盲票组销量失败。boxId:{0}, saleQty:{1}",
|
|
|
ticketBox.getBoxId(), ticketBox.getSaleQty());
|
|
|
throw new ServiceException("渠道采购票组订单取消时,更新盲票组销量失败");
|
|
@@ -202,7 +195,7 @@ public class ChannelOrderServiceImpl extends
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public boolean cancelOrder(ChannelOrderCancelParam param) {
|
|
|
+ public boolean cancelOrderByAdmin(ChannelOrderCancelParam param) {
|
|
|
ChannelOrder channelOrder = this.getById(param.getOrderId());
|
|
|
if (Objects.isNull(channelOrder)) {
|
|
|
throw new ServiceException("订单不存在");
|
|
@@ -224,16 +217,11 @@ public class ChannelOrderServiceImpl extends
|
|
|
}
|
|
|
for (ChannelOrderItem channelOrderItem : list) {
|
|
|
TicketBox ticketBox = ticketBoxService.getById(channelOrderItem.getBoxId());
|
|
|
- // 回滚销量
|
|
|
- int salePkgQty = ticketBox.getSalePkgQty() - channelOrderItem.getOrderNum();
|
|
|
- boolean flag = ticketBoxService.update(new LambdaUpdateWrapper<TicketBox>()
|
|
|
- .set(TicketBox::getSalePkgQty, salePkgQty)
|
|
|
- .eq(TicketBox::getBoxId, ticketBox.getBoxId())
|
|
|
- .eq(TicketBox::getSalePkgQty, ticketBox.getSalePkgQty()));
|
|
|
- if (!flag) {
|
|
|
+
|
|
|
+ boolean rst = this.rollbackTicketStatusAndSalePkgQty(channelOrderItem, ticketBox);
|
|
|
+ if (!rst) {
|
|
|
throw new ServiceException("操作繁忙,请稍后再试!");
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
// 获取支付订单号
|
|
@@ -254,6 +242,23 @@ public class ChannelOrderServiceImpl extends
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 回滚盲票组销量和状态
|
|
|
+ * @param orderItem
|
|
|
+ * @param ticketBox
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private boolean rollbackTicketStatusAndSalePkgQty(ChannelOrderItem orderItem, TicketBox ticketBox) {
|
|
|
+ return ticketBoxService.update(new LambdaUpdateWrapper<TicketBox>()
|
|
|
+ .set(
|
|
|
+ ticketBox.getStatus() == TicketBoxStatusEnum.PUT_OFF && ticketBox.getManualOff() != 1,
|
|
|
+ TicketBox::getStatus,
|
|
|
+ TicketBoxStatusEnum.PUT_ON)
|
|
|
+ .set(TicketBox::getSalePkgQty, ticketBox.getSalePkgQty() - orderItem.getOrderNum())
|
|
|
+ .eq(TicketBox::getSalePkgQty, ticketBox.getSalePkgQty())
|
|
|
+ .eq(TicketBox::getBoxId, ticketBox.getBoxId()));
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void paySuccess(PayOrder payOrder) {
|
|
|
ChannelOrder channelOrder = getById(payOrder.getBizId());
|