From e26923972dffde65542e61d09032ee0234f0bb7f Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Sat, 18 May 2024 15:18:00 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java | 112 ++++++++++++++++++++++++++++++++------------------------
1 files changed, 64 insertions(+), 48 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java b/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
index 2cbef4a..9e7bff1 100644
--- a/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
@@ -3,11 +3,12 @@
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.nq.common.ServerResponse;
-import com.nq.constant.StockConstant;
import com.nq.dao.SiteNewsMapper;
+import com.nq.enums.EStockType;
import com.nq.pojo.SiteNews;
import com.nq.service.ISiteNewsService;
import com.nq.utils.*;
+import com.nq.utils.http.HttpRequest;
import com.nq.utils.translate.GoogleTranslateUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -17,11 +18,18 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Base64;
import java.util.Date;
import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
/**
* 新闻资讯
+ *
* @author lr
* @date 2020/07/24
*/
@@ -48,7 +56,7 @@
@Override
public int update(SiteNews model) {
int ret = siteNewsMapper.update(model);
- return ret>0 ? ret: 0;
+ return ret > 0 ? ret : 0;
}
/**
@@ -57,12 +65,12 @@
@Override
public ServerResponse save(SiteNews model) {
int ret = 0;
- if(model!=null && model.getId()>0){
+ if (model != null && model.getId() > 0) {
ret = siteNewsMapper.update(model);
- } else{
+ } else {
ret = siteNewsMapper.insert(model);
}
- if(ret>0){
+ if (ret > 0) {
return ServerResponse.createBySuccessMsg("操作成功");
}
return ServerResponse.createByErrorMsg("操作失败");
@@ -75,18 +83,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);
@@ -97,18 +101,16 @@
@Override
public ServerResponse getDetail(int id, HttpServletRequest request) {
SiteNews model = siteNewsMapper.load(id);
- if(model!=null){
+ if (model != null) {
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);
}
@@ -123,7 +125,7 @@
/*新闻资讯-top最新新闻资讯*/
@Override
- public ServerResponse getTopNewsList(int pageSize){
+ public ServerResponse getTopNewsList(int pageSize) {
List<SiteNews> listData = this.siteNewsMapper.getTopNewsList(pageSize);
PageInfo pageInfo = new PageInfo();
@@ -131,39 +133,40 @@
return ServerResponse.createBySuccess(pageInfo);
}
- /*新闻资讯-抓取*/
@Override
- public int grabNews() {
- int ret = 0;
- //新闻类型:1、财经要闻,2、经济数据,3、全球股市,4、7*24全球,5、商品资讯,6、上市公司,7、全球央行
- addNews(1, StockConstant.HTTP_API +"stock-markets?key="+ StockConstant.KEY +"&type=4");
- addNews(2, StockConstant.HTTP_API+"stock-markets?key="+ StockConstant.KEY +"&type=5");
- addNews(4, StockConstant.HTTP_API+"stock-markets?key="+ StockConstant.KEY +"&type=6");
- return ret;
+ public void grabNews() {
+ ExecutorService executor = Executors.newFixedThreadPool(2);
+ try {
+ executor.submit(() -> addNews(1, EStockType.MAS.getStockUrl() + "stock-markets?key=" + EStockType.MAS.getStockKey() + "&type=4"));
+ executor.submit(() -> addNews(3, EStockType.MAS.getStockUrl() + "stock-markets?key=" + EStockType.MAS.getStockKey() + "&type=2"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("添加新闻出现异常: " + e.getMessage());
+ } finally {
+ if (executor != null) {
+ executor.shutdown();
+ }
+ }
}
-
- /*
- *抓取新闻专用
- * type:新闻类型:1、财经要闻,2、经济数据,3、全球股市,4、7*24全球,5、商品资讯,6、上市公司,7、全球央行
- * */
- 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){
- for (int i = 0; i < jsonArray.size(); i++) {
+ int size = jsonArray.size(); // 将jsonArray.size()的计算结果存储在变量中
+ if (size > 0) {
+ for (int i = 0; i < 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));
+ siteNews.setShowTime(new Date(showTime * 1000));
if(jsonObject.has("img")){
- siteNews.setImgurl(jsonObject.getString("img"));
+ convertBase64ToImage(jsonObject.getString("img"),PropertiesUtil.getProperty("ftp.address")+newsId+".jpg");
+ siteNews.setImgurl(PropertiesUtil.getProperty("ftp.server.http.prefix")+newsId+".jpg");
}
siteNews.setDescription(jsonObject.getString("content"));
siteNews.setContent(jsonObject.getString("content"));
@@ -175,8 +178,21 @@
}
} 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 {
+ File file = new File(path);
+ FileOutputStream fos = new FileOutputStream(file);
+ fos.write(imageBytes);
+ fos.flush();
+ fos.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return path;
+ }
}
--
Gitblit v1.9.3