From bdcb64f0293f27e2dfb3de12a60f6e8412cb962b Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 26 五月 2022 01:45:22 +0800
Subject: [PATCH] 退费修改为 从证书地址中获取

---
 service-order/src/main/java/com/java110/order/OrderServiceApplicationStart.java |  162 +++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 124 insertions(+), 38 deletions(-)

diff --git a/service-order/src/main/java/com/java110/order/OrderServiceApplicationStart.java b/service-order/src/main/java/com/java110/order/OrderServiceApplicationStart.java
old mode 100644
new mode 100755
index e215f6e..ba2e2ff
--- a/service-order/src/main/java/com/java110/order/OrderServiceApplicationStart.java
+++ b/service-order/src/main/java/com/java110/order/OrderServiceApplicationStart.java
@@ -1,15 +1,38 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package com.java110.order;
 
-import com.java110.utils.cache.MappingCache;
-import com.java110.utils.factory.ApplicationContextFactory;
-import com.java110.utils.util.StringUtil;
+import com.java110.config.properties.code.ZookeeperProperties;
 import com.java110.core.annotation.Java110ListenerDiscovery;
+import com.java110.core.trace.Java110RestTemplateInterceptor;
 import com.java110.core.client.RestTemplate;
 import com.java110.core.event.center.DataFlowEventPublishing;
-import com.java110.order.smo.ICenterServiceCacheSMO;
+import com.java110.service.init.ServiceInfoListener;
 import com.java110.service.init.ServiceStartInit;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.constant.MappingConstant;
+import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.exception.StartException;
+import com.java110.utils.factory.ApplicationContextFactory;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.StringUtil;
+import org.apache.zookeeper.*;
+import org.apache.zookeeper.data.Stat;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.java110.core.log.LoggerFactory;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.web.client.RestTemplateBuilder;
@@ -19,8 +42,13 @@
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.http.converter.StringHttpMessageConverter;
+import org.springframework.scheduling.annotation.EnableAsync;
 
+import javax.annotation.Resource;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.nio.charset.Charset;
+import java.util.List;
 
 
 /**
@@ -33,21 +61,26 @@
  * @tag
  */
 @SpringBootApplication(scanBasePackages = {"com.java110.service", "com.java110.order",
-        "com.java110.core", "com.java110.core.event.order", "com.java110.config.properties.code","com.java110.db"})
+        "com.java110.core", "com.java110.core.event.order", "com.java110.config.properties.code", "com.java110.db"})
 @EnableDiscoveryClient
 //@EnableConfigurationProperties(EventProperties.class)
 @Java110ListenerDiscovery(listenerPublishClass = DataFlowEventPublishing.class,
         basePackages = {"com.java110.order.listener"})
 @EnableFeignClients(basePackages = {
-        "com.java110.core.smo.code",
-        "com.java110.core.smo.user",
-        "com.java110.core.smo.common",
-        "com.java110.core.smo.community",
-        "com.java110.core.smo.fee"
+        "com.java110.intf.code",
+        "com.java110.intf.job",
+        "com.java110.intf.user",
+        "com.java110.intf.common",
+        "com.java110.intf.community",
+        "com.java110.intf.fee"
 })
+@EnableAsync
 public class OrderServiceApplicationStart {
 
-    private  static Logger logger = LoggerFactory.getLogger(OrderServiceApplicationStart.class);
+    private static Logger logger = LoggerFactory.getLogger(OrderServiceApplicationStart.class);
+
+    @Resource
+    private Java110RestTemplateInterceptor java110RestTemplateInterceptor;
 
     /**
      * 瀹炰緥鍖朢estTemplate锛岄�氳繃@LoadBalanced娉ㄨВ寮�鍚潎琛¤礋杞借兘鍔�.
@@ -59,6 +92,7 @@
     public RestTemplate restTemplate() {
         StringHttpMessageConverter m = new StringHttpMessageConverter(Charset.forName("UTF-8"));
         RestTemplate restTemplate = new RestTemplateBuilder().additionalMessageConverters(m).build(RestTemplate.class);
+        restTemplate.getInterceptors().add(java110RestTemplateInterceptor);
         return restTemplate;
     }
 
@@ -68,7 +102,7 @@
      * @return restTemplate
      */
     @Bean
-    public RestTemplate restTemplateNoLoadBalanced() {
+    public RestTemplate outRestTemplate() {
         StringHttpMessageConverter m = new StringHttpMessageConverter(Charset.forName("UTF-8"));
         RestTemplate restTemplate = new RestTemplateBuilder().additionalMessageConverters(m).build(RestTemplate.class);
         return restTemplate;
@@ -76,6 +110,8 @@
 
     public static void main(String[] args) throws Exception {
         try {
+            ServiceStartInit.preInitSystemConfig();
+
             ApplicationContext context = SpringApplication.run(OrderServiceApplicationStart.class, args);
 
             //鏈嶅姟鍚姩鍔犺浇
@@ -84,40 +120,90 @@
             //鍔犺浇浜嬩欢鏁版嵁
             //EventConfigInit.initSystemConfig();
 
-            //鍒锋柊缂撳瓨
-            flushMainCache(args);
-        }catch (Throwable e){
-            logger.error("绯荤粺鍚姩澶辫触",e);
+
+            //鍔犺浇workId
+            loadWorkId();
+        } catch (Throwable e) {
+            logger.error("绯荤粺鍚姩澶辫触", e);
         }
     }
 
 
     /**
-     * 鍒锋柊涓昏鐨勭紦瀛�
-     *
-     * @param args
+     * 鍔犺浇 workId
      */
-    private static void flushMainCache(String[] args) {
+    public static void loadWorkId() throws StartException {
 
-        logger.debug("鍒ゆ柇鏄惁闇�瑕佸埛鏂版棩蹇楋紝鍙傛暟 args 涓� {}", args);
-
-        //鍥犱负濂藉鏈嬪弸鍚姩鏃� 涓嶅姞 鍙傛暟-Dcache 鎵�浠ュ惎鍔ㄦ椂妫�娴� redis 涓槸鍚﹀瓨鍦� java110_hc_version
-        String mapping = MappingCache.getValue("java110_hc_version");
-        if(StringUtil.isEmpty(mapping)){
-            ICenterServiceCacheSMO centerServiceCacheSMO = (ICenterServiceCacheSMO) ApplicationContextFactory.getBean("centerServiceCacheSMOImpl");
-            centerServiceCacheSMO.startFlush();
-            return ;
-        }
-
-        if (args == null || args.length == 0) {
+        if (!MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_NEED_INVOKE_GENERATE_ID))) {
             return;
         }
-        for (int i = 0; i < args.length; i++) {
-            if (args[i].equalsIgnoreCase("-Dcache")) {
-                logger.debug("寮�濮嬪埛鏂版棩蹇楋紝鍏ュ弬涓猴細{}", args[i]);
-                ICenterServiceCacheSMO centerServiceCacheSMO = (ICenterServiceCacheSMO) ApplicationContextFactory.getBean("centerServiceCacheSMOImpl");
-                centerServiceCacheSMO.startFlush();
-            }
+        ZookeeperProperties zookeeperProperties = ApplicationContextFactory.getBean("zookeeperProperties", ZookeeperProperties.class);
+
+        if (zookeeperProperties == null) {
+            throw new StartException(ResponseConstant.RESULT_CODE_ERROR, "绯荤粺鍚姩澶辫触锛屾湭鍔犺浇zookeeper 閰嶇疆淇℃伅");
         }
+
+        String host = null;
+        try {
+            host = InetAddress.getLocalHost().getHostAddress();
+        } catch (UnknownHostException e) {
+            throw new StartException(ResponseConstant.RESULT_CODE_ERROR, "绯荤粺鍚姩澶辫触锛岃幏鍙杊ost澶辫触" + e);
+        }
+
+        ServiceInfoListener serviceInfoListener = ApplicationContextFactory.getBean("serviceInfoListener", ServiceInfoListener.class);
+
+        if (serviceInfoListener == null) {
+            throw new StartException(ResponseConstant.RESULT_CODE_ERROR, "绯荤粺鍚姩澶辫触锛岃幏鍙栨湇鍔$洃鍚鍙eけ璐�");
+        }
+
+        serviceInfoListener.setServiceHost(host);
+
+        try {
+            ZooKeeper zooKeeper = new ZooKeeper(zookeeperProperties.getZookeeperConnectString(), zookeeperProperties.getTimeOut(), new Watcher() {
+
+                @Override
+                public void process(WatchedEvent watchedEvent) {
+
+                }
+            });
+
+
+            Stat stat = zooKeeper.exists(zookeeperProperties.getWorkDir(), true);
+
+            if (stat == null) {
+                zooKeeper.create(zookeeperProperties.getWorkDir(), "".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,
+                        CreateMode.PERSISTENT);
+            }
+            String workDir = "";
+            List<String> workDirs = zooKeeper.getChildren(zookeeperProperties.getWorkDir(), true);
+
+            if (workDirs != null && workDirs.size() > 0) {
+                for (String workDirTemp : workDirs) {
+                    if (workDirTemp.startsWith(serviceInfoListener.getHostPort())) {
+                        workDir = workDirTemp;
+                        break;
+                    }
+                }
+            }
+            if (StringUtil.isNullOrNone(workDir)) {
+                workDir = zooKeeper.create(zookeeperProperties.getWorkDir() + "/" + serviceInfoListener.getHostPort(), "".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,
+                        CreateMode.PERSISTENT_SEQUENTIAL);
+            }
+
+            String[] pathTokens = workDir.split("/");
+            if (pathTokens.length > 0
+                    && pathTokens[pathTokens.length - 1].contains("-")
+                    && pathTokens[pathTokens.length - 1].contains(":")) {
+                String workId = pathTokens[pathTokens.length - 1].substring(pathTokens[pathTokens.length - 1].indexOf("-") + 1);
+                serviceInfoListener.setWorkId(Long.parseLong(workId));
+            }
+
+            Assert.hasLength(serviceInfoListener.getWorkId() + "", "绯荤粺涓姞杞絯orkId 澶辫触");
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new StartException(ResponseConstant.RESULT_CODE_ERROR, "绯荤粺鍚姩澶辫触锛岄摼鎺ookeeper澶辫触" + zookeeperProperties.getZookeeperConnectString());
+        }
+
+
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0