From d0543ac9dc73edc11595c0a0d5da262446f5abb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Fri, 13 Dec 2024 11:31:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=B0=E6=A1=8C=E9=A2=84=E8=AE=A2=E6=94=B9?= =?UTF-8?q?=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../booking/TbShopTableBookingController.java | 6 +++ .../service/TbShopTableBookingService.java | 3 ++ .../impl/TbShopTableBookingServiceImpl.java | 48 ++++++++++++++++++- .../cn/ysk/cashier/quartz/task/TestTask.java | 3 ++ .../impl/shopimpl/TbShopTableServiceImpl.java | 3 +- 5 files changed, 60 insertions(+), 3 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/booking/TbShopTableBookingController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/booking/TbShopTableBookingController.java index ed245d21..e3924056 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/booking/TbShopTableBookingController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/booking/TbShopTableBookingController.java @@ -50,6 +50,7 @@ public class TbShopTableBookingController { @ApiOperation("预订") public ResponseEntity booking(@RequestBody TbShopTableBooking dto) { String orderNo = tbShopTableBookingService.booking(dto); + tbShopTableBookingService.markSubscribe(dto.getShopTableId()); Map data = new HashMap<>(2); data.put("id", dto.getId()); data.put("orderNo", orderNo); @@ -60,6 +61,7 @@ public class TbShopTableBookingController { @ApiOperation("修改预订信息") public ResponseEntity update(@RequestBody TbShopTableBooking dto) { boolean ret = tbShopTableBookingService.update(dto); + tbShopTableBookingService.markSubscribe(dto.getShopTableId()); return ResponseEntity.ok().body(ret); } @@ -67,6 +69,10 @@ public class TbShopTableBookingController { @ApiOperation("修改预订状态") public ResponseEntity markStatus(@RequestBody TbShopTableBooking dto) { tbShopTableBookingService.markStatus(dto.getId(), dto.getStatus()); + if(dto.getStatus() == -1){ + TbShopTableBooking entity = tbShopTableBookingService.getById(dto.getId()); + tbShopTableBookingService.cancelSubscribe(entity.getShopTableId()); + } return ResponseEntity.ok().build(); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopTableBookingService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopTableBookingService.java index 28d95c8d..bbd495b5 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopTableBookingService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopTableBookingService.java @@ -38,6 +38,9 @@ public interface TbShopTableBookingService extends IService Map summary(Integer shopId,String[] phoneNos); + void markSubscribe(Integer shopTableId); + void cancelSubscribe(Integer shopTableId); + void batchTimeout(); void autoCancel(); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopTableBookingServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopTableBookingServiceImpl.java index 6bb4dee1..d5efd720 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopTableBookingServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopTableBookingServiceImpl.java @@ -280,6 +280,53 @@ public class TbShopTableBookingServiceImpl extends ServiceImpl wrapper = Wrappers.lambdaQuery(); + wrapper.eq(TbShopTableBooking::getBookingDate, today); + wrapper.eq(shopTableId != null, TbShopTableBooking::getShopTableId, shopTableId); + wrapper.ne(TbShopTableBooking::getStatus, -1); + wrapper.eq(TbShopTableBooking::getDelFlag, 0); + List list = super.list(wrapper); + if (CollUtil.isEmpty(list)) { + return; + } + Map> groupMap = list.stream().collect(Collectors.groupingBy(TbShopTableBooking::getShopTableId)); + groupMap.forEach((k, v) -> { + mpShopTableMapper.update(Wrappers.lambdaUpdate() + .set(TbShopTable::getStatus, "subscribe") + .eq(TbShopTable::getStatus, "idle") + .eq(TbShopTable::getId, k)); + }); + } + + @Override + public void cancelSubscribe(Integer shopTableId) { + String today = DateUtil.today(); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(TbShopTableBooking::getBookingDate, today); + wrapper.eq(shopTableId != null, TbShopTableBooking::getShopTableId, shopTableId); + //wrapper.ne(TbShopTableBooking::getStatus, -1); + wrapper.eq(TbShopTableBooking::getDelFlag, 0); + List list = super.list(wrapper); + if (CollUtil.isEmpty(list)) { + return; + } + Map> groupMap = list.stream().collect(Collectors.groupingBy(TbShopTableBooking::getShopTableId)); + groupMap.forEach((k, v) -> { + long count = v.stream().filter(item -> item.getStatus() == -1).count(); + // 全部都取消了,则标记为空闲 + if (v.size() == count) { + mpShopTableMapper.update(Wrappers.lambdaUpdate() + .set(TbShopTable::getStatus, "idle") + .eq(TbShopTable::getStatus, "subscribe") + .eq(TbShopTable::getId, k) + ); + } + }); + } + @Override public void batchTimeout() { baseMapper.update(Wrappers.lambdaUpdate() @@ -298,5 +345,4 @@ public class TbShopTableBookingServiceImpl extends ServiceImpl= timeout_minute+15")); } - } \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/quartz/task/TestTask.java b/eladmin-system/src/main/java/cn/ysk/cashier/quartz/task/TestTask.java index 09172c35..87b8662f 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/quartz/task/TestTask.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/quartz/task/TestTask.java @@ -106,6 +106,9 @@ public class TestTask { public void cancelPointsExchangeOrder(){ log.info("积分商品订单取消定时任务执行"); tbPointsExchangeRecordService.authCancel(); + log.info("当日预订台桌打标记-预订状态"); + tbShopTableBookingService.markSubscribe(null); + tbShopTableBookingService.cancelSubscribe(null); log.info("预定订单超时定时任务执行"); tbShopTableBookingService.batchTimeout(); log.info("预定订单取消定时任务执行"); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 75f29534..8bffd98c 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -332,9 +332,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { itemMap.put("orderId", orderInfo == null ? null : orderInfo.getId()); itemMap.put("useType", orderInfo == null ? null : orderInfo.getUseType()); itemMap.put("masterId", orderInfo == null ? null : orderInfo.getMasterId()); - Date bookingDate = DateUtil.date().toJdkDate(); LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.eq(TbShopTableBooking::getBookingDate, bookingDate); + wrapper.eq(TbShopTableBooking::getBookingDate, DateUtil.today()); wrapper.eq(TbShopTableBooking::getShopTableId, data.getId()); wrapper.ne(TbShopTableBooking::getStatus, -1); wrapper.eq(TbShopTableBooking::getDelFlag, 0);