zwhui 1 年間 前
コミット
f326b4ca02

+ 4 - 0
midjourney/src/main/java/com/yhlxj/redis/RedisService.java

@@ -768,6 +768,10 @@ public class RedisService {
         redisTemplate.delete(lockKey);
     }
 
+    public void multiSet(Map<String, Object> keyValueMap) {
+        redisTemplate.opsForValue().multiSet(keyValueMap);
+    }
+
     @AllArgsConstructor
     @Getter
     public enum key {

+ 2 - 1
midjourney/src/main/java/com/yhlxj/service/midjourney/MidjourneyService.java

@@ -10,6 +10,7 @@ import com.yhlxj.dao.model.entity.MidjourneyUserConversation;
 import com.yhlxj.dao.model.response.SubmitResult;
 
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 
 /**
  * @author zwhui
@@ -38,7 +39,7 @@ public interface MidjourneyService {
 
     void notifyHook(String conversation) throws Exception;
 
-    MidjourneyUser getUser(String userToken);
+    MidjourneyUser getUser(String userToken) throws ExecutionException, InterruptedException;
 
     void syscConversation() throws Exception;
 

+ 42 - 44
midjourney/src/main/java/com/yhlxj/service/midjourney/impl/MidjourneyServiceImpl.java

@@ -49,7 +49,9 @@ import java.net.URL;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -103,8 +105,6 @@ public class MidjourneyServiceImpl implements MidjourneyService {
 
     private final GroupsRelationMapper groupsRelationMapper;
 
-    private final MidjourneyApiChannelMapper midjourneyApiChannelMapper;
-
     public static final Map<String, MjVersionStatus> MJ_VERSION_STATUS_MAP = new HashMap<>();
 
     private final MidjourneyWhiteMapper midjourneyWhiteMapper;
@@ -113,11 +113,10 @@ public class MidjourneyServiceImpl implements MidjourneyService {
 
     private final MidjourneySessionMapper midjourneySessionMapper;
 
-    private final ConcurrentHashMap<String, Object> lockMap = new ConcurrentHashMap<>();
 
 
     @Override
-    public MidjourneyUser getUser(String userToken) {
+    public MidjourneyUser getUser(String userToken) throws ExecutionException, InterruptedException {
         if(StringUtils.isBlank(userToken)){
             throw BusinessRuntimeException.getInstance("10001","请重新至官网登录");
         }
@@ -129,19 +128,25 @@ public class MidjourneyServiceImpl implements MidjourneyService {
         if (midjourneyUser.getIsBlack()){
             throw new BusinessRuntimeException("账号异常,请联系客服");
         }
-        if(!redisService.hasKey(RedisService.key.MIDJOURNEY_FAST_LIMIT.getName() + midjourneyUser.getId())){
-            redisService.set(RedisService.key.MIDJOURNEY_FAST_LIMIT.getName() + midjourneyUser.getId(),midjourneyUser.getMjFastNum());
-        }
 
-        if(!redisService.hasKey(RedisService.key.MIDJOURNEY_RELAX_LIMIT.getName() + midjourneyUser.getId())){
-            redisService.set(RedisService.key.MIDJOURNEY_RELAX_LIMIT.getName() + midjourneyUser.getId(),midjourneyUser.getMjRelaxNum());
+        if (!redisService.hasKey(RedisService.key.MIDJOURNEY_FAST_LIMIT.getName() + midjourneyUser.getId())
+                || !redisService.hasKey(RedisService.key.MIDJOURNEY_RELAX_LIMIT.getName() + midjourneyUser.getId())) {
+                redisService.multiSet(MapUtil.builder((new HashMap<String,Object>()))
+                    .put(RedisService.key.MIDJOURNEY_FAST_LIMIT.getName() + midjourneyUser.getId(), midjourneyUser.getMjFastNum())
+                    .put(RedisService.key.MIDJOURNEY_RELAX_LIMIT.getName() + midjourneyUser.getId(), midjourneyUser.getMjRelaxNum())
+                    .build());
         }
         Long relationId = midjourneyUser.getRelationId();
-        GroupsRelation relation = groupsRelationMapper.selectById(relationId);
+
+        CompletableFuture<GroupsRelation> relationFuture = CompletableFuture.supplyAsync(() -> groupsRelationMapper.selectById(relationId));
+        CompletableFuture<MidjourneyUserSettings> settingsFuture = CompletableFuture.supplyAsync(() -> midjourneyUserSettingsService.getOne(
+                QueryWrapperUtils.buildWrapper(wrapper -> wrapper.eq(MidjourneyUserSettings::getUserId, midjourneyUser.getId()))));
+
+        // 等待查询完成
+        GroupsRelation relation = relationFuture.get();
+        MidjourneyUserSettings midjourneyUserSettings = settingsFuture.get();
         midjourneyUser.setAqType(relation.getAqType());
-        MidjourneyUserSettings midjourneyUserSettings = midjourneyUserSettingsService.getOne(QueryWrapperUtils.buildWrapper((wrapper) -> {
-            wrapper.eq(MidjourneyUserSettings::getUserId, midjourneyUser.getId());
-        }));
+
         if (midjourneyUserSettings == null) {
             midjourneyUserSettings = new MidjourneyUserSettings();
             midjourneyUserSettings.setSettings(SETTINGS);
@@ -159,10 +164,9 @@ public class MidjourneyServiceImpl implements MidjourneyService {
 
     @Override
     public SubmitResult submitImagine(MidjourneyUser user, Integer mode,String prompt, String botType, List<String> base64Array, Long num) throws Exception {
-        Map<String, Object> imagineParam = MapUtil.builder(new HashMap<String,Object>())
-                .put("prompt", prompt)
-                .put("state", String.join(",",user.getId().toString(),user.getUserToken()))
-                .build();
+        Map<String, Object> imagineParam = new HashMap<>();
+        imagineParam.put("prompt", prompt);
+        imagineParam.put("state", String.join(",",user.getId().toString(),user.getUserToken()));
         if (CollectionUtil.isNotEmpty(base64Array)) {
             imagineParam.put("base64Array", base64Array);
         }
@@ -235,10 +239,9 @@ public class MidjourneyServiceImpl implements MidjourneyService {
 
     @Override
     public SubmitResult submitDescribe(MidjourneyUser user,Integer mode, String botType, String base64, Long num) throws Exception {
-        Map<String, Object> param = MapUtil.builder(new HashMap<String,Object>())
-                .put("state", String.join(",",user.getId().toString(),user.getUserToken()))
-                .put("base64", base64)
-                .build();
+        Map<String, Object> param = new HashMap<>();
+        param.put("state", String.join(",",user.getId().toString(),user.getUserToken()));
+        param.put("base64", base64);
         SubmitResult result = submit(user,mode,"describe", null, param,false, num);
         if (mode == 2) {
             redisService.hincr(RedisService.key.MIDJOURNEY_ACCOUNT.getName(), result.getProperties().get("discordInstanceId").toString(), 1.0);
@@ -249,10 +252,9 @@ public class MidjourneyServiceImpl implements MidjourneyService {
 
     @Override
     public SubmitResult submitBlend(MidjourneyUser user, Integer mode,BlendDimensions dimensions, String botType, List<String> base64Array, Long num) throws Exception {
-        Map<String, Object> param = MapUtil.builder(new HashMap<String,Object>())
-                .put("base64Array", base64Array)
-                .put("state", String.join(",",user.getId().toString(),user.getUserToken()))
-                .build();
+        Map<String, Object> param = new HashMap<>();
+        param.put("base64Array", base64Array);
+        param.put("state", String.join(",",user.getId().toString(),user.getUserToken()));
         if (dimensions != null) {
             param.put("dimensions", dimensions);
         }
@@ -279,10 +281,9 @@ public class MidjourneyServiceImpl implements MidjourneyService {
     @Override
     public SubmitResult submitModal(MidjourneyUser user,Integer mode, String taskId, String prompt, String maskBase64, Long num) throws Exception {
         MidjourneyUserConversation midjourneyUserConversation = conversationMapper.selectOne(Wrappers.lambdaQuery(MidjourneyUserConversation.class).eq(MidjourneyUserConversation::getTaskId, taskId).last("limit 1"));
-        Map<String, Object> param = MapUtil.builder(new HashMap<String,Object>())
-                .put("taskId", taskId.toString())
-                .put("state",String.join(",",user.getId().toString(),user.getUserToken()))
-                .build();
+        Map<String, Object> param = new HashMap<>();
+        param.put("taskId", taskId.toString());
+        param.put("state",String.join(",",user.getId().toString(),user.getUserToken()));
         if (StringUtils.isNotBlank(prompt)) {
             param.put("prompt", prompt);
         }
@@ -332,10 +333,9 @@ public class MidjourneyServiceImpl implements MidjourneyService {
 
     @Override
     public SubmitResult submitShorten(MidjourneyUser user,Integer mode, String botType, String prompt, Long num) throws Exception {
-        Map<String, Object> param = MapUtil.builder(new HashMap<String,Object>())
-                .put("prompt", prompt)
-                .put("state", String.join(",",user.getId().toString(),user.getUserToken()))
-                .build();
+        Map<String, Object> param = new HashMap<>();
+        param.put("prompt", prompt);
+        param.put("state", String.join(",",user.getId().toString(),user.getUserToken()));
         SubmitResult result = submit(user,mode,"shorten", null, param,false, num);
         if (mode == 2) {
             redisService.hincr(RedisService.key.MIDJOURNEY_ACCOUNT.getName(), result.getProperties().get("discordInstanceId").toString(), 1.0);
@@ -425,11 +425,10 @@ public class MidjourneyServiceImpl implements MidjourneyService {
             });
             return null;
         }
-        Map<String, Object> param = MapUtil.builder(new HashMap<String,Object>())
-                .put("taskId", taskId)
-                .put("state", String.join(",",user.getId().toString(),user.getUserToken()))
-                .put("customId", customId)
-                .build();
+        Map<String, Object> param = new HashMap<>();
+        param.put("taskId", taskId);
+        param.put("state", String.join(",",user.getId().toString(),user.getUserToken()));
+        param.put("customId", customId);
         SubmitResult result = submit(user,mode,"action", conversation.getInstanceId(),param,false, num);
         Map<String, Object> properties = result.getProperties();
         String modeStr;
@@ -904,7 +903,8 @@ public class MidjourneyServiceImpl implements MidjourneyService {
         return list;
     }
     public JSONArray listByIds(List<String> ids) throws Exception {
-        Map<String, Object> param = MapUtil.builder(new HashMap<String, Object>()).put("ids", ids).build();
+        Map<String, Object> param = new HashMap<>();
+        param.put("ids", ids);
         HttpRequest request = HttpRequest.post(apiUrl + "/mj/task/list-by-condition").header("mj-api-secret", RELAX_TOKEN);
         String body = request.body(Jsons.toJson(param)).execute().body();
         log.info("listByIds body:{}", body);
@@ -950,11 +950,9 @@ public class MidjourneyServiceImpl implements MidjourneyService {
             conversation.setAction(action_list.get(jsons.getInt("action")));
         }
         if (conversation.getPrompt() == null){
-            conversation.setPrompt(jsons.getStr("promptEn"));
-        }
-        if (conversation.getPrompt() == null){
-            conversation.setPrompt(jsons.getStr("promptFull"));
+            conversation.setPrompt(jsons.getStr("promptEn", jsons.getStr("promptFull")));
         }
+
         String[] states = jsons.getStr("state").split(",");
         conversation.setUserId(Long.parseLong(states[0]));
         conversation.setUserToken(states[1]);
@@ -1186,7 +1184,7 @@ public class MidjourneyServiceImpl implements MidjourneyService {
             if(JSONUtil.isJson(conversation.getFailReason())){
                 conversation.setFailReason("生成图片失败");
             }
-            String url = "https://mj.liuliangbang.vip/8080/api/msg/send";
+            String url = midjourneyHost+"/8080/api/msg/send";
         Map<String, Object> data = MapUtil.builder(new HashMap<String,Object>())
                 .put("taskId", conversation.getTaskId())
                 .put("msg", JSONUtil.toJsonStr(conversation))

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

@@ -104,7 +104,7 @@ public class AlphaMidjourneyController {
     }
 
     @RequestMapping("/notifyUrl")
-    public Result<String> notifyUrl() throws IOException {
+    public Result<String> notifyUrl() throws Exception {
         InputStream inputStream = request.getInputStream();
         byte[] bytes = IoKit.toBytes(inputStream);
         String json = new String(bytes, StandardCharsets.UTF_8);

+ 15 - 14
midjourney/src/main/java/com/yhlxj/web/mirror/MidjourneyController.java

@@ -49,6 +49,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 
 /** server/镜像服务/mj绘画
  * @author zwhui
@@ -83,7 +84,7 @@ public class MidjourneyController {
 
     private final MidjourneyUserSettingsService midjourneyUserSettingsService;
 
-    public MidjourneyUser getUser() throws IOException {
+    public MidjourneyUser getUser() throws IOException, ExecutionException, InterruptedException {
         String userToken = request.getHeader("user-token");
         String ip = IpUtils.getIpAddr(request);
         log.info("用户请求 ip:{}, userToken:{}", ip, userToken);
@@ -187,7 +188,7 @@ public class MidjourneyController {
      * 查询用户信息
      */
     @GetMapping("/whoami")
-    public Result<MidjourneyUser> queryUser() throws IOException {
+    public Result<MidjourneyUser> queryUser() throws Exception {
         MidjourneyUser user = getUser();
         return GatewayResponse.SUCCESS.newBuilder().toResult(user);
     }
@@ -198,7 +199,7 @@ public class MidjourneyController {
      */
     @PostMapping("/submit/imagine")
     @NoSubmit
-    public Result<SubmitResult> submitImagine(@Validated @RequestBody SubmitImagineDTO submitImagineDTO) throws IOException {
+    public Result<SubmitResult> submitImagine(@Validated @RequestBody SubmitImagineDTO submitImagineDTO) throws Exception {
         log.info("提交Imagine任务,提示:{}",submitImagineDTO.getPrompt());
         MidjourneyUser user = getUser();
         Integer mode = submitImagineDTO.getMode();
@@ -228,7 +229,7 @@ public class MidjourneyController {
      */
     @PostMapping("/submit/describe")
     @NoSubmit
-    public Result<SubmitResult> submitDescribe(@Validated @RequestBody SubmitDescribeDTO submitDescribeDTO) throws IOException {
+    public Result<SubmitResult> submitDescribe(@Validated @RequestBody SubmitDescribeDTO submitDescribeDTO) throws Exception {
         log.info("提交Describe任务");
         MidjourneyUser user = getUser();
         Integer mode = submitDescribeDTO.getMode();
@@ -253,7 +254,7 @@ public class MidjourneyController {
      */
     @PostMapping("/submit/blend")
     @NoSubmit
-    public Result<SubmitResult> submitBlend(@Validated @RequestBody SubmitBlendDTO submitBlendDTO) throws IOException {
+    public Result<SubmitResult> submitBlend(@Validated @RequestBody SubmitBlendDTO submitBlendDTO) throws Exception {
         log.info("提交Blend任务 dimensions:{},base64数组长度:{}", submitBlendDTO.getDimensions(), submitBlendDTO.getBase64Array().size());
         Integer mode = submitBlendDTO.getMode();
         MidjourneyUser user = getUser();
@@ -278,7 +279,7 @@ public class MidjourneyController {
      */
     @PostMapping("/submit/modal")
     @NoSubmit
-    public Result<SubmitResult> submitModal(@Validated @RequestBody SubmitModalDTO submitModalDTO) throws IOException {
+    public Result<SubmitResult> submitModal(@Validated @RequestBody SubmitModalDTO submitModalDTO) throws Exception {
         log.info("提交Modal任务,taskId:{},提示:{}",submitModalDTO.getTaskId(),submitModalDTO.getPrompt());
         Integer mode = submitModalDTO.getMode();
         MidjourneyUser user = getUser();
@@ -307,7 +308,7 @@ public class MidjourneyController {
      */
     @PostMapping("/submit/shorten")
     @NoSubmit
-    public Result<SubmitResult> submitShorten(@Validated @RequestBody SubmitShortenDTO submitShortenDTO) throws IOException {
+    public Result<SubmitResult> submitShorten(@Validated @RequestBody SubmitShortenDTO submitShortenDTO) throws Exception {
         log.info("提交Shorten任务 提示词:{}",submitShortenDTO.getPrompt());
         Integer mode = submitShortenDTO.getMode();
         MidjourneyUser user = getUser();
@@ -331,7 +332,7 @@ public class MidjourneyController {
      */
     @PostMapping("/submit/action")
     @NoSubmit
-    public Result<SubmitResult> action(@Validated @RequestBody SubmitActionDTO actionDTO) throws IOException {
+    public Result<SubmitResult> action(@Validated @RequestBody SubmitActionDTO actionDTO) throws Exception {
         log.info("任务id:{},执行动作:{}",actionDTO.getTaskId(),actionDTO.getCustomId());
         MidjourneyUser user = getUser();
         MidjourneyUserConversation midjourneyUserConversation = conversationMapper.selectOne(Wrappers.lambdaQuery(MidjourneyUserConversation.class).eq(MidjourneyUserConversation::getTaskId, actionDTO.getTaskId()).last("limit 1"));
@@ -361,7 +362,7 @@ public class MidjourneyController {
      */
     @PostMapping("/submit/seed")
     @NoSubmit
-    public Result<SubmitResult> seed(@Validated @RequestBody SubmitSeedDTO seedDTO) throws IOException {
+    public Result<SubmitResult> seed(@Validated @RequestBody SubmitSeedDTO seedDTO) throws Exception {
         log.info("任务id:{},执行动作:{}",seedDTO.getTaskId(), "seed");
         MidjourneyUser user = getUser();
         try {
@@ -377,7 +378,7 @@ public class MidjourneyController {
      * 查询会话列表
      */
     @GetMapping("/conversation/list")
-    public Result<SearchResult<MidjourneyUserConversation>> conversationList() throws IOException {
+    public Result<SearchResult<MidjourneyUserConversation>> conversationList() throws Exception {
         MidjourneyUser user = getUser();
         log.info("查询会话列表 userId:{}",user.getId());
         MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
@@ -403,7 +404,7 @@ public class MidjourneyController {
      */
     @PostMapping("/conversation/{id}/cancel")
     @NoSubmit
-    public Result<Void> conversationCancel(@PathVariable("id") Long id) throws IOException {
+    public Result<Void> conversationCancel(@PathVariable("id") Long id) throws Exception {
         MidjourneyUser user = getUser();
         log.info("取消任务 id:{}",id);
         midjourneyService.cancelConversation(user,id);
@@ -477,7 +478,7 @@ public class MidjourneyController {
      * 用户绘画记录
      */
     @GetMapping("/get/painting/record")
-    public Result<SearchResult<MidjourneyUserPaintingDayRecordView>> getPaintingRecord(String prompt, Boolean bookmark) throws IOException {
+    public Result<SearchResult<MidjourneyUserPaintingDayRecordView>> getPaintingRecord(String prompt, Boolean bookmark) throws Exception {
         MidjourneyUser user = getUser();
         log.info("用户绘画记录 userId:{},prompt:{},bookmark:{}", user.getId(), prompt, bookmark);
         String condition = String.format(" and mc.user_id = %s", user.getId());
@@ -509,7 +510,7 @@ public class MidjourneyController {
      * 获取settings
      */
     @GetMapping("/get/settings")
-    public Result<MidjourneyUserSettings> getSettings() throws IOException {
+    public Result<MidjourneyUserSettings> getSettings() throws Exception {
         MidjourneyUser user = getUser();
         return GatewayResponse.SUCCESS.newBuilder().toResult(midjourneyUserSettingsService.getById(user.getSettings().getId()));
     }
@@ -518,7 +519,7 @@ public class MidjourneyController {
      * 修改settings
      */
     @PostMapping("/put/settings")
-    public Result<MidjourneyUserSettings> upSettings(@RequestBody MidjourneyUserSettings settings) throws IOException {
+    public Result<MidjourneyUserSettings> upSettings(@RequestBody MidjourneyUserSettings settings) throws Exception {
         MidjourneyUser user = getUser();
         if (!user.getId().equals(settings.getUserId())) {
             throw BusinessRuntimeException.getInstance("参数错误");

+ 4 - 4
midjourney/src/main/java/com/yhlxj/web/wss/MidjourneyServerEndpoint.java

@@ -41,7 +41,7 @@ public class MidjourneyServerEndpoint {
      * @param session
      */
     @OnOpen
-    public void onOpen(Session session, @PathParam("userToken") String userToken, @PathParam("taskId") String taskId) throws IOException {
+    public void onOpen(Session session, @PathParam("userToken") String userToken, @PathParam("taskId") String taskId) throws Exception {
         log.info("[WS建立连接],token:{}, taskId:{}", userToken, taskId);
 
         session.setMaxIdleTimeout(TimeUnit.MINUTES.toMillis(60));
@@ -131,7 +131,7 @@ public class MidjourneyServerEndpoint {
      * @param error
      */
     @OnError
-    public void OnError(Session session, Throwable error, @PathParam("userToken") String userToken, @PathParam("taskId") String taskId) throws IOException {
+    public void OnError(Session session, Throwable error, @PathParam("userToken") String userToken, @PathParam("taskId") String taskId) throws Exception {
         log.error("[WS ONERROR],{}", error.getMessage());
         if (session.isOpen()) {
             session.close();
@@ -147,7 +147,7 @@ public class MidjourneyServerEndpoint {
      * @param session
      */
     @OnClose
-    public void OnClose(Session session, @PathParam("userToken") String userToken, @PathParam("taskId") String taskId) throws IOException {
+    public void OnClose(Session session, @PathParam("userToken") String userToken, @PathParam("taskId") String taskId) throws Exception {
 
         log.info("[WS连接关闭],{},{}", userToken, taskId);
         if (session.isOpen()) {
@@ -158,7 +158,7 @@ public class MidjourneyServerEndpoint {
         WSS_SESSION_MAP.remove(user.getId());
     }
 
-    public MidjourneyUser getUser(String userToken) {
+    public MidjourneyUser getUser(String userToken) throws Exception{
         MidjourneyService midjourneyService = SpringCtxUtils.getBean(MidjourneyServiceImpl.class);
         return midjourneyService.getUser(userToken);
     }

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/mange/cms/service/CacheService.java

@@ -1,4 +1,4 @@
-package com.cyksj.service.mange.cms.manager.service;
+package com.cyksj.service.mange.cms.service;
 
 
 import com.cyksj.model.entity.CmsMenu;

+ 2 - 2
netflix-service/src/main/java/com/cyksj/service/mange/cms/service/impl/CacheServiceImpl.java

@@ -1,4 +1,4 @@
-package com.cyksj.service.mange.cms.manager.service.impl;
+package com.cyksj.service.mange.cms.service.impl;
 
 
 import com.cyksj.mapper.manage.cms.CmsMenuMapper;
@@ -9,7 +9,7 @@ import com.cyksj.model.entity.CmsRole;
 import com.cyksj.model.entity.CmsUser;
 import com.cyksj.model.views.CmsUserVO;
 import com.cyksj.redis.RedisService;
-import com.cyksj.service.mange.cms.manager.service.CacheService;
+import com.cyksj.service.mange.cms.service.CacheService;
 import com.fasterxml.jackson.databind.JavaType;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.RequiredArgsConstructor;

+ 1 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/cms/CmsAdminUserController.java

@@ -27,7 +27,7 @@ import com.cyksj.model.views.CmsUserVO;
 import com.cyksj.service.mange.CmsAccountService;
 import com.cyksj.service.mange.business.UserBusinessRateService;
 import com.cyksj.service.mange.cms.CmsUserManager;
-import com.cyksj.service.mange.cms.manager.service.CacheService;
+import com.cyksj.service.mange.cms.service.CacheService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.util.MapBuilder;