From 331800c37d20f0fb12513a8a4143b36c2e2764cb Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Sat, 02 Aug 2025 15:11:29 +0800
Subject: [PATCH] pc接口调整

---
 src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java |   74 ++++++++++++++++++++----------------
 1 files changed, 41 insertions(+), 33 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java b/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
index 379da96..a3d1f0a 100644
--- a/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
@@ -4,7 +4,6 @@
 import com.github.pagehelper.PageInfo;
 import com.nq.common.ServerResponse;
 import com.nq.dao.SiteNewsMapper;
-import com.nq.enums.EStockType;
 import com.nq.pojo.SiteNews;
 import com.nq.service.ISiteNewsService;
 import com.nq.utils.*;
@@ -24,6 +23,8 @@
 import java.util.Base64;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /**
  * 新闻资讯
@@ -80,18 +81,14 @@
         List<SiteNews> listData = this.siteNewsMapper.pageList(pageNum, pageSize, type, sort, keyword);
         GoogleTranslateUtil googleTranslateUtil = new GoogleTranslateUtil();
         //取出每一条数据的内容,进行翻译
-
-//        if (request.getHeader("lang") != null && !request.getHeader("lang").equals("zh-CN")&& !request.getHeader("lang").equals("tww")&& !request.getHeader("lang").equals("")) {
-//            for (SiteNews siteNews : listData) {
-//                try {
-//                    siteNews.setTitle(googleTranslateUtil.translate(siteNews.getTitle(), request.getHeader("lang")));
-//                    siteNews.setSourceName(googleTranslateUtil.translate(siteNews.getSourceName(), request.getHeader("lang")));
-//                } catch (Exception e) {
-//                   log.error("翻译失败");
-//                }
-//            }
-//    }
-
+        for (SiteNews siteNews : listData) {
+            try {
+                siteNews.setTitle(googleTranslateUtil.translate(siteNews.getTitle(), request.getHeader("lang")));
+                siteNews.setSourceName(googleTranslateUtil.translate(siteNews.getSourceName(), request.getHeader("lang")));
+            } catch (Exception e) {
+                log.error("翻译失败");
+            }
+        }
 
         PageInfo pageInfo = new PageInfo(listData);
         pageInfo.setList(listData);
@@ -106,14 +103,12 @@
             GoogleTranslateUtil googleTranslateUtil = new GoogleTranslateUtil();
             //取出每一条数据的内容,进行翻译
 
-            if (request.getHeader("lang") != null && !request.getHeader("lang").equals("zh-CN")&& !request.getHeader("lang").equals("tww")&& !request.getHeader("lang").equals("")) {
-                try {
-                    model.setContent(googleTranslateUtil.translate(model.getContent(), request.getHeader("lang")));
-                    model.setTitle(googleTranslateUtil.translate(model.getTitle(), request.getHeader("lang")));
-                    model.setDescription(googleTranslateUtil.translate(model.getDescription(), request.getHeader("lang")));
-                } catch (Exception e) {
-                    log.error("翻译失败");
-                }
+            try {
+                model.setContent(googleTranslateUtil.translate(model.getContent(), request.getHeader("lang")));
+                model.setTitle(googleTranslateUtil.translate(model.getTitle(), request.getHeader("lang")));
+                model.setDescription(googleTranslateUtil.translate(model.getDescription(), request.getHeader("lang")));
+            } catch (Exception e) {
+                log.error("翻译失败");
             }
             return ServerResponse.createBySuccess(model);
         }
@@ -136,30 +131,42 @@
         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() {
+        // 创建固定大小的线程池,根据需求调整线程数量
+        ExecutorService executor = Executors.newFixedThreadPool(2);
+        try {
+            // 提交美国新闻抓取任务
+            executor.submit(() ->
+                    addNews(1, PropertiesUtil.getProperty("US_HTTP_API") + "stock-markets?key=" + PropertiesUtil.getProperty("US_KEY") + "&type=1")
+            );
+            // 提交墨西哥新闻抓取任务
+            executor.submit(() ->
+                    addNews(1, PropertiesUtil.getProperty("MX_HTTP_API") + "stock-markets?key=" + PropertiesUtil.getProperty("MX_KEY") + "&type=1")
+            );
+        } finally {
+            // 关闭线程池
+            executor.shutdown();
+        }
+
     }
 
-    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("");
                         siteNews.setTitle(jsonObject.getString("title"));
-                        Long showTime = jsonObject.getLong("time");
-                        siteNews.setShowTime(new Date(showTime));
+                        //Long showTime = jsonObject.getLong("time");
+                        long showTime = jsonObject.optLong("time", System.currentTimeMillis() / 1000); // 默认值,表示未找到或转换失败
+                        siteNews.setShowTime(new Date(showTime * 1000));
                         if(jsonObject.has("img")){
                             convertBase64ToImage(jsonObject.getString("img"),PropertiesUtil.getProperty("ftp.address")+newsId+".jpg");
                             siteNews.setImgurl(PropertiesUtil.getProperty("ftp.server.http.prefix")+newsId+".jpg");
@@ -174,10 +181,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 {

--
Gitblit v1.9.3