From 4130970dd61791e0a5cb0771a9b707084f1ed464 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 08 May 2025 00:39:05 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java | 87 ++++++++++++++++++++++++-------------------
1 files changed, 48 insertions(+), 39 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java b/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
index 8ee8059..a5085b6 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);
}
@@ -80,18 +80,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(), "st"));
+ siteNews.setSourceName(googleTranslateUtil.translate(siteNews.getSourceName(), "st"));
+ } catch (Exception e) {
+ log.error("翻译失败");
+ }
+ }
PageInfo pageInfo = new PageInfo(listData);
pageInfo.setList(listData);
@@ -106,14 +102,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,49 +130,64 @@
return ServerResponse.createBySuccess(pageInfo);
}
- /*新闻资讯-抓取*/
@Override
- public int grabNews() {
- int ret = 0;
- addNews(1, EStockType.US.getStockUrl() +"stock-markets?key="+ EStockType.US.getStockKey() +"&type=4");
- addNews(2,EStockType.MAS.getStockUrl() +"stock-markets?key="+ EStockType.MAS.getStockKey() +"&type=5");
- return ret;
+ public void grabNews() {
+ 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 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));
- if(jsonObject.has("img")){
- convertBase64ToImage(jsonObject.getString("img"),PropertiesUtil.getProperty("ftp.address")+newsId+".jpg");
- siteNews.setImgurl(PropertiesUtil.getProperty("ftp.server.http.prefix")+newsId+".jpg");
+ siteNews.setShowTime(new Date(showTime * 1000));
+
+ 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("添加新闻时出错,URL: {}, 类型: {}, 错误信息: {}", url, type, e.getMessage(), e);
}
- return k;
}
+
public static String convertBase64ToImage(String base64Str, String path) {
byte[] imageBytes = Base64.getDecoder().decode(base64Str);
try {
--
Gitblit v1.9.3