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 { @Resource private ArdServerInfoMapper ardServerInfoMapper; @Resource private TyClient tyClient; @Resource private TyTcpClientManager tyTcpClientManager; /** * 查询服务器管理 * * @param id 服务器管理主键 * @return 服务器管理 */ @Override public ArdServerInfo selectArdServerManagementById(String id) { return ardServerInfoMapper.selectArdServerManagementById(id); } /** * 查询服务器管理列表 * * @param ardServerInfo 服务器管理 * @return 服务器管理 */ @Override public List selectArdServerManagementList(ArdServerInfo ardServerInfo) { return ardServerInfoMapper.selectArdServerManagementList(ardServerInfo); } /** * 新增服务器管理 * * @param ardServerInfo 服务器管理 * @return 结果 */ @Override public int insertArdServerManagement(ArdServerInfo ardServerInfo) { ardServerInfo.setId(IdUtils.fastUUID()); int i = ardServerInfoMapper.insertArdServerManagement(ardServerInfo); if (i > 0) { tyTcpClientManager.connectServer(ardServerInfo); } return i; } /** * 修改服务器管理 * * @param ardServerInfo 服务器管理 * @return 结果 */ @Override 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) { 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) { 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 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(); } }