From bda682cfed723ca3be4ff39ab1972b8a69197bfb Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: Sat, 07 Oct 2023 10:18:24 +0800
Subject: [PATCH] 取消mapper注解 HttpUtils替换RestTemplate 增加HttpUtils日志

---
 /dev/null                                                                |   21 --
 src/main/java/com/ard/alarm/camera/mapper/ArdCamerasMapper.java          |    5 
 src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java |    8 
 src/main/java/com/ard/utils/Constants.java                               |  137 +++++++++++++++
 src/main/resources/logback-spring.xml                                    |   19 +
 src/main/java/com/ard/utils/http/HttpUtils.java                          |  276 ++++++++++++++++++++++++++++++
 src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java  |    1 
 src/main/java/com/ard/config/ApplicationConfig.java                      |   15 +
 src/main/resources/application-dev.yml                                   |    9 
 src/main/java/com/ard/alarm/radar/mapper/ArdEquipRadarMapper.java        |    1 
 10 files changed, 455 insertions(+), 37 deletions(-)

diff --git a/src/main/java/com/ard/alarm/camera/mapper/ArdCamerasMapper.java b/src/main/java/com/ard/alarm/camera/mapper/ArdCamerasMapper.java
index 08a2e51..7ed9bfe 100644
--- a/src/main/java/com/ard/alarm/camera/mapper/ArdCamerasMapper.java
+++ b/src/main/java/com/ard/alarm/camera/mapper/ArdCamerasMapper.java
@@ -1,9 +1,9 @@
 package com.ard.alarm.camera.mapper;
 
-import java.util.List;
+
 import com.ard.alarm.camera.domain.ArdCameras;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
+
 
 /**
  * 相机设备Mapper接口
@@ -11,7 +11,6 @@
  * @author 刘苏义
  * @date 2023-02-11
  */
-@Mapper
 public interface ArdCamerasMapper extends BaseMapper<ArdCameras>
 {
 
diff --git a/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java b/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java
index af32b5c..fdeb27a 100644
--- a/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java
+++ b/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java
@@ -12,7 +12,6 @@
  * @author zj
  * @date 2023-03-13
  */
-@Mapper
 public interface ArdEquipExternalMapper extends BaseMapper<ArdEquipExternal>
 {
     ///**
diff --git a/src/main/java/com/ard/alarm/radar/mapper/ArdEquipRadarMapper.java b/src/main/java/com/ard/alarm/radar/mapper/ArdEquipRadarMapper.java
index adab6f0..c180cb4 100644
--- a/src/main/java/com/ard/alarm/radar/mapper/ArdEquipRadarMapper.java
+++ b/src/main/java/com/ard/alarm/radar/mapper/ArdEquipRadarMapper.java
@@ -11,7 +11,6 @@
  * @author zj
  * @date 2023-03-11
  */
-@Mapper
 public interface ArdEquipRadarMapper extends BaseMapper<ArdEquipRadar>
 {
 
diff --git a/src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java b/src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java
index 84bf9d4..ced8991 100644
--- a/src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java
+++ b/src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java
@@ -3,14 +3,13 @@
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.ard.alarm.stealelec.domain.ArdAlarmStealelec;
+import com.ard.utils.http.HttpUtils;
 import com.ard.utils.mqtt.MqttConsumer;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
-
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
@@ -26,8 +25,7 @@
 @Slf4j(topic = "stealAlarm")
 @Service
 public class StealElecAlarmService {
-    @Resource
-    RestTemplate restTemplate;
+
     @Value("${spring.stealelec.url}")
     private String stealElecUrl;
     @Value("${spring.stealelec.enabled}")
@@ -49,7 +47,7 @@
             if (!enabled) {
                 return;
             }
-            String allAlarmData = restTemplate.getForObject(stealElecUrl, String.class);
+            String allAlarmData = HttpUtils.sendGet(stealElecUrl);
             //剔除所有\符号
             String message = allAlarmData.replaceAll("\\\\", "");
             //剔除整个字符串首尾双引号
diff --git a/src/main/java/com/ard/config/ApplicationConfig.java b/src/main/java/com/ard/config/ApplicationConfig.java
new file mode 100644
index 0000000..bf500ea
--- /dev/null
+++ b/src/main/java/com/ard/config/ApplicationConfig.java
@@ -0,0 +1,15 @@
+package com.ard.config;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description:
+ * @ClassName: ApplicationConfig
+ * @Author: 刘苏义
+ * @Date: 2023年10月07日9:54:46
+ **/
+@Configuration
+@MapperScan("com.ard.**.mapper")
+public class ApplicationConfig {
+}
diff --git a/src/main/java/com/ard/config/RestTemplateConfig.java b/src/main/java/com/ard/config/RestTemplateConfig.java
deleted file mode 100644
index a070bd7..0000000
--- a/src/main/java/com/ard/config/RestTemplateConfig.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.ard.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * @Description:
- * @ClassName: RestTemplateConfig
- * @Author: 刘苏义
- * @Date: 2023年06月14日9:32
- * @Version: 1.0
- **/
-@Configuration
-public class RestTemplateConfig {
-    @Bean
-    public RestTemplate restTemplate() {
-        return new RestTemplate();
-    }
-
-}
diff --git a/src/main/java/com/ard/utils/Constants.java b/src/main/java/com/ard/utils/Constants.java
new file mode 100644
index 0000000..0dd64db
--- /dev/null
+++ b/src/main/java/com/ard/utils/Constants.java
@@ -0,0 +1,137 @@
+package com.ard.utils;
+
+/**
+ * @Description: 通用常量信息
+ * @ClassName: Constants
+ * @Author: 刘苏义
+ * @Date: 2023年10月07日10:04:02
+ **/
+public class Constants
+{
+    /**
+     * UTF-8 字符集
+     */
+    public static final String UTF8 = "UTF-8";
+
+    /**
+     * GBK 字符集
+     */
+    public static final String GBK = "GBK";
+
+    /**
+     * www主域
+     */
+    public static final String WWW = "www.";
+
+    /**
+     * http请求
+     */
+    public static final String HTTP = "http://";
+
+    /**
+     * https请求
+     */
+    public static final String HTTPS = "https://";
+
+    /**
+     * 通用成功标识
+     */
+    public static final String SUCCESS = "0";
+
+    /**
+     * 通用失败标识
+     */
+    public static final String FAIL = "1";
+
+    /**
+     * 登录成功
+     */
+    public static final String LOGIN_SUCCESS = "Success";
+
+    /**
+     * 注销
+     */
+    public static final String LOGOUT = "Logout";
+
+    /**
+     * 注册
+     */
+    public static final String REGISTER = "Register";
+
+    /**
+     * 登录失败
+     */
+    public static final String LOGIN_FAIL = "Error";
+
+    /**
+     * 验证码有效期(分钟)
+     */
+    public static final Integer CAPTCHA_EXPIRATION = 2;
+
+    /**
+     * 令牌
+     */
+    public static final String TOKEN = "token";
+
+    /**
+     * 令牌前缀
+     */
+    public static final String TOKEN_PREFIX = "Bearer ";
+
+    /**
+     * 令牌前缀
+     */
+    public static final String LOGIN_USER_KEY = "login_user_key";
+
+    /**
+     * 用户ID
+     */
+    public static final String JWT_USERID = "userid";
+
+
+    /**
+     * 用户头像
+     */
+    public static final String JWT_AVATAR = "avatar";
+
+    /**
+     * 创建时间
+     */
+    public static final String JWT_CREATED = "created";
+
+    /**
+     * 用户权限
+     */
+    public static final String JWT_AUTHORITIES = "authorities";
+
+    /**
+     * 资源映射路径 前缀
+     */
+    public static final String RESOURCE_PREFIX = "/profile";
+
+    /**
+     * RMI 远程方法调用
+     */
+    public static final String LOOKUP_RMI = "rmi:";
+
+    /**
+     * LDAP 远程方法调用
+     */
+    public static final String LOOKUP_LDAP = "ldap:";
+
+    /**
+     * LDAPS 远程方法调用
+     */
+    public static final String LOOKUP_LDAPS = "ldaps:";
+
+    /**
+     * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)
+     */
+    public static final String[] JOB_WHITELIST_STR = { "com.ruoyi" };
+
+    /**
+     * 定时任务违规的字符
+     */
+    public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
+            "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config" };
+}
diff --git a/src/main/java/com/ard/utils/http/HttpUtils.java b/src/main/java/com/ard/utils/http/HttpUtils.java
new file mode 100644
index 0000000..9787ae2
--- /dev/null
+++ b/src/main/java/com/ard/utils/http/HttpUtils.java
@@ -0,0 +1,276 @@
+package com.ard.utils.http;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.ConnectException;
+import java.net.SocketTimeoutException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.nio.charset.StandardCharsets;
+import java.security.cert.X509Certificate;
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import com.ard.utils.Constants;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 通用http发送方法
+ * 
+ * @author ruoyi
+ */
+@Slf4j(topic = "httpUtils")
+public class HttpUtils
+{
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url)
+    {
+        return sendGet(url, StringUtils.EMPTY);
+    }
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url, String param)
+    {
+        return sendGet(url, param, Constants.UTF8);
+    }
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @param contentType 编码类型
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url, String param, String contentType)
+    {
+        StringBuilder result = new StringBuilder();
+        BufferedReader in = null;
+        try
+        {
+            String urlNameString = StringUtils.isNotBlank(param) ? url + "?" + param : url;
+            log.debug("sendGet - {}", urlNameString);
+            URL realUrl = new URL(urlNameString);
+            URLConnection connection = realUrl.openConnection();
+            connection.setRequestProperty("accept", "*/*");
+            connection.setRequestProperty("connection", "Keep-Alive");
+            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            connection.connect();
+            in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));
+            String line;
+            while ((line = in.readLine()) != null)
+            {
+                result.append(line);
+            }
+            log.debug("recv - {}", result);
+        }
+        catch (ConnectException e)
+        {
+            log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e);
+        }
+        catch (SocketTimeoutException e)
+        {
+            log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e);
+        }
+        catch (IOException e)
+        {
+            log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e);
+        }
+        catch (Exception e)
+        {
+            log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e);
+        }
+        finally
+        {
+            try
+            {
+                if (in != null)
+                {
+                    in.close();
+                }
+            }
+            catch (Exception ex)
+            {
+                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * 向指定 URL 发送POST方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendPost(String url, String param)
+    {
+        PrintWriter out = null;
+        BufferedReader in = null;
+        StringBuilder result = new StringBuilder();
+        try
+        {
+            log.debug("sendPost - {}", url);
+            URL realUrl = new URL(url);
+            URLConnection conn = realUrl.openConnection();
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setRequestProperty("Accept-Charset", "utf-8");
+            conn.setRequestProperty("contentType", "utf-8");
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+            out = new PrintWriter(conn.getOutputStream());
+            out.print(param);
+            out.flush();
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
+            String line;
+            while ((line = in.readLine()) != null)
+            {
+                result.append(line);
+            }
+            log.debug("recv - {}", result);
+        }
+        catch (ConnectException e)
+        {
+            log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
+        }
+        catch (SocketTimeoutException e)
+        {
+            log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
+        }
+        catch (IOException e)
+        {
+            log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
+        }
+        catch (Exception e)
+        {
+            log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
+        }
+        finally
+        {
+            try
+            {
+                if (out != null)
+                {
+                    out.close();
+                }
+                if (in != null)
+                {
+                    in.close();
+                }
+            }
+            catch (IOException ex)
+            {
+                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
+            }
+        }
+        return result.toString();
+    }
+
+    public static String sendSSLPost(String url, String param)
+    {
+        StringBuilder result = new StringBuilder();
+        String urlNameString = url + "?" + param;
+        try
+        {
+            log.debug("sendSSLPost - {}", urlNameString);
+            SSLContext sc = SSLContext.getInstance("SSL");
+            sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());
+            URL console = new URL(urlNameString);
+            HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setRequestProperty("Accept-Charset", "utf-8");
+            conn.setRequestProperty("contentType", "utf-8");
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+
+            conn.setSSLSocketFactory(sc.getSocketFactory());
+            conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
+            conn.connect();
+            InputStream is = conn.getInputStream();
+            BufferedReader br = new BufferedReader(new InputStreamReader(is));
+            String ret = "";
+            while ((ret = br.readLine()) != null)
+            {
+                if (ret != null && !"".equals(ret.trim()))
+                {
+                    result.append(new String(ret.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));
+                }
+            }
+            log.debug("recv - {}", result);
+            conn.disconnect();
+            br.close();
+        }
+        catch (ConnectException e)
+        {
+            log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e);
+        }
+        catch (SocketTimeoutException e)
+        {
+            log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e);
+        }
+        catch (IOException e)
+        {
+            log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e);
+        }
+        catch (Exception e)
+        {
+            log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e);
+        }
+        return result.toString();
+    }
+
+    private static class TrustAnyTrustManager implements X509TrustManager
+    {
+        @Override
+        public void checkClientTrusted(X509Certificate[] chain, String authType)
+        {
+        }
+
+        @Override
+        public void checkServerTrusted(X509Certificate[] chain, String authType)
+        {
+        }
+
+        @Override
+        public X509Certificate[] getAcceptedIssuers()
+        {
+            return new X509Certificate[] {};
+        }
+    }
+
+    private static class TrustAnyHostnameVerifier implements HostnameVerifier
+    {
+        @Override
+        public boolean verify(String hostname, SSLSession session)
+        {
+            return true;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index a2c8cdf..3d06baa 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -39,7 +39,7 @@
   # mqtt配置
   mqtt:
     host: tcp://192.168.2.15:1883
-    clientId: cc3
+    clientId: c227
     username: admin
     password: admin
     topic: tube
@@ -48,7 +48,7 @@
     enabled: true
   # 盗电接口地址
   stealelec:
-    enabled: false
+    enabled: true
     url: http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil
   # 三厂数字化地址
   digitization3:
@@ -65,11 +65,12 @@
 # 日志等级配置
 logging:
   level:
-    hikSdk: debug
+    hikSdk: info
     mqtt: info
-    netty: debug
+    netty: info
     external: info
     camera: info
     tube: info
     digitization3: info
     stealAlarm: info
+    httpUtils: info
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
index 164d969..5336ba7 100644
--- a/src/main/resources/logback-spring.xml
+++ b/src/main/resources/logback-spring.xml
@@ -141,7 +141,19 @@
             <pattern>${log.pattern}</pattern>
         </encoder>
     </appender>
-
+    <!--httpUtils日志输出-->
+    <appender name="httpUtils" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/httpUtils.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--按天回滚daily-->
+            <fileNamePattern>${log.path}/httpUtils.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!--日志最大的历史60天-->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
     <root level="DEBUG">
         <appender-ref ref="console"/>
     </root>
@@ -182,6 +194,9 @@
     <logger name="stealAlarm" level="INFO">
         <appender-ref ref="stealAlarm"/>
     </logger>
-
+    <!--HttpUtils操作日志-->
+    <logger name="httpUtils" level="INFO">
+        <appender-ref ref="httpUtils"/>
+    </logger>
 </configuration>
 

--
Gitblit v1.9.3