|
|
@@ -10,9 +10,11 @@ import com.chuanghai.ihotel.common.utils.PageParam;
|
|
|
import com.chuanghai.ihotel.common.utils.PageUtils;
|
|
|
import com.chuanghai.ihotel.constant.RedisKey;
|
|
|
import com.chuanghai.ihotel.constant.TimeConstant;
|
|
|
+import com.chuanghai.ihotel.controller.request.RoomLockRequest;
|
|
|
import com.chuanghai.ihotel.controller.request.RoomRealtimeStatuRequest;
|
|
|
import com.chuanghai.ihotel.dao.RoomRealtimeStatuDao;
|
|
|
import com.chuanghai.ihotel.dto.LockRoomDTO;
|
|
|
+import com.chuanghai.ihotel.entity.RoomEntity;
|
|
|
import com.chuanghai.ihotel.entity.RoomRealtimeStatuEntity;
|
|
|
import com.chuanghai.ihotel.entity.RoomTypeEntity;
|
|
|
import com.chuanghai.ihotel.enums.RoomStatuEnum;
|
|
|
@@ -28,6 +30,8 @@ import org.redisson.api.RedissonClient;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.validation.constraints.NotNull;
|
|
|
+import javax.validation.constraints.Size;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
@@ -182,14 +186,48 @@ public class RoomRealtimeStatuServiceImpl extends ServiceImpl<RoomRealtimeStatuD
|
|
|
throw new RRException(BizCodeEnume.PARAMETER_ERROR, "无效的statuId");
|
|
|
}
|
|
|
|
|
|
- if (!RoomStatuEnum.DIRTY.getCode().equals(statu.getStatu())) {
|
|
|
- throw new RRException(BizCodeEnume.PERMISSION_DENIED, "房间非脏房,不可以置为空闲房间");
|
|
|
+ if (!(RoomStatuEnum.DIRTY.getCode().equals(statu.getStatu())
|
|
|
+ || RoomStatuEnum.LOCK.getCode().equals(statu.getStatu()))) {
|
|
|
+ throw new RRException(BizCodeEnume.PERMISSION_DENIED, "房间非脏房或锁定房,不可以置为空闲房间");
|
|
|
}
|
|
|
|
|
|
statu.setStatu(RoomStatuEnum.FREE.getCode());
|
|
|
this.updateById(statu);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void lock(RoomLockRequest roomLockRequest) {
|
|
|
+ Set<Long> roomIds = roomLockRequest.getRoomId();
|
|
|
+ if (roomIds.size() <= 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<RoomEntity> roomEntities = roomService.getByRoomIds(roomIds);
|
|
|
+ if (roomIds.size() > roomEntities.size()) {
|
|
|
+ throw new RRException(BizCodeEnume.PARAMETER_ERROR, "存在无效的roomId");
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<Long, RoomEntity> roomEntityMap = roomEntities.stream().collect(Collectors.toMap(RoomEntity::getId, e -> e));
|
|
|
+
|
|
|
+
|
|
|
+ LocalDateTime startTime = CommonUtil.localDateToTime(roomLockRequest.getStartDate(), TimeConstant.INTO_TIME);
|
|
|
+ LocalDateTime endTime = CommonUtil.localDateToTime(roomLockRequest.getEndDate(), TimeConstant.OUT_TIME);
|
|
|
+ List<RoomRealtimeStatuEntity> collect = roomIds.stream().map(roomId -> {
|
|
|
+ RoomRealtimeStatuEntity statuEntity = new RoomRealtimeStatuEntity();
|
|
|
+ statuEntity.setBizId(-1L);
|
|
|
+ statuEntity.setStatu(RoomStatuEnum.LOCK.getCode());
|
|
|
+ statuEntity.setRoomId(roomId);
|
|
|
+ statuEntity.setRoomTypeId(roomEntityMap.get(roomId).getRoomTypeId());
|
|
|
+ statuEntity.setRemark(roomLockRequest.getRemark());
|
|
|
+ statuEntity.setStartTime(startTime);
|
|
|
+ statuEntity.setEndTime(endTime);
|
|
|
+
|
|
|
+ return statuEntity;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ this.saveBatch(collect);
|
|
|
+ }
|
|
|
+
|
|
|
private RoomRealtimeStatuEntity findByBizId(Long bizId) {
|
|
|
QueryWrapper<RoomRealtimeStatuEntity> queryWrapper = new QueryWrapper<>();
|
|
|
queryWrapper.eq("biz_id", bizId);
|