feat(ops): 新增 OpsRedisKeyBuilder 统一管理 Redis Key 租户隔离

新建 OpsRedisKeyBuilder 集中式工具类,所有 Ops 模块 Redis Key 统一使用
:t{tenantId} 格式实现多租户隔离。迁移以下服务的 Key 构建:

- RedisOrderQueueServiceImpl(派单队列/信息/锁)
- UserDispatchStatusServiceImpl(调度状态)
- BadgeDeviceStatusServiceImpl(工牌状态)
- TrafficActiveOrderRedisDAO(客流活跃工单)
- TtsQueueConsumer(TTS 队列/锁/循环)
- OrderCodeGenerator(工单编码序号)
- AreaDeviceServiceImpl(区域设备配置缓存)
- TrafficStatisticsPersistJob(持久化锁)
- BadgeDeviceStatusRedisDAO(IoT 侧工牌状态)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
lzh
2026-03-30 11:36:18 +08:00
parent a9941a29a9
commit df2d14ce26
15 changed files with 311 additions and 122 deletions

View File

@@ -1,6 +1,7 @@
package com.viewsh.module.iot.dal.redis.clean;
import jakarta.annotation.Resource;
package com.viewsh.module.iot.dal.redis.clean;
import com.viewsh.framework.tenant.core.context.TenantContextHolder;
import jakarta.annotation.Resource;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.redis.core.StringRedisTemplate;
@@ -29,8 +30,6 @@ public class BadgeDeviceStatusRedisDAO {
* <p>
* 格式ops:badge:status:{deviceId}
*/
private static final String BADGE_STATUS_KEY_PATTERN = "ops:badge:status:%s";
@Resource
private StringRedisTemplate stringRedisTemplate;
@@ -115,9 +114,9 @@ public class BadgeDeviceStatusRedisDAO {
/**
* 格式化 Redis Key
*/
private static String formatKey(Long deviceId) {
return String.format(BADGE_STATUS_KEY_PATTERN, deviceId);
}
private static String formatKey(Long deviceId) {
return "ops:badge:status:t" + TenantContextHolder.getRequiredTenantId() + ":" + deviceId;
}
/**
* 工单信息(精简 DTO