From 362c1af8bcafedd15dcd81e72fb6888b93e5000b Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Tue, 14 May 2024 16:23:58 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/service/ISiteNewsService.java         |    2 
 src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java |   17 +++-----
 src/main/java/com/nq/utils/http/HttpRequest.java           |   34 ++++++-----------
 src/main/java/com/nq/utils/task/news/NewsTask.java         |   30 +++++++++-----
 4 files changed, 39 insertions(+), 44 deletions(-)

diff --git a/src/main/java/com/nq/service/ISiteNewsService.java b/src/main/java/com/nq/service/ISiteNewsService.java
index ee3b3cb..4b8132c 100644
--- a/src/main/java/com/nq/service/ISiteNewsService.java
+++ b/src/main/java/com/nq/service/ISiteNewsService.java
@@ -42,7 +42,7 @@
     /**
      * 抓取新闻
      */
-    int grabNews();
+    void grabNews();
 
     /**
      * 新闻资讯-修改新闻浏览量
diff --git a/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java b/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
index 4c49c04..36279ac 100644
--- a/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
@@ -130,24 +130,20 @@
         return ServerResponse.createBySuccess(pageInfo);
     }
 
-    /*新闻资讯-抓取*/
     @Override
-    public int grabNews() {
-            int ret = 0;
-         addNews(1, EStockType.IN.getStockUrl() +"stock-markets?key="+ EStockType.IN.getStockKey() +"&type=4");
-         return ret;
+    public void grabNews() {
+        addNews(1, EStockType.IN.getStockUrl() + "stock-markets?key=" + EStockType.IN.getStockKey() + "&type=4");
     }
 
-    private int addNews(Integer type, String url){
-        int k = 0;
+    private void addNews(Integer type, String url) {
         try {
             String newlist = HttpRequest.doGrabGet(url);
             JSONArray jsonArray = JSONArray.fromObject(newlist);
-            if(jsonArray.size()>0){
+            if (jsonArray.size() > 0) {
                 for (int i = 0; i < jsonArray.size(); i++) {
                     JSONObject jsonObject = jsonArray.getJSONObject(i);
                     String newsId = jsonObject.getString("id");
-                    if(siteNewsMapper.getNewsBySourceIdCount(newsId) == 0){
+                    if (siteNewsMapper.getNewsBySourceIdCount(newsId) == 0) {
                         SiteNews siteNews = new SiteNews();
                         siteNews.setSourceId(newsId);
                         siteNews.setSourceName("");
@@ -165,10 +161,11 @@
             }
         } catch (Exception e) {
             e.printStackTrace();
+            log.error("添加新闻出现异常: " + e.getMessage());
         }
-        return k;
     }
 
+
     public static String  convertBase64ToImage(String base64Str, String path) {
         byte[] imageBytes = Base64.getDecoder().decode(base64Str);
         try {
diff --git a/src/main/java/com/nq/utils/http/HttpRequest.java b/src/main/java/com/nq/utils/http/HttpRequest.java
index 586fbbc..a41fafa 100644
--- a/src/main/java/com/nq/utils/http/HttpRequest.java
+++ b/src/main/java/com/nq/utils/http/HttpRequest.java
@@ -68,50 +68,40 @@
 
     /*
     *抓數據專用,
-    *signature:授權碼
-    * timestamp:時間戳
     * url
     */
     public static String doGrabGet(String url) throws Exception {
-        // Request URL: http://gateway.jinyi999.cn/rjhy-news/api/1/tcy/news/hotlist?columnCodes=cjyw&appCode=tcy&showPermission=0&limit=20&hasContent=0&pageNo=1
         URL localURL = new URL(url);
         URLConnection connection = localURL.openConnection();
 
         HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
         httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");
-        httpURLConnection.setConnectTimeout(6000);
-        InputStream inputStream = null;
-        InputStreamReader inputStreamReader = null;
-        BufferedReader reader = null;
-
+        httpURLConnection.setConnectTimeout(12000); // 设置连接超时时间
+        httpURLConnection.setReadTimeout(12000); // 设置读取超时时间
         StringBuffer resultBuffer = new StringBuffer();
-        String tempLine = null;
 
         if (httpURLConnection.getResponseCode() >= 300) {
+            throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
         }
-        try {
-            inputStream = httpURLConnection.getInputStream();
-            inputStreamReader = new InputStreamReader(inputStream);
-            reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
 
+        try (InputStream inputStream = httpURLConnection.getInputStream();
+             InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
+             BufferedReader reader = new BufferedReader(inputStreamReader)) {
+
+            String tempLine;
             while ((tempLine = reader.readLine()) != null) {
                 resultBuffer.append(tempLine);
             }
+
         } finally {
-            if (reader != null) {
-                reader.close();
-            }
-            if (inputStreamReader != null) {
-                inputStreamReader.close();
-            }
-            if (inputStream != null) {
-                inputStream.close();
-            }
+            httpURLConnection.disconnect(); // 断开连接,释放资源
         }
+
         return resultBuffer.toString();
     }
 
 
+
     public static String doPost(String url, Map<String, String> params) throws Exception {
         HttpPost httpPost = new HttpPost(url);
 
diff --git a/src/main/java/com/nq/utils/task/news/NewsTask.java b/src/main/java/com/nq/utils/task/news/NewsTask.java
index 098d874..1faed51 100644
--- a/src/main/java/com/nq/utils/task/news/NewsTask.java
+++ b/src/main/java/com/nq/utils/task/news/NewsTask.java
@@ -1,13 +1,19 @@
 package com.nq.utils.task.news;
 
+import com.nq.enums.EStockType;
+import com.nq.pojo.SiteNews;
 import com.nq.service.ISiteArticleService;
 import com.nq.service.ISiteNewsService;
+import com.nq.utils.http.HttpRequest;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 //import org.springframework.scheduling.annotation.Scheduled;
@@ -27,27 +33,29 @@
 
     private final Lock NewsInfoTaskLock = new ReentrantLock();
     /*
-    * 新聞資訊抓取
-    * */
+     * 新聞資訊抓取
+     * */
     @Scheduled(cron = "0 0/5 * * * ?")
     public void NewsInfoTask() {
-        if (NewsInfoTask)
-            NewsInfoTask = false;
-        else return;
-        if (NewsInfoTaskLock.tryLock()) {
+        if (NewsInfoTask) // 定义一个布尔变量,代表新闻任务是否在处理中
+            return;
+        NewsInfoTask = true; // 设置处理中标识为 true
+        if (NewsInfoTaskLock.tryLock()) { // 加锁
             try {
                 System.out.println("新闻定时任务---->开始");
-                this.iSiteNewsService.grabNews();
+                iSiteNewsService.grabNews();
             } catch (Exception e) {
-                e.printStackTrace();
+                System.err.println("新闻抓取出现异常: " + e.getMessage()); // 打印具体的异常信息
             } finally {
-                NewsInfoTaskLock.unlock();
-                NewsInfoTask = true;
+                NewsInfoTaskLock.unlock(); // 释放锁
+                NewsInfoTask = false; // 设置处理中标识为 false
+                System.out.println("新闻定时任务---->结束");
             }
-            System.out.println("新闻定时任务---->结束");
         }
     }
 
+
+
     /*
      * 新聞公告抓取
      * */

--
Gitblit v1.9.3