refactor(printer): 重构人脸素材查询接口

- 移除对SourceMapper的依赖
- 新增MemberRelationRepository和SourceRepository依赖
- 修改getSourceByFaceSampleId方法参数faceSampleId为faceId
- 方法返回类型由SourceEntity改为List<SourceEntity>
- 使用memberRelationRepository查询关联素材
- 当查询结果为空时返回空集合而非失败响应
- 通过sourceRepository获取具体资源信息并转换返回
This commit is contained in:
2025-12-18 19:40:24 +08:00
parent 94b37d47ec
commit 3c8b3b0ace

View File

@@ -4,16 +4,18 @@ package com.ycwl.basic.controller.printer;
import com.ycwl.basic.annotation.IgnoreToken; import com.ycwl.basic.annotation.IgnoreToken;
import com.ycwl.basic.integration.device.dto.device.DeviceV2DTO; import com.ycwl.basic.integration.device.dto.device.DeviceV2DTO;
import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2DTO; import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2DTO;
import com.ycwl.basic.mapper.SourceMapper;
import com.ycwl.basic.model.mobile.face.FaceRecognizeResp; import com.ycwl.basic.model.mobile.face.FaceRecognizeResp;
import com.ycwl.basic.model.pc.face.entity.FaceEntity; import com.ycwl.basic.model.pc.face.entity.FaceEntity;
import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity; import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity;
import com.ycwl.basic.model.pc.mp.MpConfigEntity; import com.ycwl.basic.model.pc.mp.MpConfigEntity;
import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery; import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
import com.ycwl.basic.model.pc.source.entity.MemberSourceEntity;
import com.ycwl.basic.model.pc.source.entity.SourceEntity; import com.ycwl.basic.model.pc.source.entity.SourceEntity;
import com.ycwl.basic.repository.DeviceRepository; import com.ycwl.basic.repository.DeviceRepository;
import com.ycwl.basic.repository.FaceRepository; import com.ycwl.basic.repository.FaceRepository;
import com.ycwl.basic.repository.MemberRelationRepository;
import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.repository.ScenicRepository;
import com.ycwl.basic.repository.SourceRepository;
import com.ycwl.basic.service.pc.FaceService; import com.ycwl.basic.service.pc.FaceService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.WxMpUtil; import com.ycwl.basic.utils.WxMpUtil;
@@ -30,6 +32,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.Collections;
import java.util.List; import java.util.List;
@IgnoreToken @IgnoreToken
@@ -43,7 +46,8 @@ public class PrinterTvController {
private final ScenicRepository scenicRepository; private final ScenicRepository scenicRepository;
private final FaceRepository faceRepository; private final FaceRepository faceRepository;
private final FaceService pcFaceService; private final FaceService pcFaceService;
private final SourceMapper sourceMapper; private final MemberRelationRepository memberRelationRepository;
private final SourceRepository sourceRepository;
/** /**
* 获取景区列表 * 获取景区列表
@@ -165,16 +169,16 @@ public class PrinterTvController {
/** /**
* 根据人脸样本ID查询图像素材 * 根据人脸样本ID查询图像素材
* *
* @param faceSampleId 人脸样本ID * @param faceId 人脸样本ID
* @return type=2且face_sample_id匹配的source记录 * @return 匹配的source记录
*/ */
@GetMapping("/{faceSampleId}/source") @GetMapping("/{faceId}/source")
public ApiResponse<SourceEntity> getSourceByFaceSampleId(@PathVariable Long faceSampleId, @RequestParam(name = "type", required = false, defaultValue = "2") Integer type) { public ApiResponse<List<SourceEntity>> getSourceByFaceId(@PathVariable Long faceId, @RequestParam(name = "type", required = false, defaultValue = "2") Integer type) {
SourceEntity source = sourceMapper.getBySampleIdAndType(faceSampleId, type); List<MemberSourceEntity> source = memberRelationRepository.listSourceByFaceRelation(faceId, type);
if (source == null) { if (source == null) {
return ApiResponse.fail("未找到对应的图像素材"); return ApiResponse.success(Collections.emptyList());
} }
return ApiResponse.success(source); return ApiResponse.success(source.stream().map(item -> sourceRepository.getSource(item.getSourceId())).toList());
} }
/** /**