Explorar el Código

bugfix:解锁房间时缓存设置错误,应设置成队列,却设置成了set

xiari hace 1 año
padre
commit
a0297178f6

+ 1 - 1
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/controller/KfOrderController.java

@@ -196,7 +196,7 @@ public class KfOrderController extends BaseController {
      * @param ids 主键串
      */
     @SaCheckPermission("business:guestOrder:lockRoom")
-    @Log(title = "散客入住", businessType = BusinessType.DELETE)
+    @Log(title = "解锁房间", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public R<Void> remove(@NotEmpty(message = "主键不能为空")
                           @PathVariable Long[] ids) {

+ 7 - 4
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfOrderServiceImpl.java

@@ -450,7 +450,7 @@ public class KfOrderServiceImpl implements IKfOrderService {
     }
 
     /**
-     * 校验并批量删除散客入住信息
+     * 解锁房间
      *
      * @param ids     待删除的主键集合
      * @param isValid 是否进行有效性校验
@@ -482,7 +482,8 @@ public class KfOrderServiceImpl implements IKfOrderService {
             // 4. 重设锁房缓存
             if (count > 0) {
                 Long teamId = delOrders.get(0).getTeamId();
-                RedisUtils.deleteObject(CacheNames.CLASS_ROOM + "_" + teamId);
+                String key = CacheNames.CLASS_ROOM + "_" + teamId;
+                RedisUtils.deleteObject(key);
                 // 获取当前团队的所有房间代码
                 Set<String> allRoomCodes = new HashSet<>();
                 allRoomCodes.addAll(
@@ -490,13 +491,15 @@ public class KfOrderServiceImpl implements IKfOrderService {
                             Wrappers.lambdaQuery(KfOrder.class)
                                 .select(KfOrder::getRoomCode)
                                 .eq(KfOrder::getTeamId, teamId)
-                                .eq(KfOrder::getOrderStatus, HotelBusinessConstants.ORDER_STATUS_SF))
+                                .eq(KfOrder::getOrderStatus, HotelBusinessConstants.ORDER_STATUS_SF)
+                                .orderByAsc(KfOrder::getOrderIndex))
                         .stream()
                         .map(KfOrderVo::getRoomCode)
                         .collect(Collectors.toSet())
                 );
 
-                RedisUtils.setCacheObject(CacheNames.CLASS_ROOM + "_" + teamId, allRoomCodes);
+                LinkedBlockingQueue<String> concurrentLinkedQueue = new LinkedBlockingQueue<>(allRoomCodes);
+                RedisUtils.setCacheObject(key, concurrentLinkedQueue);
             }
 
             return count > 0;