feat(printer): 新增人脸绑定二维码生成功能

- 添加获取人脸绑定二维码接口,支持生成小程序二维码
- 实现二维码文件流输出及临时文件清理
- 修改人脸识别流程,保存人脸数据并返回faceId
- 调整自动添加照片到打印列表逻辑,返回添加数量
- 更新响应模型,增加二维码URL字段
- 优化人脸匹配逻辑,使用memberRelationRepository查询关联照片
- 修复BCE适配器图片下载地址问题,去除内网地址替换逻辑
This commit is contained in:
2025-12-04 18:21:18 +08:00
parent 15dda645b9
commit 42540e2dc4
5 changed files with 109 additions and 27 deletions

View File

@@ -61,7 +61,7 @@ public interface PrinterService {
FaceRecognizeResp useSample(Long userId, Long sampleId);
void autoAddPhotosToPreferPrint(Long faceId);
int autoAddPhotosToPreferPrint(Long faceId);
/**
* 查询待审核的打印任务

View File

@@ -1126,15 +1126,16 @@ public class PrinterServiceImpl implements PrinterService {
* 根据景区和设备配置自动添加type=2的照片到用户打印列表
*
* @param faceId 人脸ID
* @return 成功添加的照片数量
*/
@Override
public void autoAddPhotosToPreferPrint(Long faceId) {
public int autoAddPhotosToPreferPrint(Long faceId) {
try {
// 1. 获取人脸信息
FaceEntity face = faceRepository.getFace(faceId);
if (face == null) {
log.warn("人脸不存在,无法自动添加打印: faceId={}", faceId);
return;
return 0;
}
Long scenicId = face.getScenicId();
@@ -1144,21 +1145,21 @@ public class PrinterServiceImpl implements PrinterService {
ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId);
if (scenicConfig == null) {
log.warn("景区配置不存在,跳过自动添加打印: scenicId={}", scenicId);
return;
return 0;
}
// 3. 检查景区是否启用打印功能
Boolean printEnable = scenicConfig.getBoolean("print_enable");
if (printEnable == null || !printEnable) {
log.debug("景区未启用打印功能,跳过自动添加: scenicId={}", scenicId);
return;
return 0;
}
// 4. 查询该faceId关联的所有type=2的照片
List<SourceEntity> imageSources = sourceMapper.listImageSourcesByFaceId(faceId);
if (imageSources == null || imageSources.isEmpty()) {
log.debug("该人脸没有关联的照片,跳过自动添加: faceId={}", faceId);
return;
return 0;
}
// 5. 按照deviceId分组处理
@@ -1246,15 +1247,19 @@ public class PrinterServiceImpl implements PrinterService {
log.error("等待照片添加任务完成时发生异常: faceId={}", faceId, e);
}
if (totalAdded.get() > 0) {
log.info("自动添加打印完成: faceId={}, 成功添加{}张照片", faceId, totalAdded.get());
int added = totalAdded.get();
if (added > 0) {
log.info("自动添加打印完成: faceId={}, 成功添加{}张照片", faceId, added);
} else {
log.debug("自动添加打印完成: faceId={}, 无符合条件的照片", faceId);
}
return added;
} catch (Exception e) {
// 出现异常则放弃,不影响主流程
log.error("自动添加打印失败,已忽略: faceId={}", faceId, e);
return 0;
}
}
/**