From ad35d23bdd072d7179eb4bfcb588975f37a68f53 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 07 May 2025 00:32:57 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java |   36 +++++++++++++++++++++++++++++-------
 1 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java b/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
index 36279ac..7b7b3dd 100644
--- a/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
@@ -52,7 +52,7 @@
 
     @Override
     public int update(SiteNews model) {
-        int ret = siteNewsMapper.update(model);
+        int ret = siteNewsMapper.updateById(model);
         return ret>0 ? ret: 0;
     }
 
@@ -63,7 +63,7 @@
     public ServerResponse save(SiteNews model) {
         int ret = 0;
         if(model!=null && model.getId()>0){
-            ret = siteNewsMapper.update(model);
+            ret = siteNewsMapper.updateById(model);
         } else{
             ret = siteNewsMapper.insert(model);
         }
@@ -132,36 +132,58 @@
 
     @Override
     public void grabNews() {
-        addNews(1, EStockType.IN.getStockUrl() + "stock-markets?key=" + EStockType.IN.getStockKey() + "&type=4");
+        String apiUrl = PropertiesUtil.getProperty("ST_HTTP_API");
+        String apiKey = PropertiesUtil.getProperty("ST_KEY");
+
+        // 定义需要抓取的类型
+        int[] types = {1, 2, 3};
+
+        // 批量抓取新闻
+        for (int type : types) {
+            String url = apiUrl + "stock-markets?key=" + apiKey + "&country_id=52&type=" + type;
+            addNews(type, url);
+        }
     }
 
     private void addNews(Integer type, String url) {
         try {
             String newlist = HttpRequest.doGrabGet(url);
+
             JSONArray jsonArray = JSONArray.fromObject(newlist);
+
             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) {
                         SiteNews siteNews = new SiteNews();
                         siteNews.setSourceId(newsId);
                         siteNews.setSourceName("");
                         siteNews.setTitle(jsonObject.getString("title"));
+
                         Long showTime = jsonObject.getLong("time");
                         siteNews.setShowTime(new Date(showTime * 1000));
-                        siteNews.setImgurl(jsonObject.getString("img"));
+
+                        if (jsonObject.has("img")) {
+                            String imageUrl = jsonObject.getString("img");
+                            String imagePath = PropertiesUtil.getProperty("ftp.address") + newsId + ".jpg";
+                            convertBase64ToImage(imageUrl, imagePath);
+                            siteNews.setImgurl(PropertiesUtil.getProperty("ftp.server.http.prefix") + newsId + ".jpg");
+                        }
+
                         siteNews.setDescription(jsonObject.getString("content"));
                         siteNews.setContent(jsonObject.getString("content"));
                         siteNews.setStatus(1);
-                        siteNews.setType(type);
+                        siteNews.setType(type == 3 ? 4 : type);  // type == 3 时设为 4
+
                         siteNewsMapper.insert(siteNews);
                     }
                 }
             }
         } catch (Exception e) {
-            e.printStackTrace();
-            log.error("添加新闻出现异常: " + e.getMessage());
+            log.error("添加新闻时出错,URL: {}, 类型: {}, 错误信息: {}", url, type, e.getMessage(), e);
         }
     }
 

--
Gitblit v1.9.3