From ec4df2eb503efc7369f9c38beca309ea04a427f8 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 16 Feb 2025 14:51:49 +0800 Subject: [PATCH] =?UTF-8?q?=E9=81=BF=E5=85=8Dbug=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ycwl/basic/biz/OrderBiz.java | 34 ++++++++++++++++++- .../java/com/ycwl/basic/biz/TemplateBiz.java | 9 ++++- .../service/impl/mobile/GoodsServiceImpl.java | 11 +++--- .../service/impl/mobile/WxPayServiceImpl.java | 8 ----- .../task/impl/TaskTaskServiceImpl.java | 8 +++-- 5 files changed, 54 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/ycwl/basic/biz/OrderBiz.java b/src/main/java/com/ycwl/basic/biz/OrderBiz.java index ee575e5..eda936f 100644 --- a/src/main/java/com/ycwl/basic/biz/OrderBiz.java +++ b/src/main/java/com/ycwl/basic/biz/OrderBiz.java @@ -2,6 +2,7 @@ package com.ycwl.basic.biz; import com.ycwl.basic.enums.StatisticEnum; import com.ycwl.basic.mapper.OrderMapper; +import com.ycwl.basic.mapper.SourceMapper; import com.ycwl.basic.mapper.StatisticsMapper; import com.ycwl.basic.mapper.VideoMapper; import com.ycwl.basic.model.mobile.order.IsBuyRespVO; @@ -12,9 +13,11 @@ import com.ycwl.basic.model.pc.order.entity.OrderEntity; import com.ycwl.basic.model.pc.order.entity.OrderItemEntity; import com.ycwl.basic.model.pc.order.req.OrderUpdateReq; import com.ycwl.basic.model.pc.order.resp.OrderAppRespVO; +import com.ycwl.basic.model.pc.order.resp.OrderItemVO; import com.ycwl.basic.model.pc.order.resp.OrderRespVO; import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; import com.ycwl.basic.model.pc.scenic.entity.ScenicEntity; +import com.ycwl.basic.model.pc.source.entity.SourceEntity; import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; import com.ycwl.basic.model.pc.video.entity.VideoEntity; import com.ycwl.basic.model.pc.video.resp.VideoRespVO; @@ -30,8 +33,10 @@ import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.Calendar; +import java.util.Comparator; import java.util.Date; import java.util.List; +import java.util.Optional; @Component public class OrderBiz { @@ -54,6 +59,8 @@ public class OrderBiz { private StatisticsMapper statisticsMapper; @Autowired private OrderMapper orderMapper; + @Autowired + private SourceMapper sourceMapper; public PriceObj queryPrice(Long scenicId, int goodsType, Long goodsId) { PriceObj priceObj = new PriceObj(); @@ -161,7 +168,32 @@ public class OrderBiz { Date payAt = order.getPayAt(); OrderAppRespVO orderDetail = orderMapper.appDetail(orderId); //商品创建时间 - Date goodsCreateTime = orderDetail.getOrderItemList().get(0).getShootingTime(); + Date goodsCreateTime = new Date(); + if (!orderDetail.getOrderItemList().isEmpty()) { + OrderItemVO orderItemVO = orderDetail.getOrderItemList().get(0); + switch (orderItemVO.getGoodsType()) { + case 0: + VideoEntity video = videoRepository.getVideo(orderItemVO.getGoodsId()); + if (video != null) { + goodsCreateTime = video.getCreateTime(); + } + break; + case 1: + List imageSource = sourceMapper.listImageByFaceRelation(order.getMemberId(), orderItemVO.getGoodsId()); + Optional min = imageSource.stream().min(Comparator.comparing(SourceEntity::getCreateTime)); + if (min.isPresent()) { + goodsCreateTime = min.get().getCreateTime(); + } + break; + case 2: + List videoSource = sourceMapper.listImageByFaceRelation(order.getMemberId(), orderItemVO.getGoodsId()); + Optional minTime = videoSource.stream().min(Comparator.comparing(SourceEntity::getCreateTime)); + if (minTime.isPresent()) { + goodsCreateTime = minTime.get().getCreateTime(); + } + break; + } + } StatisticsRecordAddReq statisticsRecordAddReq = new StatisticsRecordAddReq(); statisticsRecordAddReq.setMemberId(order.getMemberId()); diff --git a/src/main/java/com/ycwl/basic/biz/TemplateBiz.java b/src/main/java/com/ycwl/basic/biz/TemplateBiz.java index a0be5fd..77e8947 100644 --- a/src/main/java/com/ycwl/basic/biz/TemplateBiz.java +++ b/src/main/java/com/ycwl/basic/biz/TemplateBiz.java @@ -16,6 +16,7 @@ import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.List; +import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -49,20 +50,25 @@ public class TemplateBiz { } FaceEntity face = faceRepository.getFace(faceId); List faceSampleList = faceRepository.getFaceSampleList(faceId); - if (faceSampleList.isEmpty()) { + if (faceSampleList == null || faceSampleList.isEmpty()) { return false; } long count; if (scanSource) { List sourceEntities = sourceMapper.listVideoByScenicFaceRelation(face.getScenicId(), faceId); + if (sourceEntities == null || sourceEntities.isEmpty()) { + return false; + } count = sourceEntities.stream() .map(SourceEntity::getDeviceId) + .filter(Objects::nonNull) // 添加对 null 的检查 .distinct() .filter(deviceId -> placeholderList.contains(deviceId.toString())) .count(); } else { count = faceSampleList.stream() .map(FaceSampleEntity::getDeviceId) + .filter(Objects::nonNull) // 添加对 null 的检查 .distinct() .filter(deviceId -> placeholderList.contains(deviceId.toString())) .count(); @@ -101,6 +107,7 @@ public class TemplateBiz { List sourceEntities = sourceMapper.listVideoByScenicFaceRelation(face.getScenicId(), faceId); count = sourceEntities.stream() .map(SourceEntity::getDeviceId) + .filter(deviceId -> deviceId != null) // 添加对 null 的检查 .distinct() .filter(deviceId -> placeholderList.contains(deviceId.toString())) .count(); diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java index f4b908c..d9031d0 100644 --- a/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java @@ -397,14 +397,17 @@ public class GoodsServiceImpl implements GoodsService { @Override public ApiResponse sourceGoodsInfo(Long userId, Long sourceId) { SourceRespVO sourceRespVO = sourceMapper.listUserOne(userId, sourceId); -// if (sourceRespVO == null) { -// return ApiResponse.fail("该视频不属于你"); -// } + if (sourceRespVO == null) { + sourceRespVO = sourceMapper.getById(sourceId); + if (sourceRespVO == null) { + return ApiResponse.fail("该视频不存在"); + } + } GoodsDetailVO goodsDetailVO = new GoodsDetailVO(); goodsDetailVO.setGoodsName("原片"); goodsDetailVO.setScenicId(sourceRespVO.getScenicId()); goodsDetailVO.setScenicName(sourceRespVO.getScenicName()); - goodsDetailVO.setGoodsType(0); + goodsDetailVO.setGoodsType(sourceRespVO.getType()); goodsDetailVO.setGoodsId(sourceRespVO.getId()); goodsDetailVO.setVideoUrl(sourceRespVO.getVideoUrl()); goodsDetailVO.setTemplateCoverUrl(sourceRespVO.getUrl()); diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/WxPayServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/WxPayServiceImpl.java index 5ad2f4c..7727c78 100644 --- a/src/main/java/com/ycwl/basic/service/impl/mobile/WxPayServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/WxPayServiceImpl.java @@ -89,20 +89,12 @@ public class WxPayServiceImpl implements WxPayService { @Autowired private WechatConfig wechatConfig; @Autowired - private HttpService httpService; - @Autowired private OrderService orderService; @Autowired private PaymentMapper paymentMapper; @Autowired private StatisticsMapper statisticsMapper; @Autowired - private OrderMapper orderMapper; - @Autowired - private SourceMapper sourceMapper; - @Autowired - private VideoMapper videoMapper; - @Autowired private OrderRepository orderRepository; @Autowired private OrderBiz orderBiz; diff --git a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java index 6785a6b..0708ec9 100644 --- a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java @@ -252,6 +252,7 @@ public class TaskTaskServiceImpl implements TaskService { DeviceEntity device = deviceRepository.getDevice(item.getDeviceId()); return Integer.valueOf(1).equals(device.getStatus()); }) + .filter(item -> item.getDeviceId() != null) // 添加对 deviceId 为 null 的检查 .collect(Collectors.groupingBy(item -> item.getDeviceId().toString())); if (sourcesMap.isEmpty()) { // 主动禁止没有视频源视频生成 @@ -437,14 +438,17 @@ public class TaskTaskServiceImpl implements TaskService { return; } List videoSourceList = sourceMapper.listVideoByScenicFaceRelation(face.getScenicId(), faceId); + if (videoSourceList == null || videoSourceList.isEmpty()) { + log.info("task callback: 没有视频源"); + return; + } Map> sourcesMap = videoSourceList.stream() - .filter(Objects::nonNull) - .filter(item -> Objects.nonNull(item.getVideoUrl())) .peek(item -> item.setUrl(item.getVideoUrl())) .filter(item -> { DeviceEntity device = deviceRepository.getDevice(item.getDeviceId()); return Integer.valueOf(1).equals(device.getStatus()); }) + .filter(item -> item.getDeviceId() != null) // 添加对 deviceId 为 null 的检查 .collect(Collectors.groupingBy(item -> item.getDeviceId().toString())); if (sourcesMap.isEmpty()) { // 主动禁止没有视频源视频生成