You've already forked FrameTour-BE
refactor(FaceMatchingOrchestrator): 重构人脸匹配拼图生成逻辑
- 移除外层异常捕获处理,将异常处理移到模板循环内部 - 将日志级别从 info 调整为 debug,减少不必要的日志输出 - 优化代码结构,移除多余的 try-catch 包装 - 保持原有的业务逻辑不变,仅调整代码组织方式 - 确保异常处理不影响主流程执行
This commit is contained in:
@@ -371,66 +371,65 @@ public class FaceMatchingOrchestrator {
|
|||||||
"puzzle_generated:face:" + faceId,
|
"puzzle_generated:face:" + faceId,
|
||||||
"1",
|
"1",
|
||||||
60 * 10, TimeUnit.SECONDS);
|
60 * 10, TimeUnit.SECONDS);
|
||||||
try {
|
|
||||||
log.info("开始异步生成景区拼图模板: scenicId={}, faceId={}", scenicId, faceId);
|
|
||||||
|
|
||||||
// 查询该景区所有启用状态的拼图模板
|
// 查询该景区所有启用状态的拼图模板
|
||||||
List<PuzzleTemplateDTO> templateList = puzzleTemplateService.listTemplates(
|
List<PuzzleTemplateDTO> templateList = puzzleTemplateService.listTemplates(
|
||||||
scenicId, null, 1); // 查询启用状态的模板
|
scenicId, null, 1); // 查询启用状态的模板
|
||||||
|
|
||||||
if (templateList == null || templateList.isEmpty()) {
|
if (templateList == null || templateList.isEmpty()) {
|
||||||
log.info("景区不存在启用的拼图模板,跳过生成: scenicId={}", scenicId);
|
log.debug("景区不存在启用的拼图模板,跳过生成: scenicId={}", scenicId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("景区存在 {} 个启用的拼图模板,开始逐个生成: scenicId={}", templateList.size(), scenicId);
|
log.info("景区存在 {} 个启用的拼图模板,开始逐个生成: scenicId={}", templateList.size(), scenicId);
|
||||||
|
|
||||||
// 获取人脸信息用于动态数据
|
// 获取人脸信息用于动态数据
|
||||||
FaceEntity face = faceRepository.getFace(faceId);
|
FaceEntity face = faceRepository.getFace(faceId);
|
||||||
if (face == null) {
|
if (face == null) {
|
||||||
log.warn("人脸信息不存在,无法生成拼图: faceId={}", faceId);
|
log.warn("人脸信息不存在,无法生成拼图: faceId={}", faceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ScenicV2DTO scenicBasic = scenicRepository.getScenicBasic(face.getScenicId());
|
ScenicV2DTO scenicBasic = scenicRepository.getScenicBasic(face.getScenicId());
|
||||||
|
|
||||||
// 准备公共动态数据
|
// 准备公共动态数据
|
||||||
Map<String, String> baseDynamicData = new HashMap<>();
|
Map<String, String> baseDynamicData = new HashMap<>();
|
||||||
if (face.getFaceUrl() != null) {
|
if (face.getFaceUrl() != null) {
|
||||||
baseDynamicData.put("faceImage", face.getFaceUrl());
|
baseDynamicData.put("faceImage", face.getFaceUrl());
|
||||||
baseDynamicData.put("userAvatar", face.getFaceUrl());
|
baseDynamicData.put("userAvatar", face.getFaceUrl());
|
||||||
}
|
}
|
||||||
baseDynamicData.put("faceId", String.valueOf(faceId));
|
baseDynamicData.put("faceId", String.valueOf(faceId));
|
||||||
baseDynamicData.put("scenicName", scenicBasic.getName());
|
baseDynamicData.put("scenicName", scenicBasic.getName());
|
||||||
baseDynamicData.put("scenicText", scenicBasic.getName());
|
baseDynamicData.put("scenicText", scenicBasic.getName());
|
||||||
baseDynamicData.put("dateStr", DateUtil.format(new Date(), "yyyy.MM.dd"));
|
baseDynamicData.put("dateStr", DateUtil.format(new Date(), "yyyy.MM.dd"));
|
||||||
|
|
||||||
templateList
|
templateList
|
||||||
.forEach(template -> {
|
.forEach(template -> {
|
||||||
log.info("开始生成拼图: scenicId={}, templateCode={}, templateName={}",
|
log.info("开始生成拼图: scenicId={}, templateCode={}, templateName={}",
|
||||||
scenicId, template.getCode(), template.getName());
|
scenicId, template.getCode(), template.getName());
|
||||||
|
|
||||||
// 构建生成请求
|
// 构建生成请求
|
||||||
PuzzleGenerateRequest generateRequest = new PuzzleGenerateRequest();
|
PuzzleGenerateRequest generateRequest = new PuzzleGenerateRequest();
|
||||||
generateRequest.setScenicId(scenicId);
|
generateRequest.setScenicId(scenicId);
|
||||||
generateRequest.setUserId(memberId);
|
generateRequest.setUserId(memberId);
|
||||||
generateRequest.setFaceId(faceId);
|
generateRequest.setFaceId(faceId);
|
||||||
generateRequest.setBusinessType("face_matching");
|
generateRequest.setBusinessType("face_matching");
|
||||||
generateRequest.setTemplateCode(template.getCode());
|
generateRequest.setTemplateCode(template.getCode());
|
||||||
generateRequest.setOutputFormat("JPEG");
|
generateRequest.setOutputFormat("JPEG");
|
||||||
generateRequest.setQuality(80);
|
generateRequest.setQuality(80);
|
||||||
generateRequest.setDynamicData(new HashMap<>(baseDynamicData));
|
generateRequest.setDynamicData(new HashMap<>(baseDynamicData));
|
||||||
generateRequest.setRequireRuleMatch(true);
|
generateRequest.setRequireRuleMatch(true);
|
||||||
|
try {
|
||||||
if (template.getAutoAddPrint() > 0 && Strings.CI.equals(scene, "printer")) {
|
if (template.getAutoAddPrint() > 0 && Strings.CI.equals(scene, "printer")) {
|
||||||
puzzleGenerateService.generateSync(generateRequest);
|
puzzleGenerateService.generateSync(generateRequest);
|
||||||
} else {
|
} else {
|
||||||
puzzleGenerateService.generateAsync(generateRequest);
|
puzzleGenerateService.generateAsync(generateRequest);
|
||||||
}
|
}
|
||||||
});
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// 异步任务失败不影响主流程,仅记录日志
|
// 异步任务失败不影响主流程,仅记录日志
|
||||||
log.error("异步生成拼图模板失败: scenicId={}, faceId={}", scenicId, faceId, e);
|
log.error("异步生成拼图模板失败: scenicId={}, faceId={}", scenicId, faceId, e);
|
||||||
}
|
}
|
||||||
return;
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user