From c583d4b007adcc42d7bf9eb8a599256cfce767d6 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 26 Dec 2025 15:35:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(video):=20=E6=B7=BB=E5=8A=A0=E9=80=9A?= =?UTF-8?q?=E8=BF=87faceId=E6=9F=A5=E8=AF=A2=E6=9C=80=E6=96=B0=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E8=AE=B0=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在AppVideoController中新增getLatestByFaceId接口 - 添加VideoRespVO响应对象导入 - 实现通过faceId和可选templateId查询最新视频记录的功能 - 在VideoMapper中定义queryLatestByFaceIdAndTemplateId方法 - 在VideoRepository中实现查询逻辑 - 在VideoMapper.xml中添加对应的SQL查询语句 - 支持根据faceId和templateId条件查询最新视频记录 - 添加相应的日志记录和异常处理机制 --- .../controller/mobile/AppVideoController.java | 31 +++++++++++++++++++ .../com/ycwl/basic/mapper/VideoMapper.java | 8 +++++ .../basic/repository/VideoRepository.java | 10 ++++++ src/main/resources/mapper/VideoMapper.xml | 16 ++++++++++ 4 files changed, 65 insertions(+) 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