处理特殊控制字符转义失败的问题

This commit is contained in:
zk
2026-03-19 10:02:37 +08:00
parent 6bddeecb7a
commit 67c1842e37
@@ -69,12 +69,7 @@ public class JobCleanService {
@Scheduled(cron = "0 */1 * * * ?") @Scheduled(cron = "0 */1 * * * ?")
public void cleanJob() { public void cleanJob() {
// 批量锁定:原子操作,clean_status 0→1 // 批量锁定:原子操作,clean_status 0→1
int locked = appJobDataMapper.update(null, int locked = appJobDataMapper.update(null, new LambdaUpdateWrapper<AppJobData>().set(AppJobData::getCleanStatus, 1).eq(AppJobData::getCleanStatus, 0).eq(AppJobData::getIsValid, 1).last("LIMIT " + batchSize));
new LambdaUpdateWrapper<AppJobData>()
.set(AppJobData::getCleanStatus, 1)
.eq(AppJobData::getCleanStatus, 0)
.eq(AppJobData::getIsValid, 1)
.last("LIMIT " + batchSize));
if (locked == 0) { if (locked == 0) {
return; return;
@@ -82,11 +77,7 @@ public class JobCleanService {
log.info("岗位清洗:锁定{}条数据", locked); log.info("岗位清洗:锁定{}条数据", locked);
// 查出刚锁定的数据 // 查出刚锁定的数据
List<AppJobData> dataList = appJobDataMapper.selectList( List<AppJobData> dataList = appJobDataMapper.selectList(new LambdaQueryWrapper<AppJobData>().eq(AppJobData::getCleanStatus, 1).eq(AppJobData::getIsValid, 1).last("LIMIT " + batchSize));
new LambdaQueryWrapper<AppJobData>()
.eq(AppJobData::getCleanStatus, 1)
.eq(AppJobData::getIsValid, 1)
.last("LIMIT " + batchSize));
// 多线程并发处理 // 多线程并发处理
for (AppJobData data : dataList) { for (AppJobData data : dataList) {
@@ -143,6 +134,8 @@ public class JobCleanService {
if (json.startsWith("```")) { if (json.startsWith("```")) {
json = json.replaceAll("^```\\w*\\n?", "").replaceAll("\\n?```$", "").trim(); json = json.replaceAll("^```\\w*\\n?", "").replaceAll("\\n?```$", "").trim();
} }
// 清除控制字符(Tab等),保留换行符,防止 Jackson 解析失败
json = json.replaceAll("[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]", "");
JsonNode root = HttpTool.objectMapper.readTree(json); JsonNode root = HttpTool.objectMapper.readTree(json);
@@ -222,7 +215,8 @@ public class JobCleanService {
6. tags 是核心职能标签(如数据分析、团队协作),最多5个 6. tags 是核心职能标签(如数据分析、团队协作),最多5个
7. skillTags 是技能关键词(如Java、MySQL),最多8个 7. skillTags 是技能关键词(如Java、MySQL),最多8个
8. companyShortName 去掉地区后缀、招聘后缀、括号内容,保持简洁 8. companyShortName 去掉地区后缀、招聘后缀、括号内容,保持简洁
9. 只返回JSON,不要其他内容 9. 字符串值中不允许出现Tab、换行等控制字符,用空格或中文标点替代
10. 只返回JSON,不要其他内容
"""; """;
} }