فهرست منبع

Merge branch 'grok_inner' into pre

# Conflicts:
#	netflix-service/src/main/java/com/cyksj/service/grok/GrokService.java
#	netflix-service/src/main/java/com/cyksj/service/grok/impl/GrokServiceImpl.java
#	netflix-web/src/main/java/com/cyksj/web/controller/mirror/MirrorController.java
zoujiajian 2 ماه پیش
والد
کامیت
9f95eb8cdf

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

@@ -24,6 +24,8 @@ public interface GrokService {
 
     String getCarLoginUrl(String domain, Long userId, Long relationId);
 
+    String getCarLoginUrl(String domain, Long userId, Long relationId, String carId);
+
     SearchResult<GrokCarInfoView> getCarInfoList(Map<String, String[]> parameterMap, Integer limit);
 
     GrokConversationCountResponse getConversationCountDetail(String userToken);

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

@@ -141,6 +141,37 @@ public class GrokServiceImpl implements GrokService {
         }
     }
 
+    @Override
+    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()) {
+            GrokUser grokUser = getGrokUser(userId, relationId, groupsRelation, goodsDonSku);
+
+            String DOMAIN = domain;
+            if (StrUtil.isEmpty(DOMAIN)) {
+                DOMAIN = "https://groknode.nf.video";
+                try {
+                    SysConfig sysConfig = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "mirror_xy_grok_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:{},车队id:{},在{}获取跳转Grok镜像车队的登录url", DOMAIN, userId, groupsTrips.getId(), relationId, carId, DateTime.now());
+            return DOMAIN + "/auth/login?userToken=" + grokUser.getUserToken() + "&carid=" + carId;
+        } else {
+            throw BusinessRuntimeException.getInstance("服务器出了点问题");
+        }
+    }
+
     @Override
     public SearchResult<GrokCarInfoView> getCarInfoList(Map<String, String[]> parameterMap, Integer limit) {
         Map<String, String[]> params = new HashMap<>(parameterMap);

+ 14 - 1
netflix-web/src/main/java/com/cyksj/web/controller/mirror/MirrorController.java

@@ -408,7 +408,7 @@ public class MirrorController {
      * @return 登陆结果
      */
     @RequestMapping("/claude/oauth")
-    public Result<String>  claudeOauth(@RequestParam("usertoken") String userToken, @RequestParam("carid") String carId) {
+    public Result<String> claudeOauth(@RequestParam("usertoken") String userToken, @RequestParam("carid") String carId) {
         try {
             log.info("用户通过userToken:{}访问claude镜像车队carId:{}", userToken, carId);
             ClaudeUser user = claudeService.findByUserTokenAndExpireTimeAfter(userToken, LocalDateTime.now());
@@ -637,6 +637,19 @@ public class MirrorController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(url);
     }
 
+    /**
+     * grok根据车队id跳转登录
+     *
+     * @param carId 车队id
+     */
+    @GetMapping("/grok/{relationId}/{carId}")
+    public Result<String> grokCarLoginByCarId(String domain, @PathVariable Long relationId, @PathVariable String carId) throws IOException {
+        Long userId = StpUserUtil.getLoginIdAsLong();
+        grokService.checkCarAccount(userId, relationId);
+        String url = grokService.getCarLoginUrl(domain, userId, relationId, carId);
+        return GatewayResponse.SUCCESS.newBuilder().toResult(url);
+    }
+
     /**
      * Grok car list.
      */