zwhui 2 лет назад
Родитель
Сommit
4f2cc984bf

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

@@ -25,7 +25,7 @@ public interface MidjourneyService {
 
     List<MidjourneyUserConversation> listConversationByIds(Integer mode, List<Long> ids) throws Exception;
 
-    SubmitResult submitAction(MidjourneyUser user, Long taskId, String customId, Long num, String botType) throws Exception;
+    Object submitAction(MidjourneyUser user, Long taskId, String customId, Long num, String botType) throws Exception;
 
     MidjourneyUserConversation cancelConversation(MidjourneyUser user, Long id);
 

+ 15 - 3
netflix-service/src/main/java/com/cyksj/service/midjourney/impl/MidjourneyServiceImpl.java

@@ -19,6 +19,7 @@ import com.cyksj.mapper.MidjourneyUserConversationMapper;
 import com.cyksj.mapper.MidjourneyUserMapper;
 import com.cyksj.model.dto.BlendDimensions;
 import com.cyksj.model.dto.MessageButton;
+import com.cyksj.model.dto.SubmitModalDTO;
 import com.cyksj.model.entity.MidjourneyAccount;
 import com.cyksj.model.entity.MidjourneyUser;
 import com.cyksj.model.entity.MidjourneyUserConversation;
@@ -37,6 +38,7 @@ import java.io.*;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
 /**
@@ -203,7 +205,7 @@ public class MidjourneyServiceImpl implements MidjourneyService {
 //    }
 
     @Override
-    public SubmitResult submitAction(MidjourneyUser user, Long taskId, String customId, Long num, String botType) throws Exception {
+    public Object submitAction(MidjourneyUser user, Long taskId, String customId, Long num, String botType) throws Exception {
         MidjourneyUserConversation conversation = conversationMapper.selectOne(Wrappers.lambdaQuery(MidjourneyUserConversation.class).eq(MidjourneyUserConversation::getTaskId, taskId).last("limit 1"));
         if (conversation == null) {
             throw BusinessRuntimeException.getInstance("关联任务不存在或已失效");
@@ -211,12 +213,16 @@ public class MidjourneyServiceImpl implements MidjourneyService {
         if (!user.getMode().equals(conversation.getMode())) {
             throw BusinessRuntimeException.getInstance("当前出图模式与关联任务出图模式不符");
         }
+        AtomicBoolean modalFlag = new AtomicBoolean(false);
         if (StringUtils.isNotBlank(conversation.getButtons())){
             List<MessageButton> messageButtons = Jsons.parseList(conversation.getButtons(), MessageButton.class);
             messageButtons.forEach(button -> {
                 if (button.getCustomId().equals(customId)) {
                     log.info("action customId:{}", customId);
                     button.setStyle(3);
+                    if (!"Vary (Region)".equals(button.getLabel()) && !"Custom Zoom".equals(button.getLabel())) {
+                        modalFlag.set(true);
+                    }
                 }
             });
             conversation.setButtons(Jsons.toJson(messageButtons));
@@ -233,8 +239,14 @@ public class MidjourneyServiceImpl implements MidjourneyService {
                 .build();
         SubmitResult result = submit(user.getMode(),"action", conversation.getInstanceId(),param);
         if (result.getCode() == 21) {
-            // 以上操作有弹窗确认,恢复次数
-            recoverUserLimit(user.getId(), user.getMode(),num);
+            if (user.getMode() == 2 && modalFlag.get()){
+                MidjourneyUserConversation modal = submitModal(user, Long.valueOf(result.getResult()), conversation.getPrompt() + " --v 6", null);
+                log.info("action-modal:{}", modal);
+                return modal;
+            }else {
+                // 以上操作有弹窗确认,恢复次数
+                recoverUserLimit(user.getId(), user.getMode(),num);
+            }
         }else {
             //syncUser(user.getId(), user.getMode(),num);
             if (!customId.contains("upsample") && user.getMode() == 2) {

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

@@ -303,7 +303,7 @@ public class MidjourneyController {
      */
     @PostMapping("/submit/action")
     @NoSubmit
-    public Result<SubmitResult> action(@RequestBody SubmitActionDTO actionDTO) {
+    public Result<Object> action(@RequestBody SubmitActionDTO actionDTO) {
         log.info("任务id:{},执行动作:{}",actionDTO.getTaskId(),actionDTO.getCustomId());
         MidjourneyUser user = getUser();
         Long num = 0L;
@@ -313,7 +313,7 @@ public class MidjourneyController {
                 throw BusinessRuntimeException.getInstance("次数已用完");
             }
         }
-        SubmitResult conversation;
+        Object conversation;
         try {
             conversation = midjourneyService.submitAction(user, actionDTO.getTaskId(), actionDTO.getCustomId(),num, actionDTO.getBotType());
         } catch (Exception e) {