fix: 修复任务中心 ID 被重置问题

--bug=1048646 --user=赵勇 【任务中心】github#34056,任务中心中的系统即时任务ID重复,当前每天都会从100001编号重新开始编号 https://www.tapd.cn/55049933/s/1612658
This commit is contained in:
fit2-zhao 2024-11-20 09:40:40 +08:00 committed by Craftsman
parent c47d0cd198
commit 367e62e3da
1 changed files with 27 additions and 15 deletions

View File

@ -61,25 +61,37 @@ public class NumGenerator {
}
}
private void cleanDeletedProjectResource(ApplicationNumScope value) {
String suffix = "}:allocation";
private void cleanDeletedProjectResource(ApplicationNumScope scope) {
final String SUFFIX = "}:allocation";
final int SCAN_COUNT = 1000;
ScanOptions options = ScanOptions.scanOptions().match("*_" + value.name()).count(1000).build();
try (
Cursor<String> scan = stringRedisTemplate.scan(options)
) {
while (scan.hasNext()) {
String key = scan.next();
if (StringUtils.contains(key, suffix)) {
continue;
ScanOptions options = ScanOptions.scanOptions()
.match("*_" + scope.name())
.count(SCAN_COUNT)
.build();
try (Cursor<String> cursor = stringRedisTemplate.scan(options)) {
cursor.forEachRemaining(key -> {
// 如果 key 包含特定后缀跳过处理
if (StringUtils.contains(key, SUFFIX)) {
return;
}
Project project = projectMapper.selectByPrimaryKey(key.split("_")[0]);
if (project == null) {
LogUtils.info("清理已经删除项目的num数据: " + key);
// 提取 projectId 并跳过任务作用域的键
String projectId = key.split("_")[0];
if (StringUtils.equals(ApplicationNumScope.TASK.name(), projectId)) {
return;
}
// 检查项目是否存在删除已删除项目的相关数据
if (projectMapper.selectByPrimaryKey(projectId) == null) {
LogUtils.info("清理已经删除项目的 num 数据: {}", key);
stringRedisTemplate.delete(key);
stringRedisTemplate.delete("{" + key + suffix);
}
stringRedisTemplate.delete("{" + key + SUFFIX);
}
});
} catch (Exception e) {
LogUtils.error("清理已删除项目资源时发生错误", e);
}
}