chenbiao 1 год назад
Родитель
Сommit
c789b87599

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/grok/GrokService.java

@@ -17,4 +17,6 @@ public interface GrokService {
     GrokUser checkCarAccount(Long userId, Long relationId);
 
     Long getConversationCount(String userToken, Long limitTime);
+
+    String getCarLoginUrl(String domain, Long userId, Long relationId);
 }

+ 38 - 0
netflix-service/src/main/java/com/cyksj/service/grok/impl/GrokServiceImpl.java

@@ -1,8 +1,12 @@
 package com.cyksj.service.grok.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.http.HttpUtil;
 import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.util.StringUtil;
@@ -10,6 +14,7 @@ import com.cyksj.mapper.*;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.views.GrokUserView;
 import com.cyksj.service.grok.GrokService;
+import com.cyksj.service.sys.SysConfigService;
 import com.cyksj.service.user.UserBindRelationService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -43,6 +48,8 @@ public class GrokServiceImpl implements GrokService {
 
     private final GroupsMapper groupsMapper;
 
+    private final SysConfigService sysConfigService;
+
     @Override
     public GrokUserView getUserInfo(long userId, Long relationId) {
         GrokUser grokUser = checkCarAccount(userId, relationId);
@@ -92,6 +99,37 @@ public class GrokServiceImpl implements GrokService {
         return new BigDecimal(count).divide(BigDecimal.valueOf(4000),0, RoundingMode.HALF_UP).longValue();
     }
 
+    @Override
+    public String getCarLoginUrl(String domain, Long userId, Long relationId) {
+
+        GroupsRelation groupsRelation = getGroupsRelation(userId, relationId);
+        GroupsTrips groupsTrips = getGroupsTrips(groupsRelation);
+        GoodsDonSku goodsDonSku = skuMapper.selectById(groupsTrips.getSkuId());
+        if (goodsDonSku != null && goodsDonSku.getIsMirror() && goodsDonSku.getIsCar()) {
+            GrokUser grokUser = getGrokUser(userId, relationId, groupsRelation, goodsDonSku);
+
+            String DOMAIN = domain;
+            if (StrUtil.isEmpty(DOMAIN)) {
+                DOMAIN = "https://grok.bestaistore.com";
+                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));
+                }
+            }
+            log.info("domain:{},用户:{},所在车次:{},座位id:{},在{}获取跳转Grok镜像的登录url", DOMAIN, userId, groupsTrips.getId(), relationId, DateTime.now());
+            return DOMAIN + "/signtoken" + "?usertoken=" + grokUser.getUserToken();
+        } else {
+            throw BusinessRuntimeException.getInstance("服务器出了点问题");
+        }
+    }
 
     /**
      * 获取车位信息

+ 11 - 0
netflix-web/src/main/java/com/cyksj/web/controller/mirror/MirrorController.java

@@ -560,5 +560,16 @@ public class MirrorController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(user);
     }
 
+    /**
+     * grok车队跳转登录
+     *
+     */
+    @GetMapping("/grok/{relationId}/")
+    public Result<String> claudeCarLogin(String domain, @PathVariable Long relationId) throws IOException {
+        Long userId = StpUserUtil.getLoginIdAsLong();
+        grokService.checkCarAccount(userId, relationId);
+        String url = grokService.getCarLoginUrl(domain, userId, relationId);
+        return GatewayResponse.SUCCESS.newBuilder().toResult(url);
+    }
 
 }