package com.vci.ubcs.omd.repeater;
|
|
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
|
import com.alibaba.cloud.nacos.NacosServiceManager;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.nacos.api.annotation.NacosInjected;
|
import com.alibaba.nacos.api.exception.NacosException;
|
import com.alibaba.nacos.api.naming.NamingService;
|
import com.alibaba.nacos.api.naming.pojo.Instance;
|
import com.vci.ubcs.omd.vo.OmdBtmTypeVO;
|
import org.apache.http.Header;
|
import org.apache.http.client.methods.CloseableHttpResponse;
|
import org.apache.http.client.methods.HttpPost;
|
import org.apache.http.entity.StringEntity;
|
import org.apache.http.impl.client.CloseableHttpClient;
|
import org.apache.http.impl.client.HttpClientBuilder;
|
import org.springblade.core.launch.constant.AppConstant;
|
import org.springblade.core.secure.utils.AuthUtil;
|
import org.springblade.core.tool.api.R;
|
import org.springblade.core.tool.utils.StringPool;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Repository;
|
import org.springframework.web.client.RestTemplate;
|
|
import javax.annotation.PostConstruct;
|
|
/**
|
* Description: 领域转发器
|
*
|
* @author LiHang
|
* @date 2023/4/25
|
*/
|
@Repository
|
public class DomainRepeater {
|
|
/**
|
* 控制器路径
|
*/
|
public static final String API_PREFIX = "ddl";
|
|
/**
|
* 新增或修改的转发路径名称
|
*/
|
public static final String API_SUBMIT_BTM_TYPE = API_PREFIX + StringPool.SLASH +"submitBtmType";
|
|
/**
|
* 表名获取表信息
|
*/
|
public static final String API_GET_TABLE_INFO = API_PREFIX + StringPool.SLASH +"getTableColumnByTableName";
|
|
/**
|
* 获取全部表信息
|
*/
|
public static final String API_GET_ALL_TABLE_INFO = API_PREFIX + StringPool.SLASH +"getAllTableInfo";
|
|
@NacosInjected
|
private NamingService nacosNamingService;
|
|
@Component
|
public static class SINGLE{
|
@Autowired
|
private NacosServiceManager nacosServiceManager;
|
|
@Autowired
|
private NacosDiscoveryProperties nacosDiscoveryProperties;
|
|
private static NamingService nacosNamingService;
|
|
@PostConstruct
|
public NamingService build(){
|
nacosNamingService = nacosServiceManager.getNamingService(nacosDiscoveryProperties.getNacosProperties());
|
return nacosNamingService;
|
}
|
}
|
|
private RestTemplate restTemplate = new RestTemplate();
|
|
public Object submitBtmType (String serviceName, OmdBtmTypeVO omdBtmTypeVO) throws NacosException {
|
|
if (nacosNamingService == null){
|
nacosNamingService = SINGLE.nacosNamingService;
|
}
|
Instance service = nacosNamingService.selectOneHealthyInstance(AppConstant.APPLICATION_GATEWAY_NAME);
|
try {
|
String url = "http://" + service.getIp() +StringPool.COLON+ service.getPort() + StringPool.SLASH + serviceName + StringPool.SLASH + API_SUBMIT_BTM_TYPE;
|
HttpPost httpPost = buildPost(url);
|
httpPost.setEntity(new StringEntity(JSON.toJSONString(omdBtmTypeVO),"utf-8"));
|
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
|
CloseableHttpResponse response = httpClient.execute(httpPost);
|
return response;
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
}
|
|
private HttpPost buildPost(String url){
|
HttpPost httpPost = new HttpPost(url);
|
httpPost.setHeader("Content-Type","application/json;charset=UTF-8");
|
httpPost.setHeader("Blade-Auth", AuthUtil.getHeader());
|
return httpPost;
|
}
|
}
|