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<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.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<FaceSampleEntity> faceSampleList = faceRepository.getFaceSampleList(faceId);
-        if (faceSampleList.isEmpty()) {
+        if (faceSampleList == null || faceSampleList.isEmpty()) {
             return false;
         }
         long count;
         if (scanSource) {
             List<SourceEntity> 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<SourceEntity> 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<GoodsDetailVO> 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<SourceEntity> videoSourceList = sourceMapper.listVideoByScenicFaceRelation(face.getScenicId(), faceId);
+            if (videoSourceList == null || videoSourceList.isEmpty()) {
+                log.info("task callback: 没有视频源");
+                return;
+            }
             Map<String, List<SourceEntity>> 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()) {
                 // 主动禁止没有视频源视频生成