diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppVideoController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppVideoController.java index ad02cb55..0f78aac2 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppVideoController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppVideoController.java @@ -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 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("查询失败,请稍后重试"); + } + } } diff --git a/src/main/java/com/ycwl/basic/mapper/VideoMapper.java b/src/main/java/com/ycwl/basic/mapper/VideoMapper.java index 2216e63d..5264f702 100644 --- a/src/main/java/com/ycwl/basic/mapper/VideoMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/VideoMapper.java @@ -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); } diff --git a/src/main/java/com/ycwl/basic/repository/VideoRepository.java b/src/main/java/com/ycwl/basic/repository/VideoRepository.java index ec557d57..293d932c 100644 --- a/src/main/java/com/ycwl/basic/repository/VideoRepository.java +++ b/src/main/java/com/ycwl/basic/repository/VideoRepository.java @@ -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); + } } diff --git a/src/main/resources/mapper/VideoMapper.xml b/src/main/resources/mapper/VideoMapper.xml index e912b1b7..9a1a87a4 100644 --- a/src/main/resources/mapper/VideoMapper.xml +++ b/src/main/resources/mapper/VideoMapper.xml @@ -185,4 +185,20 @@ from member_video where video_id = #{videoId} and is_buy = 1 + + + \ No newline at end of file