Parcourir la source

新增 niji机器人

chenbiao il y a 2 ans
Parent
commit
60f35ad0cd

+ 8 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/SubmitActionDTO.java

@@ -22,4 +22,12 @@ public class SubmitActionDTO {
      */
     @NotNull(message = "任务ID不能为空")
     private Long taskId;
+
+    /**
+     * 机器人类型
+     * bot类型,mj(默认)或niji,可用值:MID_JOURNEY,NIJI_JOURNEY,示例值(MID_JOURNEY)
+     * MID_JOURNEY
+     * NIJI_JOURNEY
+     */
+    private String botType = "MID_JOURNEY";
 }

+ 8 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/SubmitBlendDTO.java

@@ -22,4 +22,12 @@ public class SubmitBlendDTO {
 	 * 比例: PORTRAIT(2:3); SQUARE(1:1); LANDSCAPE(3:2)
 	 */
 	private BlendDimensions dimensions = BlendDimensions.SQUARE;
+
+	/**
+	 * 机器人类型
+	 * bot类型,mj(默认)或niji,可用值:MID_JOURNEY,NIJI_JOURNEY,示例值(MID_JOURNEY)
+	 * MID_JOURNEY
+	 * NIJI_JOURNEY
+	 */
+	private String botType = "MID_JOURNEY";
 }

+ 8 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/SubmitDescribeDTO.java

@@ -16,4 +16,12 @@ public class SubmitDescribeDTO {
 	 */
 	@NotBlank(message = "请上传图片")
 	private String base64;
+
+	/**
+	 * 机器人类型
+	 * bot类型,mj(默认)或niji,可用值:MID_JOURNEY,NIJI_JOURNEY,示例值(MID_JOURNEY)
+	 * MID_JOURNEY
+	 * NIJI_JOURNEY
+	 */
+	private String botType = "MID_JOURNEY";
 }

+ 9 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/SubmitImagineDTO.java

@@ -1,5 +1,6 @@
 package com.cyksj.model.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
@@ -23,4 +24,12 @@ public class SubmitImagineDTO {
      */
     private List<String> base64Array;
 
+    /**
+     * 机器人类型
+     * bot类型,mj(默认)或niji,可用值:MID_JOURNEY,NIJI_JOURNEY,示例值(MID_JOURNEY)
+     * MID_JOURNEY
+     * NIJI_JOURNEY
+     */
+    private String botType = "MID_JOURNEY";
+
 }

+ 8 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/SubmitShortenDTO.java

@@ -16,4 +16,12 @@ public class SubmitShortenDTO {
      */
     @NotBlank(message = "提示词不能为空")
     private String prompt;
+
+    /**
+     * 机器人类型
+     * bot类型,mj(默认)或niji,可用值:MID_JOURNEY,NIJI_JOURNEY,示例值(MID_JOURNEY)
+     * MID_JOURNEY
+     * NIJI_JOURNEY
+     */
+    private String botType = "MID_JOURNEY";
 }

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

@@ -13,19 +13,19 @@ import java.util.Map;
  * @date 2024/4/23 15:44
  */
 public interface MidjourneyService {
-    MidjourneyUserConversation submitImagine(MidjourneyUser user, String prompt, List<String> base64Array) throws Exception;
+    MidjourneyUserConversation submitImagine(MidjourneyUser user, String prompt, String botType,  List<String> base64Array) throws Exception;
 
-    MidjourneyUserConversation submitDescribe(MidjourneyUser user, String base64) throws Exception;
+    MidjourneyUserConversation submitDescribe(MidjourneyUser user, String botType, String base64) throws Exception;
 
-    MidjourneyUserConversation submitBlend(MidjourneyUser user, BlendDimensions dimensions, List<String> base64Array) throws Exception;
+    MidjourneyUserConversation submitBlend(MidjourneyUser user, BlendDimensions dimensions, String botType, List<String> base64Array) throws Exception;
 
     MidjourneyUserConversation submitModal(MidjourneyUser user, Long taskId, String prompt, String maskBase64) throws Exception;
 
-    MidjourneyUserConversation submitShorten(MidjourneyUser user, String prompt) throws Exception;
+    MidjourneyUserConversation submitShorten(MidjourneyUser user, String botType, String prompt) throws Exception;
 
     List<MidjourneyUserConversation> listConversationByIds(Integer mode, List<Long> ids) throws Exception;
 
-    SubmitResult submitAction(MidjourneyUser user, Long taskId, String customId, Long num) throws Exception;
+    SubmitResult submitAction(MidjourneyUser user, Long taskId, String customId, Long num, String botType) throws Exception;
 
     MidjourneyUserConversation cancelConversation(MidjourneyUser user, Long id);
 

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

@@ -82,9 +82,12 @@ public class MidjourneyServiceImpl implements MidjourneyService {
 
 
     @Override
-    public MidjourneyUserConversation submitImagine(MidjourneyUser user, String prompt, List<String> base64Array) throws Exception {
+    public MidjourneyUserConversation submitImagine(MidjourneyUser user, String prompt,String botType, List<String> base64Array) throws Exception {
         Map<String, Object> imagineParam = MapUtil.builder(new HashMap<String,Object>())
-                .put("prompt", prompt).put("state", user.getId()).build();
+                .put("prompt", prompt)
+                .put("state", user.getId())
+                .put("botType", botType)
+                .build();
         if (CollectionUtil.isNotEmpty(base64Array)) {
             imagineParam.put("base64Array", base64Array);
         }
@@ -110,16 +113,23 @@ public class MidjourneyServiceImpl implements MidjourneyService {
 
 
     @Override
-    public MidjourneyUserConversation submitDescribe(MidjourneyUser user, String base64) throws Exception {
-        Map<String, Object> param = MapUtil.builder(new HashMap<String,Object>()).put("state", user.getId()).put("base64", base64).build();
+    public MidjourneyUserConversation submitDescribe(MidjourneyUser user, String botType, String base64) throws Exception {
+        Map<String, Object> param = MapUtil.builder(new HashMap<String,Object>())
+                .put("state", user.getId())
+                .put("base64", base64)
+                .put("botType", botType)
+                .build();
         SubmitResult result = submit(user.getMode(),"describe", null, param);
         return saveConversation(user.getId(), user.getMode(),result,"DESCRIBE", StringUtils.EMPTY);
     }
 
     @Override
-    public MidjourneyUserConversation submitBlend(MidjourneyUser user, BlendDimensions dimensions, List<String> base64Array) throws Exception {
+    public MidjourneyUserConversation submitBlend(MidjourneyUser user, BlendDimensions dimensions, String botType, List<String> base64Array) throws Exception {
         Map<String, Object> param = MapUtil.builder(new HashMap<String,Object>())
-                .put("base64Array", base64Array).put("state", user.getId()).build();
+                .put("base64Array", base64Array)
+                .put("state", user.getId())
+                .put("botType", botType)
+                .build();
         if (dimensions != null) {
             param.put("dimensions", dimensions);
         }
@@ -130,7 +140,9 @@ public class MidjourneyServiceImpl implements MidjourneyService {
     @Override
     public MidjourneyUserConversation submitModal(MidjourneyUser user, Long taskId, String prompt, String maskBase64) throws Exception {
         Map<String, Object> param = MapUtil.builder(new HashMap<String,Object>())
-                .put("taskId", taskId).put("state", user.getId()).build();
+                .put("taskId", taskId)
+                .put("state", user.getId())
+                .build();
         if (StringUtils.isNotBlank(prompt)) {
             param.put("prompt", prompt);
         }
@@ -142,9 +154,12 @@ public class MidjourneyServiceImpl implements MidjourneyService {
     }
 
     @Override
-    public MidjourneyUserConversation submitShorten(MidjourneyUser user, String prompt) throws Exception {
+    public MidjourneyUserConversation submitShorten(MidjourneyUser user, String prompt, String botType) throws Exception {
         Map<String, Object> param = MapUtil.builder(new HashMap<String,Object>())
-                .put("prompt", prompt).put("state", user.getId()).build();
+                .put("prompt", prompt)
+                .put("state", user.getId())
+                .put("botType", botType)
+                .build();
         SubmitResult result = submit(user.getMode(),"shorten", null, param);
         return saveConversation(user.getId(), user.getMode(), result,"SHORTEN", StringUtils.EMPTY);
     }
@@ -183,7 +198,7 @@ public class MidjourneyServiceImpl implements MidjourneyService {
     }
 
     @Override
-    public SubmitResult submitAction(MidjourneyUser user, Long taskId, String customId,Long num) throws Exception {
+    public SubmitResult 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("关联任务不存在或已失效");
@@ -207,7 +222,11 @@ public class MidjourneyServiceImpl implements MidjourneyService {
             return null;
         }
         Map<String, Object> param = MapUtil.builder(new HashMap<String,Object>())
-                .put("taskId", taskId).put("state", user.getId()).put("customId", customId).build();
+                .put("taskId", taskId)
+                .put("state", user.getId())
+                .put("customId", customId)
+                .put("botType", botType)
+                .build();
         SubmitResult result = submit(user.getMode(),"action", conversation.getInstanceId(),param);
         if (result.getCode() == 21) {
             // 以上操作有弹窗确认,恢复次数
@@ -222,12 +241,12 @@ public class MidjourneyServiceImpl implements MidjourneyService {
 
     public SubmitResult submit(Integer mode,String action,Long instanceId, Map<String, Object> param) throws Exception {
         String url = "";
+        String accountWithMinUsage = "";
         if (mode == 1) {
             param.put("mode", "FAST");
             url = FAST_HOST;
         } else if (mode == 2) {
             url = RELAX_HOST;
-            String accountWithMinUsage;
             //慢速查询在使用次数最少的账号
             accountWithMinUsage = getAccountWithMinUsage(instanceId);
             param.put("accountFilter",MapUtil.builder(new HashMap<String,Object>())
@@ -241,6 +260,9 @@ public class MidjourneyServiceImpl implements MidjourneyService {
         int code = submitResult.getCode();
         if (code != 1 && code != 21 && code != 22) {
             if (code == 3) {
+                if(mode == 2 && StringUtils.isNotBlank(accountWithMinUsage)){
+                    redisService.hdel(RedisService.key.MIDJOURNEY_ACCOUNT.getName(),accountWithMinUsage);
+                }
                 throw BusinessRuntimeException.getInstance("账号不存在");
             }
             if (code == 4) {

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

@@ -176,7 +176,7 @@ public class MidjourneyController {
         }
         MidjourneyUserConversation conversation;
         try {
-            conversation = midjourneyService.submitImagine(user, submitImagineDTO.getPrompt(), submitImagineDTO.getBase64Array());
+            conversation = midjourneyService.submitImagine(user, submitImagineDTO.getPrompt(), submitImagineDTO.getBotType(), submitImagineDTO.getBase64Array());
         } catch (Exception e) {
             recoverUserLimit(user.getId(), user.getMode(),num);
             throw BusinessRuntimeException.getInstance(e.getMessage());
@@ -199,7 +199,7 @@ public class MidjourneyController {
         }
         MidjourneyUserConversation conversation;
         try {
-            conversation = midjourneyService.submitDescribe(user, submitDescribeDTO.getBase64());
+            conversation = midjourneyService.submitDescribe(user, submitDescribeDTO.getBase64(), submitDescribeDTO.getBotType());
         } catch (Exception e) {
             recoverUserLimit(user.getId(), user.getMode(),num);
             throw BusinessRuntimeException.getInstance(e.getMessage());
@@ -222,7 +222,7 @@ public class MidjourneyController {
         }
         MidjourneyUserConversation conversation;
         try {
-            conversation = midjourneyService.submitBlend(user, submitBlendDTO.getDimensions(), submitBlendDTO.getBase64Array());
+            conversation = midjourneyService.submitBlend(user, submitBlendDTO.getDimensions(), submitBlendDTO.getBotType(), submitBlendDTO.getBase64Array());
         } catch (Exception e) {
             recoverUserLimit(user.getId(), user.getMode(),num);
             throw BusinessRuntimeException.getInstance(e.getMessage());
@@ -268,7 +268,7 @@ public class MidjourneyController {
         }
         MidjourneyUserConversation conversation;
         try {
-            conversation = midjourneyService.submitShorten(user, submitShortenDTO.getPrompt());
+            conversation = midjourneyService.submitShorten(user, submitShortenDTO.getBotType(), submitShortenDTO.getPrompt());
         } catch (Exception e) {
             recoverUserLimit(user.getId(), user.getMode(),num);
             throw BusinessRuntimeException.getInstance(e.getMessage());
@@ -291,7 +291,7 @@ public class MidjourneyController {
         }
         SubmitResult conversation;
         try {
-            conversation = midjourneyService.submitAction(user, actionDTO.getTaskId(), actionDTO.getCustomId(),num);
+            conversation = midjourneyService.submitAction(user, actionDTO.getTaskId(), actionDTO.getCustomId(),num, actionDTO.getBotType());
         } catch (Exception e) {
             recoverUserLimit(user.getId(), user.getMode(),num);
             throw BusinessRuntimeException.getInstance(e.getMessage());