wangyunpeng 1 mesiac pred
rodič
commit
9dbfbc454a
21 zmenil súbory, kde vykonal 2857 pridanie a 1135 odobranie
  1. 8 0
      .idea/inspectionProfiles/Project_Default.xml
  2. 69 0
      core/src/main/java/com/tzld/supply/api/SpiderApiService.java
  3. 120 0
      core/src/main/java/com/tzld/supply/dao/mapper/supply/spider/SpiderContentMapper.java
  4. 13 37
      core/src/main/java/com/tzld/supply/dao/mapper/supply/spider/SpiderTaskMapper.java
  5. 10 0
      core/src/main/java/com/tzld/supply/dao/mapper/supply/spider/ext/SpiderMapperExt.java
  6. 25 0
      core/src/main/java/com/tzld/supply/job/ContentScreenJob.java
  7. 86 0
      core/src/main/java/com/tzld/supply/job/SpiderJob.java
  8. 28 0
      core/src/main/java/com/tzld/supply/model/entity/ContentRankResponse.java
  9. 0 526
      core/src/main/java/com/tzld/supply/model/po/spider/SpiderTask.java
  10. 452 0
      core/src/main/java/com/tzld/supply/model/po/supply/spider/SpiderContent.java
  11. 1002 0
      core/src/main/java/com/tzld/supply/model/po/supply/spider/SpiderContentExample.java
  12. 344 0
      core/src/main/java/com/tzld/supply/model/po/supply/spider/SpiderTask.java
  13. 86 337
      core/src/main/java/com/tzld/supply/model/po/supply/spider/SpiderTaskExample.java
  14. 1 1
      core/src/main/java/com/tzld/supply/service/SpiderTaskService.java
  15. 2 2
      core/src/main/java/com/tzld/supply/service/impl/SpiderTaskServiceImpl.java
  16. 3 2
      core/src/main/resources/generator/mybatis-spider-generator-config.xml
  17. 477 0
      core/src/main/resources/mapper/supply/spider/SpiderContentMapper.xml
  18. 71 229
      core/src/main/resources/mapper/supply/spider/SpiderTaskMapper.xml
  19. 14 0
      core/src/main/resources/mapper/supply/spider/ext/SpiderMapperExt.xml
  20. 1 1
      server/src/main/java/com/tzld/supply/controller/SpiderTaskController.java
  21. 45 0
      server/src/main/java/com/tzld/supply/controller/XxlJobController.java

+ 8 - 0
.idea/inspectionProfiles/Project_Default.xml

@@ -0,0 +1,8 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true">
+      <option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.io.PrintStream,printf,okhttp3.Call,execute" />
+    </inspection_tool>
+  </profile>
+</component>

+ 69 - 0
core/src/main/java/com/tzld/supply/api/SpiderApiService.java

@@ -0,0 +1,69 @@
+package com.tzld.supply.api;
+
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.supply.model.entity.ContentRankResponse;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.*;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+
+@Slf4j
+@Component
+public class SpiderApiService {
+
+    private OkHttpClient client;
+
+    @PostConstruct
+    public void init() {
+        client = new OkHttpClient().newBuilder()
+                .connectTimeout(5, TimeUnit.MINUTES)
+                .readTimeout(5, TimeUnit.MINUTES)
+                .writeTimeout(5, TimeUnit.MINUTES)
+                .build();
+    }
+
+    /**
+     * 发送内容排名请求
+     * @param sortType 排序类型
+     * @param category 分类
+     * @param cursor 分页游标
+     * @return ContentRankResponse 响应对象
+     * @throws IOException 如果请求失败
+     */
+    public ContentRankResponse sendContentRankRequest(String sortType, String category, int cursor) {
+        // 创建请求 URL
+        String url = "http://crawapi.piaoquantv.com/crawler/jin_ri_re_bang/content_rank";
+
+        // 构建请求体 JSON
+        JSONObject param = new JSONObject();
+        param.put("sort_type", sortType);
+        param.put("category", category);
+        param.put("cursor", cursor);
+
+        // 创建请求体
+        RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), param.toJSONString());
+
+        // 构建请求
+        Request request = new Request.Builder()
+                .url(url)
+                .post(body)
+                .build();
+        // 发送同步请求 (如果需要异步可使用 enqueue)
+        try {
+            Response response = client.newCall(request).execute();
+            if (response.isSuccessful()) {
+                // 获取响应体并转换为字符串
+                String responseBody = response.body().string();
+                // 将 JSON 响应映射到 ContentRankResponse 对象
+                return JSONObject.parseObject(responseBody, ContentRankResponse.class);
+            }
+        } catch (IOException e) {
+            log.error("发送内容排名请求失败: {}", e.getMessage(), e);
+        }
+        return null;
+    }
+
+}

+ 120 - 0
core/src/main/java/com/tzld/supply/dao/mapper/supply/spider/SpiderContentMapper.java

@@ -0,0 +1,120 @@
+package com.tzld.supply.dao.mapper.supply.spider;
+
+import com.tzld.supply.model.po.supply.spider.SpiderContent;
+import com.tzld.supply.model.po.supply.spider.SpiderContentExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface SpiderContentMapper {
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    long countByExample(SpiderContentExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    int deleteByExample(SpiderContentExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    int insert(SpiderContent record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    int insertSelective(SpiderContent record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    List<SpiderContent> selectByExampleWithBLOBs(SpiderContentExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    List<SpiderContent> selectByExample(SpiderContentExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    SpiderContent selectByPrimaryKey(Long id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    int updateByExampleSelective(@Param("record") SpiderContent record, @Param("example") SpiderContentExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    int updateByExampleWithBLOBs(@Param("record") SpiderContent record, @Param("example") SpiderContentExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    int updateByExample(@Param("record") SpiderContent record, @Param("example") SpiderContentExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    int updateByPrimaryKeySelective(SpiderContent record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    int updateByPrimaryKeyWithBLOBs(SpiderContent record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    int updateByPrimaryKey(SpiderContent record);
+}

+ 13 - 37
core/src/main/java/com/tzld/supply/dao/mapper/supply/spider/SpiderTaskMapper.java

@@ -1,7 +1,7 @@
 package com.tzld.supply.dao.mapper.supply.spider;
 
-import com.tzld.supply.model.po.spider.SpiderTask;
-import com.tzld.supply.model.po.spider.SpiderTaskExample;
+import com.tzld.supply.model.po.supply.spider.SpiderTask;
+import com.tzld.supply.model.po.supply.spider.SpiderTaskExample;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 
@@ -10,7 +10,7 @@ public interface SpiderTaskMapper {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     long countByExample(SpiderTaskExample example);
 
@@ -18,7 +18,7 @@ public interface SpiderTaskMapper {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     int deleteByExample(SpiderTaskExample example);
 
@@ -26,7 +26,7 @@ public interface SpiderTaskMapper {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     int deleteByPrimaryKey(Long id);
 
@@ -34,7 +34,7 @@ public interface SpiderTaskMapper {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     int insert(SpiderTask record);
 
@@ -42,7 +42,7 @@ public interface SpiderTaskMapper {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     int insertSelective(SpiderTask record);
 
@@ -50,15 +50,7 @@ public interface SpiderTaskMapper {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    List<SpiderTask> selectByExampleWithBLOBs(SpiderTaskExample example);
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method corresponds to the database table spider_task
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     List<SpiderTask> selectByExample(SpiderTaskExample example);
 
@@ -66,7 +58,7 @@ public interface SpiderTaskMapper {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     SpiderTask selectByPrimaryKey(Long id);
 
@@ -74,7 +66,7 @@ public interface SpiderTaskMapper {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     int updateByExampleSelective(@Param("record") SpiderTask record, @Param("example") SpiderTaskExample example);
 
@@ -82,15 +74,7 @@ public interface SpiderTaskMapper {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    int updateByExampleWithBLOBs(@Param("record") SpiderTask record, @Param("example") SpiderTaskExample example);
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method corresponds to the database table spider_task
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     int updateByExample(@Param("record") SpiderTask record, @Param("example") SpiderTaskExample example);
 
@@ -98,7 +82,7 @@ public interface SpiderTaskMapper {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     int updateByPrimaryKeySelective(SpiderTask record);
 
@@ -106,15 +90,7 @@ public interface SpiderTaskMapper {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    int updateByPrimaryKeyWithBLOBs(SpiderTask record);
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method corresponds to the database table spider_task
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     int updateByPrimaryKey(SpiderTask record);
 }

+ 10 - 0
core/src/main/java/com/tzld/supply/dao/mapper/supply/spider/ext/SpiderMapperExt.java

@@ -0,0 +1,10 @@
+package com.tzld.supply.dao.mapper.supply.spider.ext;
+
+import com.tzld.supply.model.po.supply.spider.SpiderContent;
+
+import java.util.List;
+
+public interface SpiderMapperExt {
+
+    int batchInsertSpiderContent(List<SpiderContent> contentList);
+}

+ 25 - 0
core/src/main/java/com/tzld/supply/job/ContentScreenJob.java

@@ -0,0 +1,25 @@
+package com.tzld.supply.job;
+
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+public class ContentScreenJob {
+
+    @XxlJob("contentRoughScreenJob")
+    public ReturnT<String> contentRoughScreenJob(String param) {
+
+        return ReturnT.SUCCESS;
+    }
+
+    @XxlJob("contentPrecisionScreenJob")
+    public ReturnT<String> contentPrecisionScreenJob(String param) {
+
+        return ReturnT.SUCCESS;
+    }
+
+
+}

+ 86 - 0
core/src/main/java/com/tzld/supply/job/SpiderJob.java

@@ -0,0 +1,86 @@
+package com.tzld.supply.job;
+
+import com.tzld.supply.api.SpiderApiService;
+import com.tzld.supply.dao.mapper.supply.spider.SpiderTaskMapper;
+import com.tzld.supply.dao.mapper.supply.spider.ext.SpiderMapperExt;
+import com.tzld.supply.model.entity.ContentRankResponse;
+import com.tzld.supply.model.po.supply.spider.SpiderContent;
+import com.tzld.supply.model.po.supply.spider.SpiderTask;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@Component
+public class SpiderJob {
+
+    @Autowired
+    private SpiderApiService spiderApiService;
+    @Autowired
+    private SpiderTaskMapper spiderTaskMapper;
+    @Autowired
+    private SpiderMapperExt spiderMapperExt;
+
+    @Value("${get.rank.page.size:5}")
+    private Integer getRankPageSize;
+
+    @XxlJob("spiderTaskJob")
+    public ReturnT<String> spiderTaskJob(String param) {
+        int cursor = 1;
+        List<ContentRankResponse.DataItem> dataItems = new ArrayList<>();
+        Long startTime = System.currentTimeMillis();
+        while (getRankPageSize >= cursor) {
+            ContentRankResponse response = spiderApiService.sendContentRankRequest("最热", "news", cursor);
+            if (response == null) {
+                break;
+            }
+            if (!response.isHas_more()) {
+                break;
+            }
+            cursor = response.getNext_cursor();
+            dataItems.addAll(response.getData());
+        }
+        Long endTime = System.currentTimeMillis();
+        SpiderTask task = new SpiderTask();
+        task.setSourceWeb("https://tophub.today/c/news");
+        task.setStartTime(startTime);
+        task.setEndTime(endTime);
+        task.setDurationMs(endTime - startTime);
+        task.setCreateTime(endTime);
+        task.setUpdateTime(endTime);
+        List<SpiderContent> saveList = new ArrayList<>();
+        Long now = System.currentTimeMillis();
+        for (ContentRankResponse.DataItem dataItem : dataItems) {
+            if (dataItem.getRankList() == null || dataItem.getRankList().isEmpty()) {
+                continue;
+            }
+            for (ContentRankResponse.RankListItem rankListItem : dataItem.getRankList()) {
+                SpiderContent content = new SpiderContent();
+                content.setSource(dataItem.getSource());
+                content.setSourceType(dataItem.getType());
+                content.setTitle(rankListItem.getTitle());
+                content.setUrl(rankListItem.getLink());
+                content.setCreateTime(now);
+                content.setUpdateTime(now);
+                saveList.add(content);
+            }
+        }
+        task.setFetchedCount(saveList.size());
+        spiderTaskMapper.insertSelective(task);
+        spiderMapperExt.batchInsertSpiderContent(saveList);
+        return ReturnT.SUCCESS;
+    }
+
+    @XxlJob("searchContentDetailJob")
+    public ReturnT<String> searchContentDetailJob(String param) {
+
+        return ReturnT.SUCCESS;
+    }
+
+}

+ 28 - 0
core/src/main/java/com/tzld/supply/model/entity/ContentRankResponse.java

@@ -0,0 +1,28 @@
+package com.tzld.supply.model.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ContentRankResponse {
+    private boolean has_more;
+    private int next_cursor;
+    private List<DataItem> data;
+
+    @Data
+    public static class DataItem {
+        private String source;
+        private String jump_url;
+        private String type;
+        private List<RankListItem> rankList;
+    }
+
+    @Data
+    public static class RankListItem {
+        private String title;
+        private String link;
+        private String heat;
+        private int rank;
+    }
+}

+ 0 - 526
core/src/main/java/com/tzld/supply/model/po/spider/SpiderTask.java

@@ -1,526 +0,0 @@
-package com.tzld.supply.model.po.spider;
-
-import java.util.Date;
-
-/**
- *
- * This class was generated by MyBatis Generator.
- * This class corresponds to the database table spider_task
- */
-public class SpiderTask {
-    /**
-     * Database Column Remarks:
-     *   主键ID
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.id
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private Long id;
-
-    /**
-     * Database Column Remarks:
-     *   任务编码,如: NEWS_HOT_TOPHUB
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.task_code
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private String taskCode;
-
-    /**
-     * Database Column Remarks:
-     *   任务名称
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.task_name
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private String taskName;
-
-    /**
-     * Database Column Remarks:
-     *   来源网站ID,关联 content_source.id
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.source_id
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private Long sourceId;
-
-    /**
-     * Database Column Remarks:
-     *   执行状态 0-待执行 1-执行中 2-成功 3-失败
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.status
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private Byte status;
-
-    /**
-     * Database Column Remarks:
-     *   任务开始时间
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.start_time
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private Date startTime;
-
-    /**
-     * Database Column Remarks:
-     *   任务结束时间
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.end_time
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private Date endTime;
-
-    /**
-     * Database Column Remarks:
-     *   任务执行耗时(毫秒)
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.duration_ms
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private Long durationMs;
-
-    /**
-     * Database Column Remarks:
-     *   爬取内容数量
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.fetched_count
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private Integer fetchedCount;
-
-    /**
-     * Database Column Remarks:
-     *   成功入库数量
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.success_count
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private Integer successCount;
-
-    /**
-     * Database Column Remarks:
-     *   失败数量
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.fail_count
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private Integer failCount;
-
-    /**
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.create_time
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private Date createTime;
-
-    /**
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.update_time
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private Date updateTime;
-
-    /**
-     * Database Column Remarks:
-     *   错误信息
-     *
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column spider_task.error_message
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    private String errorMessage;
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.id
-     *
-     * @return the value of spider_task.id
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public Long getId() {
-        return id;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.id
-     *
-     * @param id the value for spider_task.id
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.task_code
-     *
-     * @return the value of spider_task.task_code
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public String getTaskCode() {
-        return taskCode;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.task_code
-     *
-     * @param taskCode the value for spider_task.task_code
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setTaskCode(String taskCode) {
-        this.taskCode = taskCode;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.task_name
-     *
-     * @return the value of spider_task.task_name
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public String getTaskName() {
-        return taskName;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.task_name
-     *
-     * @param taskName the value for spider_task.task_name
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setTaskName(String taskName) {
-        this.taskName = taskName;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.source_id
-     *
-     * @return the value of spider_task.source_id
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public Long getSourceId() {
-        return sourceId;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.source_id
-     *
-     * @param sourceId the value for spider_task.source_id
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setSourceId(Long sourceId) {
-        this.sourceId = sourceId;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.status
-     *
-     * @return the value of spider_task.status
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public Byte getStatus() {
-        return status;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.status
-     *
-     * @param status the value for spider_task.status
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setStatus(Byte status) {
-        this.status = status;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.start_time
-     *
-     * @return the value of spider_task.start_time
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public Date getStartTime() {
-        return startTime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.start_time
-     *
-     * @param startTime the value for spider_task.start_time
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setStartTime(Date startTime) {
-        this.startTime = startTime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.end_time
-     *
-     * @return the value of spider_task.end_time
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public Date getEndTime() {
-        return endTime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.end_time
-     *
-     * @param endTime the value for spider_task.end_time
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setEndTime(Date endTime) {
-        this.endTime = endTime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.duration_ms
-     *
-     * @return the value of spider_task.duration_ms
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public Long getDurationMs() {
-        return durationMs;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.duration_ms
-     *
-     * @param durationMs the value for spider_task.duration_ms
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setDurationMs(Long durationMs) {
-        this.durationMs = durationMs;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.fetched_count
-     *
-     * @return the value of spider_task.fetched_count
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public Integer getFetchedCount() {
-        return fetchedCount;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.fetched_count
-     *
-     * @param fetchedCount the value for spider_task.fetched_count
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setFetchedCount(Integer fetchedCount) {
-        this.fetchedCount = fetchedCount;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.success_count
-     *
-     * @return the value of spider_task.success_count
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public Integer getSuccessCount() {
-        return successCount;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.success_count
-     *
-     * @param successCount the value for spider_task.success_count
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setSuccessCount(Integer successCount) {
-        this.successCount = successCount;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.fail_count
-     *
-     * @return the value of spider_task.fail_count
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public Integer getFailCount() {
-        return failCount;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.fail_count
-     *
-     * @param failCount the value for spider_task.fail_count
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setFailCount(Integer failCount) {
-        this.failCount = failCount;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.create_time
-     *
-     * @return the value of spider_task.create_time
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.create_time
-     *
-     * @param createTime the value for spider_task.create_time
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.update_time
-     *
-     * @return the value of spider_task.update_time
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public Date getUpdateTime() {
-        return updateTime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.update_time
-     *
-     * @param updateTime the value for spider_task.update_time
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setUpdateTime(Date updateTime) {
-        this.updateTime = updateTime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column spider_task.error_message
-     *
-     * @return the value of spider_task.error_message
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public String getErrorMessage() {
-        return errorMessage;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column spider_task.error_message
-     *
-     * @param errorMessage the value for spider_task.error_message
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    public void setErrorMessage(String errorMessage) {
-        this.errorMessage = errorMessage;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method corresponds to the database table spider_task
-     *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
-     */
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append(getClass().getSimpleName());
-        sb.append(" [");
-        sb.append("Hash = ").append(hashCode());
-        sb.append(", id=").append(id);
-        sb.append(", taskCode=").append(taskCode);
-        sb.append(", taskName=").append(taskName);
-        sb.append(", sourceId=").append(sourceId);
-        sb.append(", status=").append(status);
-        sb.append(", startTime=").append(startTime);
-        sb.append(", endTime=").append(endTime);
-        sb.append(", durationMs=").append(durationMs);
-        sb.append(", fetchedCount=").append(fetchedCount);
-        sb.append(", successCount=").append(successCount);
-        sb.append(", failCount=").append(failCount);
-        sb.append(", createTime=").append(createTime);
-        sb.append(", updateTime=").append(updateTime);
-        sb.append(", errorMessage=").append(errorMessage);
-        sb.append("]");
-        return sb.toString();
-    }
-}

+ 452 - 0
core/src/main/java/com/tzld/supply/model/po/supply/spider/SpiderContent.java

@@ -0,0 +1,452 @@
+package com.tzld.supply.model.po.supply.spider;
+
+/**
+ *
+ * This class was generated by MyBatis Generator.
+ * This class corresponds to the database table spider_content
+ */
+public class SpiderContent {
+    /**
+     * Database Column Remarks:
+     *   主键ID
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_content.id
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Long id;
+
+    /**
+     * Database Column Remarks:
+     *   爬虫任务ID
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_content.task_id
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Long taskId;
+
+    /**
+     * Database Column Remarks:
+     *   来源
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_content.source
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private String source;
+
+    /**
+     * Database Column Remarks:
+     *   来源类型
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_content.source_type
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private String sourceType;
+
+    /**
+     * Database Column Remarks:
+     *   原始URL
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_content.url
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private String url;
+
+    /**
+     * Database Column Remarks:
+     *   标题
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_content.title
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private String title;
+
+    /**
+     * Database Column Remarks:
+     *   处理状态 0-待分析 1-筛选中 2-通过 3-废弃
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_content.status
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Byte status;
+
+    /**
+     * Database Column Remarks:
+     *   粗筛状态 0-未分析 1-粗筛通过 2-粗筛不通过
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_content.ai_rough_status
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Byte aiRoughStatus;
+
+    /**
+     * Database Column Remarks:
+     *   精筛状态 0-未分析 1-分析成功 2-分析失败
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_content.ai_precision_status
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Byte aiPrecisionStatus;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_content.create_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Long createTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_content.update_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Long updateTime;
+
+    /**
+     * Database Column Remarks:
+     *   正文内容(纯文本)
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_content.content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private String content;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_content.id
+     *
+     * @return the value of spider_content.id
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Long getId() {
+        return id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_content.id
+     *
+     * @param id the value for spider_content.id
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_content.task_id
+     *
+     * @return the value of spider_content.task_id
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Long getTaskId() {
+        return taskId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_content.task_id
+     *
+     * @param taskId the value for spider_content.task_id
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setTaskId(Long taskId) {
+        this.taskId = taskId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_content.source
+     *
+     * @return the value of spider_content.source
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public String getSource() {
+        return source;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_content.source
+     *
+     * @param source the value for spider_content.source
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setSource(String source) {
+        this.source = source;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_content.source_type
+     *
+     * @return the value of spider_content.source_type
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public String getSourceType() {
+        return sourceType;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_content.source_type
+     *
+     * @param sourceType the value for spider_content.source_type
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setSourceType(String sourceType) {
+        this.sourceType = sourceType;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_content.url
+     *
+     * @return the value of spider_content.url
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public String getUrl() {
+        return url;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_content.url
+     *
+     * @param url the value for spider_content.url
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_content.title
+     *
+     * @return the value of spider_content.title
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_content.title
+     *
+     * @param title the value for spider_content.title
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_content.status
+     *
+     * @return the value of spider_content.status
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Byte getStatus() {
+        return status;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_content.status
+     *
+     * @param status the value for spider_content.status
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setStatus(Byte status) {
+        this.status = status;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_content.ai_rough_status
+     *
+     * @return the value of spider_content.ai_rough_status
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Byte getAiRoughStatus() {
+        return aiRoughStatus;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_content.ai_rough_status
+     *
+     * @param aiRoughStatus the value for spider_content.ai_rough_status
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setAiRoughStatus(Byte aiRoughStatus) {
+        this.aiRoughStatus = aiRoughStatus;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_content.ai_precision_status
+     *
+     * @return the value of spider_content.ai_precision_status
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Byte getAiPrecisionStatus() {
+        return aiPrecisionStatus;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_content.ai_precision_status
+     *
+     * @param aiPrecisionStatus the value for spider_content.ai_precision_status
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setAiPrecisionStatus(Byte aiPrecisionStatus) {
+        this.aiPrecisionStatus = aiPrecisionStatus;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_content.create_time
+     *
+     * @return the value of spider_content.create_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_content.create_time
+     *
+     * @param createTime the value for spider_content.create_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_content.update_time
+     *
+     * @return the value of spider_content.update_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Long getUpdateTime() {
+        return updateTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_content.update_time
+     *
+     * @param updateTime the value for spider_content.update_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setUpdateTime(Long updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_content.content
+     *
+     * @return the value of spider_content.content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public String getContent() {
+        return content;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_content.content
+     *
+     * @param content the value for spider_content.content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", taskId=").append(taskId);
+        sb.append(", source=").append(source);
+        sb.append(", sourceType=").append(sourceType);
+        sb.append(", url=").append(url);
+        sb.append(", title=").append(title);
+        sb.append(", status=").append(status);
+        sb.append(", aiRoughStatus=").append(aiRoughStatus);
+        sb.append(", aiPrecisionStatus=").append(aiPrecisionStatus);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", content=").append(content);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 1002 - 0
core/src/main/java/com/tzld/supply/model/po/supply/spider/SpiderContentExample.java

@@ -0,0 +1,1002 @@
+package com.tzld.supply.model.po.supply.spider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SpiderContentExample {
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    protected String orderByClause;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    protected boolean distinct;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    protected List<Criteria> oredCriteria;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public SpiderContentExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Long value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Long value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Long value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Long value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Long value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Long> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Long> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Long value1, Long value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Long value1, Long value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskIdIsNull() {
+            addCriterion("task_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskIdIsNotNull() {
+            addCriterion("task_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskIdEqualTo(Long value) {
+            addCriterion("task_id =", value, "taskId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskIdNotEqualTo(Long value) {
+            addCriterion("task_id <>", value, "taskId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskIdGreaterThan(Long value) {
+            addCriterion("task_id >", value, "taskId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("task_id >=", value, "taskId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskIdLessThan(Long value) {
+            addCriterion("task_id <", value, "taskId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskIdLessThanOrEqualTo(Long value) {
+            addCriterion("task_id <=", value, "taskId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskIdIn(List<Long> values) {
+            addCriterion("task_id in", values, "taskId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskIdNotIn(List<Long> values) {
+            addCriterion("task_id not in", values, "taskId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskIdBetween(Long value1, Long value2) {
+            addCriterion("task_id between", value1, value2, "taskId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskIdNotBetween(Long value1, Long value2) {
+            addCriterion("task_id not between", value1, value2, "taskId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceIsNull() {
+            addCriterion("`source` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceIsNotNull() {
+            addCriterion("`source` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceEqualTo(String value) {
+            addCriterion("`source` =", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceNotEqualTo(String value) {
+            addCriterion("`source` <>", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceGreaterThan(String value) {
+            addCriterion("`source` >", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceGreaterThanOrEqualTo(String value) {
+            addCriterion("`source` >=", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceLessThan(String value) {
+            addCriterion("`source` <", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceLessThanOrEqualTo(String value) {
+            addCriterion("`source` <=", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceLike(String value) {
+            addCriterion("`source` like", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceNotLike(String value) {
+            addCriterion("`source` not like", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceIn(List<String> values) {
+            addCriterion("`source` in", values, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceNotIn(List<String> values) {
+            addCriterion("`source` not in", values, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceBetween(String value1, String value2) {
+            addCriterion("`source` between", value1, value2, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceNotBetween(String value1, String value2) {
+            addCriterion("`source` not between", value1, value2, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeIsNull() {
+            addCriterion("source_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeIsNotNull() {
+            addCriterion("source_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeEqualTo(String value) {
+            addCriterion("source_type =", value, "sourceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeNotEqualTo(String value) {
+            addCriterion("source_type <>", value, "sourceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeGreaterThan(String value) {
+            addCriterion("source_type >", value, "sourceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("source_type >=", value, "sourceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeLessThan(String value) {
+            addCriterion("source_type <", value, "sourceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeLessThanOrEqualTo(String value) {
+            addCriterion("source_type <=", value, "sourceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeLike(String value) {
+            addCriterion("source_type like", value, "sourceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeNotLike(String value) {
+            addCriterion("source_type not like", value, "sourceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeIn(List<String> values) {
+            addCriterion("source_type in", values, "sourceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeNotIn(List<String> values) {
+            addCriterion("source_type not in", values, "sourceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeBetween(String value1, String value2) {
+            addCriterion("source_type between", value1, value2, "sourceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceTypeNotBetween(String value1, String value2) {
+            addCriterion("source_type not between", value1, value2, "sourceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIsNull() {
+            addCriterion("url is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIsNotNull() {
+            addCriterion("url is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlEqualTo(String value) {
+            addCriterion("url =", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotEqualTo(String value) {
+            addCriterion("url <>", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThan(String value) {
+            addCriterion("url >", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThanOrEqualTo(String value) {
+            addCriterion("url >=", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThan(String value) {
+            addCriterion("url <", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThanOrEqualTo(String value) {
+            addCriterion("url <=", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLike(String value) {
+            addCriterion("url like", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotLike(String value) {
+            addCriterion("url not like", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIn(List<String> values) {
+            addCriterion("url in", values, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotIn(List<String> values) {
+            addCriterion("url not in", values, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlBetween(String value1, String value2) {
+            addCriterion("url between", value1, value2, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotBetween(String value1, String value2) {
+            addCriterion("url not between", value1, value2, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleIsNull() {
+            addCriterion("title is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleIsNotNull() {
+            addCriterion("title is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleEqualTo(String value) {
+            addCriterion("title =", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotEqualTo(String value) {
+            addCriterion("title <>", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleGreaterThan(String value) {
+            addCriterion("title >", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleGreaterThanOrEqualTo(String value) {
+            addCriterion("title >=", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleLessThan(String value) {
+            addCriterion("title <", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleLessThanOrEqualTo(String value) {
+            addCriterion("title <=", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleLike(String value) {
+            addCriterion("title like", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotLike(String value) {
+            addCriterion("title not like", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleIn(List<String> values) {
+            addCriterion("title in", values, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotIn(List<String> values) {
+            addCriterion("title not in", values, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleBetween(String value1, String value2) {
+            addCriterion("title between", value1, value2, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotBetween(String value1, String value2) {
+            addCriterion("title not between", value1, value2, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIsNull() {
+            addCriterion("`status` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIsNotNull() {
+            addCriterion("`status` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusEqualTo(Byte value) {
+            addCriterion("`status` =", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotEqualTo(Byte value) {
+            addCriterion("`status` <>", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThan(Byte value) {
+            addCriterion("`status` >", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThanOrEqualTo(Byte value) {
+            addCriterion("`status` >=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThan(Byte value) {
+            addCriterion("`status` <", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThanOrEqualTo(Byte value) {
+            addCriterion("`status` <=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIn(List<Byte> values) {
+            addCriterion("`status` in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotIn(List<Byte> values) {
+            addCriterion("`status` not in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusBetween(Byte value1, Byte value2) {
+            addCriterion("`status` between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotBetween(Byte value1, Byte value2) {
+            addCriterion("`status` not between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiRoughStatusIsNull() {
+            addCriterion("ai_rough_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiRoughStatusIsNotNull() {
+            addCriterion("ai_rough_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiRoughStatusEqualTo(Byte value) {
+            addCriterion("ai_rough_status =", value, "aiRoughStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiRoughStatusNotEqualTo(Byte value) {
+            addCriterion("ai_rough_status <>", value, "aiRoughStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiRoughStatusGreaterThan(Byte value) {
+            addCriterion("ai_rough_status >", value, "aiRoughStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiRoughStatusGreaterThanOrEqualTo(Byte value) {
+            addCriterion("ai_rough_status >=", value, "aiRoughStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiRoughStatusLessThan(Byte value) {
+            addCriterion("ai_rough_status <", value, "aiRoughStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiRoughStatusLessThanOrEqualTo(Byte value) {
+            addCriterion("ai_rough_status <=", value, "aiRoughStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiRoughStatusIn(List<Byte> values) {
+            addCriterion("ai_rough_status in", values, "aiRoughStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiRoughStatusNotIn(List<Byte> values) {
+            addCriterion("ai_rough_status not in", values, "aiRoughStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiRoughStatusBetween(Byte value1, Byte value2) {
+            addCriterion("ai_rough_status between", value1, value2, "aiRoughStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiRoughStatusNotBetween(Byte value1, Byte value2) {
+            addCriterion("ai_rough_status not between", value1, value2, "aiRoughStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiPrecisionStatusIsNull() {
+            addCriterion("ai_precision_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiPrecisionStatusIsNotNull() {
+            addCriterion("ai_precision_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiPrecisionStatusEqualTo(Byte value) {
+            addCriterion("ai_precision_status =", value, "aiPrecisionStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiPrecisionStatusNotEqualTo(Byte value) {
+            addCriterion("ai_precision_status <>", value, "aiPrecisionStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiPrecisionStatusGreaterThan(Byte value) {
+            addCriterion("ai_precision_status >", value, "aiPrecisionStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiPrecisionStatusGreaterThanOrEqualTo(Byte value) {
+            addCriterion("ai_precision_status >=", value, "aiPrecisionStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiPrecisionStatusLessThan(Byte value) {
+            addCriterion("ai_precision_status <", value, "aiPrecisionStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiPrecisionStatusLessThanOrEqualTo(Byte value) {
+            addCriterion("ai_precision_status <=", value, "aiPrecisionStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiPrecisionStatusIn(List<Byte> values) {
+            addCriterion("ai_precision_status in", values, "aiPrecisionStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiPrecisionStatusNotIn(List<Byte> values) {
+            addCriterion("ai_precision_status not in", values, "aiPrecisionStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiPrecisionStatusBetween(Byte value1, Byte value2) {
+            addCriterion("ai_precision_status between", value1, value2, "aiPrecisionStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAiPrecisionStatusNotBetween(Byte value1, Byte value2) {
+            addCriterion("ai_precision_status not between", value1, value2, "aiPrecisionStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNull() {
+            addCriterion("create_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNotNull() {
+            addCriterion("create_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeEqualTo(Long value) {
+            addCriterion("create_time =", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotEqualTo(Long value) {
+            addCriterion("create_time <>", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThan(Long value) {
+            addCriterion("create_time >", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThanOrEqualTo(Long value) {
+            addCriterion("create_time >=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThan(Long value) {
+            addCriterion("create_time <", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThanOrEqualTo(Long value) {
+            addCriterion("create_time <=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIn(List<Long> values) {
+            addCriterion("create_time in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotIn(List<Long> values) {
+            addCriterion("create_time not in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeBetween(Long value1, Long value2) {
+            addCriterion("create_time between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotBetween(Long value1, Long value2) {
+            addCriterion("create_time not between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNull() {
+            addCriterion("update_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNotNull() {
+            addCriterion("update_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeEqualTo(Long value) {
+            addCriterion("update_time =", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotEqualTo(Long value) {
+            addCriterion("update_time <>", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThan(Long value) {
+            addCriterion("update_time >", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThanOrEqualTo(Long value) {
+            addCriterion("update_time >=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThan(Long value) {
+            addCriterion("update_time <", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThanOrEqualTo(Long value) {
+            addCriterion("update_time <=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIn(List<Long> values) {
+            addCriterion("update_time in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotIn(List<Long> values) {
+            addCriterion("update_time not in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeBetween(Long value1, Long value2) {
+            addCriterion("update_time between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotBetween(Long value1, Long value2) {
+            addCriterion("update_time not between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table spider_content
+     *
+     * @mbg.generated do_not_delete_during_merge Mon Oct 13 16:39:53 CST 2025
+     */
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table spider_content
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 344 - 0
core/src/main/java/com/tzld/supply/model/po/supply/spider/SpiderTask.java

@@ -0,0 +1,344 @@
+package com.tzld.supply.model.po.supply.spider;
+
+/**
+ *
+ * This class was generated by MyBatis Generator.
+ * This class corresponds to the database table spider_task
+ */
+public class SpiderTask {
+    /**
+     * Database Column Remarks:
+     *   主键ID
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_task.id
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Long id;
+
+    /**
+     * Database Column Remarks:
+     *   来源网站
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_task.source_web
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private String sourceWeb;
+
+    /**
+     * Database Column Remarks:
+     *   执行状态 0-待执行 1-执行中 2-成功 3-失败
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_task.status
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Byte status;
+
+    /**
+     * Database Column Remarks:
+     *   任务开始时间
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_task.start_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Long startTime;
+
+    /**
+     * Database Column Remarks:
+     *   任务结束时间
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_task.end_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Long endTime;
+
+    /**
+     * Database Column Remarks:
+     *   任务执行耗时(毫秒)
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_task.duration_ms
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Long durationMs;
+
+    /**
+     * Database Column Remarks:
+     *   爬取内容数量
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_task.fetched_count
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Integer fetchedCount;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_task.create_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Long createTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column spider_task.update_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    private Long updateTime;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_task.id
+     *
+     * @return the value of spider_task.id
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Long getId() {
+        return id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_task.id
+     *
+     * @param id the value for spider_task.id
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_task.source_web
+     *
+     * @return the value of spider_task.source_web
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public String getSourceWeb() {
+        return sourceWeb;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_task.source_web
+     *
+     * @param sourceWeb the value for spider_task.source_web
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setSourceWeb(String sourceWeb) {
+        this.sourceWeb = sourceWeb;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_task.status
+     *
+     * @return the value of spider_task.status
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Byte getStatus() {
+        return status;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_task.status
+     *
+     * @param status the value for spider_task.status
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setStatus(Byte status) {
+        this.status = status;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_task.start_time
+     *
+     * @return the value of spider_task.start_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Long getStartTime() {
+        return startTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_task.start_time
+     *
+     * @param startTime the value for spider_task.start_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setStartTime(Long startTime) {
+        this.startTime = startTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_task.end_time
+     *
+     * @return the value of spider_task.end_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Long getEndTime() {
+        return endTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_task.end_time
+     *
+     * @param endTime the value for spider_task.end_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setEndTime(Long endTime) {
+        this.endTime = endTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_task.duration_ms
+     *
+     * @return the value of spider_task.duration_ms
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Long getDurationMs() {
+        return durationMs;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_task.duration_ms
+     *
+     * @param durationMs the value for spider_task.duration_ms
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setDurationMs(Long durationMs) {
+        this.durationMs = durationMs;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_task.fetched_count
+     *
+     * @return the value of spider_task.fetched_count
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Integer getFetchedCount() {
+        return fetchedCount;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_task.fetched_count
+     *
+     * @param fetchedCount the value for spider_task.fetched_count
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setFetchedCount(Integer fetchedCount) {
+        this.fetchedCount = fetchedCount;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_task.create_time
+     *
+     * @return the value of spider_task.create_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_task.create_time
+     *
+     * @param createTime the value for spider_task.create_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column spider_task.update_time
+     *
+     * @return the value of spider_task.update_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public Long getUpdateTime() {
+        return updateTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column spider_task.update_time
+     *
+     * @param updateTime the value for spider_task.update_time
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    public void setUpdateTime(Long updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table spider_task
+     *
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
+     */
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", sourceWeb=").append(sourceWeb);
+        sb.append(", status=").append(status);
+        sb.append(", startTime=").append(startTime);
+        sb.append(", endTime=").append(endTime);
+        sb.append(", durationMs=").append(durationMs);
+        sb.append(", fetchedCount=").append(fetchedCount);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 86 - 337
core/src/main/java/com/tzld/supply/model/po/spider/SpiderTaskExample.java → core/src/main/java/com/tzld/supply/model/po/supply/spider/SpiderTaskExample.java

@@ -1,7 +1,6 @@
-package com.tzld.supply.model.po.spider;
+package com.tzld.supply.model.po.supply.spider;
 
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
 public class SpiderTaskExample {
@@ -9,7 +8,7 @@ public class SpiderTaskExample {
      * This field was generated by MyBatis Generator.
      * This field corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     protected String orderByClause;
 
@@ -17,7 +16,7 @@ public class SpiderTaskExample {
      * This field was generated by MyBatis Generator.
      * This field corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     protected boolean distinct;
 
@@ -25,7 +24,7 @@ public class SpiderTaskExample {
      * This field was generated by MyBatis Generator.
      * This field corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     protected List<Criteria> oredCriteria;
 
@@ -33,7 +32,7 @@ public class SpiderTaskExample {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     public SpiderTaskExample() {
         oredCriteria = new ArrayList<Criteria>();
@@ -43,7 +42,7 @@ public class SpiderTaskExample {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     public void setOrderByClause(String orderByClause) {
         this.orderByClause = orderByClause;
@@ -53,7 +52,7 @@ public class SpiderTaskExample {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     public String getOrderByClause() {
         return orderByClause;
@@ -63,7 +62,7 @@ public class SpiderTaskExample {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     public void setDistinct(boolean distinct) {
         this.distinct = distinct;
@@ -73,7 +72,7 @@ public class SpiderTaskExample {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     public boolean isDistinct() {
         return distinct;
@@ -83,7 +82,7 @@ public class SpiderTaskExample {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     public List<Criteria> getOredCriteria() {
         return oredCriteria;
@@ -93,7 +92,7 @@ public class SpiderTaskExample {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     public void or(Criteria criteria) {
         oredCriteria.add(criteria);
@@ -103,7 +102,7 @@ public class SpiderTaskExample {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     public Criteria or() {
         Criteria criteria = createCriteriaInternal();
@@ -115,7 +114,7 @@ public class SpiderTaskExample {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     public Criteria createCriteria() {
         Criteria criteria = createCriteriaInternal();
@@ -129,7 +128,7 @@ public class SpiderTaskExample {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     protected Criteria createCriteriaInternal() {
         Criteria criteria = new Criteria();
@@ -140,7 +139,7 @@ public class SpiderTaskExample {
      * This method was generated by MyBatis Generator.
      * This method corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     public void clear() {
         oredCriteria.clear();
@@ -152,7 +151,7 @@ public class SpiderTaskExample {
      * This class was generated by MyBatis Generator.
      * This class corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     protected abstract static class GeneratedCriteria {
         protected List<Criterion> criteria;
@@ -255,203 +254,73 @@ public class SpiderTaskExample {
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeIsNull() {
-            addCriterion("task_code is null");
+        public Criteria andSourceWebIsNull() {
+            addCriterion("source_web is null");
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeIsNotNull() {
-            addCriterion("task_code is not null");
+        public Criteria andSourceWebIsNotNull() {
+            addCriterion("source_web is not null");
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeEqualTo(String value) {
-            addCriterion("task_code =", value, "taskCode");
+        public Criteria andSourceWebEqualTo(String value) {
+            addCriterion("source_web =", value, "sourceWeb");
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeNotEqualTo(String value) {
-            addCriterion("task_code <>", value, "taskCode");
+        public Criteria andSourceWebNotEqualTo(String value) {
+            addCriterion("source_web <>", value, "sourceWeb");
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeGreaterThan(String value) {
-            addCriterion("task_code >", value, "taskCode");
+        public Criteria andSourceWebGreaterThan(String value) {
+            addCriterion("source_web >", value, "sourceWeb");
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeGreaterThanOrEqualTo(String value) {
-            addCriterion("task_code >=", value, "taskCode");
+        public Criteria andSourceWebGreaterThanOrEqualTo(String value) {
+            addCriterion("source_web >=", value, "sourceWeb");
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeLessThan(String value) {
-            addCriterion("task_code <", value, "taskCode");
+        public Criteria andSourceWebLessThan(String value) {
+            addCriterion("source_web <", value, "sourceWeb");
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeLessThanOrEqualTo(String value) {
-            addCriterion("task_code <=", value, "taskCode");
+        public Criteria andSourceWebLessThanOrEqualTo(String value) {
+            addCriterion("source_web <=", value, "sourceWeb");
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeLike(String value) {
-            addCriterion("task_code like", value, "taskCode");
+        public Criteria andSourceWebLike(String value) {
+            addCriterion("source_web like", value, "sourceWeb");
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeNotLike(String value) {
-            addCriterion("task_code not like", value, "taskCode");
+        public Criteria andSourceWebNotLike(String value) {
+            addCriterion("source_web not like", value, "sourceWeb");
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeIn(List<String> values) {
-            addCriterion("task_code in", values, "taskCode");
+        public Criteria andSourceWebIn(List<String> values) {
+            addCriterion("source_web in", values, "sourceWeb");
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeNotIn(List<String> values) {
-            addCriterion("task_code not in", values, "taskCode");
+        public Criteria andSourceWebNotIn(List<String> values) {
+            addCriterion("source_web not in", values, "sourceWeb");
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeBetween(String value1, String value2) {
-            addCriterion("task_code between", value1, value2, "taskCode");
+        public Criteria andSourceWebBetween(String value1, String value2) {
+            addCriterion("source_web between", value1, value2, "sourceWeb");
             return (Criteria) this;
         }
 
-        public Criteria andTaskCodeNotBetween(String value1, String value2) {
-            addCriterion("task_code not between", value1, value2, "taskCode");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameIsNull() {
-            addCriterion("task_name is null");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameIsNotNull() {
-            addCriterion("task_name is not null");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameEqualTo(String value) {
-            addCriterion("task_name =", value, "taskName");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameNotEqualTo(String value) {
-            addCriterion("task_name <>", value, "taskName");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameGreaterThan(String value) {
-            addCriterion("task_name >", value, "taskName");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameGreaterThanOrEqualTo(String value) {
-            addCriterion("task_name >=", value, "taskName");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameLessThan(String value) {
-            addCriterion("task_name <", value, "taskName");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameLessThanOrEqualTo(String value) {
-            addCriterion("task_name <=", value, "taskName");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameLike(String value) {
-            addCriterion("task_name like", value, "taskName");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameNotLike(String value) {
-            addCriterion("task_name not like", value, "taskName");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameIn(List<String> values) {
-            addCriterion("task_name in", values, "taskName");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameNotIn(List<String> values) {
-            addCriterion("task_name not in", values, "taskName");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameBetween(String value1, String value2) {
-            addCriterion("task_name between", value1, value2, "taskName");
-            return (Criteria) this;
-        }
-
-        public Criteria andTaskNameNotBetween(String value1, String value2) {
-            addCriterion("task_name not between", value1, value2, "taskName");
-            return (Criteria) this;
-        }
-
-        public Criteria andSourceIdIsNull() {
-            addCriterion("source_id is null");
-            return (Criteria) this;
-        }
-
-        public Criteria andSourceIdIsNotNull() {
-            addCriterion("source_id is not null");
-            return (Criteria) this;
-        }
-
-        public Criteria andSourceIdEqualTo(Long value) {
-            addCriterion("source_id =", value, "sourceId");
-            return (Criteria) this;
-        }
-
-        public Criteria andSourceIdNotEqualTo(Long value) {
-            addCriterion("source_id <>", value, "sourceId");
-            return (Criteria) this;
-        }
-
-        public Criteria andSourceIdGreaterThan(Long value) {
-            addCriterion("source_id >", value, "sourceId");
-            return (Criteria) this;
-        }
-
-        public Criteria andSourceIdGreaterThanOrEqualTo(Long value) {
-            addCriterion("source_id >=", value, "sourceId");
-            return (Criteria) this;
-        }
-
-        public Criteria andSourceIdLessThan(Long value) {
-            addCriterion("source_id <", value, "sourceId");
-            return (Criteria) this;
-        }
-
-        public Criteria andSourceIdLessThanOrEqualTo(Long value) {
-            addCriterion("source_id <=", value, "sourceId");
-            return (Criteria) this;
-        }
-
-        public Criteria andSourceIdIn(List<Long> values) {
-            addCriterion("source_id in", values, "sourceId");
-            return (Criteria) this;
-        }
-
-        public Criteria andSourceIdNotIn(List<Long> values) {
-            addCriterion("source_id not in", values, "sourceId");
-            return (Criteria) this;
-        }
-
-        public Criteria andSourceIdBetween(Long value1, Long value2) {
-            addCriterion("source_id between", value1, value2, "sourceId");
-            return (Criteria) this;
-        }
-
-        public Criteria andSourceIdNotBetween(Long value1, Long value2) {
-            addCriterion("source_id not between", value1, value2, "sourceId");
+        public Criteria andSourceWebNotBetween(String value1, String value2) {
+            addCriterion("source_web not between", value1, value2, "sourceWeb");
             return (Criteria) this;
         }
 
@@ -525,52 +394,52 @@ public class SpiderTaskExample {
             return (Criteria) this;
         }
 
-        public Criteria andStartTimeEqualTo(Date value) {
+        public Criteria andStartTimeEqualTo(Long value) {
             addCriterion("start_time =", value, "startTime");
             return (Criteria) this;
         }
 
-        public Criteria andStartTimeNotEqualTo(Date value) {
+        public Criteria andStartTimeNotEqualTo(Long value) {
             addCriterion("start_time <>", value, "startTime");
             return (Criteria) this;
         }
 
-        public Criteria andStartTimeGreaterThan(Date value) {
+        public Criteria andStartTimeGreaterThan(Long value) {
             addCriterion("start_time >", value, "startTime");
             return (Criteria) this;
         }
 
-        public Criteria andStartTimeGreaterThanOrEqualTo(Date value) {
+        public Criteria andStartTimeGreaterThanOrEqualTo(Long value) {
             addCriterion("start_time >=", value, "startTime");
             return (Criteria) this;
         }
 
-        public Criteria andStartTimeLessThan(Date value) {
+        public Criteria andStartTimeLessThan(Long value) {
             addCriterion("start_time <", value, "startTime");
             return (Criteria) this;
         }
 
-        public Criteria andStartTimeLessThanOrEqualTo(Date value) {
+        public Criteria andStartTimeLessThanOrEqualTo(Long value) {
             addCriterion("start_time <=", value, "startTime");
             return (Criteria) this;
         }
 
-        public Criteria andStartTimeIn(List<Date> values) {
+        public Criteria andStartTimeIn(List<Long> values) {
             addCriterion("start_time in", values, "startTime");
             return (Criteria) this;
         }
 
-        public Criteria andStartTimeNotIn(List<Date> values) {
+        public Criteria andStartTimeNotIn(List<Long> values) {
             addCriterion("start_time not in", values, "startTime");
             return (Criteria) this;
         }
 
-        public Criteria andStartTimeBetween(Date value1, Date value2) {
+        public Criteria andStartTimeBetween(Long value1, Long value2) {
             addCriterion("start_time between", value1, value2, "startTime");
             return (Criteria) this;
         }
 
-        public Criteria andStartTimeNotBetween(Date value1, Date value2) {
+        public Criteria andStartTimeNotBetween(Long value1, Long value2) {
             addCriterion("start_time not between", value1, value2, "startTime");
             return (Criteria) this;
         }
@@ -585,52 +454,52 @@ public class SpiderTaskExample {
             return (Criteria) this;
         }
 
-        public Criteria andEndTimeEqualTo(Date value) {
+        public Criteria andEndTimeEqualTo(Long value) {
             addCriterion("end_time =", value, "endTime");
             return (Criteria) this;
         }
 
-        public Criteria andEndTimeNotEqualTo(Date value) {
+        public Criteria andEndTimeNotEqualTo(Long value) {
             addCriterion("end_time <>", value, "endTime");
             return (Criteria) this;
         }
 
-        public Criteria andEndTimeGreaterThan(Date value) {
+        public Criteria andEndTimeGreaterThan(Long value) {
             addCriterion("end_time >", value, "endTime");
             return (Criteria) this;
         }
 
-        public Criteria andEndTimeGreaterThanOrEqualTo(Date value) {
+        public Criteria andEndTimeGreaterThanOrEqualTo(Long value) {
             addCriterion("end_time >=", value, "endTime");
             return (Criteria) this;
         }
 
-        public Criteria andEndTimeLessThan(Date value) {
+        public Criteria andEndTimeLessThan(Long value) {
             addCriterion("end_time <", value, "endTime");
             return (Criteria) this;
         }
 
-        public Criteria andEndTimeLessThanOrEqualTo(Date value) {
+        public Criteria andEndTimeLessThanOrEqualTo(Long value) {
             addCriterion("end_time <=", value, "endTime");
             return (Criteria) this;
         }
 
-        public Criteria andEndTimeIn(List<Date> values) {
+        public Criteria andEndTimeIn(List<Long> values) {
             addCriterion("end_time in", values, "endTime");
             return (Criteria) this;
         }
 
-        public Criteria andEndTimeNotIn(List<Date> values) {
+        public Criteria andEndTimeNotIn(List<Long> values) {
             addCriterion("end_time not in", values, "endTime");
             return (Criteria) this;
         }
 
-        public Criteria andEndTimeBetween(Date value1, Date value2) {
+        public Criteria andEndTimeBetween(Long value1, Long value2) {
             addCriterion("end_time between", value1, value2, "endTime");
             return (Criteria) this;
         }
 
-        public Criteria andEndTimeNotBetween(Date value1, Date value2) {
+        public Criteria andEndTimeNotBetween(Long value1, Long value2) {
             addCriterion("end_time not between", value1, value2, "endTime");
             return (Criteria) this;
         }
@@ -755,126 +624,6 @@ public class SpiderTaskExample {
             return (Criteria) this;
         }
 
-        public Criteria andSuccessCountIsNull() {
-            addCriterion("success_count is null");
-            return (Criteria) this;
-        }
-
-        public Criteria andSuccessCountIsNotNull() {
-            addCriterion("success_count is not null");
-            return (Criteria) this;
-        }
-
-        public Criteria andSuccessCountEqualTo(Integer value) {
-            addCriterion("success_count =", value, "successCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andSuccessCountNotEqualTo(Integer value) {
-            addCriterion("success_count <>", value, "successCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andSuccessCountGreaterThan(Integer value) {
-            addCriterion("success_count >", value, "successCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andSuccessCountGreaterThanOrEqualTo(Integer value) {
-            addCriterion("success_count >=", value, "successCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andSuccessCountLessThan(Integer value) {
-            addCriterion("success_count <", value, "successCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andSuccessCountLessThanOrEqualTo(Integer value) {
-            addCriterion("success_count <=", value, "successCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andSuccessCountIn(List<Integer> values) {
-            addCriterion("success_count in", values, "successCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andSuccessCountNotIn(List<Integer> values) {
-            addCriterion("success_count not in", values, "successCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andSuccessCountBetween(Integer value1, Integer value2) {
-            addCriterion("success_count between", value1, value2, "successCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andSuccessCountNotBetween(Integer value1, Integer value2) {
-            addCriterion("success_count not between", value1, value2, "successCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andFailCountIsNull() {
-            addCriterion("fail_count is null");
-            return (Criteria) this;
-        }
-
-        public Criteria andFailCountIsNotNull() {
-            addCriterion("fail_count is not null");
-            return (Criteria) this;
-        }
-
-        public Criteria andFailCountEqualTo(Integer value) {
-            addCriterion("fail_count =", value, "failCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andFailCountNotEqualTo(Integer value) {
-            addCriterion("fail_count <>", value, "failCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andFailCountGreaterThan(Integer value) {
-            addCriterion("fail_count >", value, "failCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andFailCountGreaterThanOrEqualTo(Integer value) {
-            addCriterion("fail_count >=", value, "failCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andFailCountLessThan(Integer value) {
-            addCriterion("fail_count <", value, "failCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andFailCountLessThanOrEqualTo(Integer value) {
-            addCriterion("fail_count <=", value, "failCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andFailCountIn(List<Integer> values) {
-            addCriterion("fail_count in", values, "failCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andFailCountNotIn(List<Integer> values) {
-            addCriterion("fail_count not in", values, "failCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andFailCountBetween(Integer value1, Integer value2) {
-            addCriterion("fail_count between", value1, value2, "failCount");
-            return (Criteria) this;
-        }
-
-        public Criteria andFailCountNotBetween(Integer value1, Integer value2) {
-            addCriterion("fail_count not between", value1, value2, "failCount");
-            return (Criteria) this;
-        }
-
         public Criteria andCreateTimeIsNull() {
             addCriterion("create_time is null");
             return (Criteria) this;
@@ -885,52 +634,52 @@ public class SpiderTaskExample {
             return (Criteria) this;
         }
 
-        public Criteria andCreateTimeEqualTo(Date value) {
+        public Criteria andCreateTimeEqualTo(Long value) {
             addCriterion("create_time =", value, "createTime");
             return (Criteria) this;
         }
 
-        public Criteria andCreateTimeNotEqualTo(Date value) {
+        public Criteria andCreateTimeNotEqualTo(Long value) {
             addCriterion("create_time <>", value, "createTime");
             return (Criteria) this;
         }
 
-        public Criteria andCreateTimeGreaterThan(Date value) {
+        public Criteria andCreateTimeGreaterThan(Long value) {
             addCriterion("create_time >", value, "createTime");
             return (Criteria) this;
         }
 
-        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
+        public Criteria andCreateTimeGreaterThanOrEqualTo(Long value) {
             addCriterion("create_time >=", value, "createTime");
             return (Criteria) this;
         }
 
-        public Criteria andCreateTimeLessThan(Date value) {
+        public Criteria andCreateTimeLessThan(Long value) {
             addCriterion("create_time <", value, "createTime");
             return (Criteria) this;
         }
 
-        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
+        public Criteria andCreateTimeLessThanOrEqualTo(Long value) {
             addCriterion("create_time <=", value, "createTime");
             return (Criteria) this;
         }
 
-        public Criteria andCreateTimeIn(List<Date> values) {
+        public Criteria andCreateTimeIn(List<Long> values) {
             addCriterion("create_time in", values, "createTime");
             return (Criteria) this;
         }
 
-        public Criteria andCreateTimeNotIn(List<Date> values) {
+        public Criteria andCreateTimeNotIn(List<Long> values) {
             addCriterion("create_time not in", values, "createTime");
             return (Criteria) this;
         }
 
-        public Criteria andCreateTimeBetween(Date value1, Date value2) {
+        public Criteria andCreateTimeBetween(Long value1, Long value2) {
             addCriterion("create_time between", value1, value2, "createTime");
             return (Criteria) this;
         }
 
-        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
+        public Criteria andCreateTimeNotBetween(Long value1, Long value2) {
             addCriterion("create_time not between", value1, value2, "createTime");
             return (Criteria) this;
         }
@@ -945,52 +694,52 @@ public class SpiderTaskExample {
             return (Criteria) this;
         }
 
-        public Criteria andUpdateTimeEqualTo(Date value) {
+        public Criteria andUpdateTimeEqualTo(Long value) {
             addCriterion("update_time =", value, "updateTime");
             return (Criteria) this;
         }
 
-        public Criteria andUpdateTimeNotEqualTo(Date value) {
+        public Criteria andUpdateTimeNotEqualTo(Long value) {
             addCriterion("update_time <>", value, "updateTime");
             return (Criteria) this;
         }
 
-        public Criteria andUpdateTimeGreaterThan(Date value) {
+        public Criteria andUpdateTimeGreaterThan(Long value) {
             addCriterion("update_time >", value, "updateTime");
             return (Criteria) this;
         }
 
-        public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
+        public Criteria andUpdateTimeGreaterThanOrEqualTo(Long value) {
             addCriterion("update_time >=", value, "updateTime");
             return (Criteria) this;
         }
 
-        public Criteria andUpdateTimeLessThan(Date value) {
+        public Criteria andUpdateTimeLessThan(Long value) {
             addCriterion("update_time <", value, "updateTime");
             return (Criteria) this;
         }
 
-        public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
+        public Criteria andUpdateTimeLessThanOrEqualTo(Long value) {
             addCriterion("update_time <=", value, "updateTime");
             return (Criteria) this;
         }
 
-        public Criteria andUpdateTimeIn(List<Date> values) {
+        public Criteria andUpdateTimeIn(List<Long> values) {
             addCriterion("update_time in", values, "updateTime");
             return (Criteria) this;
         }
 
-        public Criteria andUpdateTimeNotIn(List<Date> values) {
+        public Criteria andUpdateTimeNotIn(List<Long> values) {
             addCriterion("update_time not in", values, "updateTime");
             return (Criteria) this;
         }
 
-        public Criteria andUpdateTimeBetween(Date value1, Date value2) {
+        public Criteria andUpdateTimeBetween(Long value1, Long value2) {
             addCriterion("update_time between", value1, value2, "updateTime");
             return (Criteria) this;
         }
 
-        public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
+        public Criteria andUpdateTimeNotBetween(Long value1, Long value2) {
             addCriterion("update_time not between", value1, value2, "updateTime");
             return (Criteria) this;
         }
@@ -1000,7 +749,7 @@ public class SpiderTaskExample {
      * This class was generated by MyBatis Generator.
      * This class corresponds to the database table spider_task
      *
-     * @mbg.generated do_not_delete_during_merge Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated do_not_delete_during_merge Mon Oct 13 16:39:53 CST 2025
      */
     public static class Criteria extends GeneratedCriteria {
 
@@ -1013,7 +762,7 @@ public class SpiderTaskExample {
      * This class was generated by MyBatis Generator.
      * This class corresponds to the database table spider_task
      *
-     * @mbg.generated Sat Oct 11 19:37:24 CST 2025
+     * @mbg.generated Mon Oct 13 16:39:53 CST 2025
      */
     public static class Criterion {
         private String condition;

+ 1 - 1
core/src/main/java/com/tzld/supply/service/SpiderTaskService.java

@@ -1,6 +1,6 @@
 package com.tzld.supply.service;
 
-import com.tzld.supply.model.po.spider.SpiderTask;
+import com.tzld.supply.model.po.supply.spider.SpiderTask;
 
 import java.util.List;
 

+ 2 - 2
core/src/main/java/com/tzld/supply/service/impl/SpiderTaskServiceImpl.java

@@ -1,8 +1,8 @@
 package com.tzld.supply.service.impl;
 
 import com.tzld.supply.dao.mapper.supply.spider.SpiderTaskMapper;
-import com.tzld.supply.model.po.spider.SpiderTask;
-import com.tzld.supply.model.po.spider.SpiderTaskExample;
+import com.tzld.supply.model.po.supply.spider.SpiderTask;
+import com.tzld.supply.model.po.supply.spider.SpiderTaskExample;
 import com.tzld.supply.service.SpiderTaskService;
 import org.springframework.stereotype.Service;
 

+ 3 - 2
core/src/main/resources/generator/mybatis-spider-generator-config.xml

@@ -16,7 +16,7 @@
         <property name="beginningDelimiter" value="`"/>
         <property name="endingDelimiter" value="`"/>
 
-        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>
+        <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
         <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
 
         <commentGenerator>
@@ -32,7 +32,7 @@
             <property name="forceBigDecimals" value="false"/>
         </javaTypeResolver>
 
-        <javaModelGenerator targetPackage="com.tzld.supply.model.po.spider" targetProject="core/src/main/java">
+        <javaModelGenerator targetPackage="com.tzld.supply.model.po.supply.spider" targetProject="core/src/main/java">
             <property name="constructorBased" value="false"/>
             <property name="enableSubPackages" value="true"/>
             <property name="immutable" value="false"/>
@@ -47,6 +47,7 @@
         </javaClientGenerator>
 
         <table tableName="spider_task" domainObjectName="" alias=""/>
+        <table tableName="spider_content" domainObjectName="" alias=""/>
     </context>
 
 </generatorConfiguration>

+ 477 - 0
core/src/main/resources/mapper/supply/spider/SpiderContentMapper.xml

@@ -0,0 +1,477 @@
+<?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.tzld.supply.dao.mapper.supply.spider.SpiderContentMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.supply.model.po.supply.spider.SpiderContent">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="task_id" jdbcType="BIGINT" property="taskId" />
+    <result column="source" jdbcType="VARCHAR" property="source" />
+    <result column="source_type" jdbcType="VARCHAR" property="sourceType" />
+    <result column="url" jdbcType="VARCHAR" property="url" />
+    <result column="title" jdbcType="VARCHAR" property="title" />
+    <result column="status" jdbcType="TINYINT" property="status" />
+    <result column="ai_rough_status" jdbcType="TINYINT" property="aiRoughStatus" />
+    <result column="ai_precision_status" jdbcType="TINYINT" property="aiPrecisionStatus" />
+    <result column="create_time" jdbcType="BIGINT" property="createTime" />
+    <result column="update_time" jdbcType="BIGINT" property="updateTime" />
+  </resultMap>
+  <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.tzld.supply.model.po.supply.spider.SpiderContent">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    <result column="content" jdbcType="LONGVARCHAR" property="content" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    id, task_id, `source`, source_type, url, title, `status`, ai_rough_status, ai_precision_status, 
+    create_time, update_time
+  </sql>
+  <sql id="Blob_Column_List">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    content
+  </sql>
+  <select id="selectByExampleWithBLOBs" parameterType="com.tzld.supply.model.po.supply.spider.SpiderContentExample" resultMap="ResultMapWithBLOBs">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    ,
+    <include refid="Blob_Column_List" />
+    from spider_content
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByExample" parameterType="com.tzld.supply.model.po.supply.spider.SpiderContentExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from spider_content
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="ResultMapWithBLOBs">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    select 
+    <include refid="Base_Column_List" />
+    ,
+    <include refid="Blob_Column_List" />
+    from spider_content
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    delete from spider_content
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.tzld.supply.model.po.supply.spider.SpiderContentExample">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    delete from spider_content
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.tzld.supply.model.po.supply.spider.SpiderContent">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    insert into spider_content (id, task_id, `source`, 
+      source_type, url, title, 
+      `status`, ai_rough_status, ai_precision_status, 
+      create_time, update_time, content
+      )
+    values (#{id,jdbcType=BIGINT}, #{taskId,jdbcType=BIGINT}, #{source,jdbcType=VARCHAR}, 
+      #{sourceType,jdbcType=VARCHAR}, #{url,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, 
+      #{status,jdbcType=TINYINT}, #{aiRoughStatus,jdbcType=TINYINT}, #{aiPrecisionStatus,jdbcType=TINYINT}, 
+      #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}, #{content,jdbcType=LONGVARCHAR}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.tzld.supply.model.po.supply.spider.SpiderContent">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    insert into spider_content
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="taskId != null">
+        task_id,
+      </if>
+      <if test="source != null">
+        `source`,
+      </if>
+      <if test="sourceType != null">
+        source_type,
+      </if>
+      <if test="url != null">
+        url,
+      </if>
+      <if test="title != null">
+        title,
+      </if>
+      <if test="status != null">
+        `status`,
+      </if>
+      <if test="aiRoughStatus != null">
+        ai_rough_status,
+      </if>
+      <if test="aiPrecisionStatus != null">
+        ai_precision_status,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+      <if test="updateTime != null">
+        update_time,
+      </if>
+      <if test="content != null">
+        content,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="taskId != null">
+        #{taskId,jdbcType=BIGINT},
+      </if>
+      <if test="source != null">
+        #{source,jdbcType=VARCHAR},
+      </if>
+      <if test="sourceType != null">
+        #{sourceType,jdbcType=VARCHAR},
+      </if>
+      <if test="url != null">
+        #{url,jdbcType=VARCHAR},
+      </if>
+      <if test="title != null">
+        #{title,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        #{status,jdbcType=TINYINT},
+      </if>
+      <if test="aiRoughStatus != null">
+        #{aiRoughStatus,jdbcType=TINYINT},
+      </if>
+      <if test="aiPrecisionStatus != null">
+        #{aiPrecisionStatus,jdbcType=TINYINT},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=BIGINT},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=BIGINT},
+      </if>
+      <if test="content != null">
+        #{content,jdbcType=LONGVARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.tzld.supply.model.po.supply.spider.SpiderContentExample" resultType="java.lang.Long">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    select count(*) from spider_content
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    update spider_content
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=BIGINT},
+      </if>
+      <if test="record.taskId != null">
+        task_id = #{record.taskId,jdbcType=BIGINT},
+      </if>
+      <if test="record.source != null">
+        `source` = #{record.source,jdbcType=VARCHAR},
+      </if>
+      <if test="record.sourceType != null">
+        source_type = #{record.sourceType,jdbcType=VARCHAR},
+      </if>
+      <if test="record.url != null">
+        url = #{record.url,jdbcType=VARCHAR},
+      </if>
+      <if test="record.title != null">
+        title = #{record.title,jdbcType=VARCHAR},
+      </if>
+      <if test="record.status != null">
+        `status` = #{record.status,jdbcType=TINYINT},
+      </if>
+      <if test="record.aiRoughStatus != null">
+        ai_rough_status = #{record.aiRoughStatus,jdbcType=TINYINT},
+      </if>
+      <if test="record.aiPrecisionStatus != null">
+        ai_precision_status = #{record.aiPrecisionStatus,jdbcType=TINYINT},
+      </if>
+      <if test="record.createTime != null">
+        create_time = #{record.createTime,jdbcType=BIGINT},
+      </if>
+      <if test="record.updateTime != null">
+        update_time = #{record.updateTime,jdbcType=BIGINT},
+      </if>
+      <if test="record.content != null">
+        content = #{record.content,jdbcType=LONGVARCHAR},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExampleWithBLOBs" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    update spider_content
+    set id = #{record.id,jdbcType=BIGINT},
+      task_id = #{record.taskId,jdbcType=BIGINT},
+      `source` = #{record.source,jdbcType=VARCHAR},
+      source_type = #{record.sourceType,jdbcType=VARCHAR},
+      url = #{record.url,jdbcType=VARCHAR},
+      title = #{record.title,jdbcType=VARCHAR},
+      `status` = #{record.status,jdbcType=TINYINT},
+      ai_rough_status = #{record.aiRoughStatus,jdbcType=TINYINT},
+      ai_precision_status = #{record.aiPrecisionStatus,jdbcType=TINYINT},
+      create_time = #{record.createTime,jdbcType=BIGINT},
+      update_time = #{record.updateTime,jdbcType=BIGINT},
+      content = #{record.content,jdbcType=LONGVARCHAR}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    update spider_content
+    set id = #{record.id,jdbcType=BIGINT},
+      task_id = #{record.taskId,jdbcType=BIGINT},
+      `source` = #{record.source,jdbcType=VARCHAR},
+      source_type = #{record.sourceType,jdbcType=VARCHAR},
+      url = #{record.url,jdbcType=VARCHAR},
+      title = #{record.title,jdbcType=VARCHAR},
+      `status` = #{record.status,jdbcType=TINYINT},
+      ai_rough_status = #{record.aiRoughStatus,jdbcType=TINYINT},
+      ai_precision_status = #{record.aiPrecisionStatus,jdbcType=TINYINT},
+      create_time = #{record.createTime,jdbcType=BIGINT},
+      update_time = #{record.updateTime,jdbcType=BIGINT}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.supply.model.po.supply.spider.SpiderContent">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    update spider_content
+    <set>
+      <if test="taskId != null">
+        task_id = #{taskId,jdbcType=BIGINT},
+      </if>
+      <if test="source != null">
+        `source` = #{source,jdbcType=VARCHAR},
+      </if>
+      <if test="sourceType != null">
+        source_type = #{sourceType,jdbcType=VARCHAR},
+      </if>
+      <if test="url != null">
+        url = #{url,jdbcType=VARCHAR},
+      </if>
+      <if test="title != null">
+        title = #{title,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        `status` = #{status,jdbcType=TINYINT},
+      </if>
+      <if test="aiRoughStatus != null">
+        ai_rough_status = #{aiRoughStatus,jdbcType=TINYINT},
+      </if>
+      <if test="aiPrecisionStatus != null">
+        ai_precision_status = #{aiPrecisionStatus,jdbcType=TINYINT},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=BIGINT},
+      </if>
+      <if test="updateTime != null">
+        update_time = #{updateTime,jdbcType=BIGINT},
+      </if>
+      <if test="content != null">
+        content = #{content,jdbcType=LONGVARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.tzld.supply.model.po.supply.spider.SpiderContent">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    update spider_content
+    set task_id = #{taskId,jdbcType=BIGINT},
+      `source` = #{source,jdbcType=VARCHAR},
+      source_type = #{sourceType,jdbcType=VARCHAR},
+      url = #{url,jdbcType=VARCHAR},
+      title = #{title,jdbcType=VARCHAR},
+      `status` = #{status,jdbcType=TINYINT},
+      ai_rough_status = #{aiRoughStatus,jdbcType=TINYINT},
+      ai_precision_status = #{aiPrecisionStatus,jdbcType=TINYINT},
+      create_time = #{createTime,jdbcType=BIGINT},
+      update_time = #{updateTime,jdbcType=BIGINT},
+      content = #{content,jdbcType=LONGVARCHAR}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.tzld.supply.model.po.supply.spider.SpiderContent">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
+    -->
+    update spider_content
+    set task_id = #{taskId,jdbcType=BIGINT},
+      `source` = #{source,jdbcType=VARCHAR},
+      source_type = #{sourceType,jdbcType=VARCHAR},
+      url = #{url,jdbcType=VARCHAR},
+      title = #{title,jdbcType=VARCHAR},
+      `status` = #{status,jdbcType=TINYINT},
+      ai_rough_status = #{aiRoughStatus,jdbcType=TINYINT},
+      ai_precision_status = #{aiPrecisionStatus,jdbcType=TINYINT},
+      create_time = #{createTime,jdbcType=BIGINT},
+      update_time = #{updateTime,jdbcType=BIGINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>

+ 71 - 229
core/src/main/resources/mapper/supply/spider/SpiderTaskMapper.xml

@@ -1,39 +1,27 @@
 <?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.tzld.supply.dao.mapper.supply.spider.SpiderTaskMapper">
-  <resultMap id="BaseResultMap" type="com.tzld.supply.model.po.spider.SpiderTask">
+  <resultMap id="BaseResultMap" type="com.tzld.supply.model.po.supply.spider.SpiderTask">
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="task_code" jdbcType="VARCHAR" property="taskCode" />
-    <result column="task_name" jdbcType="VARCHAR" property="taskName" />
-    <result column="source_id" jdbcType="BIGINT" property="sourceId" />
+    <result column="source_web" jdbcType="VARCHAR" property="sourceWeb" />
     <result column="status" jdbcType="TINYINT" property="status" />
-    <result column="start_time" jdbcType="TIMESTAMP" property="startTime" />
-    <result column="end_time" jdbcType="TIMESTAMP" property="endTime" />
+    <result column="start_time" jdbcType="BIGINT" property="startTime" />
+    <result column="end_time" jdbcType="BIGINT" property="endTime" />
     <result column="duration_ms" jdbcType="BIGINT" property="durationMs" />
     <result column="fetched_count" jdbcType="INTEGER" property="fetchedCount" />
-    <result column="success_count" jdbcType="INTEGER" property="successCount" />
-    <result column="fail_count" jdbcType="INTEGER" property="failCount" />
-    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
-    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
-  </resultMap>
-  <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.tzld.supply.model.po.spider.SpiderTask">
-    <!--
-      WARNING - @mbg.generated
-      This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
-    -->
-    <result column="error_message" jdbcType="LONGVARCHAR" property="errorMessage" />
+    <result column="create_time" jdbcType="BIGINT" property="createTime" />
+    <result column="update_time" jdbcType="BIGINT" property="updateTime" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
     <where>
       <foreach collection="oredCriteria" item="criteria" separator="or">
@@ -67,7 +55,7 @@
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
     <where>
       <foreach collection="example.oredCriteria" item="criteria" separator="or">
@@ -101,32 +89,22 @@
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
-    -->
-    id, task_code, task_name, source_id, `status`, start_time, end_time, duration_ms, 
-    fetched_count, success_count, fail_count, create_time, update_time
-  </sql>
-  <sql id="Blob_Column_List">
-    <!--
-      WARNING - @mbg.generated
-      This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
-    error_message
+    id, source_web, `status`, start_time, end_time, duration_ms, fetched_count, create_time, 
+    update_time
   </sql>
-  <select id="selectByExampleWithBLOBs" parameterType="com.tzld.supply.model.po.spider.SpiderTaskExample" resultMap="ResultMapWithBLOBs">
+  <select id="selectByExample" parameterType="com.tzld.supply.model.po.supply.spider.SpiderTaskExample" resultMap="BaseResultMap">
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
     select
     <if test="distinct">
       distinct
     </if>
     <include refid="Base_Column_List" />
-    ,
-    <include refid="Blob_Column_List" />
     from spider_task
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
@@ -135,35 +113,14 @@
       order by ${orderByClause}
     </if>
   </select>
-  <select id="selectByExample" parameterType="com.tzld.supply.model.po.spider.SpiderTaskExample" resultMap="BaseResultMap">
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
-    -->
-    select
-    <if test="distinct">
-      distinct
-    </if>
-    <include refid="Base_Column_List" />
-    from spider_task
-    <if test="_parameter != null">
-      <include refid="Example_Where_Clause" />
-    </if>
-    <if test="orderByClause != null">
-      order by ${orderByClause}
-    </if>
-  </select>
-  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="ResultMapWithBLOBs">
-    <!--
-      WARNING - @mbg.generated
-      This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
     select 
     <include refid="Base_Column_List" />
-    ,
-    <include refid="Blob_Column_List" />
     from spider_task
     where id = #{id,jdbcType=BIGINT}
   </select>
@@ -171,58 +128,52 @@
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
     delete from spider_task
     where id = #{id,jdbcType=BIGINT}
   </delete>
-  <delete id="deleteByExample" parameterType="com.tzld.supply.model.po.spider.SpiderTaskExample">
+  <delete id="deleteByExample" parameterType="com.tzld.supply.model.po.supply.spider.SpiderTaskExample">
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
     delete from spider_task
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
     </if>
   </delete>
-  <insert id="insert" parameterType="com.tzld.supply.model.po.spider.SpiderTask">
+  <insert id="insert" parameterType="com.tzld.supply.model.po.supply.spider.SpiderTask"
+          useGeneratedKeys="true" keyProperty="id">
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
-    insert into spider_task (id, task_code, task_name, 
-      source_id, `status`, start_time, 
-      end_time, duration_ms, fetched_count, 
-      success_count, fail_count, create_time, 
-      update_time, error_message)
-    values (#{id,jdbcType=BIGINT}, #{taskCode,jdbcType=VARCHAR}, #{taskName,jdbcType=VARCHAR}, 
-      #{sourceId,jdbcType=BIGINT}, #{status,jdbcType=TINYINT}, #{startTime,jdbcType=TIMESTAMP}, 
-      #{endTime,jdbcType=TIMESTAMP}, #{durationMs,jdbcType=BIGINT}, #{fetchedCount,jdbcType=INTEGER}, 
-      #{successCount,jdbcType=INTEGER}, #{failCount,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, 
-      #{updateTime,jdbcType=TIMESTAMP}, #{errorMessage,jdbcType=LONGVARCHAR})
+    insert into spider_task (id, source_web, `status`, 
+      start_time, end_time, duration_ms, 
+      fetched_count, create_time, update_time
+      )
+    values (#{id,jdbcType=BIGINT}, #{sourceWeb,jdbcType=VARCHAR}, #{status,jdbcType=TINYINT}, 
+      #{startTime,jdbcType=BIGINT}, #{endTime,jdbcType=BIGINT}, #{durationMs,jdbcType=BIGINT}, 
+      #{fetchedCount,jdbcType=INTEGER}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}
+      )
   </insert>
-  <insert id="insertSelective" parameterType="com.tzld.supply.model.po.spider.SpiderTask">
+  <insert id="insertSelective" parameterType="com.tzld.supply.model.po.supply.spider.SpiderTask"
+          useGeneratedKeys="true" keyProperty="id">
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
     insert into spider_task
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
         id,
       </if>
-      <if test="taskCode != null">
-        task_code,
-      </if>
-      <if test="taskName != null">
-        task_name,
-      </if>
-      <if test="sourceId != null">
-        source_id,
+      <if test="sourceWeb != null">
+        source_web,
       </if>
       <if test="status != null">
         `status`,
@@ -239,43 +190,28 @@
       <if test="fetchedCount != null">
         fetched_count,
       </if>
-      <if test="successCount != null">
-        success_count,
-      </if>
-      <if test="failCount != null">
-        fail_count,
-      </if>
       <if test="createTime != null">
         create_time,
       </if>
       <if test="updateTime != null">
         update_time,
       </if>
-      <if test="errorMessage != null">
-        error_message,
-      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="id != null">
         #{id,jdbcType=BIGINT},
       </if>
-      <if test="taskCode != null">
-        #{taskCode,jdbcType=VARCHAR},
-      </if>
-      <if test="taskName != null">
-        #{taskName,jdbcType=VARCHAR},
-      </if>
-      <if test="sourceId != null">
-        #{sourceId,jdbcType=BIGINT},
+      <if test="sourceWeb != null">
+        #{sourceWeb,jdbcType=VARCHAR},
       </if>
       <if test="status != null">
         #{status,jdbcType=TINYINT},
       </if>
       <if test="startTime != null">
-        #{startTime,jdbcType=TIMESTAMP},
+        #{startTime,jdbcType=BIGINT},
       </if>
       <if test="endTime != null">
-        #{endTime,jdbcType=TIMESTAMP},
+        #{endTime,jdbcType=BIGINT},
       </if>
       <if test="durationMs != null">
         #{durationMs,jdbcType=BIGINT},
@@ -283,28 +219,19 @@
       <if test="fetchedCount != null">
         #{fetchedCount,jdbcType=INTEGER},
       </if>
-      <if test="successCount != null">
-        #{successCount,jdbcType=INTEGER},
-      </if>
-      <if test="failCount != null">
-        #{failCount,jdbcType=INTEGER},
-      </if>
       <if test="createTime != null">
-        #{createTime,jdbcType=TIMESTAMP},
+        #{createTime,jdbcType=BIGINT},
       </if>
       <if test="updateTime != null">
-        #{updateTime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="errorMessage != null">
-        #{errorMessage,jdbcType=LONGVARCHAR},
+        #{updateTime,jdbcType=BIGINT},
       </if>
     </trim>
   </insert>
-  <select id="countByExample" parameterType="com.tzld.supply.model.po.spider.SpiderTaskExample" resultType="java.lang.Long">
+  <select id="countByExample" parameterType="com.tzld.supply.model.po.supply.spider.SpiderTaskExample" resultType="java.lang.Long">
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
     select count(*) from spider_task
     <if test="_parameter != null">
@@ -315,30 +242,24 @@
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
     update spider_task
     <set>
       <if test="record.id != null">
         id = #{record.id,jdbcType=BIGINT},
       </if>
-      <if test="record.taskCode != null">
-        task_code = #{record.taskCode,jdbcType=VARCHAR},
-      </if>
-      <if test="record.taskName != null">
-        task_name = #{record.taskName,jdbcType=VARCHAR},
-      </if>
-      <if test="record.sourceId != null">
-        source_id = #{record.sourceId,jdbcType=BIGINT},
+      <if test="record.sourceWeb != null">
+        source_web = #{record.sourceWeb,jdbcType=VARCHAR},
       </if>
       <if test="record.status != null">
         `status` = #{record.status,jdbcType=TINYINT},
       </if>
       <if test="record.startTime != null">
-        start_time = #{record.startTime,jdbcType=TIMESTAMP},
+        start_time = #{record.startTime,jdbcType=BIGINT},
       </if>
       <if test="record.endTime != null">
-        end_time = #{record.endTime,jdbcType=TIMESTAMP},
+        end_time = #{record.endTime,jdbcType=BIGINT},
       </if>
       <if test="record.durationMs != null">
         duration_ms = #{record.durationMs,jdbcType=BIGINT},
@@ -346,100 +267,56 @@
       <if test="record.fetchedCount != null">
         fetched_count = #{record.fetchedCount,jdbcType=INTEGER},
       </if>
-      <if test="record.successCount != null">
-        success_count = #{record.successCount,jdbcType=INTEGER},
-      </if>
-      <if test="record.failCount != null">
-        fail_count = #{record.failCount,jdbcType=INTEGER},
-      </if>
       <if test="record.createTime != null">
-        create_time = #{record.createTime,jdbcType=TIMESTAMP},
+        create_time = #{record.createTime,jdbcType=BIGINT},
       </if>
       <if test="record.updateTime != null">
-        update_time = #{record.updateTime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="record.errorMessage != null">
-        error_message = #{record.errorMessage,jdbcType=LONGVARCHAR},
+        update_time = #{record.updateTime,jdbcType=BIGINT},
       </if>
     </set>
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
     </if>
   </update>
-  <update id="updateByExampleWithBLOBs" parameterType="map">
-    <!--
-      WARNING - @mbg.generated
-      This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
-    -->
-    update spider_task
-    set id = #{record.id,jdbcType=BIGINT},
-      task_code = #{record.taskCode,jdbcType=VARCHAR},
-      task_name = #{record.taskName,jdbcType=VARCHAR},
-      source_id = #{record.sourceId,jdbcType=BIGINT},
-      `status` = #{record.status,jdbcType=TINYINT},
-      start_time = #{record.startTime,jdbcType=TIMESTAMP},
-      end_time = #{record.endTime,jdbcType=TIMESTAMP},
-      duration_ms = #{record.durationMs,jdbcType=BIGINT},
-      fetched_count = #{record.fetchedCount,jdbcType=INTEGER},
-      success_count = #{record.successCount,jdbcType=INTEGER},
-      fail_count = #{record.failCount,jdbcType=INTEGER},
-      create_time = #{record.createTime,jdbcType=TIMESTAMP},
-      update_time = #{record.updateTime,jdbcType=TIMESTAMP},
-      error_message = #{record.errorMessage,jdbcType=LONGVARCHAR}
-    <if test="_parameter != null">
-      <include refid="Update_By_Example_Where_Clause" />
-    </if>
-  </update>
   <update id="updateByExample" parameterType="map">
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
     update spider_task
     set id = #{record.id,jdbcType=BIGINT},
-      task_code = #{record.taskCode,jdbcType=VARCHAR},
-      task_name = #{record.taskName,jdbcType=VARCHAR},
-      source_id = #{record.sourceId,jdbcType=BIGINT},
+      source_web = #{record.sourceWeb,jdbcType=VARCHAR},
       `status` = #{record.status,jdbcType=TINYINT},
-      start_time = #{record.startTime,jdbcType=TIMESTAMP},
-      end_time = #{record.endTime,jdbcType=TIMESTAMP},
+      start_time = #{record.startTime,jdbcType=BIGINT},
+      end_time = #{record.endTime,jdbcType=BIGINT},
       duration_ms = #{record.durationMs,jdbcType=BIGINT},
       fetched_count = #{record.fetchedCount,jdbcType=INTEGER},
-      success_count = #{record.successCount,jdbcType=INTEGER},
-      fail_count = #{record.failCount,jdbcType=INTEGER},
-      create_time = #{record.createTime,jdbcType=TIMESTAMP},
-      update_time = #{record.updateTime,jdbcType=TIMESTAMP}
+      create_time = #{record.createTime,jdbcType=BIGINT},
+      update_time = #{record.updateTime,jdbcType=BIGINT}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
     </if>
   </update>
-  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.supply.model.po.spider.SpiderTask">
+  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.supply.model.po.supply.spider.SpiderTask">
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
     update spider_task
     <set>
-      <if test="taskCode != null">
-        task_code = #{taskCode,jdbcType=VARCHAR},
-      </if>
-      <if test="taskName != null">
-        task_name = #{taskName,jdbcType=VARCHAR},
-      </if>
-      <if test="sourceId != null">
-        source_id = #{sourceId,jdbcType=BIGINT},
+      <if test="sourceWeb != null">
+        source_web = #{sourceWeb,jdbcType=VARCHAR},
       </if>
       <if test="status != null">
         `status` = #{status,jdbcType=TINYINT},
       </if>
       <if test="startTime != null">
-        start_time = #{startTime,jdbcType=TIMESTAMP},
+        start_time = #{startTime,jdbcType=BIGINT},
       </if>
       <if test="endTime != null">
-        end_time = #{endTime,jdbcType=TIMESTAMP},
+        end_time = #{endTime,jdbcType=BIGINT},
       </if>
       <if test="durationMs != null">
         duration_ms = #{durationMs,jdbcType=BIGINT},
@@ -447,65 +324,30 @@
       <if test="fetchedCount != null">
         fetched_count = #{fetchedCount,jdbcType=INTEGER},
       </if>
-      <if test="successCount != null">
-        success_count = #{successCount,jdbcType=INTEGER},
-      </if>
-      <if test="failCount != null">
-        fail_count = #{failCount,jdbcType=INTEGER},
-      </if>
       <if test="createTime != null">
-        create_time = #{createTime,jdbcType=TIMESTAMP},
+        create_time = #{createTime,jdbcType=BIGINT},
       </if>
       <if test="updateTime != null">
-        update_time = #{updateTime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="errorMessage != null">
-        error_message = #{errorMessage,jdbcType=LONGVARCHAR},
+        update_time = #{updateTime,jdbcType=BIGINT},
       </if>
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
-  <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.tzld.supply.model.po.spider.SpiderTask">
-    <!--
-      WARNING - @mbg.generated
-      This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
-    -->
-    update spider_task
-    set task_code = #{taskCode,jdbcType=VARCHAR},
-      task_name = #{taskName,jdbcType=VARCHAR},
-      source_id = #{sourceId,jdbcType=BIGINT},
-      `status` = #{status,jdbcType=TINYINT},
-      start_time = #{startTime,jdbcType=TIMESTAMP},
-      end_time = #{endTime,jdbcType=TIMESTAMP},
-      duration_ms = #{durationMs,jdbcType=BIGINT},
-      fetched_count = #{fetchedCount,jdbcType=INTEGER},
-      success_count = #{successCount,jdbcType=INTEGER},
-      fail_count = #{failCount,jdbcType=INTEGER},
-      create_time = #{createTime,jdbcType=TIMESTAMP},
-      update_time = #{updateTime,jdbcType=TIMESTAMP},
-      error_message = #{errorMessage,jdbcType=LONGVARCHAR}
-    where id = #{id,jdbcType=BIGINT}
-  </update>
-  <update id="updateByPrimaryKey" parameterType="com.tzld.supply.model.po.spider.SpiderTask">
+  <update id="updateByPrimaryKey" parameterType="com.tzld.supply.model.po.supply.spider.SpiderTask">
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
-      This element was generated on Sat Oct 11 19:37:24 CST 2025.
+      This element was generated on Mon Oct 13 16:39:53 CST 2025.
     -->
     update spider_task
-    set task_code = #{taskCode,jdbcType=VARCHAR},
-      task_name = #{taskName,jdbcType=VARCHAR},
-      source_id = #{sourceId,jdbcType=BIGINT},
+    set source_web = #{sourceWeb,jdbcType=VARCHAR},
       `status` = #{status,jdbcType=TINYINT},
-      start_time = #{startTime,jdbcType=TIMESTAMP},
-      end_time = #{endTime,jdbcType=TIMESTAMP},
+      start_time = #{startTime,jdbcType=BIGINT},
+      end_time = #{endTime,jdbcType=BIGINT},
       duration_ms = #{durationMs,jdbcType=BIGINT},
       fetched_count = #{fetchedCount,jdbcType=INTEGER},
-      success_count = #{successCount,jdbcType=INTEGER},
-      fail_count = #{failCount,jdbcType=INTEGER},
-      create_time = #{createTime,jdbcType=TIMESTAMP},
-      update_time = #{updateTime,jdbcType=TIMESTAMP}
+      create_time = #{createTime,jdbcType=BIGINT},
+      update_time = #{updateTime,jdbcType=BIGINT}
     where id = #{id,jdbcType=BIGINT}
   </update>
 </mapper>

+ 14 - 0
core/src/main/resources/mapper/supply/spider/ext/SpiderMapperExt.xml

@@ -0,0 +1,14 @@
+<?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.tzld.supply.dao.mapper.supply.spider.ext.SpiderMapperExt">
+
+    <insert id="batchInsertSpiderContent" parameterType="java.util.List">
+        insert into spider_content (task_id, `source`, source_type, url, title, create_time, update_time)
+        values
+        <foreach collection="contentList" item="item" separator=",">
+            (#{item.taskId}, #{item.source}, #{item.sourceType}, #{item.url}, #{item.title},
+             #{item.createTime}, #{item.updateTime})
+        </foreach>
+    </insert>
+
+</mapper>

+ 1 - 1
server/src/main/java/com/tzld/supply/controller/SpiderTaskController.java

@@ -1,7 +1,7 @@
 package com.tzld.supply.controller;
 
 import com.tzld.supply.common.base.CommonResponse;
-import com.tzld.supply.model.po.spider.SpiderTask;
+import com.tzld.supply.model.po.supply.spider.SpiderTask;
 import com.tzld.supply.service.SpiderTaskService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;

+ 45 - 0
server/src/main/java/com/tzld/supply/controller/XxlJobController.java

@@ -0,0 +1,45 @@
+package com.tzld.supply.controller;
+
+import com.tzld.supply.common.base.CommonResponse;
+import com.tzld.supply.job.ContentScreenJob;
+import com.tzld.supply.job.SpiderJob;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/job")
+public class XxlJobController {
+
+    @Autowired
+    private SpiderJob spiderJob;
+
+    @Autowired
+    private ContentScreenJob contentScreenJob;
+
+
+    @GetMapping("/spiderTaskJob")
+    public CommonResponse<Void> spiderTaskJob() {
+        spiderJob.spiderTaskJob(null);
+        return CommonResponse.success();
+    }
+
+    @GetMapping("/searchContentDetailJob")
+    public CommonResponse<Void> searchContentDetailJob() {
+        spiderJob.searchContentDetailJob(null);
+        return CommonResponse.success();
+    }
+
+    @GetMapping("/contentRoughScreenJob")
+    public CommonResponse<Void> contentRoughScreenJob() {
+        contentScreenJob.contentRoughScreenJob(null);
+        return CommonResponse.success();
+    }
+
+    @GetMapping("/contentPrecisionScreenJob")
+    public CommonResponse<Void> contentPrecisionScreenJob() {
+        contentScreenJob.contentPrecisionScreenJob(null);
+        return CommonResponse.success();
+    }
+}