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