|
|
@@ -144,4 +144,63 @@ public class ReservationNoticeAsyncServiceImpl implements ReservationNoticeAsync
|
|
|
log.error("发送订单修改提醒通知异常,reservationId={}", reservationId, e);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Async("taskExecutor")
|
|
|
+ @Override
|
|
|
+ public void sendExpiredReminderToStore(Integer reservationId) {
|
|
|
+ if (reservationId == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ UserReservation reservation = userReservationMapper.selectById(reservationId);
|
|
|
+ if (reservation == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ StoreUser storeUser = storeUserMapper.selectOne(new LambdaQueryWrapper<StoreUser>()
|
|
|
+ .eq(StoreUser::getStoreId, reservation.getStoreId())
|
|
|
+ .eq(StoreUser::getDeleteFlag, 0)
|
|
|
+ .last("LIMIT 1"));
|
|
|
+ if (storeUser == null || storeUser.getPhone() == null || storeUser.getPhone().trim().isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String storePhone = storeUser.getPhone().trim();
|
|
|
+ String dateTime = reservation.getStartTime() != null && !reservation.getStartTime().trim().isEmpty()
|
|
|
+ ? reservation.getStartTime().trim() : "未知时间";
|
|
|
+ List<UserReservationTable> reservationTables = userReservationTableMapper.selectList(
|
|
|
+ new LambdaQueryWrapper<UserReservationTable>()
|
|
|
+ .eq(UserReservationTable::getReservationId, reservationId)
|
|
|
+ .eq(UserReservationTable::getDeleteFlag, 0)
|
|
|
+ .orderByAsc(UserReservationTable::getSort));
|
|
|
+ String tableNumber = "未知桌号";
|
|
|
+ if (reservationTables != null && !reservationTables.isEmpty()) {
|
|
|
+ List<String> tableNumbers = reservationTables.stream()
|
|
|
+ .map(rt -> {
|
|
|
+ StoreBookingTable table = storeBookingTableService.getById(rt.getTableId());
|
|
|
+ return table != null && table.getTableNumber() != null ? table.getTableNumber() : null;
|
|
|
+ })
|
|
|
+ .filter(tn -> tn != null && !tn.trim().isEmpty())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (!tableNumbers.isEmpty()) {
|
|
|
+ tableNumber = String.join(",", tableNumbers);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String message = "用户预订了" + dateTime + "的" + tableNumber + "的桌位,已超过预订时间";
|
|
|
+
|
|
|
+ JSONObject contextJson = new JSONObject();
|
|
|
+ contextJson.put("message", message);
|
|
|
+ contextJson.put("reservationId", reservationId);
|
|
|
+ LifeNotice lifeNotice = new LifeNotice();
|
|
|
+ lifeNotice.setSenderId("system");
|
|
|
+ lifeNotice.setReceiverId("store_" + storePhone);
|
|
|
+ lifeNotice.setBusinessId(reservationId);
|
|
|
+ lifeNotice.setTitle("订单过期提醒");
|
|
|
+ lifeNotice.setContext(contextJson.toJSONString());
|
|
|
+ lifeNotice.setNoticeType(2);
|
|
|
+ lifeNotice.setIsRead(0);
|
|
|
+ lifeNoticeMapper.insert(lifeNotice);
|
|
|
+ log.info("订单过期已通知商家,reservationId={}, receiverId=store_{}", reservationId, storePhone);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("发送订单过期提醒通知异常,reservationId={}", reservationId, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|