zwhui před 2 roky
rodič
revize
2195312fa7

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/midjourney/MidjourneyService.java

@@ -26,4 +26,6 @@ public interface MidjourneyService {
     MidjourneyUserConversation submitAction(MidjourneyUser user, Long taskId, String customId) throws Exception;
 
     MidjourneyUserConversation cancelConversation(MidjourneyUser user, Long id);
+
+    void notifyHook(String conversation) throws Exception;
 }

+ 12 - 0
netflix-service/src/main/java/com/cyksj/service/midjourney/impl/MidjourneyServiceImpl.java

@@ -331,4 +331,16 @@ public class MidjourneyServiceImpl implements MidjourneyService {
         }
     }
 
+    @Override
+    public void notifyHook(String json) throws Exception {
+        log.info("notifyHook:{}", json);
+        MidjourneyUserConversation conversation = Jsons.parseObject(json, MidjourneyUserConversation.class);
+        TASK_EXECUTOR.execute(() -> {
+            try {
+                sync(conversation);
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+        });
+    }
 }

+ 15 - 0
netflix-web/src/main/java/com/cyksj/web/controller/mirror/MidjourneyController.java

@@ -3,6 +3,7 @@ package com.cyksj.web.controller.mirror;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.exception.BusinessRuntimeException;
+import com.cyksj.common.util.IoKit;
 import com.cyksj.dto.Result;
 import com.cyksj.model.dto.*;
 import com.cyksj.enums.GatewayResponse;
@@ -20,6 +21,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.Date;
 import java.util.List;
 
@@ -338,4 +341,16 @@ public class MidjourneyController {
         redisService.del(RedisService.key.MIDJOURNEY_USER.getName() + midjourneyUser.getUserToken());
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }
+
+    /**
+     * midjourney 回调
+     */
+    @PostMapping("/notifyHook")
+    public void notifyHook(HttpServletRequest request) throws Exception {
+        InputStream inputStream = request.getInputStream();
+        byte[] bytes = IoKit.toBytes(inputStream);
+        String json = new String(bytes, StandardCharsets.UTF_8);
+        log.info("midjourney 回调:{}", json);
+        midjourneyService.notifyHook(json);
+    }
 }