From 8aa9e121554b84735c8ec6139bd095ea3acb05e7 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Tue, 14 Oct 2025 16:10:49 +0800
Subject: [PATCH] 更改六合边缘服务器动态连接

---
 ard-work/src/main/java/com/ard/work/service/impl/ArdServerServiceImpl.java |  101 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 80 insertions(+), 21 deletions(-)

diff --git a/ard-work/src/main/java/com/ard/work/service/impl/ArdServerServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdServerServiceImpl.java
index 31a4650..dddd4ab 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/ArdServerServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/ArdServerServiceImpl.java
@@ -1,95 +1,154 @@
 package com.ard.work.service.impl;
 
 import com.ard.common.utils.uuid.IdUtils;
+import com.ard.work.component.forest.TyClient;
+import com.ard.work.component.netty.TyTcpClientManager;
+import com.ard.work.domain.cache.TyTcpServerCache;
+import com.ard.work.domain.dto.TokenDTO;
 import com.ard.work.domain.entity.ArdServerInfo;
+import com.ard.work.domain.receiver.AccessTokenReceiver;
+import com.ard.work.domain.receiver.TyHttpCommonReceiver;
 import com.ard.work.mapper.ArdServerInfoMapper;
 import com.ard.work.service.IArdServerService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.DigestUtils;
 
+import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 /**
  * 服务器管理Service业务层处理
- * 
+ *
  * @author xia
  * @date 2025-10-10
  */
+@Slf4j
 @Service
 public class ArdServerServiceImpl implements IArdServerService {
 
-    @Autowired
+    @Resource
     private ArdServerInfoMapper ardServerInfoMapper;
+    @Resource
+    private TyClient tyClient;
+    @Resource
+    private TyTcpClientManager tyTcpClientManager;
 
     /**
      * 查询服务器管理
-     * 
+     *
      * @param id 服务器管理主键
      * @return 服务器管理
      */
     @Override
-    public ArdServerInfo selectArdServerManagementById(String id)
-    {
+    public ArdServerInfo selectArdServerManagementById(String id) {
         return ardServerInfoMapper.selectArdServerManagementById(id);
     }
 
     /**
      * 查询服务器管理列表
-     * 
+     *
      * @param ardServerInfo 服务器管理
      * @return 服务器管理
      */
     @Override
-    public List<ArdServerInfo> selectArdServerManagementList(ArdServerInfo ardServerInfo)
-    {
+    public List<ArdServerInfo> selectArdServerManagementList(ArdServerInfo ardServerInfo) {
         return ardServerInfoMapper.selectArdServerManagementList(ardServerInfo);
     }
 
     /**
      * 新增服务器管理
-     * 
+     *
      * @param ardServerInfo 服务器管理
      * @return 结果
      */
     @Override
     public int insertArdServerManagement(ArdServerInfo ardServerInfo) {
         ardServerInfo.setId(IdUtils.fastUUID());
-        return ardServerInfoMapper.insertArdServerManagement(ardServerInfo);
+        int i = ardServerInfoMapper.insertArdServerManagement(ardServerInfo);
+        if (i > 0) {
+            tyTcpClientManager.connectServer(ardServerInfo);
+        }
+        return i;
     }
 
     /**
      * 修改服务器管理
-     * 
+     *
      * @param ardServerInfo 服务器管理
      * @return 结果
      */
     @Override
-    public int updateArdServerManagement(ArdServerInfo ardServerInfo)
-    {
-        return ardServerInfoMapper.updateArdServerManagement(ardServerInfo);
+    public int updateArdServerManagement(ArdServerInfo ardServerInfo) {
+        int i = ardServerInfoMapper.updateArdServerManagement(ardServerInfo);
+        if (i > 0) {
+            tyTcpClientManager.connectServer(ardServerInfo);
+        }
+        return i;
     }
 
     /**
      * 批量删除服务器管理
-     * 
+     *
      * @param ids 需要删除的服务器管理主键
      * @return 结果
      */
     @Override
-    public int deleteArdServerManagementByIds(String[] ids)
-    {
-        return ardServerInfoMapper.deleteArdServerManagementByIds(ids);
+    public int deleteArdServerManagementByIds(String[] ids) {
+        int i = ardServerInfoMapper.deleteArdServerManagementByIds(ids);
+        if (i > 0) {
+            for (String id : ids) {
+                //移除tcp连接
+                tyTcpClientManager.disconnectServer(id);
+            }
+        }
+        return i;
     }
 
     /**
      * 删除服务器管理信息
-     * 
+     *
      * @param id 服务器管理主键
      * @return 结果
      */
     @Override
-    public int deleteArdServerManagementById(String id)
-    {
+    public int deleteArdServerManagementById(String id) {
         return ardServerInfoMapper.deleteArdServerManagementById(id);
     }
+
+    /**
+     * 根据 id 获取 服务器http接口token
+     */
+    @Override
+    public AccessTokenReceiver getAccessToken(String id) {
+        long timeStamp = getTimeStamp();
+        AccessTokenReceiver accessToken = null;
+        ArdServerInfo serverInfo = selectArdServerManagementById(id);
+        // 准备请求的json
+        TokenDTO gtd = TokenDTO.builder()
+                .accessKeyId(serverInfo.getAccessKeyId())
+                .encryptStr(getEncryptStr(serverInfo, timeStamp))
+                .timeStamp(timeStamp)
+                .build();
+        try {
+            TyHttpCommonReceiver<AccessTokenReceiver> getTokenRes = tyClient.getToken(id, gtd);
+            accessToken = getTokenRes.getContent();
+        } catch (Exception e) {
+            log.error("获取token失败:{}", e.getMessage());
+        }
+        //{"state":0,"content":{"companyId":4127,"accessToken":"sOONT0MMVdoKcMBibb40xxgrUrq0Hw9RFiajic3KOzoNtk"}}
+        return accessToken;
+    }
+
+    private String getEncryptStr(ArdServerInfo serverInfo, long timeStamp) {
+        String sb = serverInfo.getAccessKeyId() + serverInfo.getAccessKeySecret() + timeStamp;
+        return DigestUtils.md5DigestAsHex(sb.getBytes());
+    }
+
+    private long getTimeStamp() {
+        return new Date().getTime();
+    }
+
 }

--
Gitblit v1.9.3