| | |
| | | package com.ard.work.service.impl; |
| | | |
| | | import com.ard.common.utils.uuid.IdUtils; |
| | | import com.ard.work.component.forest.TyClient; |
| | | 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; |
| | | |
| | | /** |
| | | * 查询服务器管理 |
| | | * |
| | | * |
| | | * @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 结果 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 修改服务器管理 |
| | | * |
| | | * |
| | | * @param ardServerInfo 服务器管理 |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public int updateArdServerManagement(ArdServerInfo ardServerInfo) |
| | | { |
| | | public int updateArdServerManagement(ArdServerInfo ardServerInfo) { |
| | | return ardServerInfoMapper.updateArdServerManagement(ardServerInfo); |
| | | } |
| | | |
| | | /** |
| | | * 批量删除服务器管理 |
| | | * |
| | | * |
| | | * @param ids 需要删除的服务器管理主键 |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public int deleteArdServerManagementByIds(String[] ids) |
| | | { |
| | | public int deleteArdServerManagementByIds(String[] ids) { |
| | | return ardServerInfoMapper.deleteArdServerManagementByIds(ids); |
| | | } |
| | | |
| | | /** |
| | | * 删除服务器管理信息 |
| | | * |
| | | * |
| | | * @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 { |
| | | String baseUrl = "http://" + serverInfo.getHost() + ":" + serverInfo.getHttpPort(); |
| | | TyHttpCommonReceiver<AccessTokenReceiver> getTokenRes = tyClient.getToken(baseUrl, 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(); |
| | | } |
| | | |
| | | /** |
| | | * 根据 baseUrl 获取 服务器http接口token(给拦截器使用) |
| | | */ |
| | | @Override |
| | | public AccessTokenReceiver getAccessTokenByBaseUrl(String baseUrl) { |
| | | // 找到对应的 serverId |
| | | List<ArdServerInfo> servers = selectArdServerManagementList(new ArdServerInfo()); |
| | | for (ArdServerInfo server : servers) { |
| | | String _baseUrl = "http://" + server.getHost() + ":" + server.getHttpPort(); |
| | | if (_baseUrl.equals(baseUrl)) { |
| | | return getAccessToken(server.getId()); |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |