Commit a6338704 by wuwenlong

open door bugfix

parent cd70fba8
......@@ -781,7 +781,8 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
throw new BaseException("设备不存在!");
}
if (sOrder.getStatus().equals(OrderStatusEnum.UNUSED.getCode())) {
if (checkOrderOpenDoor()) {
if (RoomStatusEnum.HOLD.getValue().compareTo(sRoomVo.getStatus())==0
||checkOrderOpenDoor(sOrder)) {
throw new BaseException("房间当前时段已被占用不可开门!");
}
//更改订单状态,房间状态,开始时间,结束时间
......@@ -822,20 +823,25 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
*
* @return
*/
private boolean checkOrderOpenDoor() {
private boolean checkOrderOpenDoor(SOrder order) {
SConsumer user = FrontTokenComponent.getWxSConsumerEntry();
LambdaQueryWrapper<SOrder> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.ne(SOrder::getConsumerId, user.getId());
queryWrapper.notIn(SOrder::getStatus, new ArrayList<Integer>() {{
add(OrderStatusEnum.USED.getCode());
add(OrderStatusEnum.CANCEL.getCode());
add(OrderStatusEnum.REFUNDING.getCode());
add(OrderStatusEnum.REFUNDED.getCode());
}});
queryWrapper.notIn(SOrder::getRefundStatus, new ArrayList<Integer>() {{
add(RefundStatusEnum.INREFUND.getCode());
add(RefundStatusEnum.REFUNDED.getCode());
}});
//订单开始时间大于等于当前时间 并且 订单开始时间小于等于当前订单实际结束时间+30分钟保洁
BigDecimal bigDecimal = DateUtils.differentHour(order.getPreStartDate(), order.getPreEndDate());
Date orderEndDate = DateUtils.addMinutes(DateUtils.addHours(new Date(), bigDecimal.intValue()),Constants.ROOM_LOCK_DELAY_MINUTE);
queryWrapper.apply("IFNULL(start_date,pre_start_date) >= '" + DateUtils.getTime() + "' " +
" AND IFNULL(start_date,pre_start_date) <= '" + DateUtils.getTime() + "'");
" AND IFNULL(start_date,pre_start_date) <= '" + DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,orderEndDate) + "'");
return count(queryWrapper) == 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment