Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

fangtasyj 6 mesiacov pred
rodič
commit
8aed8afb48

+ 10 - 4
ruoyi-zzb/src/main/java/com/ruoyi/zzb/study/common/TestJsoup.java

@@ -20,14 +20,20 @@ public class TestJsoup {
 
         String url = "https://www.163.com/";
 
-         Connection conn = Jsoup.connect(url);
-         conn.data("page","2");     //拼接get请求参数 https://www.163.com/?page=2
-         conn.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36");
-         Document document = conn.timeout(4000).userAgent("Mozilla").get();
+        Connection conn = Jsoup.connect(url);
+        conn.data("page","2");     //拼接get请求参数 https://www.163.com/?page=2
+        conn.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36");
+        Document document = conn.timeout(4000).userAgent("Mozilla").get();
 
 
 
         System.err.println(document.toString());
+
+        System.err.println("end");
+
+
+
+
         // 文字新闻
         Elements textsElement = document.getElementsByClass("cm_ul_round");
         for (Element e : textsElement) {

+ 171 - 0
ruoyi-zzb/src/main/java/com/ruoyi/zzb/study/common/TestJsoup2.java

@@ -0,0 +1,171 @@
+package com.ruoyi.zzb.study.common;
+
+import com.ruoyi.common.utils.DateUtils;
+import org.jsoup.Connection;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.nodes.Node;
+import org.jsoup.select.Elements;
+
+import java.io.IOException;
+import java.text.ParseException;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+public class TestJsoup2 {
+
+    private static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    public static void main(String[] args) throws IOException, ParseException, InterruptedException {
+
+
+//        String url = "
+//        String proxyHost = "127.0.0.1";
+//        int proxyPort = 8888;
+//        Document document = Jsoup.connect(url).proxy(proxyHost, proxyPort).get();
+
+//        String url = "https://news.sina.com.cn/gov/xlxw/2024-11-18/doc-incwmzsr3745291.shtml";
+//        //直接获取DOM树
+//        Document document = Jsoup.connect(url).get();
+//        System.out.println(document.toString());
+
+        String url = "https://difang.gmw.cn/tj/node_12889.htm";
+
+        Connection conn = Jsoup.connect(url);
+//        conn.data("page","2");     //拼接get请求参数 https://www.163.com/?page=2
+        Document document = conn.timeout(10000)
+                .maxBodySize(0)
+                .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36")
+                .get();
+
+
+
+//        System.err.println(document.toString());
+
+        Elements textsElement = document.getElementsByClass("channel-newsGroup");       //获取文章列表
+
+
+//     <ul class="channel-newsGroup">
+//     <li><a href="https://news.gmw.cn/2024-11/23/content_37694371.htm" target="_blank">努力造就高技能专业化劳动大军——天津积极推动职业教育高质量发展</a><span class="channel-newsTime">2024-11-23</span></li>
+//     <li><a href="2024-11/21/content_37691304.htm" target="_blank">2024年世界职业技术教育发展大会在天津开幕</a><span class="channel-newsTime">2024-11-21</span></li>
+//     <li><a href="2024-11/19/content_37686796.htm" target="_blank">老街区里潮流新|“新”在哪?天津这样作答!</a><span class="channel-newsTime">2024-11-19</span></li>
+//     <li><a href="2024-11/19/content_37686559.htm" target="_blank">聚焦高质量发展|打造职教高地 绘就“出彩人生”——天津职教何以领跑?</a><span class="channel-newsTime">2024-11-19</span></li>
+//     <li><a href="2024-11/19/content_37686041.htm" target="_blank">老街区里潮流新|这条古文化街浓缩了津派文化的万千气象</a><span class="channel-newsTime">2024-11-19</span></li>
+//    </ul>
+//    <ul class="channel-newsGroup">
+//     <li><a href="https://news.gmw.cn/2024-11/15/content_37677590.htm" target="_blank">世界职业技术教育发展大会将举办</a><span class="channel-newsTime">2024-11-15</span></li>
+//     <li><a href="https://news.gmw.cn/2024-11/14/content_37675130.htm" target="_blank">国内首座冷热能互换站在天津投产</a><span class="channel-newsTime">2024-11-14</span></li>
+//     <li><a href="2024-11/13/content_37674847.htm" target="_blank">向“新”谋变 以“创”攀高——天津民营经济高质量发展一线观察</a><span class="channel-newsTime">2024-11-13</span></li>
+//     <li><a href="https://news.gmw.cn/2024-11/11/content_37667637.htm" target="_blank">努力当好津甘协作牵线人</a><span class="channel-newsTime">2024-11-11</span></li>
+//     <li><a href="2024-11/05/content_37658288.htm" target="_blank">天津生产消费一线走访见闻:强产业 稳投资 促消费</a><span class="channel-newsTime">2024-11-05</span></li>
+//    </ul>
+
+
+        Document  tmpDocument =null;
+        long flagTime = DateUtils.parseDate("2024-11-18","yyyy-MM-dd").getTime();
+
+        for(Element e : textsElement){
+
+            Elements tags = e.getElementsByTag("li");
+            for (Element tag : tags) {
+
+                String title = tag.getElementsByTag("a").text();
+                String href = tag.getElementsByTag("a").attr("href");
+                String newsTime = tag.getElementsByClass("channel-newsTime").text();
+
+                long docTims =DateUtils.parseDate(newsTime,"yyyy-MM-dd").getTime();
+
+                if (docTims >flagTime) {    //新数据
+                    Thread.sleep(5000L);    //避免频繁访问 放慢请求速度
+                    System.err.println(tag);
+                    System.err.println(href);
+                    System.err.println(title);
+                    System.err.println(newsTime);
+                    //开始爬文章详情页
+
+                    if(!href.contains("https://news.gmw.cn/")){
+                        href = "https://difang.gmw.cn/tj/"+href;
+                    }
+                    conn = Jsoup.connect(href);
+                    tmpDocument = conn.timeout(10000)
+                            .maxBodySize(0)
+                            .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36")
+                            .get();
+
+                    tmpDocument.getElementById("articleBox");
+                    System.err.println(tmpDocument.getElementsByClass("u-title").text());
+                    System.err.println(tmpDocument.getElementsByClass("m-con-time").text());
+                    System.err.println(tmpDocument.getElementsByClass("m-con-source").get(0).getElementsByTag("a").text());
+                    System.err.println(tmpDocument.getElementById("articleBox"));
+
+                    //  写入数据库
+                }
+            }
+
+            //更新 爬虫 状态位
+        }
+
+
+
+
+//        // 文字新闻
+//        Elements textsElement = document.getElementsByClass("cm_ul_round");
+//        for (Element e : textsElement) {
+//            Elements tags = e.getElementsByTag("a");
+//            for (Element tag : tags) {
+//                // 标题
+//                String title = tag.getElementsByAttribute("href").text();
+//                // 链接地址,可以根据需求继续解析网址,获取新闻详细信息
+//                String href = tag.attributes().get("href");
+//                // 所属分类
+//                String classification = null;
+//                if (href.contains("?") && href.contains("clickfrom=w_")) {
+//                    classification = href.substring(href.lastIndexOf("?") + 1).replace("clickfrom=w_", "");
+//                }
+//                System.out.println(title);
+//                System.out.println(href);
+//                System.out.println(classification);
+//            }
+//        }
+//        // 图片新闻
+//        Elements imgs = document.getElementsByClass("cm_bigimg");
+//        for (Element img : imgs) {
+//            Elements photos = img.getElementsByClass("photo");
+//            for (Element photo : photos) {
+//                // 标题
+//                String title = photo.attributes().get("title");
+//                // 链接地址,可以根据需求继续解析网址,获取新闻详细信息
+//                String href = photo.attributes().get("href");
+//                // 封面图
+//                String imgSrc = null;
+//                List<Node> child = photo.childNodes();
+//                for(Node node : child) {
+//                    if (node.hasAttr("data-original")) {
+//                        imgSrc = node.attributes().get("data-original");
+//                        break;
+//                    }
+//                }
+//                // 所属分类
+//                String classification = null;
+//                if (href.contains("?") && href.contains("clickfrom=w_")) {
+//                    classification = href.substring(href.lastIndexOf("?") + 1).replace("clickfrom=w_", "");
+//                }
+//                System.out.println(title);
+//                System.out.println(href);
+//                System.out.println(imgSrc);
+//                System.out.println(classification);
+//            }
+//        }
+//
+    }
+
+
+}
+

+ 52 - 0
ruoyi-zzb/src/main/java/com/ruoyi/zzb/study/common/UserAgentUtil.java

@@ -0,0 +1,52 @@
+package com.ruoyi.zzb.study.common;
+
+import java.util.Random;
+
+public class UserAgentUtil {
+
+    private static final String[] USER_AGENTS = {
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36 Edg/93.0.961.38",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36 Edg/93.0.961.47",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36 Edg/93.0.961.52",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36 Edg/94.0.992.31",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36 Edg/94.0.992.37",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 Edg/94.0.992.50",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.30",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Edg/96.0.1054.29",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.34",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.81",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.31",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.36",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.40",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.41",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.43",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.47",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.55",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.60",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.46",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.57",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.61",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.69",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.2151.44",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.2151.58",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.2151.72",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.2151.93",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.2151.97",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.2210.61",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.2210.77",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.2210.89",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.2210.91",
+            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
+    };
+    public static String getRandomAgent() {
+        int randomIndex = new Random().nextInt(USER_AGENTS.length);
+        String userAgent = USER_AGENTS[randomIndex];
+        return userAgent;
+    }
+}

+ 32 - 0
ruoyi-zzb/src/main/java/com/ruoyi/zzb/study/controller/CrondCrawlerController.java

@@ -0,0 +1,32 @@
+package com.ruoyi.zzb.study.controller;
+
+import com.ruoyi.zzb.study.service.CrondCrawlerService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.IOException;
+
+@Slf4j
+@RestController
+@RequestMapping("/api/study")
+public class CrondCrawlerController {
+    @Autowired
+    private CrondCrawlerService crondCrawlerService;
+
+    @RequestMapping(value = "/crawlergaw", method = RequestMethod.GET)
+    public void crawlerGAWSchedule() throws IOException {
+        log.info("{} : {} ms",  "GAW理论前沿调度任务开始!");
+        int nums =  crondCrawlerService.crawlerDocGawLLQY();
+        log.info("{} : {} 条",  "GAW理论前沿调度任务结束!",nums);
+
+
+        log.info("{} : {} ms",  "GAW学习园地调度任务开始!");
+        nums =  crondCrawlerService.crawlerDocGawXXYD();
+        log.info("{} : {} 条",  "GAW学习园地调度任务结束!",nums);
+    }
+
+}

+ 2 - 1
ruoyi-zzb/src/main/java/com/ruoyi/zzb/study/controller/StudyController.java

@@ -5,7 +5,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.zzb.common.bean.RspResult;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.zzb.common.RspResult;
 import com.ruoyi.zzb.study.domain.StudyDocInfo;
 import com.ruoyi.zzb.study.domain.UserSearchParam;
 import com.ruoyi.zzb.study.domain.req.SaveViewLogVO;

+ 29 - 0
ruoyi-zzb/src/main/java/com/ruoyi/zzb/study/domain/StudyCrawlerStatus.java

@@ -0,0 +1,29 @@
+package com.ruoyi.zzb.study.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+@TableName("ZZB_BASE_STATUS")
+public class StudyCrawlerStatus {
+
+    @NotBlank
+    private String  moduleCode;
+    @NotBlank
+    private String  moduleName;
+
+    @NotBlank
+    private String  serviceCode;
+
+    @NotBlank
+    private String  serviceName;
+
+    @NotBlank
+    private Long  statusTime;
+}

+ 0 - 1
ruoyi-zzb/src/main/java/com/ruoyi/zzb/study/domain/StudyDocInfo.java

@@ -20,7 +20,6 @@ import java.util.Date;
 public class StudyDocInfo {
 
 
-    @NotBlank
     @TableId(type = IdType.ASSIGN_ID)
     private String  docId;
     private String  datasourceCode;

+ 1 - 1
ruoyi-zzb/src/main/java/com/ruoyi/zzb/study/domain/UserSearchParam.java

@@ -5,7 +5,7 @@ import lombok.Data;
 
 /**
  * 用户查询参数类
- * @author pan_junbiao
+ * @author
  **/
 @Data
 public class UserSearchParam extends BasePaging

+ 9 - 0
ruoyi-zzb/src/main/java/com/ruoyi/zzb/study/mapper/StudyCrawlerStatusMapper.java

@@ -0,0 +1,9 @@
+package com.ruoyi.zzb.study.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.zzb.study.domain.StudyCrawlerStatus;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface StudyCrawlerStatusMapper extends BaseMapper<StudyCrawlerStatus> {
+}

+ 101 - 0
ruoyi-zzb/src/main/java/com/ruoyi/zzb/study/service/CrondCrawlerService.java

@@ -0,0 +1,101 @@
+package com.ruoyi.zzb.study.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import com.ruoyi.zzb.study.common.UserAgentUtil;
+import com.ruoyi.zzb.study.domain.StudyCrawlerStatus;
+import com.ruoyi.zzb.study.domain.StudyDocInfo;
+import com.ruoyi.zzb.study.mapper.StudyCrawlerStatusMapper;
+import com.ruoyi.zzb.study.mapper.StudyDocInfoMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.jsoup.Connection;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+
+@Slf4j
+@Service
+@DataSource(value = DataSourceType.SLAVE)
+public class CrondCrawlerService {
+
+    @Autowired
+    private StudyDocInfoMapper studyDocInfoMapper;
+
+    @Autowired
+    private StudyCrawlerStatusMapper studyCrawlerStatusMapper;
+
+    @Value("${crawler.xxyd.url}")
+    private String xxydUrl;
+
+    @Value("${crawler.llqy.url}")
+    private String llqyUrl;
+    /**
+     * 学习园地爬虫
+     */
+    @Scheduled(cron = "${crawler.xxyd.crondTime}")
+    public int crawlerDocGawXXYD() throws IOException {
+
+        log.info("{} : {} ms",  "GAW学习园地调度任务开始!");
+        Connection conn = Jsoup.connect(xxydUrl);
+        Document document = conn.timeout(10000).maxBodySize(0).userAgent(UserAgentUtil.getRandomAgent()).get();
+
+        LambdaQueryWrapper<StudyCrawlerStatus> queryWrapper = new LambdaQueryWrapper();
+        queryWrapper.eq(StudyCrawlerStatus::getModuleCode,"study");
+        queryWrapper.eq(StudyCrawlerStatus::getServiceCode,"xxyd");
+        //获取上次状态位,爬虫时间
+        Long statusTime = studyCrawlerStatusMapper.selectOne(queryWrapper).getStatusTime();
+        System.err.println("xxyd--status"+statusTime);
+
+
+
+        //处理爬虫文章
+
+        //过滤新数据,写入
+
+//        StudyDocInfo studyDocInfo = new StudyDocInfo();
+//        studyDocInfoMapper.insert();
+
+
+        //结束后更新爬虫状态位
+        log.info("{} : {} 条",  "GAW学习园地调度任务结束!");
+
+        return 1;
+    }
+
+    /**
+     * 理论前沿爬虫
+     */
+    @Scheduled(cron = "${crawler.llqy.crondTime}")
+    public int crawlerDocGawLLQY() throws IOException {
+
+        log.info("{} : {} ms",  "GAW理论前沿调度任务开始!");
+        Connection conn = Jsoup.connect(llqyUrl);
+        Document document = conn.timeout(10000).maxBodySize(0).userAgent(UserAgentUtil.getRandomAgent()).get();
+        //获取上次状态位,爬虫时间
+        LambdaQueryWrapper<StudyCrawlerStatus> queryWrapper = new LambdaQueryWrapper();
+        queryWrapper.eq(StudyCrawlerStatus::getModuleCode,"study");
+        queryWrapper.eq(StudyCrawlerStatus::getServiceCode,"llqy");
+        //获取上次状态位,爬虫时间
+        Long statusTime = studyCrawlerStatusMapper.selectOne(queryWrapper).getStatusTime();
+        System.err.println("llqy--status"+statusTime);
+
+        //处理爬虫文章
+
+        //过滤新数据,写入
+
+//        StudyDocInfo studyDocInfo = new StudyDocInfo();
+//        studyDocInfoMapper.insert();
+
+
+        //结束后更新爬虫状态位
+        log.info("{} : {} 条",  "GAW理论前沿调度任务结束!");
+        return 1;
+    }
+}

+ 8 - 2
ruoyi-zzb/src/main/java/com/ruoyi/zzb/study/service/StudyService.java

@@ -48,6 +48,7 @@ public class StudyService {
         queryWrapper.orderByAsc(StudyDocInfo::getCreateTime);
         //分页查询
         rowPage = studyDocInfoMapper.selectPage(rowPage, queryWrapper);
+        log.info("============【学习板块】查询学习文章列表成功!============");
         return rowPage;
 
     }
@@ -57,6 +58,7 @@ public class StudyService {
         queryWrapper.eq(StudyDocInfo::getDocId,id);
 
         StudyDocInfo studyDocInfo= studyDocInfoMapper.selectOne(queryWrapper);
+        log.info("============【学习板块】查询文章成功!{}============",id);
         return studyDocInfo;
     }
 
@@ -65,7 +67,7 @@ public class StudyService {
         if( i!=1 ){
             throw new RuntimeException("数据写入失败,成功0条,入参:"+JSONObject.toJSONString(studyDocInfo));
         }
-
+        log.info("============【学习板块】添加文章成功!============");
         return i == 1;
     }
 
@@ -75,6 +77,7 @@ public class StudyService {
         if( i!=1 ){
             throw new RuntimeException("数据删除失败,docId不存在:"+id);
         }
+        log.info("============【学习板块】删除文章成功!{}============",id);
         return i == 1;
     }
 
@@ -87,6 +90,7 @@ public class StudyService {
         if( i!=1 ){
             throw new RuntimeException("修改文章浏览量失败,docId不存在:"+updatePageViewNumVO.getDocId());
         }
+        log.info("============【学习板块】修改文章浏览量成功!{}============",updatePageViewNumVO.getDocId());
         return i == 1;
     }
 
@@ -121,7 +125,7 @@ public class StudyService {
             throw new RuntimeException("保存访问记录日志保存失败:"+JSONObject.toJSONString(studyViewLogInfo));
         }
 
-
+        log.info("============【学习板块】保存访问记录成功!{}============",saveViewLogVO.getDocId());
         return i == 1 && j ==1;
     }
 
@@ -158,6 +162,8 @@ public class StudyService {
         if(i != 1){
             throw new RuntimeException("docId不存在:"+studyDocInfo.getDocId());
         }
+        log.info("============【学习板块】更新文章成功!{}============",studyDocInfo.getDocId());
+
         return i == 1;
     }
 

+ 0 - 18
ruoyi-zzb/src/main/resources/mapper/UserMapper.xml

@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.zzb.demo.mapper.UserMapper">
-
-	<!--<resultMap type="User" id="UserResult">
-	    <id property="id" column="id" />
-		<result property="username" column="username" />
-		<result property="password" column="password" />
-	</resultMap>-->
-
-	<!--<sql id="selectById">
-		select * from t_user
-	</sql>-->
-	
-
-</mapper>