package com.ard.work.service.impl; import com.ard.common.annotation.DataScope; 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.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.IArdServerInfoService; import lombok.extern.slf4j.Slf4j; 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 ArdServerInfoServiceImpl implements IArdServerInfoService { @Resource private ArdServerInfoMapper ardServerInfoMapper; @Resource private TyClient tyClient; @Resource private TyTcpClientManager tyTcpClientManager; /** * 查询服务器管理 * * @param id 服务器管理主键 * @return 服务器管理 */ @Override public ArdServerInfo selectArdServerInfoById(String id) { return ardServerInfoMapper.selectArdServerInfoById(id); } /** * 查询服务器管理列表 * * @param ardServerInfo 服务器管理 * @return 服务器管理 */ @Override @DataScope(deptAlias = "d", userAlias = "u") public List selectArdServerInfoList(ArdServerInfo ardServerInfo) { return ardServerInfoMapper.selectArdServerInfoList(ardServerInfo); } /** * 新增服务器管理 * * @param ardServerInfo 服务器管理 * @return 结果 */ @Override public int insertArdServerInfo(ArdServerInfo ardServerInfo) { ardServerInfo.setId(IdUtils.fastUUID()); int i = ardServerInfoMapper.insertArdServerInfo(ardServerInfo); if (i > 0) { tyTcpClientManager.connectServer(ardServerInfo); } return i; } /** * 修改服务器管理 * * @param ardServerInfo 服务器管理 * @return 结果 */ @Override public int updateArdServerInfo(ArdServerInfo ardServerInfo) { int i = ardServerInfoMapper.updateArdServerInfo(ardServerInfo); if (i > 0) { tyTcpClientManager.connectServer(ardServerInfo); } return i; } /** * 批量删除服务器管理 * * @param ids 需要删除的服务器管理主键 * @return 结果 */ @Override public int deleteArdServerInfoByIds(String[] ids) { int i = ardServerInfoMapper.deleteArdServerInfoByIds(ids); if (i > 0) { for (String id : ids) { //移除tcp连接 tyTcpClientManager.disconnectServer(id); } } return i; } /** * 删除服务器管理信息 * * @param id 服务器管理主键 * @return 结果 */ @Override public int deleteArdServerInfoById(String id) { return ardServerInfoMapper.deleteArdServerInfoById(id); } /** * 根据 id 获取 服务器http接口token */ @Override public AccessTokenReceiver getAccessToken(String id) { long timeStamp = getTimeStamp(); AccessTokenReceiver accessToken = null; ArdServerInfo serverInfo = selectArdServerInfoById(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; } /** * 修改服务器状态 */ @Override public int updateServerStatus(String id,String status) { return ardServerInfoMapper.updateServerStatus(id,status); } @Override public List getServerIdsList() { return ardServerInfoMapper.getServerIdsList(); } 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(); } }