Bladeren bron

实现创建和查看爬取任务

201250038 2 jaren geleden
bovenliggende
commit
2f01dde418

+ 23 - 0
seecoder-bok-common/src/main/java/cn/seecoder/bok/common/KnowledgeType.java

@@ -0,0 +1,23 @@
+package cn.seecoder.bok.common;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public enum KnowledgeType {
+
+    STANDARD("standard"),
+    MONOGRAPH("monograph"),
+    LITERATURE("literature"),
+    CERTIFICATION("certification");
+
+    private final String name;
+
+    KnowledgeType(String name) {
+        this.name = name;
+    }
+
+    @JsonValue
+    public String getName() {
+        return name;
+    }
+
+}

+ 24 - 0
seecoder-bok-common/src/main/java/cn/seecoder/bok/common/TaskStatus.java

@@ -0,0 +1,24 @@
+package cn.seecoder.bok.common;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public enum TaskStatus {
+
+    CREATED("CREATED"),
+    PROCEEDING("PROCEEDING"),
+    FINISHED("FINISHED"),
+    CANCELED("CANCELED"),
+    FAILED("FAILED");
+
+
+    private final String name;
+
+    TaskStatus(String name) {
+        this.name = name;
+    }
+
+    @JsonValue
+    public String getName() {
+        return name;
+    }
+}

+ 106 - 0
seecoder-bok-server/src/main/java/cn/seecoder/seecoderbokserver/domain/CrawlTask.java

@@ -0,0 +1,106 @@
+package cn.seecoder.seecoderbokserver.domain;
+
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.UpdateTimestamp;
+
+import javax.persistence.*;
+import java.time.Instant;
+
+@Entity
+@Table(name = "crawl_task")
+public class CrawlTask {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    @Column(name = "id")
+    private Integer id;
+
+    @Column(name = "url")
+    private String url;
+
+    @Column(name = "knowledge_type")
+    private String knowledgeType;
+
+    @Column(name = "status")
+    private String status;
+
+    @Column(name = "created_at")
+    @CreationTimestamp
+    private Instant createdAt;
+
+    @Column(name = "updated_at")
+    @UpdateTimestamp
+    private Instant updatedAt;
+
+    public CrawlTask() {
+
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getKnowledgeType() {
+        return knowledgeType;
+    }
+
+    public void setKnowledgeType(String knowledgeType) {
+        this.knowledgeType = knowledgeType;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Instant getCreatedAt() {
+        return createdAt;
+    }
+
+    public void setCreatedAt(Instant createdAt) {
+        this.createdAt = createdAt;
+    }
+
+    public Instant getUpdatedAt() {
+        return updatedAt;
+    }
+
+    public void setUpdatedAt(Instant updatedAt) {
+        this.updatedAt = updatedAt;
+    }
+
+    public CrawlTask(Integer id, String url, String knowledgeType, String status, Instant createdAt, Instant updatedAt) {
+        this.id = id;
+        this.url = url;
+        this.knowledgeType = knowledgeType;
+        this.status = status;
+        this.createdAt = createdAt;
+        this.updatedAt = updatedAt;
+    }
+
+    @Override
+    public String toString() {
+        return "CrawlTask{" +
+                "id=" + id +
+                ", url='" + url + '\'' +
+                ", knowledgeType='" + knowledgeType + '\'' +
+                ", status='" + status + '\'' +
+                ", createdAt=" + createdAt +
+                ", updatedAt=" + updatedAt +
+                '}';
+    }
+}

+ 9 - 0
seecoder-bok-server/src/main/java/cn/seecoder/seecoderbokserver/repository/CrawlTaskRepository.java

@@ -0,0 +1,9 @@
+package cn.seecoder.seecoderbokserver.repository;
+
+import cn.seecoder.seecoderbokserver.domain.CrawlTask;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+public interface CrawlTaskRepository extends JpaRepository<CrawlTask, Integer>, JpaSpecificationExecutor<CrawlTask> {
+
+}

+ 13 - 2
seecoder-bok-server/src/main/java/cn/seecoder/seecoderbokserver/service/KnowledgeService.java

@@ -1,7 +1,10 @@
 package cn.seecoder.seecoderbokserver.service;
 
 import cn.seecoder.bok.common.KnowledgeStatus;
+import cn.seecoder.bok.common.TaskStatus;
+import cn.seecoder.seecoderbokserver.domain.CrawlTask;
 import cn.seecoder.seecoderbokserver.domain.Knowledge;
+import cn.seecoder.seecoderbokserver.repository.CrawlTaskRepository;
 import cn.seecoder.seecoderbokserver.repository.KnowledgeRepository;
 import cn.seecoder.seecoderbokserver.utility.EmptyCheck;
 import org.springframework.data.domain.Page;
@@ -26,9 +29,12 @@ public class KnowledgeService {
 
     private final ElasticsearchOperations elasticsearchOperations;
 
-    public KnowledgeService(KnowledgeRepository knowledgeRepository, ElasticsearchOperations elasticsearchOperations) {
+    private final CrawlTaskRepository crawlTaskRepository;
+
+    public KnowledgeService(KnowledgeRepository knowledgeRepository, ElasticsearchOperations elasticsearchOperations, CrawlTaskRepository crawlTaskRepository) {
         this.knowledgeRepository = knowledgeRepository;
         this.elasticsearchOperations = elasticsearchOperations;
+        this.crawlTaskRepository = crawlTaskRepository;
     }
 
     /**
@@ -211,8 +217,13 @@ public class KnowledgeService {
      *
      * @param url 链接
      */
-    public void createCrawlTask(String url) {
+    public void createCrawlTask(CrawlTask task) {
+        task.setStatus(TaskStatus.CREATED.getName());
+        crawlTaskRepository.save(task);
+    }
 
+    public Page<CrawlTask> findCrawlTask(Pageable pageable) {
+        return crawlTaskRepository.findAll(pageable);
     }
 
 

+ 13 - 0
seecoder-bok-server/src/main/java/cn/seecoder/seecoderbokserver/web/rest/KnowledgeController.java

@@ -1,6 +1,7 @@
 package cn.seecoder.seecoderbokserver.web.rest;
 
 import cn.seecoder.bok.common.KnowledgeStatus;
+import cn.seecoder.seecoderbokserver.domain.CrawlTask;
 import cn.seecoder.seecoderbokserver.domain.Knowledge;
 import cn.seecoder.seecoderbokserver.service.KnowledgeService;
 import org.springframework.data.domain.PageRequest;
@@ -71,5 +72,17 @@ public class KnowledgeController {
         return Response.buildSuccess(knowledgeService.findByUUID(uuid));
     }
 
+    @PostMapping ("/crawl")
+    public Response crawlKnowledge(@RequestBody CrawlTask task) {
+        knowledgeService.createCrawlTask(task);
+        return Response.buildSuccess("爬取任务创建成功");
+    }
+
+    @GetMapping("/getCrawlTask")
+    public Response getAllCrawlTask(@RequestParam(name = "offset") int offset,
+                                    @RequestParam(name = "pageSize") int pageSize) {
+        PageRequest pageRequest = PageRequest.of(offset, pageSize);
+        return Response.buildSuccess(knowledgeService.findCrawlTask(pageRequest));
+    }
 
 }