|
@@ -9,21 +9,31 @@ import com.chuanghai.ihotel.common.utils.MyQuery;
|
|
|
import com.chuanghai.ihotel.common.utils.PageParam;
|
|
import com.chuanghai.ihotel.common.utils.PageParam;
|
|
|
import com.chuanghai.ihotel.common.utils.PageUtils;
|
|
import com.chuanghai.ihotel.common.utils.PageUtils;
|
|
|
import com.chuanghai.ihotel.constant.RedisKey;
|
|
import com.chuanghai.ihotel.constant.RedisKey;
|
|
|
|
|
+import com.chuanghai.ihotel.constant.TimeConstant;
|
|
|
|
|
+import com.chuanghai.ihotel.controller.request.RoomRealtimeStatuRequest;
|
|
|
import com.chuanghai.ihotel.dao.RoomRealtimeStatuDao;
|
|
import com.chuanghai.ihotel.dao.RoomRealtimeStatuDao;
|
|
|
import com.chuanghai.ihotel.dto.LockRoomDTO;
|
|
import com.chuanghai.ihotel.dto.LockRoomDTO;
|
|
|
import com.chuanghai.ihotel.entity.RoomRealtimeStatuEntity;
|
|
import com.chuanghai.ihotel.entity.RoomRealtimeStatuEntity;
|
|
|
import com.chuanghai.ihotel.entity.RoomTypeEntity;
|
|
import com.chuanghai.ihotel.entity.RoomTypeEntity;
|
|
|
import com.chuanghai.ihotel.enums.RoomStatuEnum;
|
|
import com.chuanghai.ihotel.enums.RoomStatuEnum;
|
|
|
|
|
+import com.chuanghai.ihotel.service.HotelOrderService;
|
|
|
import com.chuanghai.ihotel.service.RoomRealtimeStatuService;
|
|
import com.chuanghai.ihotel.service.RoomRealtimeStatuService;
|
|
|
import com.chuanghai.ihotel.service.RoomService;
|
|
import com.chuanghai.ihotel.service.RoomService;
|
|
|
import com.chuanghai.ihotel.service.RoomTypeService;
|
|
import com.chuanghai.ihotel.service.RoomTypeService;
|
|
|
|
|
+import com.chuanghai.ihotel.util.CommonUtil;
|
|
|
|
|
+import com.chuanghai.ihotel.vo.RoomRealDataStatuVO;
|
|
|
|
|
+import com.chuanghai.ihotel.vo.RoomRealDataStatuVO.RoomUseInfo;
|
|
|
import org.redisson.api.RLock;
|
|
import org.redisson.api.RLock;
|
|
|
import org.redisson.api.RedissonClient;
|
|
import org.redisson.api.RedissonClient;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+import java.util.Set;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
|
@Service("roomRealtimeStatuService")
|
|
@Service("roomRealtimeStatuService")
|
|
@@ -35,6 +45,8 @@ public class RoomRealtimeStatuServiceImpl extends ServiceImpl<RoomRealtimeStatuD
|
|
|
private RoomTypeService roomTypeService;
|
|
private RoomTypeService roomTypeService;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private RoomService roomService;
|
|
private RoomService roomService;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private HotelOrderService orderService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public PageUtils queryPage(PageParam pageParam) {
|
|
public PageUtils queryPage(PageParam pageParam) {
|
|
@@ -105,6 +117,42 @@ public class RoomRealtimeStatuServiceImpl extends ServiceImpl<RoomRealtimeStatuD
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<RoomRealDataStatuVO> realData(RoomRealtimeStatuRequest request) {
|
|
|
|
|
+ // 查询实时房态
|
|
|
|
|
+ LocalDateTime startTime = CommonUtil.localDateToTime(request.getStartDay(), TimeConstant.INTO_TIME);
|
|
|
|
|
+ LocalDateTime endTime = CommonUtil.localDateToTime(request.getEndDay(), TimeConstant.OUT_TIME);
|
|
|
|
|
+ List<RoomRealtimeStatuEntity> realTimeStatuList = this.getBaseMapper().getByRoomIdsAndTime(request.getRoomIds(), startTime, endTime);
|
|
|
|
|
+ Map<Long, RoomRealtimeStatuEntity> realtimeStatuMap = realTimeStatuList.stream().collect(Collectors.toMap(RoomRealtimeStatuEntity::getRoomId, value -> value));
|
|
|
|
|
+
|
|
|
|
|
+ // 查询订单信息
|
|
|
|
|
+ Set<Long> orderIds = realTimeStatuList.stream().filter(e -> e.getBizId() != -1).map(e -> e.getBizId()).collect(Collectors.toSet());
|
|
|
|
|
+ Map<Long, RoomUseInfo> roomUseInfoMap = new HashMap<>();
|
|
|
|
|
+ if (orderIds.size() > 0) {
|
|
|
|
|
+ List<RoomUseInfo> roomUseInfos = orderService.getRoomUseInfoByOrderIds(orderIds);
|
|
|
|
|
+ roomUseInfoMap = roomUseInfos.stream().collect(Collectors.toMap(RoomUseInfo::getOrderId, roomUseInfo -> roomUseInfo));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 封装结果
|
|
|
|
|
+ Map<Long, RoomUseInfo> finalRoomUseInfoMap = roomUseInfoMap;
|
|
|
|
|
+ List<RoomRealDataStatuVO> result = request.getRoomIds().stream().map(roomId -> {
|
|
|
|
|
+ RoomRealDataStatuVO vo = new RoomRealDataStatuVO();
|
|
|
|
|
+ vo.setRoomId(roomId);
|
|
|
|
|
+
|
|
|
|
|
+ RoomRealtimeStatuEntity roomRealTimeStatu = realtimeStatuMap.get(roomId);
|
|
|
|
|
+ if (roomRealTimeStatu != null) {
|
|
|
|
|
+ vo.setStatu(roomRealTimeStatu.getStatu());
|
|
|
|
|
+ vo.setUseInfo(finalRoomUseInfoMap.get(roomRealTimeStatu.getBizId()));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ vo.setStatu("1");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return vo;
|
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 随机根据房型选房
|
|
* 随机根据房型选房
|
|
|
* @param lockRoomDTO 锁房参数
|
|
* @param lockRoomDTO 锁房参数
|