feat(video): 添加通过faceId查询最新视频记录功能

- 在AppVideoController中新增getLatestByFaceId接口
- 添加VideoRespVO响应对象导入
- 实现通过faceId和可选templateId查询最新视频记录的功能
- 在VideoMapper中定义queryLatestByFaceIdAndTemplateId方法
- 在VideoRepository中实现查询逻辑
- 在VideoMapper.xml中添加对应的SQL查询语句
- 支持根据faceId和templateId条件查询最新视频记录
- 添加相应的日志记录和异常处理机制
This commit is contained in:
2025-12-26 15:35:27 +08:00
parent 50ee14cf8f
commit c583d4b007
4 changed files with 65 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ package com.ycwl.basic.controller.mobile;
import com.ycwl.basic.constant.BaseContextHandler;
import com.ycwl.basic.model.mobile.video.dto.VideoViewPermissionDTO;
import com.ycwl.basic.model.pc.video.resp.VideoRespVO;
import com.ycwl.basic.model.task.req.VideoInfoReq;
import com.ycwl.basic.repository.VideoRepository;
import com.ycwl.basic.service.mobile.VideoViewPermissionService;
@@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@@ -90,4 +92,33 @@ public class AppVideoController {
return ApiResponse.fail("权限检查失败,请稍后重试");
}
}
/**
* 通过faceId和templateId(可选)查询最新的视频记录
*
* @param faceId 人脸ID
* @param templateId 模板ID(可选)
* @return 最新的视频记录
*/
@GetMapping("/latest")
public ApiResponse<VideoRespVO> getLatestByFaceId(
@RequestParam("faceId") Long faceId,
@RequestParam(value = "templateId", required = false) Long templateId) {
try {
log.debug("查询最新视频记录: faceId={}, templateId={}", faceId, templateId);
VideoRespVO video = videoRepository.queryLatestByFaceIdAndTemplateId(faceId, templateId);
if (video == null) {
log.info("未找到视频记录: faceId={}, templateId={}", faceId, templateId);
return ApiResponse.fail("未找到视频记录");
}
return ApiResponse.success(video);
} catch (Exception e) {
log.error("查询最新视频记录失败: faceId={}, templateId={}", faceId, templateId, e);
return ApiResponse.fail("查询失败,请稍后重试");
}
}
}

View File

@@ -65,4 +65,12 @@ public interface VideoMapper {
* @return 已购买记录数量
*/
int countBuyRecordByVideoId(Long videoId);
/**
* 通过faceId和templateId(可选)查询最新的视频记录
* @param faceId 人脸ID
* @param templateId 模板ID(可选)
* @return 最新的视频记录
*/
VideoRespVO queryLatestByFaceIdAndTemplateId(@NonNull Long faceId, Long templateId);
}

View File

@@ -129,4 +129,14 @@ public class VideoRepository {
}
/**
* 通过faceId和templateId(可选)查询最新的视频记录
* @param faceId 人脸ID
* @param templateId 模板ID(可选)
* @return 最新的视频记录
*/
public VideoRespVO queryLatestByFaceIdAndTemplateId(Long faceId, Long templateId) {
return videoMapper.queryLatestByFaceIdAndTemplateId(faceId, templateId);
}
}