refactor(order): 简化faceId获取逻辑

- 移除通过task获取faceId的中间步骤
- 直接从video实体获取faceId
- 更新相关服务和控制器中的调用逻辑
- 优化日志记录中的faceId来源
- 提高代码可读性和执行效率
This commit is contained in:
2025-12-15 17:07:37 +08:00
parent 7348994427
commit 832f6a2339
7 changed files with 46 additions and 63 deletions

View File

@@ -104,10 +104,7 @@ public class OrderBiz {
if (video == null) { if (video == null) {
return null; return null;
} }
TaskEntity task = videoTaskRepository.getTaskById(video.getTaskId()); priceObj.setFaceId(video.getFaceId());
if (task != null) {
priceObj.setFaceId(task.getFaceId());
}
TemplateRespVO template = templateRepository.getTemplate(video.getTemplateId()); TemplateRespVO template = templateRepository.getTemplate(video.getTemplateId());
if (template == null) { if (template == null) {
return priceObj; return priceObj;

View File

@@ -213,9 +213,8 @@ public class LyCompatibleController {
VideoEntity videoRespVO = videoRepository.getVideo(contentPageVO.getContentId()); VideoEntity videoRespVO = videoRepository.getVideo(contentPageVO.getContentId());
map.put("id", videoRespVO.getId().toString()); map.put("id", videoRespVO.getId().toString());
map.put("task_id", videoRespVO.getTaskId().toString()); map.put("task_id", videoRespVO.getTaskId().toString());
TaskEntity task = videoTaskRepository.getTaskById(videoRespVO.getTaskId()); if (videoRespVO.getFaceId() != null) {
if (task != null) { map.put("face_id", String.valueOf(videoRespVO.getFaceId()));
map.put("face_id", String.valueOf(task.getFaceId()));
} }
map.put("template_cover_image", contentPageVO.getTemplateCoverUrl()); map.put("template_cover_image", contentPageVO.getTemplateCoverUrl());
Date taskShotDate = taskTaskServiceImpl.getTaskShotDate(videoRespVO.getTaskId()); Date taskShotDate = taskTaskServiceImpl.getTaskShotDate(videoRespVO.getTaskId());

View File

@@ -85,8 +85,7 @@ public class AppOrderV2Controller {
switch (productItem.getProductType()) { switch (productItem.getProductType()) {
case VLOG_VIDEO -> { case VLOG_VIDEO -> {
VideoEntity video = videoRepository.getVideo(Long.valueOf(productItem.getProductId())); VideoEntity video = videoRepository.getVideo(Long.valueOf(productItem.getProductId()));
TaskEntity task = videoTaskRepository.getTaskById(video.getTaskId()); request.setFaceId(video.getFaceId());
request.setFaceId(task.getFaceId());
} }
case RECORDING_SET, PHOTO_SET, AI_CAM_PHOTO_SET -> request.setFaceId(Long.valueOf(productItem.getProductId())); case RECORDING_SET, PHOTO_SET, AI_CAM_PHOTO_SET -> request.setFaceId(Long.valueOf(productItem.getProductId()));
} }

View File

@@ -314,20 +314,17 @@ public class VideoReviewServiceImpl implements VideoReviewService {
} }
// 情况2:通过购买模板间接拥有(goods_type=-1, goods_id=templateId) // 情况2:通过购买模板间接拥有(goods_type=-1, goods_id=templateId)
// 需要通过video的taskId找到task,再通过task的faceId查询购买模板的订单 // 通过video的faceId查询购买模板的订单
if (video.getTaskId() != null && video.getTemplateId() != null) { if (video.getFaceId() != null && video.getTemplateId() != null) {
TaskEntity task = taskMapper.get(video.getTaskId()); List<Long> templateOrderIds = orderMapper.getOrderIdsByFaceIdAndTemplateId(
if (task != null && task.getFaceId() != null) { video.getFaceId(),
List<Long> templateOrderIds = orderMapper.getOrderIdsByFaceIdAndTemplateId( video.getTemplateId()
task.getFaceId(), );
video.getTemplateId()
);
if (templateOrderIds != null && !templateOrderIds.isEmpty()) { if (templateOrderIds != null && !templateOrderIds.isEmpty()) {
allOrderIds.addAll(templateOrderIds); allOrderIds.addAll(templateOrderIds);
log.info("视频[{}]通过模板[{}]购买订单数: {}, faceId: {}", log.info("视频[{}]通过模板[{}]购买订单数: {}, faceId: {}",
videoId, video.getTemplateId(), templateOrderIds.size(), task.getFaceId()); videoId, video.getTemplateId(), templateOrderIds.size(), video.getFaceId());
}
} }
} }

View File

@@ -53,10 +53,9 @@ public class VideoViewPermissionService {
log.warn("视频缺少景区信息: videoId={}", videoId); log.warn("视频缺少景区信息: videoId={}", videoId);
return createErrorPermission("视频信息不完整"); 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())) { if (buy != null && (buy.isBuy() || buy.isFree())) {
// 已购买,不限制查看 // 已购买,不限制查看
log.debug("用户已购买视频,无查看限制: userId={}, videoId={}", userId, videoId); log.debug("用户已购买视频,无查看限制: userId={}, videoId={}", userId, videoId);
@@ -123,10 +122,9 @@ public class VideoViewPermissionService {
if (scenicId == null) { if (scenicId == null) {
return createErrorPermission("视频信息不完整"); 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())) { if (buy != null && (buy.isBuy() || buy.isFree())) {
// 已购买,不限制查看 // 已购买,不限制查看
log.debug("用户已购买视频,无查看限制: userId={}, videoId={}", userId, videoId); log.debug("用户已购买视频,无查看限制: userId={}, videoId={}", userId, videoId);

View File

@@ -197,41 +197,41 @@ public class GoodsServiceImpl implements GoodsService {
@Override @Override
public ApiResponse<VideoGoodsDetailVO> videoGoodsDetail(Long userId, Long videoId) { public ApiResponse<VideoGoodsDetailVO> videoGoodsDetail(Long userId, Long videoId) {
VideoGoodsDetailVO goodsDetailVO = new VideoGoodsDetailVO(); VideoGoodsDetailVO goodsDetailVO = new VideoGoodsDetailVO();
VideoRespVO videoRespVO = videoMapper.getById(videoId); VideoEntity video = videoRepository.getVideo(videoId);
if (videoRespVO == null) { if (video == null) {
return ApiResponse.fail("该vlog不存在或已失效"); return ApiResponse.fail("该vlog不存在或已失效");
} }
goodsDetailVO.setGoodsName(videoRespVO.getTemplateName()); TemplateRespVO template = templateRepository.getTemplate(video.getTemplateId());
goodsDetailVO.setScenicId(videoRespVO.getScenicId()); goodsDetailVO.setGoodsName(template.getName());
goodsDetailVO.setScenicId(video.getScenicId());
try { try {
ScenicV2DTO scenic = scenicRepository.getScenicBasic(videoRespVO.getScenicId()); ScenicV2DTO scenic = scenicRepository.getScenicBasic(video.getScenicId());
goodsDetailVO.setScenicName(scenic.getName()); goodsDetailVO.setScenicName(scenic.getName());
} catch (Exception e) { } catch (Exception e) {
goodsDetailVO.setScenicName(""); goodsDetailVO.setScenicName("");
} }
goodsDetailVO.setGoodsType(0); goodsDetailVO.setGoodsType(0);
goodsDetailVO.setGoodsId(videoRespVO.getId()); goodsDetailVO.setGoodsId(video.getId());
goodsDetailVO.setVideoUrl(videoRespVO.getVideoUrl()); goodsDetailVO.setVideoUrl(video.getVideoUrl());
goodsDetailVO.setTemplateId(videoRespVO.getTemplateId()); goodsDetailVO.setTemplateId(video.getTemplateId());
goodsDetailVO.setTemplateCoverUrl(videoRespVO.getTemplateCoverUrl()); goodsDetailVO.setTemplateCoverUrl(template.getCoverUrl());
goodsDetailVO.setCreateTime(videoRespVO.getCreateTime()); goodsDetailVO.setCreateTime(video.getCreateTime());
goodsDetailVO.setHeight(videoRespVO.getHeight()); goodsDetailVO.setHeight(video.getHeight());
goodsDetailVO.setWidth(videoRespVO.getWidth()); goodsDetailVO.setWidth(video.getWidth());
goodsDetailVO.setDuration(videoRespVO.getDuration()); goodsDetailVO.setDuration(video.getDuration());
if (userId == null) { if (userId == null) {
goodsDetailVO.setIsBuy(0); goodsDetailVO.setIsBuy(0);
goodsDetailVO.setShare(true); goodsDetailVO.setShare(true);
goodsDetailVO.setPrice("未登录"); goodsDetailVO.setPrice("未登录");
} else { } else {
VideoEntity entity = videoMapper.getEntity(videoId); VideoEntity entity = videoMapper.getEntity(videoId);
TaskEntity taskEntity = videoTaskRepository.getTaskById(entity.getTaskId()); goodsDetailVO.setFaceId(entity.getFaceId());
goodsDetailVO.setFaceId(taskEntity.getFaceId()); boolean isBuy = orderRepository.checkUserBuyFaceItem(userId, entity.getFaceId(), 0, videoId);
boolean isBuy = orderRepository.checkUserBuyFaceItem(userId, taskEntity.getFaceId(), 0, videoId);
if (!isBuy) { if (!isBuy) {
isBuy = orderRepository.checkUserBuyFaceItem(userId, taskEntity.getFaceId(), -1, taskEntity.getTemplateId()); isBuy = orderRepository.checkUserBuyFaceItem(userId, entity.getFaceId(), -1, entity.getTemplateId());
} }
if (!isBuy) { if (!isBuy) {
PriceObj priceObj = orderBiz.queryPrice(videoRespVO.getScenicId(), 0, videoId); PriceObj priceObj = orderBiz.queryPrice(video.getScenicId(), 0, videoId);
if (priceObj.isFree()) { if (priceObj.isFree()) {
goodsDetailVO.setIsBuy(1); goodsDetailVO.setIsBuy(1);
} else { } else {
@@ -244,14 +244,10 @@ public class GoodsServiceImpl implements GoodsService {
goodsDetailVO.setIsBuy(1); goodsDetailVO.setIsBuy(1);
} }
} }
TaskEntity task = videoTaskRepository.getTaskById(videoRespVO.getTaskId()); goodsDetailVO.setShotTime(taskTaskService.getTaskShotDate(video.getTaskId()));
if (task == null) { goodsDetailVO.setLensNum(videoTaskRepository.getTaskLensNum(video.getTaskId()));
return ApiResponse.fail("该vlog不存在或已失效"); goodsDetailVO.setDevicesNum(videoTaskRepository.getTaskDeviceNum(video.getTaskId()));
} CouponRecordQueryResp couponRecord = couponBiz.queryUserCouponRecord(video.getScenicId(), userId, video.getFaceId(), video.getTemplateId().toString());
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());
if (couponRecord != null) { if (couponRecord != null) {
if (couponRecord.isUsable()) { if (couponRecord.isUsable()) {
goodsDetailVO.setCouponId(couponRecord.getCouponId()); goodsDetailVO.setCouponId(couponRecord.getCouponId());
@@ -726,16 +722,15 @@ public class GoodsServiceImpl implements GoodsService {
} }
Long taskId = video.getTaskId(); Long taskId = video.getTaskId();
TaskEntity task = videoTaskRepository.getTaskById(taskId); if (taskId == null) {
if (task == null) { log.error("视频没有关联任务: videoId={}", videoId);
log.error("关联任务不存在: videoId={}, taskId={}", videoId, taskId);
result.setCanUpdate(false); result.setCanUpdate(false);
return result; return result;
} }
result.setTaskId(taskId); result.setTaskId(taskId);
result.setFaceId(task.getFaceId()); result.setFaceId(video.getFaceId());
result.setTemplateId(task.getTemplateId()); result.setTemplateId(video.getTemplateId());
TaskUpdateResult taskResult = videoTaskRepository.checkTaskUpdate(taskId); TaskUpdateResult taskResult = videoTaskRepository.checkTaskUpdate(taskId);
result.setCanUpdate(taskResult.isCanUpdate()); result.setCanUpdate(taskResult.isCanUpdate());

View File

@@ -433,7 +433,6 @@ public class OrderServiceImpl implements OrderService {
item.setCoverList(Collections.singletonList(item.getCoverUrl())); item.setCoverList(Collections.singletonList(item.getCoverUrl()));
VideoEntity videoMapperById = videoRepository.getVideo(item.getGoodsId()); VideoEntity videoMapperById = videoRepository.getVideo(item.getGoodsId());
if (videoMapperById != null) { if (videoMapperById != null) {
TaskEntity task = videoTaskRepository.getTaskById(videoMapperById.getTaskId());
TemplateRespVO template = templateRepository.getTemplate(videoMapperById.getTemplateId()); TemplateRespVO template = templateRepository.getTemplate(videoMapperById.getTemplateId());
GoodsDetailVO goods = new GoodsDetailVO(); GoodsDetailVO goods = new GoodsDetailVO();
goods.setGoodsId(videoMapperById.getId()); goods.setGoodsId(videoMapperById.getId());
@@ -441,8 +440,8 @@ public class OrderServiceImpl implements OrderService {
goods.setUrl(videoMapperById.getVideoUrl()); goods.setUrl(videoMapperById.getVideoUrl());
goods.setGoodsType(0); goods.setGoodsType(0);
goods.setTemplateCoverUrl(template.getCoverUrl()); goods.setTemplateCoverUrl(template.getCoverUrl());
goods.setCreateTime(videoTaskRepository.getTaskShotDate(task.getId())); goods.setCreateTime(videoTaskRepository.getTaskShotDate(videoMapperById.getTaskId()));
goods.setParts(videoTaskRepository.getTaskLensNum(task.getId())); goods.setParts(videoTaskRepository.getTaskLensNum(videoMapperById.getTaskId()));
goodsList.add(goods); goodsList.add(goods);
item.setShootingTime(videoTaskRepository.getTaskShotDate(videoMapperById.getTaskId())); item.setShootingTime(videoTaskRepository.getTaskShotDate(videoMapperById.getTaskId()));
item.setVideoUrl(videoMapperById.getVideoUrl()); item.setVideoUrl(videoMapperById.getVideoUrl());
@@ -795,9 +794,8 @@ public class OrderServiceImpl implements OrderService {
switch (createOrderReqVO.getGoodsType()) { switch (createOrderReqVO.getGoodsType()) {
case 0: // vlog case 0: // vlog
VideoEntity video = videoRepository.getVideo(createOrderReqVO.getGoodsId()); VideoEntity video = videoRepository.getVideo(createOrderReqVO.getGoodsId());
TaskEntity taskById = videoTaskRepository.getTaskById(video.getTaskId()); if (video != null && video.getTemplateId() != null) {
if (taskById != null) { couponRecord = couponBiz.queryUserCouponRecord(order.getScenicId(), userId, order.getFaceId(), video.getTemplateId().toString());
couponRecord = couponBiz.queryUserCouponRecord(order.getScenicId(), userId, order.getFaceId(), taskById.getTemplateId().toString());
} }
break; break;
case 1: case 1: