|
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
+import org.dromara.common.core.constant.CacheNames;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
import org.dromara.backstage.api.RemotePtRoomService;
|
|
import org.dromara.backstage.api.RemotePtRoomService;
|
|
|
import org.dromara.common.core.constant.DefaultConstants;
|
|
import org.dromara.common.core.constant.DefaultConstants;
|
|
@@ -19,6 +20,7 @@ import org.dromara.common.core.utils.MapstructUtils;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
|
|
+import org.dromara.common.redis.utils.RedisUtils;
|
|
|
import org.dromara.hotel.api.domain.bo.RemoteOrderBo;
|
|
import org.dromara.hotel.api.domain.bo.RemoteOrderBo;
|
|
|
import org.dromara.hotel.api.domain.vo.RemoteOrderVo;
|
|
import org.dromara.hotel.api.domain.vo.RemoteOrderVo;
|
|
|
import org.dromara.hotel.domain.KfOrder;
|
|
import org.dromara.hotel.domain.KfOrder;
|
|
@@ -34,6 +36,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
+import java.util.concurrent.LinkedBlockingQueue;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 散客入住Service业务层处理
|
|
* 散客入住Service业务层处理
|
|
@@ -125,7 +128,7 @@ public class KfOrderServiceImpl implements IKfOrderService {
|
|
|
//2.查询团客入住信息
|
|
//2.查询团客入住信息
|
|
|
KfOrder order = baseMapper.selectOne(Wrappers.<KfOrder>lambdaQuery()
|
|
KfOrder order = baseMapper.selectOne(Wrappers.<KfOrder>lambdaQuery()
|
|
|
.eq(KfOrder::getGuestId, teamGuest.getId())
|
|
.eq(KfOrder::getGuestId, teamGuest.getId())
|
|
|
- .eq(KfOrder::getGuestId, teamGuest.getId()));
|
|
|
|
|
|
|
+ .eq(KfOrder::getTeamId, teamGuest.getTeamId()));
|
|
|
if(ObjectUtil.isNotEmpty(order)) {
|
|
if(ObjectUtil.isNotEmpty(order)) {
|
|
|
teamGuest.setRoomCode(order.getRoomCode());
|
|
teamGuest.setRoomCode(order.getRoomCode());
|
|
|
teamGuest.setRoomName(order.getRoomName());
|
|
teamGuest.setRoomName(order.getRoomName());
|
|
@@ -229,6 +232,66 @@ public class KfOrderServiceImpl implements IKfOrderService {
|
|
|
return baseMapper.updateById(update) > 0;
|
|
return baseMapper.updateById(update) > 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 团客报到
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Boolean teamGuestCheckIn(KfTeamGuestVo bo) {
|
|
|
|
|
+ boolean flag = false;
|
|
|
|
|
+ //1.根据客人ID和客团ID修改客人客团关系表的报到状态,并发送kafka消息
|
|
|
|
|
+ flag = guestTeamService.setGuestCheckInStatus(bo.getId(), bo.getTeamId());
|
|
|
|
|
+ String roomCode = bo.getRoomCode();
|
|
|
|
|
+ //2.修改订单信息
|
|
|
|
|
+ if (bo.getOrderId() != null) {
|
|
|
|
|
+ // 参数里面有OrderId,设置订单状态为入住
|
|
|
|
|
+ KfOrderBo orderBo = new KfOrderBo();
|
|
|
|
|
+ orderBo.setId(bo.getOrderId());
|
|
|
|
|
+ orderBo.setOrderStatus(HotelBusinessConstants.ORDER_STATUS_RZ);
|
|
|
|
|
+ //3.删除锁房缓存,根据roomCode修改房间状态
|
|
|
|
|
+ updateOrderAndRoomStatus(orderBo);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 参数里面没有OrderId,根据团客ID查询锁房订单信息,设置订单状态为入住
|
|
|
|
|
+ LambdaQueryWrapper<KfOrder> queryWrapper = new LambdaQueryWrapper<KfOrder>()
|
|
|
|
|
+ .eq(KfOrder::getTeamId, bo.getTeamId())
|
|
|
|
|
+ .eq(KfOrder::getOrderStatus, HotelBusinessConstants.ORDER_STATUS_SF)
|
|
|
|
|
+ .orderByAsc(KfOrder::getOrderIndex);
|
|
|
|
|
+
|
|
|
|
|
+ List<KfOrderVo> list = baseMapper.selectVoList(queryWrapper);
|
|
|
|
|
+ if(ObjectUtil.isNotEmpty(list)){
|
|
|
|
|
+ KfOrderVo orderVo = list.get(0);
|
|
|
|
|
+ KfOrderBo orderBo = new KfOrderBo();
|
|
|
|
|
+ orderBo.setId(orderVo.getId());
|
|
|
|
|
+ orderBo.setGuestId(bo.getId());
|
|
|
|
|
+ orderBo.setGuestName(bo.getName());
|
|
|
|
|
+ orderBo.setOrderStatus(HotelBusinessConstants.ORDER_STATUS_RZ);
|
|
|
|
|
+ //3.删除锁房缓存,根据roomCode修改房间状态
|
|
|
|
|
+ updateOrderAndRoomStatus(orderBo);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return flag;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Boolean updateOrderAndRoomStatus(KfOrderBo bo) {
|
|
|
|
|
+ if(ObjectUtil.isNotEmpty(bo)){
|
|
|
|
|
+ //更新订单
|
|
|
|
|
+ boolean flag = updateByBo(bo);
|
|
|
|
|
+ if(flag){
|
|
|
|
|
+ String roomStatus = HotelBusinessConstants.orderStatusRoomStatusMap.get(bo.getOrderStatus());
|
|
|
|
|
+ //更新房间状态
|
|
|
|
|
+ baseMapper.updateRoomStatus(bo.getRoomCode(), roomStatus);
|
|
|
|
|
+ //清除缓存
|
|
|
|
|
+ String key = CacheNames.CLASS_ROOM + "_" + bo.getTeamId();
|
|
|
|
|
+ if(RedisUtils.isExistsObject(key)){
|
|
|
|
|
+ LinkedBlockingQueue<String> concurrentLinkedQueue = RedisUtils.getCacheObject(key);
|
|
|
|
|
+ concurrentLinkedQueue.poll();
|
|
|
|
|
+ RedisUtils.setCacheObject(key, concurrentLinkedQueue);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public Boolean distributeOrder(KfOrderBo bo) {
|
|
public Boolean distributeOrder(KfOrderBo bo) {
|
|
|
boolean flag = false;
|
|
boolean flag = false;
|