1
zj
2025-04-23 decfc2ff7244cec365d3f32a5090edf5faeae861
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);
        }
@@ -130,48 +130,64 @@
        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() {
        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 + "&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 * 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");
                        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 {