From c8560e3aca703c1895a8212999301c70175b7389 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 17 Dec 2025 16:42:09 +0800 Subject: [PATCH] =?UTF-8?q?fix(video):=20=E4=BF=AE=E5=A4=8D=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=8A=B6=E6=80=81=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96Redis=E8=BF=87=E6=9C=9F=E7=AD=96?= =?UTF-8?q?=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改人脸模板渲染状态存储逻辑,增加默认过期时间 - 移除AppTaskController中冗余的JwtInfo获取代码 - 优化GoodsServiceImpl中任务状态判断逻辑,增强空值检查 - 修复视频任务状态返回不准确的问题,完善边界条件处理 --- src/main/java/com/ycwl/basic/biz/FaceStatusManager.java | 3 +-- .../ycwl/basic/controller/mobile/AppTaskController.java | 2 -- .../ycwl/basic/service/mobile/impl/GoodsServiceImpl.java | 8 ++++++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/ycwl/basic/biz/FaceStatusManager.java b/src/main/java/com/ycwl/basic/biz/FaceStatusManager.java index a1e3de5f..f8d4103a 100644 --- a/src/main/java/com/ycwl/basic/biz/FaceStatusManager.java +++ b/src/main/java/com/ycwl/basic/biz/FaceStatusManager.java @@ -249,8 +249,7 @@ public class FaceStatusManager { return; } String key = String.format(FACE_TEMPLATE_RENDER_KEY, faceId, templateId); - // 渲染状态不设置过期时间,永久保存 - redisTemplate.opsForValue().set(key, String.valueOf(status.getCode())); + redisTemplate.opsForValue().set(key, String.valueOf(status.getCode()), DEFAULT_EXPIRE_SECONDS, TimeUnit.SECONDS); log.debug("设置模板渲染状态: faceId={}, templateId={}, status={}", faceId, templateId, status.getDescription()); } diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppTaskController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppTaskController.java index 0edab4b5..c61f1a92 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppTaskController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppTaskController.java @@ -27,7 +27,6 @@ public class AppTaskController { @GetMapping("/face/{faceId}") @IgnoreLogReq public ApiResponse getTaskStatusByFaceId(@PathVariable("faceId") Long faceId) { - JwtInfo worker = JwtTokenUtil.getWorker(); return ApiResponse.success(goodsService.getTaskStatusByFaceId(faceId)); } @GetMapping("/scenic/{scenicId}") @@ -49,7 +48,6 @@ public class AppTaskController { @GetMapping("/face/{faceId}/template/{templateId}") @IgnoreLogReq public ApiResponse getTemplateTaskStatus(@PathVariable("faceId") Long faceId, @PathVariable("templateId") Long templateId) { - JwtInfo worker = JwtTokenUtil.getWorker(); return ApiResponse.success(goodsService.getTaskStatusByTemplateId(faceId, templateId)); } diff --git a/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java b/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java index 9ee5023e..9b8e28c7 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java @@ -356,7 +356,11 @@ public class GoodsServiceImpl implements GoodsService { if (status == FaceCutStatus.COMPLETED) { // 切片已完成,查询该人脸关联的视频信息 List taskList = videoMapper.listRelationByFace(faceId); - if (taskList == null || taskList.isEmpty() || taskList.getLast().getVideoId() == null) { + if (taskList == null || taskList.isEmpty()) { + response.setStatus(VideoTaskStatus.PENDING.getCode()); + return response; + } + if (taskList.getLast().getVideoId() == null) { response.setStatus(VideoTaskStatus.PROCESSING.getCode()); return response; } @@ -464,7 +468,7 @@ public class GoodsServiceImpl implements GoodsService { // 该模板已渲染完成,查询对应的视频信息 List taskList = videoMapper.listRelationByFaceAndTemplate(faceId, templateId); - if (taskList.isEmpty() || taskList.getLast().getVideoId() == null) { + if (taskList == null || taskList.isEmpty() || taskList.getLast().getVideoId() == null) { // 理论上不应该出现:渲染完成但无视频记录 // 可能是数据不一致,返回待制作状态 response.setStatus(VideoTaskStatus.PROCESSING.getCode());