避免bug报错

This commit is contained in:
Jerry Yan 2025-02-16 14:51:49 +08:00
parent cfb9392068
commit ec4df2eb50
5 changed files with 54 additions and 16 deletions

View File

@ -2,6 +2,7 @@ package com.ycwl.basic.biz;
import com.ycwl.basic.enums.StatisticEnum; import com.ycwl.basic.enums.StatisticEnum;
import com.ycwl.basic.mapper.OrderMapper; import com.ycwl.basic.mapper.OrderMapper;
import com.ycwl.basic.mapper.SourceMapper;
import com.ycwl.basic.mapper.StatisticsMapper; import com.ycwl.basic.mapper.StatisticsMapper;
import com.ycwl.basic.mapper.VideoMapper; import com.ycwl.basic.mapper.VideoMapper;
import com.ycwl.basic.model.mobile.order.IsBuyRespVO; 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.entity.OrderItemEntity;
import com.ycwl.basic.model.pc.order.req.OrderUpdateReq; 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.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.order.resp.OrderRespVO;
import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity;
import com.ycwl.basic.model.pc.scenic.entity.ScenicEntity; 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.template.resp.TemplateRespVO;
import com.ycwl.basic.model.pc.video.entity.VideoEntity; import com.ycwl.basic.model.pc.video.entity.VideoEntity;
import com.ycwl.basic.model.pc.video.resp.VideoRespVO; import com.ycwl.basic.model.pc.video.resp.VideoRespVO;
@ -30,8 +33,10 @@ import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Calendar; import java.util.Calendar;
import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Optional;
@Component @Component
public class OrderBiz { public class OrderBiz {
@ -54,6 +59,8 @@ public class OrderBiz {
private StatisticsMapper statisticsMapper; private StatisticsMapper statisticsMapper;
@Autowired @Autowired
private OrderMapper orderMapper; private OrderMapper orderMapper;
@Autowired
private SourceMapper sourceMapper;
public PriceObj queryPrice(Long scenicId, int goodsType, Long goodsId) { public PriceObj queryPrice(Long scenicId, int goodsType, Long goodsId) {
PriceObj priceObj = new PriceObj(); PriceObj priceObj = new PriceObj();
@ -161,7 +168,32 @@ public class OrderBiz {
Date payAt = order.getPayAt(); Date payAt = order.getPayAt();
OrderAppRespVO orderDetail = orderMapper.appDetail(orderId); 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<SourceEntity> imageSource = sourceMapper.listImageByFaceRelation(order.getMemberId(), orderItemVO.getGoodsId());
Optional<SourceEntity> min = imageSource.stream().min(Comparator.comparing(SourceEntity::getCreateTime));
if (min.isPresent()) {
goodsCreateTime = min.get().getCreateTime();
}
break;
case 2:
List<SourceEntity> videoSource = sourceMapper.listImageByFaceRelation(order.getMemberId(), orderItemVO.getGoodsId());
Optional<SourceEntity> minTime = videoSource.stream().min(Comparator.comparing(SourceEntity::getCreateTime));
if (minTime.isPresent()) {
goodsCreateTime = minTime.get().getCreateTime();
}
break;
}
}
StatisticsRecordAddReq statisticsRecordAddReq = new StatisticsRecordAddReq(); StatisticsRecordAddReq statisticsRecordAddReq = new StatisticsRecordAddReq();
statisticsRecordAddReq.setMemberId(order.getMemberId()); statisticsRecordAddReq.setMemberId(order.getMemberId());

View File

@ -16,6 +16,7 @@ import org.springframework.stereotype.Component;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -49,20 +50,25 @@ public class TemplateBiz {
} }
FaceEntity face = faceRepository.getFace(faceId); FaceEntity face = faceRepository.getFace(faceId);
List<FaceSampleEntity> faceSampleList = faceRepository.getFaceSampleList(faceId); List<FaceSampleEntity> faceSampleList = faceRepository.getFaceSampleList(faceId);
if (faceSampleList.isEmpty()) { if (faceSampleList == null || faceSampleList.isEmpty()) {
return false; return false;
} }
long count; long count;
if (scanSource) { if (scanSource) {
List<SourceEntity> sourceEntities = sourceMapper.listVideoByScenicFaceRelation(face.getScenicId(), faceId); List<SourceEntity> sourceEntities = sourceMapper.listVideoByScenicFaceRelation(face.getScenicId(), faceId);
if (sourceEntities == null || sourceEntities.isEmpty()) {
return false;
}
count = sourceEntities.stream() count = sourceEntities.stream()
.map(SourceEntity::getDeviceId) .map(SourceEntity::getDeviceId)
.filter(Objects::nonNull) // 添加对 null 的检查
.distinct() .distinct()
.filter(deviceId -> placeholderList.contains(deviceId.toString())) .filter(deviceId -> placeholderList.contains(deviceId.toString()))
.count(); .count();
} else { } else {
count = faceSampleList.stream() count = faceSampleList.stream()
.map(FaceSampleEntity::getDeviceId) .map(FaceSampleEntity::getDeviceId)
.filter(Objects::nonNull) // 添加对 null 的检查
.distinct() .distinct()
.filter(deviceId -> placeholderList.contains(deviceId.toString())) .filter(deviceId -> placeholderList.contains(deviceId.toString()))
.count(); .count();
@ -101,6 +107,7 @@ public class TemplateBiz {
List<SourceEntity> sourceEntities = sourceMapper.listVideoByScenicFaceRelation(face.getScenicId(), faceId); List<SourceEntity> sourceEntities = sourceMapper.listVideoByScenicFaceRelation(face.getScenicId(), faceId);
count = sourceEntities.stream() count = sourceEntities.stream()
.map(SourceEntity::getDeviceId) .map(SourceEntity::getDeviceId)
.filter(deviceId -> deviceId != null) // 添加对 null 的检查
.distinct() .distinct()
.filter(deviceId -> placeholderList.contains(deviceId.toString())) .filter(deviceId -> placeholderList.contains(deviceId.toString()))
.count(); .count();

View File

@ -397,14 +397,17 @@ public class GoodsServiceImpl implements GoodsService {
@Override @Override
public ApiResponse<GoodsDetailVO> sourceGoodsInfo(Long userId, Long sourceId) { public ApiResponse<GoodsDetailVO> sourceGoodsInfo(Long userId, Long sourceId) {
SourceRespVO sourceRespVO = sourceMapper.listUserOne(userId, sourceId); SourceRespVO sourceRespVO = sourceMapper.listUserOne(userId, sourceId);
// if (sourceRespVO == null) { if (sourceRespVO == null) {
// return ApiResponse.fail("该视频不属于你"); sourceRespVO = sourceMapper.getById(sourceId);
// } if (sourceRespVO == null) {
return ApiResponse.fail("该视频不存在");
}
}
GoodsDetailVO goodsDetailVO = new GoodsDetailVO(); GoodsDetailVO goodsDetailVO = new GoodsDetailVO();
goodsDetailVO.setGoodsName("原片"); goodsDetailVO.setGoodsName("原片");
goodsDetailVO.setScenicId(sourceRespVO.getScenicId()); goodsDetailVO.setScenicId(sourceRespVO.getScenicId());
goodsDetailVO.setScenicName(sourceRespVO.getScenicName()); goodsDetailVO.setScenicName(sourceRespVO.getScenicName());
goodsDetailVO.setGoodsType(0); goodsDetailVO.setGoodsType(sourceRespVO.getType());
goodsDetailVO.setGoodsId(sourceRespVO.getId()); goodsDetailVO.setGoodsId(sourceRespVO.getId());
goodsDetailVO.setVideoUrl(sourceRespVO.getVideoUrl()); goodsDetailVO.setVideoUrl(sourceRespVO.getVideoUrl());
goodsDetailVO.setTemplateCoverUrl(sourceRespVO.getUrl()); goodsDetailVO.setTemplateCoverUrl(sourceRespVO.getUrl());

View File

@ -89,20 +89,12 @@ public class WxPayServiceImpl implements WxPayService {
@Autowired @Autowired
private WechatConfig wechatConfig; private WechatConfig wechatConfig;
@Autowired @Autowired
private HttpService httpService;
@Autowired
private OrderService orderService; private OrderService orderService;
@Autowired @Autowired
private PaymentMapper paymentMapper; private PaymentMapper paymentMapper;
@Autowired @Autowired
private StatisticsMapper statisticsMapper; private StatisticsMapper statisticsMapper;
@Autowired @Autowired
private OrderMapper orderMapper;
@Autowired
private SourceMapper sourceMapper;
@Autowired
private VideoMapper videoMapper;
@Autowired
private OrderRepository orderRepository; private OrderRepository orderRepository;
@Autowired @Autowired
private OrderBiz orderBiz; private OrderBiz orderBiz;

View File

@ -252,6 +252,7 @@ public class TaskTaskServiceImpl implements TaskService {
DeviceEntity device = deviceRepository.getDevice(item.getDeviceId()); DeviceEntity device = deviceRepository.getDevice(item.getDeviceId());
return Integer.valueOf(1).equals(device.getStatus()); return Integer.valueOf(1).equals(device.getStatus());
}) })
.filter(item -> item.getDeviceId() != null) // 添加对 deviceId null 的检查
.collect(Collectors.groupingBy(item -> item.getDeviceId().toString())); .collect(Collectors.groupingBy(item -> item.getDeviceId().toString()));
if (sourcesMap.isEmpty()) { if (sourcesMap.isEmpty()) {
// 主动禁止没有视频源视频生成 // 主动禁止没有视频源视频生成
@ -437,14 +438,17 @@ public class TaskTaskServiceImpl implements TaskService {
return; return;
} }
List<SourceEntity> videoSourceList = sourceMapper.listVideoByScenicFaceRelation(face.getScenicId(), faceId); List<SourceEntity> videoSourceList = sourceMapper.listVideoByScenicFaceRelation(face.getScenicId(), faceId);
if (videoSourceList == null || videoSourceList.isEmpty()) {
log.info("task callback: 没有视频源");
return;
}
Map<String, List<SourceEntity>> sourcesMap = videoSourceList.stream() Map<String, List<SourceEntity>> sourcesMap = videoSourceList.stream()
.filter(Objects::nonNull)
.filter(item -> Objects.nonNull(item.getVideoUrl()))
.peek(item -> item.setUrl(item.getVideoUrl())) .peek(item -> item.setUrl(item.getVideoUrl()))
.filter(item -> { .filter(item -> {
DeviceEntity device = deviceRepository.getDevice(item.getDeviceId()); DeviceEntity device = deviceRepository.getDevice(item.getDeviceId());
return Integer.valueOf(1).equals(device.getStatus()); return Integer.valueOf(1).equals(device.getStatus());
}) })
.filter(item -> item.getDeviceId() != null) // 添加对 deviceId null 的检查
.collect(Collectors.groupingBy(item -> item.getDeviceId().toString())); .collect(Collectors.groupingBy(item -> item.getDeviceId().toString()));
if (sourcesMap.isEmpty()) { if (sourcesMap.isEmpty()) {
// 主动禁止没有视频源视频生成 // 主动禁止没有视频源视频生成