yuxc
2023-05-16 65df69ac23c18e05e75912484089529305c0e1dd
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/repeater/DomainRepeater.java
@@ -2,24 +2,26 @@
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.cloud.nacos.NacosServiceManager;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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.common.constant.LauncherConstant;
import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.DomainVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
import com.vci.ubcs.starter.web.enumpck.NewAppConstantEnum;
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.springblade.core.tool.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
@@ -68,12 +70,27 @@
    * Nacos服务列表
    */
   private static NamingService namingService;
   @Autowired
   private NacosServiceManager manager;
   @Autowired
   private NacosDiscoveryProperties properties;
   /**
    * 拿取服务中的所有表信息
    * @param serviceName 服务名称
    * @return 返回结果
    * @throws NacosException 找不到服务时抛出异常
    */
   public static R getFromTable(String serviceName) throws NacosException{
      ResponseEntity<R> responseEntity = executeGet(getUrl(serviceName, API_GET_ALL_TABLE_INFO), new HashMap<>());
      if (responseEntity.getStatusCode().equals(HttpStatus.OK)) {
         R body = Objects.requireNonNull(responseEntity.getBody());
         return body;
      }
      return R.fail(String.valueOf(responseEntity.getStatusCode().value()));
   }
   @PostConstruct
   private void init() {
@@ -198,29 +215,48 @@
   }
   /**
    * 执行httpGet接口
    *
    * @param url          地址
    * @param extraHeaders 请求头参数
    * @return 执行结果
    */
   private static ResponseEntity<R> executeGet(String url,Map<String, String> extraHeaders) {
      RestTemplate restTemplate = new RestTemplate();
      HttpHeaders httpHeaders = new HttpHeaders();
      httpHeaders.add("Blade-Auth", AuthUtil.getHeader());
      HttpEntity<String> request = new HttpEntity<>(httpHeaders);
      if (!CollectionUtils.isEmpty(extraHeaders)){
         StringBuilder sb = new StringBuilder().append("?");
         extraHeaders.forEach( (k,v) -> {
            sb.append(k).append(StringPool.EQUALS).append(v).append(StringPool.AMPERSAND);
         });
         String str = sb.toString();
         if (str.endsWith(StringPool.AMPERSAND)){
            str = str.substring(0,str.length()-1);
         }
         url = url + str;
      }
      return restTemplate.exchange(url, HttpMethod.GET,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());
   public static List<DomainVO> getDomain() throws NacosException {
      RestTemplate restTemplate = new RestTemplate();
      String url = "http://" +LauncherConstant.NACOS_DEV_ADDR + "/nacos/v1/ns/service/list?pageNo=1&pageSize=50";
      String forObject = restTemplate.getForObject(url, String.class);
      JSONObject jsonObject = JSON.parseObject(forObject);
      List<String> doms = (List<String>) jsonObject.get("doms");
      NewAppConstantEnum[] apps = NewAppConstantEnum.values();
      return Arrays.stream(apps).filter(app -> doms.stream().anyMatch(s -> StringUtil.equals(app.getName(), s))).map(app -> {
         DomainVO domain = new DomainVO();
         domain.setValue(app.getName());
         domain.setLabel(app.getText());
         return domain;
      }).collect(Collectors.toList());
   }
}