|
|
@@ -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) {
|