From 3579af2945dd38d841a23cd340acd474bb63773a Mon Sep 17 00:00:00 2001
From: lihang <lihang@vci-tech.com>
Date: 星期四, 04 五月 2023 18:02:01 +0800
Subject: [PATCH] 业务类型与DDL服务相关的添加

---
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/repeater/DomainRepeater.java |  190 +++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 156 insertions(+), 34 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/repeater/DomainRepeater.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/repeater/DomainRepeater.java
index 2ee2237..24e772c 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/repeater/DomainRepeater.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/repeater/DomainRepeater.java
@@ -6,7 +6,10 @@
 import com.alibaba.nacos.api.exception.NacosException;
 import com.alibaba.nacos.api.naming.NamingService;
 import com.alibaba.nacos.api.naming.pojo.Instance;
+import com.alibaba.nacos.api.naming.pojo.ServiceInfo;
+import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO;
 import com.vci.ubcs.omd.vo.BtmTypeVO;
+import com.vci.ubcs.omd.vo.LinkTypeVO;
 import org.springblade.core.launch.constant.AppConstant;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -16,13 +19,13 @@
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.HttpClientErrorException;
 import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.PostConstruct;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * Description: 棰嗗煙杞彂鍣�
@@ -30,9 +33,8 @@
  * @author LiHang
  * @date 2023/4/25
  */
+@Component
 public class DomainRepeater {
-	private DomainRepeater() {
-	}
 
 	/**
 	 * 鎺у埗鍣ㄨ矾寰�
@@ -42,63 +44,183 @@
 	/**
 	 * 鏂板鎴栦慨鏀圭殑杞彂璺緞鍚嶇О
 	 */
-	public static final String API_SUBMIT_BTM_TYPE = API_PREFIX + StringPool.SLASH +"submitBtmType";
+	public static final String API_SUBMIT = API_PREFIX + StringPool.SLASH + "submit";
 
 	/**
 	 * 琛ㄥ悕鑾峰彇琛ㄤ俊鎭�
 	 */
-	public static final String API_GET_TABLE_INFO = API_PREFIX + StringPool.SLASH +"getTableColumnByTableName";
+	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";
+	public static final String API_GET_ALL_TABLE_INFO = API_PREFIX + StringPool.SLASH + "getAllTableInfo";
+	/**
+	 * 鑾峰彇鏁版嵁搴撳拰涓氬姟绫诲瀷涓殑涓嶅悓鐨勫湴鏂�
+	 */
+	public static final String API_CHECK_DIFFERENT_REFLEX = API_PREFIX + StringPool.SLASH + "checkDifferentAndReflex";
 
+	/**
+	 * 鐢ㄤ簬鏋勫缓闈欐�佹湇鍔$被
+	 */
+	public static DomainRepeater domainRepeater;
 	/**
 	 * Nacos鏈嶅姟鍒楄〃
 	 */
-	private static NamingService namingService = SINGLE.build();
+	private static NamingService namingService;
 
-	private static class SINGLE {
-		@Autowired
-		private NacosServiceManager manager;
-		private static NacosServiceManager nacosServiceManager;
+	@Autowired
+	private NacosServiceManager manager;
 
-		@Autowired
-		private NacosDiscoveryProperties properties;
-		private static NacosDiscoveryProperties nacosDiscoveryProperties;
+	@Autowired
+	private NacosDiscoveryProperties properties;
 
-		@PostConstruct
-		private void init(){
-			nacosServiceManager = manager;
-			nacosDiscoveryProperties = properties;
-		}
-		private static NamingService build(){
-			return nacosServiceManager.getNamingService(nacosDiscoveryProperties.getNacosProperties());
-		}
+	@PostConstruct
+	private void init() {
+		domainRepeater = this;
+		namingService = manager.getNamingService(properties.getNacosProperties());
 	}
 
-	public static R submitBtmType (String serviceName, BtmTypeVO btmTypeVO) throws NacosException {
-		Instance service = namingService.selectOneHealthyInstance(AppConstant.APPLICATION_GATEWAY_NAME);
+	/**
+	 * 涓�鑷存�ф鏌�
+	 * @param ddlDTO 涓氬姟绫诲瀷銆侀摼鎺ョ被鍨嬩紶杈撳璞�
+	 * @param serviceName 鏈嶅姟鍚�
+	 * @return 鎵ц缁撴灉锛屾湁淇敼鐨勫氨浼氳繑鍥炪��
+	 * @throws NacosException nacos鏌ヨ鏈嶅姟鍑洪敊鏃舵姏鍑哄紓甯�
+	 */
+	public static R checkDifferent(BtmAndLinkTypeDdlDTO ddlDTO,String serviceName) throws NacosException {
 		try {
-			String url = "http://" + service.getIp() +StringPool.COLON+ service.getPort() + StringPool.SLASH + serviceName + StringPool.SLASH + API_SUBMIT_BTM_TYPE;
-			ResponseEntity<R> responseEntity = executePost(url, JSONObject.toJSONString(btmTypeVO), null);
-			if (responseEntity.getStatusCode().equals(HttpStatus.OK)){
-				return responseEntity.getBody();
+			String url = getUrl(serviceName, API_CHECK_DIFFERENT_REFLEX);
+			ResponseEntity<R> responseEntity = executePost(url, JSONObject.toJSONString(ddlDTO), null);
+			if (responseEntity.getStatusCode().equals(HttpStatus.OK)) {
+				R body = Objects.requireNonNull(responseEntity.getBody());
+				return body;
 			}
 			return R.fail(String.valueOf(responseEntity.getStatusCode().value()));
+		}catch (HttpClientErrorException e) {
+			if (HttpStatus.NOT_FOUND.equals(e.getStatusCode())) {
+				R fail = R.fail("璋冪敤鏈嶅姟澶辫触");
+				fail.setCode(HttpStatus.NOT_FOUND.value());
+				return fail;
+			}
 		} catch (Exception e) {
 			throw new RuntimeException(e);
 		}
+		return R.fail("鏈煡閿欒");
 	}
 
-	private static ResponseEntity<R> executePost(String url, String body,Map<String,String> extraHeaders) throws IOException {
+	/**
+	 * 鏍规嵁api鎺ュ彛鎷兼帴url鍦板潃
+	 * @param serviceName 鏈嶅姟鍚�
+	 * @param api 鎺ュ彛鍦板潃
+	 * @return url鍦板潃
+	 * @throws NacosException nacos鏌ヨ鏈嶅姟鍑洪敊鏃舵姏鍑哄紓甯�
+	 */
+
+	public static String getUrl(String serviceName,String api) throws NacosException {
+		Instance service = namingService.selectOneHealthyInstance(AppConstant.APPLICATION_GATEWAY_NAME);
+		return "http://" + service.getIp() + StringPool.COLON + service.getPort() + StringPool.SLASH + serviceName + StringPool.SLASH + api;
+	}
+
+
+	/**
+	 * 鏂板鎴栦慨鏀逛笟鍔$被鍨�
+	 * @param vo 涓氬姟绫诲瀷浼犺緭瀵硅薄
+	 * @param serviceName 鏈嶅姟鍚�
+	 * @return 鎵ц缁撴灉锛屾湁淇敼鐨勫氨浼氳繑鍥炪��
+	 */
+	public static R submitBtmType(String serviceName, BtmTypeVO vo) {
+		try {
+			String url = getUrl(serviceName, API_SUBMIT);
+			BtmAndLinkTypeDdlDTO ddlDTO = new BtmAndLinkTypeDdlDTO();
+			ddlDTO.setBtmTypeList(new ArrayList<>(Collections.singletonList(vo)));
+			ResponseEntity<R> responseEntity = executePost(url, JSONObject.toJSONString(ddlDTO), null);
+			if (responseEntity.getStatusCode().equals(HttpStatus.OK)) {
+				return responseEntity.getBody();
+			}
+			return R.fail(String.valueOf(responseEntity.getStatusCode().value()));
+		} catch (HttpClientErrorException e) {
+			if (HttpStatus.NOT_FOUND.equals(e.getStatusCode())) {
+				R fail = R.fail("璋冪敤鏈嶅姟澶辫触");
+				fail.setCode(HttpStatus.NOT_FOUND.value());
+				return fail;
+			}
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+		return R.fail("鏈煡閿欒");
+	}
+
+	/**
+	 * 鏂板鎴栦慨鏀归摼鎺ョ被鍨�
+	 * @param vo 涓氬姟绫诲瀷浼犺緭瀵硅薄
+	 * @param serviceName 鏈嶅姟鍚�
+	 * @return 鎵ц缁撴灉锛屾湁淇敼鐨勫氨浼氳繑鍥炪��
+	 */
+	public static R submitLinkType(String serviceName, LinkTypeVO vo) {
+		try {
+			String url = getUrl(serviceName, API_SUBMIT);
+			BtmAndLinkTypeDdlDTO ddlDTO = new BtmAndLinkTypeDdlDTO();
+			ddlDTO.setLinkTypeList(new ArrayList<>(Collections.singletonList(vo)));
+			ResponseEntity<R> responseEntity = executePost(url, JSONObject.toJSONString(ddlDTO), null);
+			if (responseEntity.getStatusCode().equals(HttpStatus.OK)) {
+				return responseEntity.getBody();
+			}
+			return R.fail(String.valueOf(responseEntity.getStatusCode().value()));
+		} catch (HttpClientErrorException e) {
+			if (HttpStatus.NOT_FOUND.equals(e.getStatusCode())) {
+				R fail = R.fail("璋冪敤鏈嶅姟澶辫触");
+				fail.setCode(HttpStatus.NOT_FOUND.value());
+				return fail;
+			}
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+		return R.fail("鏈煡閿欒");
+	}
+
+	/**
+	 * 鎵цhttpPost鎺ュ彛
+	 *
+	 * @param url          鍦板潃
+	 * @param body         璇锋眰浣�
+	 * @param extraHeaders 璇锋眰澶村弬鏁�
+	 * @return 鎵ц缁撴灉
+	 */
+	private static ResponseEntity<R> executePost(String url, String body, Map<String, String> extraHeaders) {
 		RestTemplate restTemplate = new RestTemplate();
 		HttpHeaders httpHeaders = new HttpHeaders();
-		httpHeaders.add("Content-Type","application/json;charset=UTF-8");
+		httpHeaders.add("Content-Type", "application/json;charset=UTF-8");
 		httpHeaders.add("Blade-Auth", AuthUtil.getHeader());
 		Optional.ofNullable(extraHeaders).orElseGet(HashMap::new).forEach(httpHeaders::add);
-		HttpEntity<String> request = new HttpEntity<>(body,httpHeaders);
+		HttpEntity<String> request = new HttpEntity<>(body, httpHeaders);
 		return restTemplate.postForEntity(url, request, R.class);
 	}
+
+	/**
+	 * 鑾峰彇鎵�鏈夊凡娉ㄥ唽鐨勬湇鍔�
+	 * @return 涓嶅寘鍚粯璁ゆ湇鍔$殑鍏朵粬鏈嶅姟
+	 * @throws NacosException
+	 */
+	public static List<String> getDomain() throws NacosException {
+		List<ServiceInfo> services = namingService.getSubscribeServices();
+		Set<String> serviceNames = new HashSet<>();
+		serviceNames.add(AppConstant.APPLICATION_GATEWAY_NAME);
+		serviceNames.add(AppConstant.APPLICATION_ADMIN_NAME);
+		serviceNames.add(AppConstant.APPLICATION_AUTH_NAME);
+		serviceNames.add(AppConstant.APPLICATION_DESK_NAME);
+		serviceNames.add(AppConstant.APPLICATION_DEVELOP_NAME);
+		serviceNames.add(AppConstant.APPLICATION_FLOW_NAME);
+		serviceNames.add(AppConstant.APPLICATION_FLOWDESIGN_NAME);
+		serviceNames.add(AppConstant.APPLICATION_LOG_NAME);
+		serviceNames.add(AppConstant.APPLICATION_REPORT_NAME);
+		serviceNames.add(AppConstant.APPLICATION_SWAGGER_NAME);
+		serviceNames.add(AppConstant.APPLICATION_SYSTEM_NAME);
+		serviceNames.add(AppConstant.APPLICATION_TURBINE_NAME);
+		serviceNames.add(AppConstant.APPLICATION_USER_NAME);
+		serviceNames.add(AppConstant.APPLICATION_WEBSOCKET_NAME);
+		serviceNames.add(AppConstant.APPLICATION_ZIPKIN_NAME);
+		serviceNames.add(AppConstant.APPLICATION_NAME_OMD);
+		return services.stream().map(ServiceInfo::getName).filter(s -> !serviceNames.contains(s)).collect(Collectors.toList());
+	}
 }

--
Gitblit v1.9.3