From 832f6a2339ecbc39041fed5aeec9f8bffea17d22 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 15 Dec 2025 17:07:37 +0800 Subject: [PATCH] =?UTF-8?q?refactor(order):=20=E7=AE=80=E5=8C=96faceId?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除通过task获取faceId的中间步骤 - 直接从video实体获取faceId - 更新相关服务和控制器中的调用逻辑 - 优化日志记录中的faceId来源 - 提高代码可读性和执行效率 --- .../java/com/ycwl/basic/biz/OrderBiz.java | 5 +- .../extern/LyCompatibleController.java | 5 +- .../mobile/AppOrderV2Controller.java | 3 +- .../service/impl/VideoReviewServiceImpl.java | 23 ++++---- .../mobile/VideoViewPermissionService.java | 6 +- .../service/mobile/impl/GoodsServiceImpl.java | 57 +++++++++---------- .../service/pc/impl/OrderServiceImpl.java | 10 ++-- 7 files changed, 46 insertions(+), 63 deletions(-) diff --git a/src/main/java/com/ycwl/basic/biz/OrderBiz.java b/src/main/java/com/ycwl/basic/biz/OrderBiz.java index ccdebf75..90053469 100644 --- a/src/main/java/com/ycwl/basic/biz/OrderBiz.java +++ b/src/main/java/com/ycwl/basic/biz/OrderBiz.java @@ -104,10 +104,7 @@ public class OrderBiz { if (video == null) { return null; } - TaskEntity task = videoTaskRepository.getTaskById(video.getTaskId()); - if (task != null) { - priceObj.setFaceId(task.getFaceId()); - } + priceObj.setFaceId(video.getFaceId()); TemplateRespVO template = templateRepository.getTemplate(video.getTemplateId()); if (template == null) { return priceObj; diff --git a/src/main/java/com/ycwl/basic/controller/extern/LyCompatibleController.java b/src/main/java/com/ycwl/basic/controller/extern/LyCompatibleController.java index 37bf3843..b4eb7193 100644 --- a/src/main/java/com/ycwl/basic/controller/extern/LyCompatibleController.java +++ b/src/main/java/com/ycwl/basic/controller/extern/LyCompatibleController.java @@ -213,9 +213,8 @@ public class LyCompatibleController { VideoEntity videoRespVO = videoRepository.getVideo(contentPageVO.getContentId()); map.put("id", videoRespVO.getId().toString()); map.put("task_id", videoRespVO.getTaskId().toString()); - TaskEntity task = videoTaskRepository.getTaskById(videoRespVO.getTaskId()); - if (task != null) { - map.put("face_id", String.valueOf(task.getFaceId())); + if (videoRespVO.getFaceId() != null) { + map.put("face_id", String.valueOf(videoRespVO.getFaceId())); } map.put("template_cover_image", contentPageVO.getTemplateCoverUrl()); Date taskShotDate = taskTaskServiceImpl.getTaskShotDate(videoRespVO.getTaskId()); diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppOrderV2Controller.java b/src/main/java/com/ycwl/basic/controller/mobile/AppOrderV2Controller.java index 715d8d3b..cdb60cff 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppOrderV2Controller.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppOrderV2Controller.java @@ -85,8 +85,7 @@ public class AppOrderV2Controller { switch (productItem.getProductType()) { case VLOG_VIDEO -> { VideoEntity video = videoRepository.getVideo(Long.valueOf(productItem.getProductId())); - TaskEntity task = videoTaskRepository.getTaskById(video.getTaskId()); - request.setFaceId(task.getFaceId()); + request.setFaceId(video.getFaceId()); } case RECORDING_SET, PHOTO_SET, AI_CAM_PHOTO_SET -> request.setFaceId(Long.valueOf(productItem.getProductId())); } diff --git a/src/main/java/com/ycwl/basic/service/impl/VideoReviewServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/VideoReviewServiceImpl.java index 21891c01..59b960f7 100644 --- a/src/main/java/com/ycwl/basic/service/impl/VideoReviewServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/VideoReviewServiceImpl.java @@ -314,20 +314,17 @@ public class VideoReviewServiceImpl implements VideoReviewService { } // 情况2:通过购买模板间接拥有(goods_type=-1, goods_id=templateId) - // 需要通过video的taskId找到task,再通过task的faceId查询购买模板的订单 - if (video.getTaskId() != null && video.getTemplateId() != null) { - TaskEntity task = taskMapper.get(video.getTaskId()); - if (task != null && task.getFaceId() != null) { - List templateOrderIds = orderMapper.getOrderIdsByFaceIdAndTemplateId( - task.getFaceId(), - video.getTemplateId() - ); + // 通过video的faceId查询购买模板的订单 + if (video.getFaceId() != null && video.getTemplateId() != null) { + List templateOrderIds = orderMapper.getOrderIdsByFaceIdAndTemplateId( + video.getFaceId(), + video.getTemplateId() + ); - if (templateOrderIds != null && !templateOrderIds.isEmpty()) { - allOrderIds.addAll(templateOrderIds); - log.info("视频[{}]通过模板[{}]购买订单数: {}, faceId: {}", - videoId, video.getTemplateId(), templateOrderIds.size(), task.getFaceId()); - } + if (templateOrderIds != null && !templateOrderIds.isEmpty()) { + allOrderIds.addAll(templateOrderIds); + log.info("视频[{}]通过模板[{}]购买订单数: {}, faceId: {}", + videoId, video.getTemplateId(), templateOrderIds.size(), video.getFaceId()); } } diff --git a/src/main/java/com/ycwl/basic/service/mobile/VideoViewPermissionService.java b/src/main/java/com/ycwl/basic/service/mobile/VideoViewPermissionService.java index 249b6a71..75ed4d51 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/VideoViewPermissionService.java +++ b/src/main/java/com/ycwl/basic/service/mobile/VideoViewPermissionService.java @@ -53,10 +53,9 @@ public class VideoViewPermissionService { log.warn("视频缺少景区信息: videoId={}", videoId); return createErrorPermission("视频信息不完整"); } - TaskEntity taskById = videoTaskRepository.getTaskById(video.getTaskId()); // 检查用户是否已购买 - IsBuyRespVO buy = orderBiz.isBuy(scenicId, userId, taskById.getFaceId(), 0, videoId); + IsBuyRespVO buy = orderBiz.isBuy(scenicId, userId, video.getFaceId(), 0, videoId); if (buy != null && (buy.isBuy() || buy.isFree())) { // 已购买,不限制查看 log.debug("用户已购买视频,无查看限制: userId={}, videoId={}", userId, videoId); @@ -123,10 +122,9 @@ public class VideoViewPermissionService { if (scenicId == null) { return createErrorPermission("视频信息不完整"); } - TaskEntity taskById = videoTaskRepository.getTaskById(video.getTaskId()); // 检查用户是否已购买 - IsBuyRespVO buy = orderBiz.isBuy(scenicId, userId, taskById.getFaceId(), 0, videoId); + IsBuyRespVO buy = orderBiz.isBuy(scenicId, userId, video.getFaceId(), 0, videoId); if (buy != null && (buy.isBuy() || buy.isFree())) { // 已购买,不限制查看 log.debug("用户已购买视频,无查看限制: userId={}, videoId={}", userId, videoId); 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 b1715a36..9bd4f10b 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 @@ -197,41 +197,41 @@ public class GoodsServiceImpl implements GoodsService { @Override public ApiResponse videoGoodsDetail(Long userId, Long videoId) { VideoGoodsDetailVO goodsDetailVO = new VideoGoodsDetailVO(); - VideoRespVO videoRespVO = videoMapper.getById(videoId); - if (videoRespVO == null) { + VideoEntity video = videoRepository.getVideo(videoId); + if (video == null) { return ApiResponse.fail("该vlog不存在或已失效"); } - goodsDetailVO.setGoodsName(videoRespVO.getTemplateName()); - goodsDetailVO.setScenicId(videoRespVO.getScenicId()); + TemplateRespVO template = templateRepository.getTemplate(video.getTemplateId()); + goodsDetailVO.setGoodsName(template.getName()); + goodsDetailVO.setScenicId(video.getScenicId()); try { - ScenicV2DTO scenic = scenicRepository.getScenicBasic(videoRespVO.getScenicId()); + ScenicV2DTO scenic = scenicRepository.getScenicBasic(video.getScenicId()); goodsDetailVO.setScenicName(scenic.getName()); } catch (Exception e) { goodsDetailVO.setScenicName(""); } goodsDetailVO.setGoodsType(0); - goodsDetailVO.setGoodsId(videoRespVO.getId()); - goodsDetailVO.setVideoUrl(videoRespVO.getVideoUrl()); - goodsDetailVO.setTemplateId(videoRespVO.getTemplateId()); - goodsDetailVO.setTemplateCoverUrl(videoRespVO.getTemplateCoverUrl()); - goodsDetailVO.setCreateTime(videoRespVO.getCreateTime()); - goodsDetailVO.setHeight(videoRespVO.getHeight()); - goodsDetailVO.setWidth(videoRespVO.getWidth()); - goodsDetailVO.setDuration(videoRespVO.getDuration()); + goodsDetailVO.setGoodsId(video.getId()); + goodsDetailVO.setVideoUrl(video.getVideoUrl()); + goodsDetailVO.setTemplateId(video.getTemplateId()); + goodsDetailVO.setTemplateCoverUrl(template.getCoverUrl()); + goodsDetailVO.setCreateTime(video.getCreateTime()); + goodsDetailVO.setHeight(video.getHeight()); + goodsDetailVO.setWidth(video.getWidth()); + goodsDetailVO.setDuration(video.getDuration()); if (userId == null) { goodsDetailVO.setIsBuy(0); goodsDetailVO.setShare(true); goodsDetailVO.setPrice("未登录"); } else { VideoEntity entity = videoMapper.getEntity(videoId); - TaskEntity taskEntity = videoTaskRepository.getTaskById(entity.getTaskId()); - goodsDetailVO.setFaceId(taskEntity.getFaceId()); - boolean isBuy = orderRepository.checkUserBuyFaceItem(userId, taskEntity.getFaceId(), 0, videoId); + goodsDetailVO.setFaceId(entity.getFaceId()); + boolean isBuy = orderRepository.checkUserBuyFaceItem(userId, entity.getFaceId(), 0, videoId); if (!isBuy) { - isBuy = orderRepository.checkUserBuyFaceItem(userId, taskEntity.getFaceId(), -1, taskEntity.getTemplateId()); + isBuy = orderRepository.checkUserBuyFaceItem(userId, entity.getFaceId(), -1, entity.getTemplateId()); } if (!isBuy) { - PriceObj priceObj = orderBiz.queryPrice(videoRespVO.getScenicId(), 0, videoId); + PriceObj priceObj = orderBiz.queryPrice(video.getScenicId(), 0, videoId); if (priceObj.isFree()) { goodsDetailVO.setIsBuy(1); } else { @@ -244,14 +244,10 @@ public class GoodsServiceImpl implements GoodsService { goodsDetailVO.setIsBuy(1); } } - TaskEntity task = videoTaskRepository.getTaskById(videoRespVO.getTaskId()); - if (task == null) { - return ApiResponse.fail("该vlog不存在或已失效"); - } - goodsDetailVO.setShotTime(taskTaskService.getTaskShotDate(task.getId())); - goodsDetailVO.setLensNum(videoTaskRepository.getTaskLensNum(task.getId())); - goodsDetailVO.setDevicesNum(videoTaskRepository.getTaskDeviceNum(task.getId())); - CouponRecordQueryResp couponRecord = couponBiz.queryUserCouponRecord(task.getScenicId(), userId, task.getFaceId(), task.getTemplateId().toString()); + goodsDetailVO.setShotTime(taskTaskService.getTaskShotDate(video.getTaskId())); + goodsDetailVO.setLensNum(videoTaskRepository.getTaskLensNum(video.getTaskId())); + goodsDetailVO.setDevicesNum(videoTaskRepository.getTaskDeviceNum(video.getTaskId())); + CouponRecordQueryResp couponRecord = couponBiz.queryUserCouponRecord(video.getScenicId(), userId, video.getFaceId(), video.getTemplateId().toString()); if (couponRecord != null) { if (couponRecord.isUsable()) { goodsDetailVO.setCouponId(couponRecord.getCouponId()); @@ -726,16 +722,15 @@ public class GoodsServiceImpl implements GoodsService { } Long taskId = video.getTaskId(); - TaskEntity task = videoTaskRepository.getTaskById(taskId); - if (task == null) { - log.error("关联任务不存在: videoId={}, taskId={}", videoId, taskId); + if (taskId == null) { + log.error("视频没有关联任务: videoId={}", videoId); result.setCanUpdate(false); return result; } result.setTaskId(taskId); - result.setFaceId(task.getFaceId()); - result.setTemplateId(task.getTemplateId()); + result.setFaceId(video.getFaceId()); + result.setTemplateId(video.getTemplateId()); TaskUpdateResult taskResult = videoTaskRepository.checkTaskUpdate(taskId); result.setCanUpdate(taskResult.isCanUpdate()); diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java index 37edbf43..fe99f2a0 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java @@ -433,7 +433,6 @@ public class OrderServiceImpl implements OrderService { item.setCoverList(Collections.singletonList(item.getCoverUrl())); VideoEntity videoMapperById = videoRepository.getVideo(item.getGoodsId()); if (videoMapperById != null) { - TaskEntity task = videoTaskRepository.getTaskById(videoMapperById.getTaskId()); TemplateRespVO template = templateRepository.getTemplate(videoMapperById.getTemplateId()); GoodsDetailVO goods = new GoodsDetailVO(); goods.setGoodsId(videoMapperById.getId()); @@ -441,8 +440,8 @@ public class OrderServiceImpl implements OrderService { goods.setUrl(videoMapperById.getVideoUrl()); goods.setGoodsType(0); goods.setTemplateCoverUrl(template.getCoverUrl()); - goods.setCreateTime(videoTaskRepository.getTaskShotDate(task.getId())); - goods.setParts(videoTaskRepository.getTaskLensNum(task.getId())); + goods.setCreateTime(videoTaskRepository.getTaskShotDate(videoMapperById.getTaskId())); + goods.setParts(videoTaskRepository.getTaskLensNum(videoMapperById.getTaskId())); goodsList.add(goods); item.setShootingTime(videoTaskRepository.getTaskShotDate(videoMapperById.getTaskId())); item.setVideoUrl(videoMapperById.getVideoUrl()); @@ -795,9 +794,8 @@ public class OrderServiceImpl implements OrderService { switch (createOrderReqVO.getGoodsType()) { case 0: // vlog VideoEntity video = videoRepository.getVideo(createOrderReqVO.getGoodsId()); - TaskEntity taskById = videoTaskRepository.getTaskById(video.getTaskId()); - if (taskById != null) { - couponRecord = couponBiz.queryUserCouponRecord(order.getScenicId(), userId, order.getFaceId(), taskById.getTemplateId().toString()); + if (video != null && video.getTemplateId() != null) { + couponRecord = couponBiz.queryUserCouponRecord(order.getScenicId(), userId, order.getFaceId(), video.getTemplateId().toString()); } break; case 1: