From 1ae45581a6024db5187c64621d01729e0d1dead5 Mon Sep 17 00:00:00 2001
From: jiazx0107@163.com <jiazx0107@163.com>
Date: 星期二, 07 十一月 2023 23:40:32 +0800
Subject: [PATCH] 提交网关功能

---
 src/main/java/com/fzzy/gateway/hx2023/service/ApiInitService.java             |    2 
 src/main/java/com/fzzy/gateway/util/GatewayHttpUtil.java                      |   69 ++++
 src/main/java/com/fzzy/gateway/hx2023/data/CloudResp.java                     |   44 ++
 src/main/java/com/fzzy/gateway/hx2023/service/HxGatewayRemoteServiceImpl.java |  203 ++++++++---
 src/main/java/com/fzzy/api/utils/RedisConst.java                              |   10 
 src/main/java/com/fzzy/gateway/hx2023/ScConstant.java                         |    3 
 src/main/java/com/fzzy/push/gb2022/HttpClientUtil.java                        |   95 -----
 src/main/java/com/fzzy/gateway/api/GatewayRemoteService.java                  |   19 
 src/main/java/com/fzzy/gateway/package-info.java                              |    8 
 src/main/java/com/fzzy/gateway/service/GatewayConfService.java                |   45 +
 src/main/java/com/fzzy/gateway/hx2023/data/RespKey.java                       |   18 +
 src/main/java/com/fzzy/gateway/util/GatewayRSAUtils.java                      |  370 +++++++++++++++++++++
 src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml                      |    9 
 src/main/java/com/fzzy/gateway/entity/GatewayConf.java                        |    8 
 src/main/java/com/fzzy/gateway/GatewayRunner.java                             |    4 
 src/main/java/com/fzzy/gateway/GatewayTimerScheduled.java                     |   67 +++
 16 files changed, 777 insertions(+), 197 deletions(-)

diff --git a/src/main/java/com/fzzy/api/utils/RedisConst.java b/src/main/java/com/fzzy/api/utils/RedisConst.java
index 4d79b15..6b9869f 100644
--- a/src/main/java/com/fzzy/api/utils/RedisConst.java
+++ b/src/main/java/com/fzzy/api/utils/RedisConst.java
@@ -17,11 +17,6 @@
     /**
      * 璁惧缂撳瓨
      */
-    public static String KYE_GATE_DEVICE = "G_DEVICE";
-
-    /**
-     * 璁惧缂撳瓨
-     */
     public static String KYE_GATE_TOKEN = "G_TOKEN";
 
 
@@ -31,6 +26,11 @@
     public static String KYE_CONF = "CONF";
 
     /**
+     * 鎺ュ彛閰嶇疆-鍗曚釜鏁版嵁鍗曚釜KEY
+     */
+    public static String KYE_CONF_GATEWAY = "CONF_GATEWAY";
+
+    /**
      * 鎺ュ彛閰嶇疆-TOKEN
      */
     public static String KYE_TOKEN = "TOKEN";
diff --git a/src/main/java/com/fzzy/gateway/GatewayRunner.java b/src/main/java/com/fzzy/gateway/GatewayRunner.java
index c8da840..e4827f5 100644
--- a/src/main/java/com/fzzy/gateway/GatewayRunner.java
+++ b/src/main/java/com/fzzy/gateway/GatewayRunner.java
@@ -22,7 +22,9 @@
 
     @Override
     public void run(String... args) throws Exception {
-        log.info("缃戝叧鎺ュ彛闅忕郴缁熷惎鍔�------------");
+        //鎵ц鍒濆鍖栨柟妗�
+
+        apiInitService.init();
     }
 
 }
diff --git a/src/main/java/com/fzzy/gateway/GatewayTimerScheduled.java b/src/main/java/com/fzzy/gateway/GatewayTimerScheduled.java
new file mode 100644
index 0000000..b26ff83
--- /dev/null
+++ b/src/main/java/com/fzzy/gateway/GatewayTimerScheduled.java
@@ -0,0 +1,67 @@
+package com.fzzy.gateway;
+
+import com.fzzy.api.data.ApiParam;
+import com.fzzy.api.entity.ApiConfs;
+import com.fzzy.api.service.*;
+import com.fzzy.api.utils.ContextUtil;
+import com.fzzy.api.utils.RedisUtil;
+import com.fzzy.gateway.api.GatewayRemoteManager;
+import com.fzzy.gateway.entity.GatewayConf;
+import com.fzzy.gateway.service.GatewayConfService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.time.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 缃戝叧鐩稿叧鐨勫畾鏃跺櫒
+ */
+@Slf4j
+@Component(GatewayTimerScheduled.BEAN_ID)
+public class GatewayTimerScheduled {
+
+    public static final String BEAN_ID = "gateway.timerScheduled";
+
+    @Resource
+    private GatewayConfService confService;
+
+    @Resource
+    private GatewayRemoteManager gatewayRemoteManager;
+
+
+    /**
+     * <p>
+     * 鍥哄畾鏃堕棿锛氭瘡闂撮殧10鍒嗛挓鎵ц涓�娆�
+     */
+    @Scheduled(cron = "0 0/10 * * * ? ")
+    public void scheduled() {
+
+        //缃戝叧鐨勫績璺虫墽琛�
+        doHeartbeat();
+
+    }
+
+
+    /**
+     * 鎵ц缃戝叧蹇冭烦
+     */
+    private void doHeartbeat() {
+
+        //鑾峰彇缂撳瓨涓殑缃戝叧淇℃伅
+        List<GatewayConf> list = confService.getCacheConfList();
+        if (null == list || list.isEmpty()) {
+            log.warn("------绯荤粺涓鸿幏鍙栧埌缃戝叧閰嶇疆淇℃伅锛屼笉鎵ц瀹氭椂蹇冭烦-----");
+            return;
+        }
+
+        for (GatewayConf conf : list) {
+            gatewayRemoteManager.getRemoteService(conf.getPushProtocol()).heartbeat(conf);
+        }
+    }
+    
+}
diff --git a/src/main/java/com/fzzy/gateway/api/GatewayRemoteService.java b/src/main/java/com/fzzy/gateway/api/GatewayRemoteService.java
index 2ea3152..d187dc4 100644
--- a/src/main/java/com/fzzy/gateway/api/GatewayRemoteService.java
+++ b/src/main/java/com/fzzy/gateway/api/GatewayRemoteService.java
@@ -1,6 +1,5 @@
 package com.fzzy.gateway.api;
 
-import com.fzzy.gateway.data.GatewayResponse;
 import com.fzzy.gateway.entity.GatewayConf;
 
 
@@ -15,11 +14,21 @@
 
 
     /**
-     * 鏁版嵁鎺ㄩ��
-     *
-     * @param conf 鍙傛暟
+     * 缃戝叧璁惧鍒濆鍖�
+     * @param gatewayConf
      */
-    public GatewayResponse authorize(GatewayConf conf);
+    void init(GatewayConf gatewayConf);
+
+    /**
+     * 缃戝叧璁惧蹇冭烦缁存寔
+     * @param gatewayConf
+     */
+    void heartbeat(GatewayConf gatewayConf);
 
 
+    /**
+     * 缃戝叧璁惧淇℃伅涓婃姤
+     * @param gatewayConf
+     */
+    void pushInfo(GatewayConf gatewayConf);
 }
diff --git a/src/main/java/com/fzzy/gateway/entity/GatewayConf.java b/src/main/java/com/fzzy/gateway/entity/GatewayConf.java
index c697ffe..2284dd6 100644
--- a/src/main/java/com/fzzy/gateway/entity/GatewayConf.java
+++ b/src/main/java/com/fzzy/gateway/entity/GatewayConf.java
@@ -72,6 +72,14 @@
     @Column(name = "publicKey", length = 200)
     private String publicKey;
 
+    @PropertyDef(label = "鐪佸钩鍙板姞瀵嗙閽�")
+    @Column(name = "privateKey", length = 200)
+    private String privateKey;
+
+    @PropertyDef(label = "鐪佸钩鍙伴壌鏉冨彛浠�")
+    @Column(name = "accessToken", length = 200)
+    private String accessToken;
+
     @PropertyDef(label = "鐪佸钩鍙版帴鍙e湴鍧�")
     @Column(name = "apiUrl", length = 200)
     private String apiUrl;
diff --git a/src/main/java/com/fzzy/gateway/hx2023/ScConstant.java b/src/main/java/com/fzzy/gateway/hx2023/ScConstant.java
index 11c5db1..2786342 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/ScConstant.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/ScConstant.java
@@ -16,4 +16,7 @@
     public static String getMessageId() {
         return System.currentTimeMillis() + RandomUtils.nextInt(1000) + "";
     }
+
+
+    public static int CODE_200 = 200;
 }
diff --git a/src/main/java/com/fzzy/gateway/hx2023/data/CloudResp.java b/src/main/java/com/fzzy/gateway/hx2023/data/CloudResp.java
new file mode 100644
index 0000000..68e1b20
--- /dev/null
+++ b/src/main/java/com/fzzy/gateway/hx2023/data/CloudResp.java
@@ -0,0 +1,44 @@
+package com.fzzy.gateway.hx2023.data;
+
+import com.alibaba.fastjson2.JSONObject;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+ * 鐪佸钩鍙版帴鍙h繑鍥炲皝瑁�
+ */
+@Data
+public class CloudResp implements Serializable {
+    /**
+     *
+     */
+    private static final long serialVersionUID = -6714158228489303453L;
+    /**
+     * 200 琛ㄧず鎴�
+     */
+    public int code;
+    /**
+     * 璇存槑
+     */
+    public String message;
+
+    /**
+     * status
+     */
+    public int status;
+
+    public int timestamp;
+
+    public JSONObject data;
+
+
+    public CloudResp() {
+    }
+
+    public CloudResp(int code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+}
diff --git a/src/main/java/com/fzzy/gateway/hx2023/data/RespKey.java b/src/main/java/com/fzzy/gateway/hx2023/data/RespKey.java
new file mode 100644
index 0000000..7df4081
--- /dev/null
+++ b/src/main/java/com/fzzy/gateway/hx2023/data/RespKey.java
@@ -0,0 +1,18 @@
+package com.fzzy.gateway.hx2023.data;
+
+import com.alibaba.fastjson2.JSONObject;
+import lombok.Data;
+
+@Data
+public class RespKey {
+
+    private int code;
+
+    private String message;
+
+    private JSONObject result;
+
+    private int status;
+
+    private String timestamp;
+}
diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/ApiInitService.java b/src/main/java/com/fzzy/gateway/hx2023/service/ApiInitService.java
index 05ebc0e..e98cafa 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/service/ApiInitService.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/service/ApiInitService.java
@@ -34,7 +34,7 @@
         GatewayRemoteService gatewayRemoteService;
         for (GatewayConf gatewayConf : list) {
             gatewayRemoteService = gatewayRemoteManager.getRemoteService(gatewayConf.getPushProtocol());
-            gatewayRemoteService.authorize(gatewayConf);
+            gatewayRemoteService.init(gatewayConf);
         }
 
     }
diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewayRemoteServiceImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewayRemoteServiceImpl.java
index d95db6b..a6088d8 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewayRemoteServiceImpl.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewayRemoteServiceImpl.java
@@ -1,21 +1,23 @@
 package com.fzzy.gateway.hx2023.service;
 
-import com.fzzy.api.data.AuthToken;
+import com.alibaba.fastjson2.JSONObject;
 import com.fzzy.api.data.PushProtocol;
-import com.fzzy.api.entity.ApiLog;
-import com.fzzy.api.utils.ContextUtil;
+import com.fzzy.api.utils.MyMD5Util;
+import com.fzzy.api.utils.RSAUtils;
 import com.fzzy.api.utils.RedisConst;
 import com.fzzy.api.utils.RedisUtil;
 import com.fzzy.api.view.repository.ApiLogRep;
+import com.fzzy.gateway.service.GatewayConfService;
+import com.fzzy.gateway.util.GatewayHttpUtil;
 import com.fzzy.gateway.api.GatewayRemoteService;
-import com.fzzy.gateway.data.GatewayResponse;
 import com.fzzy.gateway.entity.GatewayConf;
 import com.fzzy.gateway.hx2023.ScConstant;
-import com.fzzy.push.gb2022.HttpClientUtil;
+import com.fzzy.gateway.hx2023.data.CloudResp;
+import com.fzzy.gateway.util.GatewayRSAUtils;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.HashMap;
@@ -30,8 +32,10 @@
 
     @Resource
     private ApiLogRep apiLogRep;
+
+
     @Resource
-    private RedisUtil redisUtil;
+    private GatewayConfService gatewayConfService;
 
 
     @Override
@@ -40,79 +44,158 @@
     }
 
     @Override
-    public GatewayResponse authorize(GatewayConf conf) {
-
-        //娣诲姞LOG
-        ApiLog apiLog = new ApiLog();
-        apiLog.setData("閴存潈鎺ュ彛");
-        apiLog.setId(ContextUtil.getUUID());
-        apiLog.setKqdm(conf.getKqdm());
-
+    public void init(GatewayConf gatewayConf) {
         try {
 
-            Map<String, Object> map = new HashMap<>();
-            map.put("username", conf.getUserName());
-            map.put("username", conf.getPassword());
+            if (StringUtils.isEmpty(gatewayConf.getApiUrl())) {
+                return;
+            }
 
-            log.debug("-----------------鏁版嵁鎶ユ枃----------------{}", map);
+            //鑾峰彇鍏閽ユ帴鍙�
+            Map<String, String> params = new HashMap<>();
+            params.put("appId", gatewayConf.getGatewayId());
+
+            String url = gatewayConf.getApiUrl() + "reserver/api/key/apply";
+            String jsonStr = GatewayHttpUtil.doGet(url, params);
+
+            log.info("---鑾峰彇鍏閽ユ帴鍙�-杩斿洖---{}", jsonStr);
+
+            CloudResp respKey = JSONObject.parseObject(jsonStr, CloudResp.class);
+
+            if (ScConstant.CODE_200 == respKey.getCode()) {
+                JSONObject object = respKey.getData();
+                String pubKey = (String) object.get("pubKey");
+                String priKey = (String) object.get("priKey");
+
+                gatewayConf.setPublicKey(pubKey);
+                gatewayConf.setPrivateKey(priKey);
+            }
 
 
-            String url = conf.getApiUrl() + ScConstant.API_URL_AUTH;
+            //鑾峰彇 AccessToken 鎺ュ彛
+            String sign = getSign(params, gatewayConf.getPrivateKey());
+            params.put("sign", sign);
+            url = gatewayConf.getApiUrl() + "reserver/api/token/apply";
+            jsonStr = GatewayHttpUtil.doGet(url, params);
+            log.info("---鑾峰彇AccessToken鎺ュ彛-杩斿洖---{}", jsonStr);
+            CloudResp respToken = JSONObject.parseObject(jsonStr, CloudResp.class);
 
+            if (ScConstant.CODE_200 == respToken.getCode()) {
+                JSONObject object = respKey.getData();
+                if (null != object) {
+                    String token = (String) object.get("token");
+                    gatewayConf.setAccessToken(token);
+                }
+            }
 
-            GatewayResponse responseDto = HttpClientUtil.pushGateway(url, map);
-            apiLog.setStatus(responseDto.getStatus());
-            apiLog.setResult(responseDto.getMessage());
-            apiLogRep.save(apiLog);
+            //鏇存柊缂撳瓨
+            updateAuthToken(gatewayConf);
 
-            updateAuthToken(responseDto, conf);
-
-            return responseDto;
         } catch (Exception e) {
-            apiLog.setStatus(99);
-            apiLog.setResult("澶辫触锛�" + e.getMessage());
-            apiLogRep.save(apiLog);
-            log.error(e.getMessage(), e);
-            return new GatewayResponse(99, e.getMessage());
+            log.error("------鍒濆鍖栧け璐�-----{}", e);
         }
     }
+
+    @Override
+    public void heartbeat(GatewayConf gatewayConf) {
+        try {
+
+            if (StringUtils.isEmpty(gatewayConf.getApiUrl())) {
+                return;
+            }
+
+            gatewayConf = getCacheConf(gatewayConf.getKqdm());
+            //缃戝叧蹇冭烦鎺ュ彛
+            Map<String, String> params = new HashMap<>();
+            params.put("token", gatewayConf.getAccessToken());
+            params.put("gatewayId", gatewayConf.getGatewayId());
+            params.put("gatewayIp", gatewayConf.getGatewayIp());
+            params.put("gatewayMac", gatewayConf.getGatewayMac());
+            params.put("heartbeat", "1");
+            params.put("timestamp", System.currentTimeMillis() + "");
+
+            String sign = getSign(params, gatewayConf.getPrivateKey());
+            params.put("sign", sign);
+
+            String url = gatewayConf.getApiUrl() + "reserver/api/iot/equipment/heartbeat";
+
+            String jsonStr = GatewayHttpUtil.doGet(url, params);
+            log.info("---缃戝叧蹇冭烦鎺ュ彛-杩斿洖---{}", jsonStr);
+
+        } catch (Exception e) {
+            log.error("------缃戝叧蹇冭烦鎺ュ彛--鎵ц澶辫触-----{}", e);
+        }
+
+    }
+
+    @Override
+    public void pushInfo(GatewayConf gatewayConf) {
+        try {
+
+            if (StringUtils.isEmpty(gatewayConf.getApiUrl())) {
+                return;
+            }
+
+            gatewayConf = getCacheConf(gatewayConf.getKqdm());
+            //缃戝叧蹇冭烦鎺ュ彛
+            Map<String, String> params = new HashMap<>();
+            params.put("token", gatewayConf.getAccessToken());
+            params.put("gatewayId", gatewayConf.getGatewayId());
+            params.put("gatewayIp", gatewayConf.getGatewayIp());
+            params.put("gatewayMac", gatewayConf.getGatewayMac());
+            params.put("gatewayCPU", gatewayConf.getGatewayCPU());
+            params.put("gatewayMem", gatewayConf.getGatewayMem());
+            params.put("gatewayHardDisk", gatewayConf.getGatewayHardDisk());
+            params.put("timestamp", System.currentTimeMillis() + "");
+
+            String sign = getSign(params, gatewayConf.getPrivateKey());
+            params.put("sign", sign);
+
+            String url = gatewayConf.getApiUrl() + "reserver/api/iot/equipment/heartbeat";
+
+            String jsonStr = GatewayHttpUtil.doGet(url, params);
+            log.info("---鎺ㄩ�佺綉鍏充俊鎭�-杩斿洖---{}", jsonStr);
+
+        } catch (Exception e) {
+            log.error("------鎺ㄩ�佺綉鍏充俊鎭�--鎵ц澶辫触-----{}", e);
+        }
+    }
+
+
+    public String getSign(Map<String, String> parames, String priKey) {
+        //鍙傛暟鎷兼帴
+        String msg = "";
+        for (Map.Entry<String, String> param : parames.entrySet()) {
+            msg += param.getKey() + "=" + param.getValue() + "&";
+        }
+        msg = msg.substring(0, msg.length() - 1);
+
+        log.debug("------寰呭姞瀵嗕俊鎭�-----{}", msg);
+
+        //MD5鍔犲瘑
+        String md5sign = MyMD5Util.getMD5(msg);
+        log.debug("------md5鍔犲瘑-----{}", md5sign);
+
+        //RSA鍔犲瘑
+        String result = GatewayRSAUtils.encryptByPrivate(md5sign, priKey);
+        log.debug("------RSA鍔犲瘑-----{}", result);
+
+        return result;
+    }
+
 
     /**
      * @param kqdm
      * @return
      */
-    public AuthToken getAuthToken(String kqdm) {
-        try {
-            String key = RedisConst.buildKey(RedisConst.KYE_TOKEN, kqdm);
-
-            AuthToken token = (AuthToken) redisUtil.get(key);
-
-            if (null == token) {
-                log.error("------------------鏈幏鍙栧埌TOKEN---------------");
-                return null;
-            }
-
-            return token;
-        } catch (Exception e) {
-            log.error(e.getMessage(), e);
-            return null;
-        }
+    public GatewayConf getCacheConf(String kqdm) {
+        return gatewayConfService.getCacheConf(kqdm);
     }
 
-    private void updateAuthToken(GatewayResponse dto, GatewayConf conf) {
-        String key = RedisConst.buildKey(RedisConst.KYE_TOKEN, conf.getKqdm());
-        AuthToken token = getAuthToken(conf.getKqdm());
+    private void updateAuthToken(GatewayConf conf) {
 
-        if (null == token) {
-            token = new AuthToken();
-            token.setKqdm(conf.getKqdm());
-        }
+        gatewayConfService.updateCache(conf);
 
-        if (null != dto.getResult()) {
-            token.setToken(dto.getResult().getToken());
-        }
-
-        redisUtil.set(key, token);
     }
 
 
diff --git a/src/main/java/com/fzzy/gateway/package-info.java b/src/main/java/com/fzzy/gateway/package-info.java
index 303f360..7353582 100644
--- a/src/main/java/com/fzzy/gateway/package-info.java
+++ b/src/main/java/com/fzzy/gateway/package-info.java
@@ -1,12 +1,4 @@
 /**
  * 缃戝叧鎺ュ彛
- *
- *
- *
- * 娴嬭瘯鎻愪氦
- *
- *
- *
- *
  */
 package com.fzzy.gateway;
\ No newline at end of file
diff --git a/src/main/java/com/fzzy/gateway/service/GatewayConfService.java b/src/main/java/com/fzzy/gateway/service/GatewayConfService.java
index eabbf30..81ddd0a 100644
--- a/src/main/java/com/fzzy/gateway/service/GatewayConfService.java
+++ b/src/main/java/com/fzzy/gateway/service/GatewayConfService.java
@@ -3,19 +3,27 @@
 import com.bstek.dorado.annotation.DataProvider;
 import com.bstek.dorado.annotation.DataResolver;
 import com.bstek.dorado.annotation.Expose;
+import com.fzzy.api.utils.RedisConst;
+import com.fzzy.api.utils.RedisUtil;
 import com.fzzy.gateway.entity.GatewayConf;
 import com.fzzy.gateway.service.repository.GatewayConfRep;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
+@Slf4j
 @Component
 public class GatewayConfService {
 
     @Resource
     private GatewayConfRep gatewayConfRep;
+    @Resource
+    private RedisUtil redisUtil;
 
 
     /**
@@ -57,18 +65,29 @@
         return null;
     }
 
-
-    /**
-     * gatewayConfService#delData
-     *
-     * @param data
-     */
-    @Expose
-    public String flush(GatewayConf data) {
-
-        GatewayConf data2 = new GatewayConf();
-        BeanUtils.copyProperties(data, data2);
-        gatewayConfRep.delete(data2);
-        return null;
+    public void updateCache(GatewayConf conf) {
+        String key = RedisConst.buildKey(RedisConst.KYE_CONF_GATEWAY, conf.getKqdm());
+        redisUtil.set(key, conf);
     }
+
+    public GatewayConf getCacheConf(String kqdm) {
+        try {
+            String key = RedisConst.buildKey(RedisConst.KYE_CONF_GATEWAY, kqdm);
+            return (GatewayConf) redisUtil.get(key);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            return null;
+        }
+    }
+
+    public List<GatewayConf> getCacheConfList() {
+        String tag = RedisConst.buildKey(RedisConst.KYE_CONF_GATEWAY);
+        Set<String> keys = redisUtil.keys(tag);
+        List<GatewayConf> result = new ArrayList<>();
+        for (String key : keys) {
+            result.add((GatewayConf) redisUtil.get(key));
+        }
+        return result;
+    }
+
 }
diff --git a/src/main/java/com/fzzy/gateway/util/GatewayHttpUtil.java b/src/main/java/com/fzzy/gateway/util/GatewayHttpUtil.java
new file mode 100644
index 0000000..30359de
--- /dev/null
+++ b/src/main/java/com/fzzy/gateway/util/GatewayHttpUtil.java
@@ -0,0 +1,69 @@
+package com.fzzy.gateway.util;
+
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 缃戝叧涓撶敤HTTP璇锋眰宸ュ叿绫�
+ */
+@Slf4j
+public class GatewayHttpUtil {
+
+    /**
+     * 鎵цGET璇锋眰
+     * @param url
+     * @param paramsMap
+     * @return
+     * @throws Exception
+     */
+    public static String doGet(String url,Map<String, String> paramsMap) throws Exception{
+        CloseableHttpClient client = HttpClients.createDefault();
+        String responseText = "";
+        CloseableHttpResponse response = null;
+        try {
+            String getUrl = url + "?";
+            if (paramsMap != null) {
+                for (Map.Entry<String, String> param : paramsMap.entrySet()) {
+                  //  getUrl += param.getKey() + "=" + URLEncoder.encode(param.getValue(), "UTF-8") + "&";
+                    getUrl += param.getKey() + "=" + URLEncoder.encode(param.getValue(), "UTF-8") + "&";
+                }
+            }
+            HttpGet method = new HttpGet(getUrl);
+            method.setHeader("Accept", "application/json");
+            method.setHeader("charset", "UTF-8");
+
+            response = client.execute(method);
+//            response.setHeader("Accept", "application/json");
+//            response.setHeader("charset", "UTF-8");
+
+            HttpEntity entity = response.getEntity();
+            if (entity != null) {
+                responseText = EntityUtils.toString(entity,"UTF-8");
+            }
+        } catch (Exception e) {
+            log.error("http request failed", e);
+        } finally {
+            try {
+                response.close();
+            } catch (Exception e) {
+                log.error("", e);
+            }
+        }
+
+        return responseText;
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/fzzy/gateway/util/GatewayRSAUtils.java b/src/main/java/com/fzzy/gateway/util/GatewayRSAUtils.java
new file mode 100644
index 0000000..c81de2f
--- /dev/null
+++ b/src/main/java/com/fzzy/gateway/util/GatewayRSAUtils.java
@@ -0,0 +1,370 @@
+package com.fzzy.gateway.util;
+
+
+import lombok.extern.slf4j.Slf4j;
+
+import javax.crypto.Cipher;
+import java.io.ByteArrayOutputStream;
+import java.nio.charset.StandardCharsets;
+import java.security.*;
+import java.security.interfaces.RSAPrivateKey;
+import java.security.interfaces.RSAPublicKey;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+import org.apache.xerces.impl.dv.util.Base64;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+public class GatewayRSAUtils {
+    /**
+     * RSA鏈�澶у姞瀵嗘槑鏂囧ぇ灏� 2048/8-11
+     */
+    private static final int MAX_ENCRYPT_BLOCK = 245;
+
+    /**
+     * RSA鏈�澶цВ瀵嗗瘑鏂囧ぇ灏� 2048/8
+     */
+    private static final int MAX_DECRYPT_BLOCK = 256;
+
+    private static final int KEYSIZE = 1024;// 瀵嗛挜浣嶆暟
+
+    /**
+     * 瀹氫箟鍔犲瘑鏂瑰紡
+     */
+    public static final String KEY_RSA = "RSA";
+    /**
+     * 瀹氫箟鍏挜鍏抽敭璇�
+     */
+    public static final String KEY_RSA_PUBLICKEY = "RSAPublicKey";
+    /**
+     * 瀹氫箟绉侀挜鍏抽敭璇�
+     */
+    public static final String KEY_RSA_PRIVATEKEY = "RSAPrivateKey";
+    /**
+     * 瀹氫箟绛惧悕绠楁硶
+     */
+    private final static String KEY_RSA_SIGNATURE = "MD5withRSA";
+
+    /**
+     * 鐢熸垚鍏瀵嗛挜瀵�
+     */
+    public static Map<String, Object> init() {
+        Map<String, Object> map = null;
+        try {
+            KeyPairGenerator generator = KeyPairGenerator.getInstance(KEY_RSA);
+            //璁剧疆瀵嗛挜瀵圭殑bit鏁帮紝瓒婂ぇ瓒婂畨鍏紝浣嗛�熷害鍑忔參锛屼竴鑸娇鐢�512鎴�1024
+            generator.initialize(KEYSIZE);
+            KeyPair keyPair = generator.generateKeyPair();
+            // 鑾峰彇鍏挜
+            RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
+            // 鑾峰彇绉侀挜
+            RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
+            // 灏嗗瘑閽ュ灏佽涓篗ap
+            map = new HashMap<>(2);
+            map.put(KEY_RSA_PUBLICKEY, publicKey);
+            map.put(KEY_RSA_PRIVATEKEY, privateKey);
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        }
+
+        return map;
+    }
+
+    /**
+     * 鑾峰彇Base64缂栫爜鐨勫叕閽ュ瓧绗︿覆
+     */
+    public static String getPublicKey(Map<String, Object> map) {
+        String str = "";
+        Key key = (Key) map.get(KEY_RSA_PUBLICKEY);
+        str = encryptBase64(key.getEncoded());
+        return str;
+    }
+
+    /**
+     * 鑾峰彇Base64缂栫爜鐨勭閽ュ瓧绗︿覆
+     */
+    public static String getPrivateKey(Map<String, Object> map) {
+        String str = "";
+        Key key = (Key) map.get(KEY_RSA_PRIVATEKEY);
+        str = encryptBase64(key.getEncoded());
+        return str;
+    }
+
+    /**
+     * BASE64 瑙g爜
+     *
+     * @param key 闇�瑕丅ase64瑙g爜鐨勫瓧绗︿覆
+     * @return 瀛楄妭鏁扮粍
+     */
+    public static byte[] decryptBase64(String key) {
+       // return Base64.getDecoder().decode(key);
+        return Base64.decode(key);
+    }
+
+    /**
+     * BASE64 缂栫爜
+     *
+     * @param key 闇�瑕丅ase64缂栫爜鐨勫瓧鑺傛暟缁�
+     * @return 瀛楃涓�
+     */
+    public static String encryptBase64(byte[] key) {
+       // return new String(Base64.getEncoder().encode(key));
+        return new String(Base64.encode(key));
+    }
+
+    /**
+     * 鍏挜鍔犲瘑  濡傛灉澶т簬245鍒欏垎娈靛姞瀵�
+     */
+    public static String encryptByPublic(String encryptingStr, String publicKeyStr) {
+        try {
+            // 灏嗗叕閽ョ敱瀛楃涓茶浆涓篣TF-8鏍煎紡鐨勫瓧鑺傛暟缁�
+            byte[] publicKeyBytes = decryptBase64(publicKeyStr);
+            // 鑾峰緱鍏挜
+            X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
+            // 鍙栧緱寰呭姞瀵嗘暟鎹�
+            byte[] data = encryptingStr.getBytes(StandardCharsets.UTF_8);
+            KeyFactory factory;
+            factory = KeyFactory.getInstance(KEY_RSA);
+            PublicKey publicKey = factory.generatePublic(keySpec);
+            // 瀵规暟鎹姞瀵�
+            Cipher cipher = Cipher.getInstance(factory.getAlgorithm());
+            cipher.init(Cipher.ENCRYPT_MODE, publicKey);
+            int inputLen = data.length;
+            ByteArrayOutputStream out = new ByteArrayOutputStream();
+            int offSet = 0;
+            byte[] cache;
+            int i = 0;
+            // 瀵规暟鎹垎娈靛姞瀵�
+            while (inputLen - offSet > 0) {
+                if (inputLen - offSet > MAX_ENCRYPT_BLOCK) {
+                    cache = cipher.doFinal(data, offSet, MAX_ENCRYPT_BLOCK);
+                } else {
+                    cache = cipher.doFinal(data, offSet, inputLen - offSet);
+                }
+                out.write(cache, 0, cache.length);
+                i++;
+                offSet = i * MAX_ENCRYPT_BLOCK;
+            }
+            byte[] encryptedData = out.toByteArray();
+            out.close();
+            // 杩斿洖鍔犲瘑鍚庣敱Base64缂栫爜鐨勫姞瀵嗕俊鎭�
+            return encryptBase64(encryptedData);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    /**
+     * 绉侀挜瑙e瘑 濡傛灉澶т簬256鍒欏垎娈佃В瀵�
+     */
+    public static String decryptByPrivate(String encryptedStr, String privateKeyStr) {
+        try {
+            // 瀵圭閽ヨВ瀵�
+            byte[] privateKeyBytes = decryptBase64(privateKeyStr);
+            // 鑾峰緱绉侀挜
+            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
+            // 鑾峰緱寰呰В瀵嗘暟鎹�
+            byte[] data = decryptBase64(encryptedStr);
+            KeyFactory factory = KeyFactory.getInstance(KEY_RSA);
+            PrivateKey privateKey = factory.generatePrivate(keySpec);
+            // 瀵规暟鎹В瀵�
+            Cipher cipher = Cipher.getInstance(factory.getAlgorithm());
+            cipher.init(Cipher.DECRYPT_MODE, privateKey);
+            int inputLen = data.length;
+            ByteArrayOutputStream out = new ByteArrayOutputStream();
+            int offSet = 0;
+            byte[] cache;
+            int i = 0;
+            // 瀵规暟鎹垎娈佃В瀵�
+            while (inputLen - offSet > 0) {
+                if (inputLen - offSet > MAX_DECRYPT_BLOCK) {
+                    cache = cipher.doFinal(data, offSet, MAX_DECRYPT_BLOCK);
+                } else {
+                    cache = cipher.doFinal(data, offSet, inputLen - offSet);
+                }
+                out.write(cache, 0, cache.length);
+                i++;
+                offSet = i * MAX_DECRYPT_BLOCK;
+            }
+            byte[] decryptedData = out.toByteArray();
+            out.close();
+            // 杩斿洖UTF-8缂栫爜鐨勮В瀵嗕俊鎭�
+            return new String(decryptedData, StandardCharsets.UTF_8);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    /**
+     * 绉侀挜鍔犲瘑  濡傛灉澶т簬245鍒欏垎娈靛姞瀵�
+     */
+    public static String encryptByPrivate(String encryptingStr, String privateKeyStr) {
+        try {
+            byte[] privateKeyBytes = decryptBase64(privateKeyStr);
+            // 鑾峰緱绉侀挜
+            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
+            // 鍙栧緱寰呭姞瀵嗘暟鎹�
+            byte[] data = encryptingStr.getBytes(StandardCharsets.UTF_8);
+            KeyFactory factory = KeyFactory.getInstance(KEY_RSA);
+            PrivateKey privateKey = factory.generatePrivate(keySpec);
+            // 瀵规暟鎹姞瀵�
+            Cipher cipher = Cipher.getInstance(factory.getAlgorithm());
+            cipher.init(Cipher.ENCRYPT_MODE, privateKey);
+            int inputLen = data.length;
+            ByteArrayOutputStream out = new ByteArrayOutputStream();
+            int offSet = 0;
+            byte[] cache;
+            int i = 0;
+            // 瀵规暟鎹垎娈靛姞瀵�
+            while (inputLen - offSet > 0) {
+                if (inputLen - offSet > MAX_ENCRYPT_BLOCK) {
+                    cache = cipher.doFinal(data, offSet, MAX_ENCRYPT_BLOCK);
+                } else {
+                    cache = cipher.doFinal(data, offSet, inputLen - offSet);
+                }
+                out.write(cache, 0, cache.length);
+                i++;
+                offSet = i * MAX_ENCRYPT_BLOCK;
+            }
+            byte[] encryptedData = out.toByteArray();
+            out.close();
+            // 杩斿洖鍔犲瘑鍚庣敱Base64缂栫爜鐨勫姞瀵嗕俊鎭�
+            return encryptBase64(encryptedData);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 鍏挜瑙e瘑 濡傛灉澶т簬256鍒欏垎娈佃В瀵�
+     */
+    public static String decryptByPublic(String encryptedStr, String publicKeyStr) {
+        try {
+            // 瀵瑰叕閽ヨВ瀵�
+            byte[] publicKeyBytes = decryptBase64(publicKeyStr);
+            // 鍙栧緱鍏挜
+            X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
+            // 鍙栧緱寰呭姞瀵嗘暟鎹�
+            byte[] data = decryptBase64(encryptedStr);
+            KeyFactory factory = KeyFactory.getInstance(KEY_RSA);
+            PublicKey publicKey = factory.generatePublic(keySpec);
+            // 瀵规暟鎹В瀵�
+            Cipher cipher = Cipher.getInstance(factory.getAlgorithm());
+            cipher.init(Cipher.DECRYPT_MODE, publicKey);
+            int inputLen = data.length;
+            ByteArrayOutputStream out = new ByteArrayOutputStream();
+            int offSet = 0;
+            byte[] cache;
+            int i = 0;
+            // 瀵规暟鎹垎娈佃В瀵�
+            while (inputLen - offSet > 0) {
+                if (inputLen - offSet > MAX_DECRYPT_BLOCK) {
+                    cache = cipher.doFinal(data, offSet, MAX_DECRYPT_BLOCK);
+                } else {
+                    cache = cipher.doFinal(data, offSet, inputLen - offSet);
+                }
+                out.write(cache, 0, cache.length);
+                i++;
+                offSet = i * MAX_DECRYPT_BLOCK;
+            }
+            byte[] decryptedData = out.toByteArray();
+            out.close();
+            // 杩斿洖UTF-8缂栫爜鐨勮В瀵嗕俊鎭�
+            return new String(decryptedData, StandardCharsets.UTF_8);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 鐢ㄧ閽ュ鍔犲瘑鏁版嵁杩涜绛惧悕
+     */
+    public static String sign(String encryptedStr, String privateKey) {
+        String str = "";
+        try {
+            //灏嗙閽ュ姞瀵嗘暟鎹瓧绗︿覆杞崲涓哄瓧鑺傛暟缁�
+            byte[] data = encryptedStr.getBytes();
+            // 瑙e瘑鐢眀ase64缂栫爜鐨勭閽�
+            byte[] bytes = decryptBase64(privateKey);
+            // 鏋勯�燩KCS8EncodedKeySpec瀵硅薄
+            PKCS8EncodedKeySpec pkcs = new PKCS8EncodedKeySpec(bytes);
+            // 鎸囧畾鐨勫姞瀵嗙畻娉�
+            KeyFactory factory = KeyFactory.getInstance(KEY_RSA);
+            // 鍙栫閽ュ璞�
+            PrivateKey key = factory.generatePrivate(pkcs);
+            // 鐢ㄧ閽ュ淇℃伅鐢熸垚鏁板瓧绛惧悕
+            Signature signature = Signature.getInstance(KEY_RSA_SIGNATURE);
+            signature.initSign(key);
+            signature.update(data);
+            str = encryptBase64(signature.sign());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return str;
+    }
+
+    /**
+     * 鏍¢獙鏁板瓧绛惧悕
+     *
+     * @return 鏍¢獙鎴愬姛杩斿洖true锛屽け璐ヨ繑鍥瀎alse
+     */
+    public static boolean verify(String encryptedStr, String publicKey, String sign) {
+        boolean flag = false;
+        try {
+            //灏嗙閽ュ姞瀵嗘暟鎹瓧绗︿覆杞崲涓哄瓧鑺傛暟缁�
+            byte[] data = encryptedStr.getBytes();
+            // 瑙e瘑鐢眀ase64缂栫爜鐨勫叕閽�
+            byte[] bytes = decryptBase64(publicKey);
+            // 鏋勯�燲509EncodedKeySpec瀵硅薄
+            X509EncodedKeySpec keySpec = new X509EncodedKeySpec(bytes);
+            // 鎸囧畾鐨勫姞瀵嗙畻娉�
+            KeyFactory factory = KeyFactory.getInstance(KEY_RSA);
+            // 鍙栧叕閽ュ璞�
+            PublicKey key = factory.generatePublic(keySpec);
+            // 鐢ㄥ叕閽ラ獙璇佹暟瀛楃鍚�
+            Signature signature = Signature.getInstance(KEY_RSA_SIGNATURE);
+            signature.initVerify(key);
+            signature.update(data);
+            flag = signature.verify(decryptBase64(sign));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return flag;
+    }
+
+
+    /**
+     * 鍔熻兘鎻忚堪:鏍煎紡鍖栧叕绉侀挜 C++鏍煎紡
+     * 鍏挜瀛楃涓插紑澶磋鍔犱笂鈥�-----BEGIN PUBLIC KEY-----\n鈥濓紝缁撳熬鍔犱笂鈥淺n-----END PUBLIC KEY-----\n鈥�
+     * 绉侀挜瀛楃涓插紑澶磋鍔犱笂鈥�-----BEGIN RSA PRIVATE KEY-----\n鈥濓紝缁撳熬鍔犱笂鈥淺n-----END RSA PRIVATE KEY-----\n鈥�
+     *
+     * @param str  瑕佹牸寮忕殑瀛楃涓�, flag
+     * @param flag true涓哄叕 false涓虹
+     * @return java.lang.String
+     * @author xiaobu
+     * @date 2020/3/18 16:40
+     * @version 1.0
+     */
+    public static String formatStr(String str, boolean flag) {
+        StringBuilder sb = new StringBuilder(str);
+        for (int i = 0, len = sb.length(); i < len; i++) {
+            if (i % 64 == 0) {
+                sb.insert(i, "\n");
+            }
+        }
+        if (flag) {
+            sb = new StringBuilder("-----BEGIN PUBLIC KEY-----").append(sb).append("\n-----END PUBLIC KEY-----\n");
+        } else {
+            sb = new StringBuilder("-----BEGIN RSA PRIVATE KEY-----").append(sb).append("\n-----END RSA PRIVATE KEY-----\n");
+        }
+        return sb.toString();
+    }
+
+}
diff --git a/src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml b/src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml
index fb93759..368136a 100644
--- a/src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml
+++ b/src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml
@@ -15,10 +15,6 @@
         <Property name="label">搴撳尯浠g爜</Property>
         <Property name="required">true</Property>
       </PropertyDef>
-      <PropertyDef name="appId">
-        <Property></Property>
-        <Property name="label">appId</Property>
-      </PropertyDef>
       <PropertyDef name="gatewayId">
         <Property></Property>
         <Property name="label">缃戝叧ID</Property>
@@ -276,11 +272,6 @@
             <AutoFormElement>
               <Property name="name">gatewayHardDisk</Property>
               <Property name="property">gatewayHardDisk</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">appId</Property>
-              <Property name="property">appId</Property>
               <Editor/>
             </AutoFormElement>
             <AutoFormElement>
diff --git a/src/main/java/com/fzzy/push/gb2022/HttpClientUtil.java b/src/main/java/com/fzzy/push/gb2022/HttpClientUtil.java
index f7fb25b..b52cd8e 100644
--- a/src/main/java/com/fzzy/push/gb2022/HttpClientUtil.java
+++ b/src/main/java/com/fzzy/push/gb2022/HttpClientUtil.java
@@ -3,7 +3,6 @@
 import com.alibaba.fastjson.JSON;
 import com.fzzy.api.dto.ResponseDto;
 
-import com.fzzy.gateway.data.GatewayResponse;
 import lombok.extern.slf4j.Slf4j;
 
 import org.apache.commons.lang.StringUtils;
@@ -138,100 +137,6 @@
             responseDto = JSON.parseObject(rs, ResponseDto.class);
             if (responseDto == null) return new ResponseDto(99, "鎺ュ彛璇锋眰鍙戠敓鏈煡閿欒");
             responseDto.setJSESSIONID(JSESSIONID);
-            return responseDto;
-        } finally {
-            try {
-                outputStream.close();
-                if (in != null) {
-                    in.close();
-                }
-            } catch (Exception e) {
-            }
-            outputStream = null;
-            if (connection != null)
-                connection.disconnect();
-            connection = null;
-        }
-    }
-
-
-    public static GatewayResponse pushGateway(String url, Map<String, Object> map) throws Exception {
-        log.info("---------鎺ュ彛璇锋眰鍦板潃锛�" + url + "----------鍙傛暟锛�" + JSON.toJSONString(map) + "---------");
-
-        BufferedReader in = null;
-        URL urls = new URL(url);
-        HttpURLConnection connection = null;
-        OutputStream outputStream = null;
-        String rs = "";
-        GatewayResponse responseDto;
-        try {
-            connection = (HttpURLConnection) urls.openConnection();
-            connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=----footfoodapplicationrequestnetwork");
-            connection.setDoOutput(true);
-            connection.setDoInput(true);
-            connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8");
-            connection.setRequestProperty("Accept", "*/*");
-            connection.setRequestProperty("Range", "bytes=" + "");
-            connection.setConnectTimeout(20000);
-            connection.setReadTimeout(30000);
-            connection.setRequestMethod("POST");
-
-            StringBuffer buffer = new StringBuffer();
-            outputStream = connection.getOutputStream();
-            Set<Map.Entry<String, Object>> entries = map.entrySet();
-            for (Map.Entry<String, Object> entry : entries) {
-                // 姣忔閮芥竻绌篵uffer锛岄伩鍏嶅啓鍏ヤ笂娆$殑鏁版嵁
-                buffer.delete(0, buffer.length());
-                buffer.append("------footfoodapplicationrequestnetwork\r\n");
-                Object value = entry.getValue();
-                if (!(value instanceof File)) {
-                    buffer.append("Content-Disposition: form-data; name=\"");
-                    buffer.append(entry.getKey());
-                    buffer.append("\"\r\n\r\n");
-                    buffer.append(entry.getValue());
-                    buffer.append("\r\n");
-                    outputStream.write(buffer.toString().getBytes());
-                } else {
-                    buffer.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"; filename=\"" + ((File) entry.getValue()).getName() + "\"\r\n");
-                    buffer.append("Content-Type: " + "zip" + "\r\n\r\n");
-                    outputStream.write(buffer.toString().getBytes());
-                    File file = (File) entry.getValue();
-                    DataInputStream ins = new DataInputStream(new FileInputStream(file));
-                    int bytes = 0;
-                    byte[] bufferOut = new byte[1024];
-                    while ((bytes = ins.read(bufferOut)) != -1) {
-                        outputStream.write(bufferOut, 0, bytes);
-                    }
-                    // 鏂囦欢娴佸悗闈㈡坊鍔犳崲琛岋紝鍚﹀垯鏂囦欢鍚庨潰鐨勪竴涓弬鏁颁細涓㈠け
-                    outputStream.write("\r\n".getBytes());
-                }
-            }
-            if (entries != null && map.size() > 0) {
-                buffer.delete(0, buffer.length());
-                buffer.append("------footfoodapplicationrequestnetwork--\r\n");
-            }
-            outputStream.write(buffer.toString().getBytes());
-            try {
-                connection.connect();
-                if (connection.getResponseCode() == 200) {
-                    in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
-                    String line = "";
-                    while ((line = in.readLine()) != null) {
-                        rs += line;
-                    }
-                } else {
-                    log.error("http鐘舵�侊細" + connection.getResponseCode());
-                    log.error("http娑堟伅锛�" + connection.getResponseMessage());
-                }
-            } catch (Exception e) {
-                System.out.println("鍙戠敓寮傚父");
-                log.error(e.getMessage(), e);
-                rs = null;
-                return new GatewayResponse(99, e.getMessage());
-            }
-            log.info("---------鎺ュ彛杩斿洖锛�" + rs + "---------");
-            responseDto = JSON.parseObject(rs, GatewayResponse.class);
-            if (responseDto == null) return new GatewayResponse(99, "鎺ュ彛璇锋眰鍙戠敓鏈煡閿欒");
             return responseDto;
         } finally {
             try {

--
Gitblit v1.9.3