zoujiajian 2 rokov pred
rodič
commit
42f99ffad7

+ 3 - 2
netflix-service/src/main/java/com/cyksj/service/chatgpt/ChatGptAccountService.java

@@ -23,8 +23,9 @@ public interface ChatGptAccountService {
 
     String getLoginUrl(Long userId, Long relationId);
 
-    String getCarLoginUrl(Long userId, Long relationId, String carId);
-    String getCarLoginUrlWithToken(String userToken, String carId);
+    String getCarLoginUrl(String domain, Long userId, Long relationId, String carId);
+
+    String getCarLoginUrlWithToken(String domain, String userToken, String carId);
 
     ChatgptUser findByUserTokenAndExpireTimeAfter(String userToken, LocalDateTime now);
 

+ 32 - 17
netflix-service/src/main/java/com/cyksj/service/chatgpt/impl/ChatGptAccountServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.lang.UUID;
 import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.http.HttpUtil;
@@ -252,40 +253,33 @@ public class ChatGptAccountServiceImpl implements ChatGptAccountService {
      * @return
      */
     @Override
-    public String getCarLoginUrl(Long userId, Long relationId, String carId) {
+    public String getCarLoginUrl(String domain, Long userId, Long relationId, String carId) {
         GroupsRelation groupsRelation = getGroupsRelation(userId, relationId);
         GroupsTrips groupsTrips = getGroupsTrips(groupsRelation);
         GoodsDonSku goodsDonSku = skuMapper.selectById(groupsTrips.getSkuId());
         if (goodsDonSku != null && goodsDonSku.getIsMirror() && goodsDonSku.getIsCar()) {
             ChatgptUser chatgptUser = getChatgptCarUser(userId, relationId, groupsRelation, goodsDonSku);
-            String DOMAIN = "https://chat.galaxydvd.com";
-            try {
-                SysConfig sysConfig = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, goodsDonSku.getId() == 444 ? "zhihu_gpt_domain" : "mirror_gpt_domain"));
-                if (sysConfig != null) {
-                    String sysValue = sysConfig.getSysValue();
-                    if (JSONUtil.isJsonArray(sysValue)) {
-                        List<String> domainList = JSONUtil.parseArray(sysValue).toList(String.class);
-                        DOMAIN = domainList.get(RandomUtil.randomInt(domainList.size()));
-                    }
-                }
-            } catch (Exception e) {
-                log.error("随机抽取域名错误. msg:{}", StringUtil.getErrorText(e));
-            }
-
+            String DOMAIN = getGptDomain(domain, goodsDonSku);
             log.info("domain:{},用户:{},所在车次:{},座位id:{},在{}获取跳转GPT镜像的登录url", DOMAIN, userId, groupsTrips.getId(), relationId, DateTime.now());
             return DOMAIN + "/auth/logintoken?carid=" + carId + "&usertoken=" + chatgptUser.getUserToken();
         } else {
             throw BusinessRuntimeException.getInstance("服务器出了点问题");
         }
     }
+
     /**
      * 根据userToken获取车队登录url
      */
     @Override
-    public String getCarLoginUrlWithToken(String userToken, String carId) {
+    public String getCarLoginUrlWithToken(String domain, String userToken, String carId) {
         ChatgptUser chatgptUser = getCarChatGptUserWithToken(userToken);
         if (chatgptUser != null) {
-            String DOMAIN = "https://chat.galaxydvd.com";
+            ChatgptUserTokenPrepare chatgptUserTokenPrepare = chatgptUserTokenPrepareMapper.selectOne(Wrappers.lambdaQuery(ChatgptUserTokenPrepare.class)
+                    .eq(ChatgptUserTokenPrepare::getUserToken, userToken)
+                    .last("limit 1"));
+            Long skuId = chatgptUserTokenPrepare.getSkuId();
+            GoodsDonSku goodsDonSku = skuMapper.selectById(skuId);
+            String DOMAIN = getGptDomain(domain, goodsDonSku);
             log.info("domain:{},渠道用户:{},在{}获取跳转GPT镜像的登录url", DOMAIN, userToken, DateTime.now());
             return DOMAIN + "/auth/logintoken?carid=" + carId + "&usertoken=" + chatgptUser.getUserToken();
         } else {
@@ -955,5 +949,26 @@ public class ChatGptAccountServiceImpl implements ChatGptAccountService {
         });
     }
 
+
+    public String getGptDomain(String domain, GoodsDonSku goodsDonSku) {
+        String DOMAIN = domain;
+        if (StrUtil.isEmpty(DOMAIN)) {
+            DOMAIN = "https://chat.galaxydvd.com";
+            try {
+                SysConfig sysConfig = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, goodsDonSku != null && goodsDonSku.getId() == 444 ? "zhihu_gpt_domain" : "mirror_gpt_domain"));
+                if (sysConfig != null) {
+                    String sysValue = sysConfig.getSysValue();
+                    if (JSONUtil.isJsonArray(sysValue)) {
+                        List<String> domainList = JSONUtil.parseArray(sysValue).toList(String.class);
+                        DOMAIN = domainList.get(RandomUtil.randomInt(domainList.size()));
+                    }
+                }
+            } catch (Exception e) {
+                log.error("随机抽取域名错误. msg:{}", StringUtil.getErrorText(e));
+            }
+        }
+        return DOMAIN;
+    }
+
 }
 

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/claude/ClaudeService.java

@@ -26,7 +26,7 @@ public interface ClaudeService {
 
     ClaudeUser checkCarAccount(Long userId, Long relationId);
 
-    String getCarLoginUrl(Long userId, Long relationId, String carId);
+    String getCarLoginUrl(String domain, Long userId, Long relationId, String carId);
 
     Long getConversationCount(String userToken, Long limitTime);
 

+ 15 - 11
netflix-service/src/main/java/com/cyksj/service/claude/impl/ClaudeServiceImpl.java

@@ -3,6 +3,7 @@ package com.cyksj.service.claude.impl;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.lang.UUID;
 import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.exception.BusinessRuntimeException;
@@ -169,7 +170,7 @@ public class ClaudeServiceImpl implements ClaudeService {
 
 
     @Override
-    public String getCarLoginUrl(Long userId, Long relationId, String carId) {
+    public String getCarLoginUrl(String domain, Long userId, Long relationId, String carId) {
 
         GroupsRelation groupsRelation = getGroupsRelation(userId, relationId);
         GroupsTrips groupsTrips = getGroupsTrips(groupsRelation);
@@ -177,18 +178,21 @@ public class ClaudeServiceImpl implements ClaudeService {
         if (goodsDonSku != null && goodsDonSku.getIsMirror() && goodsDonSku.getIsCar()) {
             ClaudeUser claudeUser = getClaudeUser(userId, relationId, groupsRelation, goodsDonSku);
 
-            String DOMAIN = "https://claudeplus.com.cn";
-            try {
-                SysConfig sysConfig = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "mirror_claude_domain"));
-                if (sysConfig != null) {
-                    String sysValue = sysConfig.getSysValue();
-                    if (JSONUtil.isJsonArray(sysValue)) {
-                        List<String> domainList = JSONUtil.parseArray(sysValue).toList(String.class);
-                        DOMAIN = domainList.get(RandomUtil.randomInt(domainList.size()));
+            String DOMAIN = domain;
+            if (StrUtil.isEmpty(DOMAIN)) {
+                DOMAIN = "https://claudeplus.com.cn";
+                try {
+                    SysConfig sysConfig = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "mirror_claude_domain"));
+                    if (sysConfig != null) {
+                        String sysValue = sysConfig.getSysValue();
+                        if (JSONUtil.isJsonArray(sysValue)) {
+                            List<String> domainList = JSONUtil.parseArray(sysValue).toList(String.class);
+                            DOMAIN = domainList.get(RandomUtil.randomInt(domainList.size()));
+                        }
                     }
+                } catch (Exception e) {
+                    log.error("随机抽取域名错误. msg:{}", StringUtil.getErrorText(e));
                 }
-            } catch (Exception e) {
-                log.error("随机抽取域名错误. msg:{}", StringUtil.getErrorText(e));
             }
             log.info("domain:{},用户:{},所在车次:{},座位id:{},在{}获取跳转Claude镜像的登录url", DOMAIN, userId, groupsTrips.getId(), relationId, DateTime.now());
             return DOMAIN + "/auth/logintoken?carid=" + carId + "&usertoken=" + claudeUser.getUserToken();

+ 30 - 8
netflix-web/src/main/java/com/cyksj/web/controller/mirror/MirrorController.java

@@ -2,6 +2,9 @@ package com.cyksj.web.controller.mirror;
 
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.exception.BusinessRuntimeException;
@@ -20,6 +23,7 @@ import com.cyksj.service.chatgpt.ChatGptAccountService;
 import com.cyksj.service.claude.ClaudeService;
 import com.cyksj.service.luma.LumaService;
 import com.cyksj.service.midjourney.MidjourneyAccountService;
+import com.cyksj.service.sys.SysConfigService;
 import com.cyksj.web.util.StpUserUtil;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
@@ -89,6 +93,8 @@ public class MirrorController {
 
     private final LumaService lumaService;
 
+    private final SysConfigService sysConfigService;
+
 
     /**
      * GPT车票跳转登录
@@ -137,10 +143,10 @@ public class MirrorController {
      * @param carId 车队id
      */
     @GetMapping("/chatGptMirror/{relationId}/{carId}")
-    public Result<String> chatGPtCarLogin(@PathVariable Long relationId, @PathVariable String carId) throws IOException {
+    public Result<String> chatGPtCarLogin(String domain, @PathVariable Long relationId, @PathVariable String carId) throws IOException {
         Long userId = StpUserUtil.getLoginIdAsLong();
         chatGptAccountService.checkCarAccount(userId, relationId);
-        String url = chatGptAccountService.getCarLoginUrl(userId, relationId, carId);
+        String url = chatGptAccountService.getCarLoginUrl(domain, userId, relationId, carId);
         return GatewayResponse.SUCCESS.newBuilder().toResult(url);
     }
 
@@ -332,9 +338,9 @@ public class MirrorController {
      * @param carId 车队id
      */
     @GetMapping("/chatGptMirrorWithToken/{userToken}/{carId}")
-    public Result<String> chatGPtCarLoginWithToken(@PathVariable String userToken, @PathVariable String carId) {
+    public Result<String> chatGPtCarLoginWithToken(String domain, @PathVariable String userToken, @PathVariable String carId) {
         chatGptAccountService.checkCarAccountWithToken(userToken);
-        String url = chatGptAccountService.getCarLoginUrlWithToken(userToken, carId);
+        String url = chatGptAccountService.getCarLoginUrlWithToken(domain, userToken, carId);
         return GatewayResponse.SUCCESS.newBuilder().toResult(url);
     }
 
@@ -374,10 +380,26 @@ public class MirrorController {
      * @param relationId 车票id
      */
     @GetMapping("/midjourneyMirror/{relationId}")
-    public Result<String> midjourneyMirror(@PathVariable Long relationId) {
+    public Result<String> midjourneyMirror(String domain, @PathVariable Long relationId) {
         Long userId = StpUserUtil.getLoginIdAsLong();
         MidjourneyUser midjourneyUser = midjourneyAccountService.getMidjourneyUserToken(userId, relationId);
-        return GatewayResponse.SUCCESS.newBuilder().toResult(midjourneyHost + (EnvCommonService.active_prd.equals(envCommonService.getEnv()) ? "/8082":"/8083") +"/api/applets/midjourney/midjourneyMirrorWithToken/" + midjourneyUser.getUserToken());
+        String DOMAIN = domain;
+        if (StrUtil.isEmpty(DOMAIN)) {
+            DOMAIN = midjourneyHost;
+            try {
+                SysConfig sysConfig = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "mirror_mj_discord_domain"));
+                if (sysConfig != null) {
+                    String sysValue = sysConfig.getSysValue();
+                    if (JSONUtil.isJsonArray(sysValue)) {
+                        List<String> domainList = JSONUtil.parseArray(sysValue).toList(String.class);
+                        DOMAIN = domainList.get(RandomUtil.randomInt(domainList.size()));
+                    }
+                }
+            } catch (Exception e) {
+                log.error("随机抽取域名错误. msg:{}", StringUtil.getErrorText(e));
+            }
+        }
+        return GatewayResponse.SUCCESS.newBuilder().toResult(DOMAIN + (EnvCommonService.active_prd.equals(envCommonService.getEnv()) ? "/8082" : "/8083") + "/api/applets/midjourney/midjourneyMirrorWithToken/" + midjourneyUser.getUserToken());
     }
 
     @GetMapping("/midjourneyMirrorWithToken/{userToken}")
@@ -434,10 +456,10 @@ public class MirrorController {
      * @param carId 车队id
      */
     @GetMapping("/claudeMirror/{relationId}/{carId}")
-    public Result<String> claudeCarLogin(@PathVariable Long relationId, @PathVariable String carId) throws IOException {
+    public Result<String> claudeCarLogin(String domain, @PathVariable Long relationId, @PathVariable String carId) throws IOException {
         Long userId = StpUserUtil.getLoginIdAsLong();
         claudeService.checkCarAccount(userId, relationId);
-        String url = claudeService.getCarLoginUrl(userId, relationId, carId);
+        String url = claudeService.getCarLoginUrl(domain, userId, relationId, carId);
         return GatewayResponse.SUCCESS.newBuilder().toResult(url);
     }