You've already forked FrameTour-BE
refactor(order): 简化faceId获取逻辑
- 移除通过task获取faceId的中间步骤 - 直接从video实体获取faceId - 更新相关服务和控制器中的调用逻辑 - 优化日志记录中的faceId来源 - 提高代码可读性和执行效率
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
|
||||
@@ -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<Long> templateOrderIds = orderMapper.getOrderIdsByFaceIdAndTemplateId(
|
||||
task.getFaceId(),
|
||||
video.getTemplateId()
|
||||
);
|
||||
// 通过video的faceId查询购买模板的订单
|
||||
if (video.getFaceId() != null && video.getTemplateId() != null) {
|
||||
List<Long> 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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -197,41 +197,41 @@ public class GoodsServiceImpl implements GoodsService {
|
||||
@Override
|
||||
public ApiResponse<VideoGoodsDetailVO> 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());
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user