zwhui 2 роки тому
батько
коміт
6d7e5447f8

+ 5 - 0
midjourney/src/main/java/com/yhlxj/dao/model/entity/MidjourneyUserConversation.java

@@ -118,6 +118,11 @@ public class MidjourneyUserConversation extends BaseEntity implements Serializab
      */
     private Boolean bookmark;
 
+    /**
+     * 图片是否失效
+     */
+    private Boolean imageInvalid;
+
     @DbIgnore
     @TableField(exist = false)
     private Integer progressNum = -1;

+ 13 - 2
midjourney/src/main/java/com/yhlxj/service/midjourney/impl/MidjourneyServiceImpl.java

@@ -880,7 +880,13 @@ public class MidjourneyServiceImpl implements MidjourneyService {
     private static String uploadPic(String url, String prefix) throws IOException {
         // 替换 URL 并下载图像字节
         url = url.replace("cdn.mj.liuliangbang.vip", "cdn.discordapp.com");
-        byte[] body = HttpUtil.downloadBytes(url);
+
+        byte[] body;
+        try {
+            body = HttpUtil.downloadBytes(url);
+        } catch (Exception e) {
+            throw new IOException(e);
+        }
 
         // 创建临时文件并将图像字节写入文件
         Path tempFile = Files.createTempFile(prefix, ".png");
@@ -1290,6 +1296,7 @@ public class MidjourneyServiceImpl implements MidjourneyService {
             try {
                 JSONArray jsonArray = listByIds(1, list.stream().map(MidjourneyUserConversation::getTaskId).collect(Collectors.toList()), channel);
                 for (Object json : jsonArray) {
+                    log.info("定时任务同步回调notifyHook");
                     notifyHook(Jsons.toJson(json));
                 }
             } catch (Exception e) {
@@ -1299,6 +1306,7 @@ public class MidjourneyServiceImpl implements MidjourneyService {
 
         JSONArray relaxArray = listByIds(2, relaxMidjourneyUserConversations.stream().map(MidjourneyUserConversation::getTaskId).collect(Collectors.toList()), null);
         for (Object json : relaxArray) {
+            log.info("定时任务同步回调notifyHook");
             notifyHook(Jsons.toJson(json));
         }
     }
@@ -1360,7 +1368,8 @@ public class MidjourneyServiceImpl implements MidjourneyService {
         //上传图片到cos
         List<MidjourneyUserConversation> imgConversations = conversationMapper.selectList(Wrappers.lambdaQuery(MidjourneyUserConversation.class)
                 .eq(MidjourneyUserConversation::getStatus, "SUCCESS").notLike(MidjourneyUserConversation::getImageUrl, "cdn.mj.galaxydvd.com")
-                .ge(MidjourneyUserConversation::getCreatedTime, DateUtil.offsetMinute(new Date(), -60 * 24)).orderByAsc(MidjourneyUserConversation::getId).last(" limit 10"));
+                .ge(MidjourneyUserConversation::getCreatedTime, DateUtil.offsetMinute(new Date(), -60 * 24))
+                .eq(MidjourneyUserConversation::getImageInvalid,Boolean.FALSE).orderByAsc(MidjourneyUserConversation::getId).last(" limit 10"));
         for (MidjourneyUserConversation conversation : imgConversations) {
             try {
                 String imageUrl = conversation.getImageUrl();
@@ -1370,6 +1379,8 @@ public class MidjourneyServiceImpl implements MidjourneyService {
                 }
             } catch (IOException e) {
                 log.error("上传图片失败", e);
+                conversation.setImageInvalid(Boolean.TRUE);
+                conversationMapper.updateById(conversation);
             }
 
         }

+ 8 - 3
midjourney/src/main/java/com/yhlxj/util/COSUtil.java

@@ -7,6 +7,7 @@ import com.qcloud.cos.auth.COSCredentials;
 import com.qcloud.cos.model.ObjectMetadata;
 import com.qcloud.cos.region.Region;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
@@ -45,12 +46,16 @@ public class COSUtil {
      * @param contentType
      * @return
      */
-    public static String upLoad(InputStream in, String ext, String contentType){
+    public static String upLoad(InputStream in, String ext, String contentType) throws IOException {
         ObjectMetadata objectMetadata = new ObjectMetadata();
         String key = prePath+getTimeStamp()+ext;
         objectMetadata.setContentType(contentType);
-        getInstance().putObject(BUCKET_NAME, key, in, objectMetadata);
-        return "https://cdn.mj.galaxydvd.com/"+key;
+        objectMetadata.setContentLength(in.available());
+        COSClient instance = getInstance();
+        instance.putObject(BUCKET_NAME, key, in, objectMetadata);
+        String url = "https://cdn.mj.galaxydvd.com/" + key;
+        instance.shutdown();
+        return url;
     }
 
     // 获得时间戳

+ 1 - 0
midjourney/src/main/java/com/yhlxj/web/mirror/MidjourneyController.java

@@ -443,6 +443,7 @@ public class MidjourneyController {
         byte[] bytes = IoKit.toBytes(inputStream);
         String json = new String(bytes, StandardCharsets.UTF_8);
         inputStream.close();
+        log.info("接口回调notifyHook");
         midjourneyService.notifyHook(json);
     }