Explorar el Código

Merge branch 'dev-xym-add-match-start' of Server/long-article-manage into master

xueyiming hace 4 meses
padre
commit
539d360c5f
Se han modificado 100 ficheros con 7933 adiciones y 808 borrados
  1. 13 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/LongArticleServerApplication.java
  2. 5 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/common/constants/CrawlerConstant.java
  3. 26 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/common/enums/ContentResultStatusEnum.java
  4. 6 2
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/common/enums/ContentStatusEnum.java
  5. 23 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/common/enums/PublicFlagEnum.java
  6. 30 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/component/RedisLock.java
  7. 48 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/config/AigcDataSourceConfig.java
  8. 2 2
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/config/DataSourceConfig.java
  9. 5 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/controller/IndexController.java
  10. 31 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/generator/AigcMybatisGeneratorMain.java
  11. 30 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/aigc/ProducePlanExeRecordMapper.java
  12. 3 3
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/AccountSpecialSettingsMapper.java
  13. 3 3
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/CrawlerVideoMapper.java
  14. 3 3
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/LongArticlesTextMapper.java
  15. 3 3
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/MatchVideoMapper.java
  16. 3 3
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/OffVideoMapper.java
  17. 3 3
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/PlanAccountMapper.java
  18. 3 3
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/PlanMapper.java
  19. 30 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/PromotionSourceMapper.java
  20. 3 3
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/PublishContentMapper.java
  21. 3 3
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/PublishMatchContentMapper.java
  22. 3 3
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/PublishMiniprogramMapper.java
  23. 3 3
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/RootSourceMapper.java
  24. 3 3
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/SingleVideoSourceMapper.java
  25. 30 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/TitleAuditMapper.java
  26. 63 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/job/MatchVideoJob.java
  27. 2 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/bo/MatchContent.java
  28. 4 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/bo/VideoDetail.java
  29. 0 90
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/LongArticlesText.java
  30. 145 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/aigc/ProducePlanExeRecord.java
  31. 981 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/aigc/ProducePlanExeRecordExample.java
  32. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/AccountSpecialSettings.java
  33. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/AccountSpecialSettingsExample.java
  34. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/CrawlerVideo.java
  35. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/CrawlerVideoExample.java
  36. 202 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/LongArticlesText.java
  37. 1262 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/LongArticlesTextExample.java
  38. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/MatchVideo.java
  39. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/MatchVideoExample.java
  40. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/OffVideo.java
  41. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/OffVideoExample.java
  42. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/Plan.java
  43. 12 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PlanAccount.java
  44. 61 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PlanAccountExample.java
  45. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PlanExample.java
  46. 145 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PromotionSource.java
  47. 1011 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PromotionSourceExample.java
  48. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PublishContent.java
  49. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PublishContentExample.java
  50. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PublishMatchContent.java
  51. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PublishMatchContentExample.java
  52. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PublishMiniprogram.java
  53. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PublishMiniprogramExample.java
  54. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/RootSource.java
  55. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/RootSourceExample.java
  56. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/SingleVideoSource.java
  57. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/SingleVideoSourceExample.java
  58. 79 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/TitleAudit.java
  59. 131 151
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/TitleAuditExample.java
  60. 5 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/AccountService.java
  61. 5 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/KimiService.java
  62. 10 2
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/PlanAccountService.java
  63. 20 8
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/AccountServiceImpl.java
  64. 59 6
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/CardServiceImpl.java
  65. 49 16
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/ContentServiceImpl.java
  66. 70 86
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/CoreServiceImpl.java
  67. 338 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/CrawlerVideoServiceImpl.java
  68. 65 5
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/KimiServiceImpl.java
  69. 613 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/MatchVideoServiceImpl.java
  70. 31 6
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/PlanAccountServiceImpl.java
  71. 3 4
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/PublicContentServiceImpl.java
  72. 5 5
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/RootSourceServiceImpl.java
  73. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/remote/VideoService.java
  74. 3 3
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/remote/impl/VideoServiceImpl.java
  75. 31 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/ConfigUtil.java
  76. 7 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/DateUtil.java
  77. 1 1
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/HttpPoolClientUtil.java
  78. 85 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/DeepSeekAPI.java
  79. 119 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/DouyinSearch.java
  80. 170 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/HkspSearch.java
  81. 91 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/KimiAPI.java
  82. 64 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/NlpUtils.java
  83. 39 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/OSSUploader.java
  84. 137 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/OpenAIUtils.java
  85. 156 0
      long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/VideoDownloader.java
  86. 72 0
      long-article-server/src/main/resources/aigc-mybatis-generator-config.xml
  87. 18 0
      long-article-server/src/main/resources/application-dev.properties
  88. 4 0
      long-article-server/src/main/resources/application-prod.properties
  89. 6 2
      long-article-server/src/main/resources/application-test.properties
  90. 15 0
      long-article-server/src/main/resources/application.properties
  91. 0 293
      long-article-server/src/main/resources/mapper/LongArticlesTextMapper.xml
  92. 327 0
      long-article-server/src/main/resources/mapper/aigc/ProducePlanExeRecordMapper.xml
  93. 9 9
      long-article-server/src/main/resources/mapper/longarticle/AccountSpecialSettingsMapper.xml
  94. 12 12
      long-article-server/src/main/resources/mapper/longarticle/CrawlerVideoMapper.xml
  95. 474 0
      long-article-server/src/main/resources/mapper/longarticle/LongArticlesTextMapper.xml
  96. 12 12
      long-article-server/src/main/resources/mapper/longarticle/MatchVideoMapper.xml
  97. 9 9
      long-article-server/src/main/resources/mapper/longarticle/OffVideoMapper.xml
  98. 30 14
      long-article-server/src/main/resources/mapper/longarticle/PlanAccountMapper.xml
  99. 9 9
      long-article-server/src/main/resources/mapper/longarticle/PlanMapper.xml
  100. 326 0
      long-article-server/src/main/resources/mapper/longarticle/PromotionSourceMapper.xml

+ 13 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/LongArticleServerApplication.java

@@ -4,11 +4,24 @@ import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
+import java.net.Authenticator;
+import java.net.PasswordAuthentication;
+
 @EnableApolloConfig
 @SpringBootApplication
 public class LongArticleServerApplication {
 
     public static void main(String[] args) {
+        System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
+        Authenticator.setDefault(
+                new Authenticator() {
+                    public PasswordAuthentication getPasswordAuthentication() {
+                        return new PasswordAuthentication(
+                                "t11983523373311", "mtuhdr2z".toCharArray());
+                    }
+                }
+        );
+
         SpringApplication.run(LongArticleServerApplication.class, args);
     }
 }

+ 5 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/common/constants/CrawlerConstant.java

@@ -0,0 +1,5 @@
+package com.tzld.piaoquan.longarticle.common.constants;
+
+public interface CrawlerConstant {
+    int MAX_VIDEO_DURATION = 300;
+}

+ 26 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/common/enums/ContentResultStatusEnum.java

@@ -0,0 +1,26 @@
+package com.tzld.piaoquan.longarticle.common.enums;
+
+public enum ContentResultStatusEnum {
+
+    DEFAULT(0, "待处理"),
+    SUCCESS(1, "处理成功"),
+    FAIL(2, "处理失败");
+
+    private final int status;
+    private final String message;
+
+    ContentResultStatusEnum(int status, String message) {
+        this.status = status;
+        this.message = message;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+
+}

+ 6 - 2
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/common/enums/ContentStatusEnum.java

@@ -1,8 +1,12 @@
 package com.tzld.piaoquan.longarticle.common.enums;
 
 public enum ContentStatusEnum {
-    SUCCESS_3(3, "成功"),
-    SUCCESS_4(4, "成功"),
+
+    DEFAULT(0, "初始状态"),
+    KIMI_SUCCESS(1, "kimi执行成功"),
+    CRAWLER_SUCCESS(2, "爬取视频成功"),
+    SUCCESS_3(3, "下载成功"),
+    SUCCESS_4(4, "发布成功"),
     ERROR_95(95, "KIMI识别文章风险不处理"),
     ERROR_96(96, "文章品类处于账号的负向品类中"),
     ERROR_97(97, "文章晋级或者退场"),

+ 23 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/common/enums/PublicFlagEnum.java

@@ -0,0 +1,23 @@
+package com.tzld.piaoquan.longarticle.common.enums;
+
+public enum PublicFlagEnum {
+
+    PUBLIC(1, "发布"),
+    NOT_PUBLIC(2, "不发布");
+
+    private final int statusCode;
+    private final String message;
+
+    PublicFlagEnum(int statusCode, String message) {
+        this.statusCode = statusCode;
+        this.message = message;
+    }
+
+    public int getStatusCode() {
+        return statusCode;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+}

+ 30 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/component/RedisLock.java

@@ -0,0 +1,30 @@
+package com.tzld.piaoquan.longarticle.component;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class RedisLock {
+
+    @Autowired
+    private RedisTemplate<String, Object> redisTemplate;
+
+    public boolean tryLock(String lockKey, String lockValue, long expireTime, TimeUnit timeUnit) {
+        ValueOperations<String, Object> valueOps = redisTemplate.opsForValue();
+        // setIfAbsent 方法会在键不存在时设置键值对,并返回是否成功
+        Boolean result = valueOps.setIfAbsent(lockKey, lockValue, expireTime, timeUnit);
+        return result != null && result;
+    }
+
+    public void unlock(String lockKey, String lockValue) {
+        ValueOperations<String, Object> valueOps = redisTemplate.opsForValue();
+        // 确保只有锁的持有者才能释放锁,避免误释放
+        if (lockValue.equals(valueOps.get(lockKey))) {
+            redisTemplate.delete(lockKey);
+        }
+    }
+}

+ 48 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/config/AigcDataSourceConfig.java

@@ -0,0 +1,48 @@
+package com.tzld.piaoquan.longarticle.config;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.transaction.PlatformTransactionManager;
+
+import javax.sql.DataSource;
+
+@MapperScan(basePackages = AigcDataSourceConfig.AIGC_PACKAGE_MASTER, sqlSessionFactoryRef = "aigcSqlSessionFactory")
+@Configuration
+public class AigcDataSourceConfig {
+
+
+
+    // 数据源
+    static final String AIGC_PACKAGE_MASTER = "com.tzld.piaoquan.longarticle.dao.mapper.aigc";
+    static final String AIGC_MAPPER_LOCATION_MASTER = "classpath:mapper/aigc/*.xml";
+
+    @Bean(name = "aigcDataSource")
+    @ConfigurationProperties("aigc.datasource")
+    public DataSource getAigcDataSource(){
+        return new DruidDataSource();
+    }
+
+    @Bean(name = "aigcTransactionManager")
+    public PlatformTransactionManager aigcTransactionManager(@Qualifier("aigcDataSource") DataSource dataSource) {
+        return new DataSourceTransactionManager(dataSource);
+    }
+
+    @Bean(name = "aigcSqlSessionFactory")
+    public SqlSessionFactory aigcSqlSessionFactory(@Qualifier("aigcDataSource") DataSource dataSource) throws Exception {
+        final SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
+        sessionFactoryBean.setDataSource(dataSource);
+        sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(AigcDataSourceConfig.AIGC_MAPPER_LOCATION_MASTER));
+        return sessionFactoryBean.getObject();
+    }
+
+
+}

+ 2 - 2
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/config/DataSourceConfig.java

@@ -20,8 +20,8 @@ import javax.sql.DataSource;
 @MapperScan(basePackages = DataSourceConfig.PACKAGE_MASTER, sqlSessionFactoryRef = "masterSqlSessionFactory")
 public class DataSourceConfig {
     // 数据源
-    static final String PACKAGE_MASTER = "com.tzld.piaoquan.longarticle.dao";
-    static final String MAPPER_LOCATION_MASTER = "classpath:mapper/*.xml";
+    static final String PACKAGE_MASTER = "com.tzld.piaoquan.longarticle.dao.mapper.longarticle";
+    static final String MAPPER_LOCATION_MASTER = "classpath:mapper/longarticle/*.xml";
 
     @Bean(name = "dataSource")
     @ConfigurationProperties("spring.datasource")

+ 5 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/controller/IndexController.java

@@ -1,5 +1,8 @@
 package com.tzld.piaoquan.longarticle.controller;
 
+import com.tzld.piaoquan.longarticle.service.local.impl.MatchVideoServiceImpl;
+import org.checkerframework.checker.units.qual.A;
+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;
@@ -17,4 +20,6 @@ public class IndexController {
     public String healthcheck() {
         return "ok";
     }
+
+
 }

+ 31 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/generator/AigcMybatisGeneratorMain.java

@@ -0,0 +1,31 @@
+package com.tzld.piaoquan.longarticle.dao.generator;
+
+import org.mybatis.generator.api.MyBatisGenerator;
+import org.mybatis.generator.config.Configuration;
+import org.mybatis.generator.config.xml.ConfigurationParser;
+import org.mybatis.generator.exception.InvalidConfigurationException;
+import org.mybatis.generator.exception.XMLParserException;
+import org.mybatis.generator.internal.DefaultShellCallback;
+
+import java.io.File;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class AigcMybatisGeneratorMain {
+
+    public static void main(String[] args)
+            throws SQLException, IOException, InterruptedException, InvalidConfigurationException, XMLParserException {
+        List<String> warnings = new ArrayList<>();
+
+        File configFile = new File(AigcMybatisGeneratorMain.class.getResource("/aigc-mybatis-generator-config.xml").getFile());
+        ConfigurationParser cp = new ConfigurationParser(warnings);
+        Configuration config = cp.parseConfiguration(configFile);
+        DefaultShellCallback callback = new DefaultShellCallback(true);
+        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
+        myBatisGenerator.generate(null);
+        System.out.println("genreate finish");
+    }
+}

+ 30 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/aigc/ProducePlanExeRecordMapper.java

@@ -0,0 +1,30 @@
+package com.tzld.piaoquan.longarticle.dao.mapper.aigc;
+
+import com.tzld.piaoquan.longarticle.model.po.aigc.ProducePlanExeRecord;
+import com.tzld.piaoquan.longarticle.model.po.aigc.ProducePlanExeRecordExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface ProducePlanExeRecordMapper {
+    long countByExample(ProducePlanExeRecordExample example);
+
+    int deleteByExample(ProducePlanExeRecordExample example);
+
+    int deleteByPrimaryKey(String planExeId);
+
+    int insert(ProducePlanExeRecord record);
+
+    int insertSelective(ProducePlanExeRecord record);
+
+    List<ProducePlanExeRecord> selectByExample(ProducePlanExeRecordExample example);
+
+    ProducePlanExeRecord selectByPrimaryKey(String planExeId);
+
+    int updateByExampleSelective(@Param("record") ProducePlanExeRecord record, @Param("example") ProducePlanExeRecordExample example);
+
+    int updateByExample(@Param("record") ProducePlanExeRecord record, @Param("example") ProducePlanExeRecordExample example);
+
+    int updateByPrimaryKeySelective(ProducePlanExeRecord record);
+
+    int updateByPrimaryKey(ProducePlanExeRecord record);
+}

+ 3 - 3
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/AccountSpecialSettingsMapper.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/AccountSpecialSettingsMapper.java

@@ -1,7 +1,7 @@
-package com.tzld.piaoquan.longarticle.dao.mapper;
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
 
-import com.tzld.piaoquan.longarticle.model.po.AccountSpecialSettings;
-import com.tzld.piaoquan.longarticle.model.po.AccountSpecialSettingsExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettings;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettingsExample;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 

+ 3 - 3
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/CrawlerVideoMapper.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/CrawlerVideoMapper.java

@@ -1,7 +1,7 @@
-package com.tzld.piaoquan.longarticle.dao.mapper;
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
 
-import com.tzld.piaoquan.longarticle.model.po.CrawlerVideo;
-import com.tzld.piaoquan.longarticle.model.po.CrawlerVideoExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideo;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideoExample;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 

+ 3 - 3
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/LongArticlesTextMapper.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/LongArticlesTextMapper.java

@@ -1,7 +1,7 @@
-package com.tzld.piaoquan.longarticle.dao.mapper;
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
 
-import com.tzld.piaoquan.longarticle.model.po.LongArticlesText;
-import com.tzld.piaoquan.longarticle.model.po.LongArticlesTextExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesText;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesTextExample;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 

+ 3 - 3
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/MatchVideoMapper.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/MatchVideoMapper.java

@@ -1,7 +1,7 @@
-package com.tzld.piaoquan.longarticle.dao.mapper;
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
 
-import com.tzld.piaoquan.longarticle.model.po.MatchVideo;
-import com.tzld.piaoquan.longarticle.model.po.MatchVideoExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.MatchVideo;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.MatchVideoExample;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 

+ 3 - 3
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/OffVideoMapper.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/OffVideoMapper.java

@@ -1,7 +1,7 @@
-package com.tzld.piaoquan.longarticle.dao.mapper;
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
 
-import com.tzld.piaoquan.longarticle.model.po.OffVideo;
-import com.tzld.piaoquan.longarticle.model.po.OffVideoExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.OffVideo;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.OffVideoExample;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 

+ 3 - 3
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/PlanAccountMapper.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/PlanAccountMapper.java

@@ -1,7 +1,7 @@
-package com.tzld.piaoquan.longarticle.dao.mapper;
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
 
-import com.tzld.piaoquan.longarticle.model.po.PlanAccount;
-import com.tzld.piaoquan.longarticle.model.po.PlanAccountExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccount;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccountExample;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 

+ 3 - 3
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/PlanMapper.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/PlanMapper.java

@@ -1,7 +1,7 @@
-package com.tzld.piaoquan.longarticle.dao.mapper;
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
 
-import com.tzld.piaoquan.longarticle.model.po.Plan;
-import com.tzld.piaoquan.longarticle.model.po.PlanExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.Plan;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PlanExample;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 

+ 30 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/PromotionSourceMapper.java

@@ -0,0 +1,30 @@
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
+
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PromotionSource;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PromotionSourceExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface PromotionSourceMapper {
+    long countByExample(PromotionSourceExample example);
+
+    int deleteByExample(PromotionSourceExample example);
+
+    int deleteByPrimaryKey(String channelContentId);
+
+    int insert(PromotionSource record);
+
+    int insertSelective(PromotionSource record);
+
+    List<PromotionSource> selectByExample(PromotionSourceExample example);
+
+    PromotionSource selectByPrimaryKey(String channelContentId);
+
+    int updateByExampleSelective(@Param("record") PromotionSource record, @Param("example") PromotionSourceExample example);
+
+    int updateByExample(@Param("record") PromotionSource record, @Param("example") PromotionSourceExample example);
+
+    int updateByPrimaryKeySelective(PromotionSource record);
+
+    int updateByPrimaryKey(PromotionSource record);
+}

+ 3 - 3
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/PublishContentMapper.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/PublishContentMapper.java

@@ -1,7 +1,7 @@
-package com.tzld.piaoquan.longarticle.dao.mapper;
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
 
-import com.tzld.piaoquan.longarticle.model.po.PublishContent;
-import com.tzld.piaoquan.longarticle.model.po.PublishContentExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PublishContent;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PublishContentExample;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 

+ 3 - 3
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/PublishMatchContentMapper.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/PublishMatchContentMapper.java

@@ -1,7 +1,7 @@
-package com.tzld.piaoquan.longarticle.dao.mapper;
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
 
-import com.tzld.piaoquan.longarticle.model.po.PublishMatchContent;
-import com.tzld.piaoquan.longarticle.model.po.PublishMatchContentExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PublishMatchContent;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PublishMatchContentExample;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 

+ 3 - 3
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/PublishMiniprogramMapper.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/PublishMiniprogramMapper.java

@@ -1,7 +1,7 @@
-package com.tzld.piaoquan.longarticle.dao.mapper;
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
 
-import com.tzld.piaoquan.longarticle.model.po.PublishMiniprogram;
-import com.tzld.piaoquan.longarticle.model.po.PublishMiniprogramExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PublishMiniprogram;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PublishMiniprogramExample;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 

+ 3 - 3
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/RootSourceMapper.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/RootSourceMapper.java

@@ -1,7 +1,7 @@
-package com.tzld.piaoquan.longarticle.dao.mapper;
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
 
-import com.tzld.piaoquan.longarticle.model.po.RootSource;
-import com.tzld.piaoquan.longarticle.model.po.RootSourceExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.RootSource;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.RootSourceExample;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 

+ 3 - 3
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/SingleVideoSourceMapper.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/SingleVideoSourceMapper.java

@@ -1,7 +1,7 @@
-package com.tzld.piaoquan.longarticle.dao.mapper;
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
 
-import com.tzld.piaoquan.longarticle.model.po.SingleVideoSource;
-import com.tzld.piaoquan.longarticle.model.po.SingleVideoSourceExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.SingleVideoSource;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.SingleVideoSourceExample;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 

+ 30 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/dao/mapper/longarticle/TitleAuditMapper.java

@@ -0,0 +1,30 @@
+package com.tzld.piaoquan.longarticle.dao.mapper.longarticle;
+
+import com.tzld.piaoquan.longarticle.model.po.longarticle.TitleAudit;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.TitleAuditExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface TitleAuditMapper {
+    long countByExample(TitleAuditExample example);
+
+    int deleteByExample(TitleAuditExample example);
+
+    int deleteByPrimaryKey(String contentId);
+
+    int insert(TitleAudit record);
+
+    int insertSelective(TitleAudit record);
+
+    List<TitleAudit> selectByExample(TitleAuditExample example);
+
+    TitleAudit selectByPrimaryKey(String contentId);
+
+    int updateByExampleSelective(@Param("record") TitleAudit record, @Param("example") TitleAuditExample example);
+
+    int updateByExample(@Param("record") TitleAudit record, @Param("example") TitleAuditExample example);
+
+    int updateByPrimaryKeySelective(TitleAudit record);
+
+    int updateByPrimaryKey(TitleAudit record);
+}

+ 63 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/job/MatchVideoJob.java

@@ -0,0 +1,63 @@
+package com.tzld.piaoquan.longarticle.job;
+
+import com.tzld.piaoquan.longarticle.service.local.impl.MatchVideoServiceImpl;
+import com.tzld.piaoquan.longarticle.utils.LarkRobotUtil;
+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.stereotype.Component;
+
+@Slf4j
+@Component
+public class MatchVideoJob {
+
+    @Autowired
+    MatchVideoServiceImpl matchVideoService;
+
+
+    @XxlJob("kimiContentJob")
+    public ReturnT<String> kimiContentJob(String param) {
+        try {
+            matchVideoService.kimiContent();
+        } catch (Exception e) {
+            LarkRobotUtil.sendMessage("kimiContentJob异常,请及时查看,@薛一鸣");
+            log.error("kimiContentJob error", e);
+        }
+        return ReturnT.SUCCESS;
+    }
+
+    @XxlJob("matchCrawlerVideo")
+    public ReturnT<String> matchCrawlerVideoJob(String param) {
+        try {
+            matchVideoService.matchCrawlerVideo();
+        } catch (Exception e) {
+            LarkRobotUtil.sendMessage("matchCrawlerVideoJob异常,请及时查看,@薛一鸣");
+            log.error("matchCrawlerVideoJob error", e);
+        }
+        return ReturnT.SUCCESS;
+    }
+
+    @XxlJob("uploadCrawlerVideo")
+    public ReturnT<String> uploadCrawlerVideoJob(String param) {
+        try {
+            matchVideoService.uploadCrawlerVideo();
+        } catch (Exception e) {
+            LarkRobotUtil.sendMessage("uploadCrawlerVideoJob异常,请及时查看,@薛一鸣");
+            log.error("uploadCrawlerVideoJob error", e);
+        }
+        return ReturnT.SUCCESS;
+    }
+
+
+    @XxlJob("publishCrawlerVideo")
+    public ReturnT<String> publishCrawlerVideoJob(String param) {
+        try {
+            matchVideoService.publishCrawlerVideo();
+        } catch (Exception e) {
+            LarkRobotUtil.sendMessage("publishCrawlerVideoJob异常,请及时查看,@薛一鸣");
+            log.error("publishCrawlerVideoJob error", e);
+        }
+        return ReturnT.SUCCESS;
+    }
+}

+ 2 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/bo/MatchContent.java

@@ -24,4 +24,6 @@ public class MatchContent {
     private Integer sourceType;
 
     private String channelContentId;
+
+    private Integer publishFlag;
 }

+ 4 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/bo/VideoDetail.java

@@ -21,9 +21,13 @@ public class VideoDetail {
 
     private String coverImgPath;
 
+    private String rawImgPath;
+
     private String videoPath;
 
     private String videoOss;
 
+    private String coverOss;
+
     private String traceId;
 }

+ 0 - 90
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/LongArticlesText.java

@@ -1,90 +0,0 @@
-package com.tzld.piaoquan.longarticle.model.po;
-
-public class LongArticlesText {
-    private String contentId;
-
-    private String articleTitle;
-
-    private String kimiTitle;
-
-    private String kimiSummary;
-
-    private String kimiKeys;
-
-    private Integer kimiStatus;
-
-    private String articleText;
-
-    public String getContentId() {
-        return contentId;
-    }
-
-    public void setContentId(String contentId) {
-        this.contentId = contentId;
-    }
-
-    public String getArticleTitle() {
-        return articleTitle;
-    }
-
-    public void setArticleTitle(String articleTitle) {
-        this.articleTitle = articleTitle;
-    }
-
-    public String getKimiTitle() {
-        return kimiTitle;
-    }
-
-    public void setKimiTitle(String kimiTitle) {
-        this.kimiTitle = kimiTitle;
-    }
-
-    public String getKimiSummary() {
-        return kimiSummary;
-    }
-
-    public void setKimiSummary(String kimiSummary) {
-        this.kimiSummary = kimiSummary;
-    }
-
-    public String getKimiKeys() {
-        return kimiKeys;
-    }
-
-    public void setKimiKeys(String kimiKeys) {
-        this.kimiKeys = kimiKeys;
-    }
-
-    public Integer getKimiStatus() {
-        return kimiStatus;
-    }
-
-    public void setKimiStatus(Integer kimiStatus) {
-        this.kimiStatus = kimiStatus;
-    }
-
-    public String getArticleText() {
-        return articleText;
-    }
-
-    public void setArticleText(String articleText) {
-        this.articleText = articleText;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append(getClass().getSimpleName());
-        sb.append(" [");
-        sb.append("Hash = ").append(hashCode());
-        sb.append(", contentId=").append(contentId);
-        sb.append(", articleTitle=").append(articleTitle);
-        sb.append(", kimiTitle=").append(kimiTitle);
-        sb.append(", kimiSummary=").append(kimiSummary);
-        sb.append(", kimiKeys=").append(kimiKeys);
-        sb.append(", kimiStatus=").append(kimiStatus);
-        sb.append(", articleText=").append(articleText);
-        sb.append("]");
-        return sb.toString();
-    }
-}

+ 145 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/aigc/ProducePlanExeRecord.java

@@ -0,0 +1,145 @@
+package com.tzld.piaoquan.longarticle.model.po.aigc;
+
+public class ProducePlanExeRecord {
+    private String planExeId;
+
+    private String planId;
+
+    private String channelContentId;
+
+    private Integer status;
+
+    private String errorMsg;
+
+    private Long createTimestamp;
+
+    private Long updateTimestamp;
+
+    private Long produceTimestamp;
+
+    private Integer auditStatus;
+
+    private String auditAccount;
+
+    private Long auditTimestamp;
+
+    private Integer auditCount;
+
+    public String getPlanExeId() {
+        return planExeId;
+    }
+
+    public void setPlanExeId(String planExeId) {
+        this.planExeId = planExeId;
+    }
+
+    public String getPlanId() {
+        return planId;
+    }
+
+    public void setPlanId(String planId) {
+        this.planId = planId;
+    }
+
+    public String getChannelContentId() {
+        return channelContentId;
+    }
+
+    public void setChannelContentId(String channelContentId) {
+        this.channelContentId = channelContentId;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public String getErrorMsg() {
+        return errorMsg;
+    }
+
+    public void setErrorMsg(String errorMsg) {
+        this.errorMsg = errorMsg;
+    }
+
+    public Long getCreateTimestamp() {
+        return createTimestamp;
+    }
+
+    public void setCreateTimestamp(Long createTimestamp) {
+        this.createTimestamp = createTimestamp;
+    }
+
+    public Long getUpdateTimestamp() {
+        return updateTimestamp;
+    }
+
+    public void setUpdateTimestamp(Long updateTimestamp) {
+        this.updateTimestamp = updateTimestamp;
+    }
+
+    public Long getProduceTimestamp() {
+        return produceTimestamp;
+    }
+
+    public void setProduceTimestamp(Long produceTimestamp) {
+        this.produceTimestamp = produceTimestamp;
+    }
+
+    public Integer getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(Integer auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+
+    public String getAuditAccount() {
+        return auditAccount;
+    }
+
+    public void setAuditAccount(String auditAccount) {
+        this.auditAccount = auditAccount;
+    }
+
+    public Long getAuditTimestamp() {
+        return auditTimestamp;
+    }
+
+    public void setAuditTimestamp(Long auditTimestamp) {
+        this.auditTimestamp = auditTimestamp;
+    }
+
+    public Integer getAuditCount() {
+        return auditCount;
+    }
+
+    public void setAuditCount(Integer auditCount) {
+        this.auditCount = auditCount;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", planExeId=").append(planExeId);
+        sb.append(", planId=").append(planId);
+        sb.append(", channelContentId=").append(channelContentId);
+        sb.append(", status=").append(status);
+        sb.append(", errorMsg=").append(errorMsg);
+        sb.append(", createTimestamp=").append(createTimestamp);
+        sb.append(", updateTimestamp=").append(updateTimestamp);
+        sb.append(", produceTimestamp=").append(produceTimestamp);
+        sb.append(", auditStatus=").append(auditStatus);
+        sb.append(", auditAccount=").append(auditAccount);
+        sb.append(", auditTimestamp=").append(auditTimestamp);
+        sb.append(", auditCount=").append(auditCount);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 981 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/aigc/ProducePlanExeRecordExample.java

@@ -0,0 +1,981 @@
+package com.tzld.piaoquan.longarticle.model.po.aigc;
+
+import com.tzld.piaoquan.longarticle.utils.page.Page;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ProducePlanExeRecordExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    protected Page page;
+
+    public ProducePlanExeRecordExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    public void setPage(Page page) {
+        this.page=page;
+    }
+
+    public Page getPage() {
+        return page;
+    }
+
+    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 andPlanExeIdIsNull() {
+            addCriterion("plan_exe_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanExeIdIsNotNull() {
+            addCriterion("plan_exe_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanExeIdEqualTo(String value) {
+            addCriterion("plan_exe_id =", value, "planExeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanExeIdNotEqualTo(String value) {
+            addCriterion("plan_exe_id <>", value, "planExeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanExeIdGreaterThan(String value) {
+            addCriterion("plan_exe_id >", value, "planExeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanExeIdGreaterThanOrEqualTo(String value) {
+            addCriterion("plan_exe_id >=", value, "planExeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanExeIdLessThan(String value) {
+            addCriterion("plan_exe_id <", value, "planExeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanExeIdLessThanOrEqualTo(String value) {
+            addCriterion("plan_exe_id <=", value, "planExeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanExeIdLike(String value) {
+            addCriterion("plan_exe_id like", value, "planExeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanExeIdNotLike(String value) {
+            addCriterion("plan_exe_id not like", value, "planExeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanExeIdIn(List<String> values) {
+            addCriterion("plan_exe_id in", values, "planExeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanExeIdNotIn(List<String> values) {
+            addCriterion("plan_exe_id not in", values, "planExeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanExeIdBetween(String value1, String value2) {
+            addCriterion("plan_exe_id between", value1, value2, "planExeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanExeIdNotBetween(String value1, String value2) {
+            addCriterion("plan_exe_id not between", value1, value2, "planExeId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdIsNull() {
+            addCriterion("plan_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdIsNotNull() {
+            addCriterion("plan_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdEqualTo(String value) {
+            addCriterion("plan_id =", value, "planId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdNotEqualTo(String value) {
+            addCriterion("plan_id <>", value, "planId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdGreaterThan(String value) {
+            addCriterion("plan_id >", value, "planId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdGreaterThanOrEqualTo(String value) {
+            addCriterion("plan_id >=", value, "planId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdLessThan(String value) {
+            addCriterion("plan_id <", value, "planId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdLessThanOrEqualTo(String value) {
+            addCriterion("plan_id <=", value, "planId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdLike(String value) {
+            addCriterion("plan_id like", value, "planId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdNotLike(String value) {
+            addCriterion("plan_id not like", value, "planId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdIn(List<String> values) {
+            addCriterion("plan_id in", values, "planId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdNotIn(List<String> values) {
+            addCriterion("plan_id not in", values, "planId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdBetween(String value1, String value2) {
+            addCriterion("plan_id between", value1, value2, "planId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPlanIdNotBetween(String value1, String value2) {
+            addCriterion("plan_id not between", value1, value2, "planId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdIsNull() {
+            addCriterion("channel_content_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdIsNotNull() {
+            addCriterion("channel_content_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdEqualTo(String value) {
+            addCriterion("channel_content_id =", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdNotEqualTo(String value) {
+            addCriterion("channel_content_id <>", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdGreaterThan(String value) {
+            addCriterion("channel_content_id >", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdGreaterThanOrEqualTo(String value) {
+            addCriterion("channel_content_id >=", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdLessThan(String value) {
+            addCriterion("channel_content_id <", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdLessThanOrEqualTo(String value) {
+            addCriterion("channel_content_id <=", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdLike(String value) {
+            addCriterion("channel_content_id like", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdNotLike(String value) {
+            addCriterion("channel_content_id not like", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdIn(List<String> values) {
+            addCriterion("channel_content_id in", values, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdNotIn(List<String> values) {
+            addCriterion("channel_content_id not in", values, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdBetween(String value1, String value2) {
+            addCriterion("channel_content_id between", value1, value2, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdNotBetween(String value1, String value2) {
+            addCriterion("channel_content_id not between", value1, value2, "channelContentId");
+            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(Integer value) {
+            addCriterion("`status` =", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotEqualTo(Integer value) {
+            addCriterion("`status` <>", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThan(Integer value) {
+            addCriterion("`status` >", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("`status` >=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThan(Integer value) {
+            addCriterion("`status` <", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("`status` <=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIn(List<Integer> values) {
+            addCriterion("`status` in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotIn(List<Integer> values) {
+            addCriterion("`status` not in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusBetween(Integer value1, Integer value2) {
+            addCriterion("`status` between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("`status` not between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgIsNull() {
+            addCriterion("error_msg is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgIsNotNull() {
+            addCriterion("error_msg is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgEqualTo(String value) {
+            addCriterion("error_msg =", value, "errorMsg");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgNotEqualTo(String value) {
+            addCriterion("error_msg <>", value, "errorMsg");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgGreaterThan(String value) {
+            addCriterion("error_msg >", value, "errorMsg");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgGreaterThanOrEqualTo(String value) {
+            addCriterion("error_msg >=", value, "errorMsg");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgLessThan(String value) {
+            addCriterion("error_msg <", value, "errorMsg");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgLessThanOrEqualTo(String value) {
+            addCriterion("error_msg <=", value, "errorMsg");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgLike(String value) {
+            addCriterion("error_msg like", value, "errorMsg");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgNotLike(String value) {
+            addCriterion("error_msg not like", value, "errorMsg");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgIn(List<String> values) {
+            addCriterion("error_msg in", values, "errorMsg");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgNotIn(List<String> values) {
+            addCriterion("error_msg not in", values, "errorMsg");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgBetween(String value1, String value2) {
+            addCriterion("error_msg between", value1, value2, "errorMsg");
+            return (Criteria) this;
+        }
+
+        public Criteria andErrorMsgNotBetween(String value1, String value2) {
+            addCriterion("error_msg not between", value1, value2, "errorMsg");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampIsNull() {
+            addCriterion("create_timestamp is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampIsNotNull() {
+            addCriterion("create_timestamp is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampEqualTo(Long value) {
+            addCriterion("create_timestamp =", value, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampNotEqualTo(Long value) {
+            addCriterion("create_timestamp <>", value, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampGreaterThan(Long value) {
+            addCriterion("create_timestamp >", value, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampGreaterThanOrEqualTo(Long value) {
+            addCriterion("create_timestamp >=", value, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampLessThan(Long value) {
+            addCriterion("create_timestamp <", value, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampLessThanOrEqualTo(Long value) {
+            addCriterion("create_timestamp <=", value, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampIn(List<Long> values) {
+            addCriterion("create_timestamp in", values, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampNotIn(List<Long> values) {
+            addCriterion("create_timestamp not in", values, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampBetween(Long value1, Long value2) {
+            addCriterion("create_timestamp between", value1, value2, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampNotBetween(Long value1, Long value2) {
+            addCriterion("create_timestamp not between", value1, value2, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampIsNull() {
+            addCriterion("update_timestamp is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampIsNotNull() {
+            addCriterion("update_timestamp is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampEqualTo(Long value) {
+            addCriterion("update_timestamp =", value, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampNotEqualTo(Long value) {
+            addCriterion("update_timestamp <>", value, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampGreaterThan(Long value) {
+            addCriterion("update_timestamp >", value, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampGreaterThanOrEqualTo(Long value) {
+            addCriterion("update_timestamp >=", value, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampLessThan(Long value) {
+            addCriterion("update_timestamp <", value, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampLessThanOrEqualTo(Long value) {
+            addCriterion("update_timestamp <=", value, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampIn(List<Long> values) {
+            addCriterion("update_timestamp in", values, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampNotIn(List<Long> values) {
+            addCriterion("update_timestamp not in", values, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampBetween(Long value1, Long value2) {
+            addCriterion("update_timestamp between", value1, value2, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampNotBetween(Long value1, Long value2) {
+            addCriterion("update_timestamp not between", value1, value2, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andProduceTimestampIsNull() {
+            addCriterion("produce_timestamp is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andProduceTimestampIsNotNull() {
+            addCriterion("produce_timestamp is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andProduceTimestampEqualTo(Long value) {
+            addCriterion("produce_timestamp =", value, "produceTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andProduceTimestampNotEqualTo(Long value) {
+            addCriterion("produce_timestamp <>", value, "produceTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andProduceTimestampGreaterThan(Long value) {
+            addCriterion("produce_timestamp >", value, "produceTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andProduceTimestampGreaterThanOrEqualTo(Long value) {
+            addCriterion("produce_timestamp >=", value, "produceTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andProduceTimestampLessThan(Long value) {
+            addCriterion("produce_timestamp <", value, "produceTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andProduceTimestampLessThanOrEqualTo(Long value) {
+            addCriterion("produce_timestamp <=", value, "produceTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andProduceTimestampIn(List<Long> values) {
+            addCriterion("produce_timestamp in", values, "produceTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andProduceTimestampNotIn(List<Long> values) {
+            addCriterion("produce_timestamp not in", values, "produceTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andProduceTimestampBetween(Long value1, Long value2) {
+            addCriterion("produce_timestamp between", value1, value2, "produceTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andProduceTimestampNotBetween(Long value1, Long value2) {
+            addCriterion("produce_timestamp not between", value1, value2, "produceTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditStatusIsNull() {
+            addCriterion("audit_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditStatusIsNotNull() {
+            addCriterion("audit_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditStatusEqualTo(Integer value) {
+            addCriterion("audit_status =", value, "auditStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditStatusNotEqualTo(Integer value) {
+            addCriterion("audit_status <>", value, "auditStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditStatusGreaterThan(Integer value) {
+            addCriterion("audit_status >", value, "auditStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("audit_status >=", value, "auditStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditStatusLessThan(Integer value) {
+            addCriterion("audit_status <", value, "auditStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("audit_status <=", value, "auditStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditStatusIn(List<Integer> values) {
+            addCriterion("audit_status in", values, "auditStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditStatusNotIn(List<Integer> values) {
+            addCriterion("audit_status not in", values, "auditStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditStatusBetween(Integer value1, Integer value2) {
+            addCriterion("audit_status between", value1, value2, "auditStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("audit_status not between", value1, value2, "auditStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountIsNull() {
+            addCriterion("audit_account is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountIsNotNull() {
+            addCriterion("audit_account is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountEqualTo(String value) {
+            addCriterion("audit_account =", value, "auditAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountNotEqualTo(String value) {
+            addCriterion("audit_account <>", value, "auditAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountGreaterThan(String value) {
+            addCriterion("audit_account >", value, "auditAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountGreaterThanOrEqualTo(String value) {
+            addCriterion("audit_account >=", value, "auditAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountLessThan(String value) {
+            addCriterion("audit_account <", value, "auditAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountLessThanOrEqualTo(String value) {
+            addCriterion("audit_account <=", value, "auditAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountLike(String value) {
+            addCriterion("audit_account like", value, "auditAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountNotLike(String value) {
+            addCriterion("audit_account not like", value, "auditAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountIn(List<String> values) {
+            addCriterion("audit_account in", values, "auditAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountNotIn(List<String> values) {
+            addCriterion("audit_account not in", values, "auditAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountBetween(String value1, String value2) {
+            addCriterion("audit_account between", value1, value2, "auditAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditAccountNotBetween(String value1, String value2) {
+            addCriterion("audit_account not between", value1, value2, "auditAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditTimestampIsNull() {
+            addCriterion("audit_timestamp is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditTimestampIsNotNull() {
+            addCriterion("audit_timestamp is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditTimestampEqualTo(Long value) {
+            addCriterion("audit_timestamp =", value, "auditTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditTimestampNotEqualTo(Long value) {
+            addCriterion("audit_timestamp <>", value, "auditTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditTimestampGreaterThan(Long value) {
+            addCriterion("audit_timestamp >", value, "auditTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditTimestampGreaterThanOrEqualTo(Long value) {
+            addCriterion("audit_timestamp >=", value, "auditTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditTimestampLessThan(Long value) {
+            addCriterion("audit_timestamp <", value, "auditTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditTimestampLessThanOrEqualTo(Long value) {
+            addCriterion("audit_timestamp <=", value, "auditTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditTimestampIn(List<Long> values) {
+            addCriterion("audit_timestamp in", values, "auditTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditTimestampNotIn(List<Long> values) {
+            addCriterion("audit_timestamp not in", values, "auditTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditTimestampBetween(Long value1, Long value2) {
+            addCriterion("audit_timestamp between", value1, value2, "auditTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditTimestampNotBetween(Long value1, Long value2) {
+            addCriterion("audit_timestamp not between", value1, value2, "auditTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditCountIsNull() {
+            addCriterion("audit_count is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditCountIsNotNull() {
+            addCriterion("audit_count is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditCountEqualTo(Integer value) {
+            addCriterion("audit_count =", value, "auditCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditCountNotEqualTo(Integer value) {
+            addCriterion("audit_count <>", value, "auditCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditCountGreaterThan(Integer value) {
+            addCriterion("audit_count >", value, "auditCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditCountGreaterThanOrEqualTo(Integer value) {
+            addCriterion("audit_count >=", value, "auditCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditCountLessThan(Integer value) {
+            addCriterion("audit_count <", value, "auditCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditCountLessThanOrEqualTo(Integer value) {
+            addCriterion("audit_count <=", value, "auditCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditCountIn(List<Integer> values) {
+            addCriterion("audit_count in", values, "auditCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditCountNotIn(List<Integer> values) {
+            addCriterion("audit_count not in", values, "auditCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditCountBetween(Integer value1, Integer value2) {
+            addCriterion("audit_count between", value1, value2, "auditCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuditCountNotBetween(Integer value1, Integer value2) {
+            addCriterion("audit_count not between", value1, value2, "auditCount");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    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);
+        }
+    }
+}

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/AccountSpecialSettings.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/AccountSpecialSettings.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import java.util.Date;
 

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/AccountSpecialSettingsExample.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/AccountSpecialSettingsExample.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import com.tzld.piaoquan.longarticle.utils.page.Page;
 import java.util.ArrayList;

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/CrawlerVideo.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/CrawlerVideo.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import java.util.Date;
 

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/CrawlerVideoExample.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/CrawlerVideoExample.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import com.tzld.piaoquan.longarticle.utils.page.Page;
 import java.util.ArrayList;

+ 202 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/LongArticlesText.java

@@ -0,0 +1,202 @@
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
+
+import java.util.Date;
+
+public class LongArticlesText {
+    private String contentId;
+
+    private String articleTitle;
+
+    private String oldArticleTitle;
+
+    private String articleTitleUpdateAccount;
+
+    private Long articleTitleUpdateTimestamp;
+
+    private String kimiTitle;
+
+    private String oldKimiTitle;
+
+    private String kimiTitleUpdateAccount;
+
+    private Long kimiTitleUpdateTimestamp;
+
+    private String kimiSummary;
+
+    private String kimiKeys;
+
+    private Integer kimiStatus;
+
+    private Integer similarityStatus;
+
+    private Date startProcessingTime;
+
+    private Integer resultStatus;
+
+    private Date createTime;
+
+    private String articleText;
+
+    public String getContentId() {
+        return contentId;
+    }
+
+    public void setContentId(String contentId) {
+        this.contentId = contentId;
+    }
+
+    public String getArticleTitle() {
+        return articleTitle;
+    }
+
+    public void setArticleTitle(String articleTitle) {
+        this.articleTitle = articleTitle;
+    }
+
+    public String getOldArticleTitle() {
+        return oldArticleTitle;
+    }
+
+    public void setOldArticleTitle(String oldArticleTitle) {
+        this.oldArticleTitle = oldArticleTitle;
+    }
+
+    public String getArticleTitleUpdateAccount() {
+        return articleTitleUpdateAccount;
+    }
+
+    public void setArticleTitleUpdateAccount(String articleTitleUpdateAccount) {
+        this.articleTitleUpdateAccount = articleTitleUpdateAccount;
+    }
+
+    public Long getArticleTitleUpdateTimestamp() {
+        return articleTitleUpdateTimestamp;
+    }
+
+    public void setArticleTitleUpdateTimestamp(Long articleTitleUpdateTimestamp) {
+        this.articleTitleUpdateTimestamp = articleTitleUpdateTimestamp;
+    }
+
+    public String getKimiTitle() {
+        return kimiTitle;
+    }
+
+    public void setKimiTitle(String kimiTitle) {
+        this.kimiTitle = kimiTitle;
+    }
+
+    public String getOldKimiTitle() {
+        return oldKimiTitle;
+    }
+
+    public void setOldKimiTitle(String oldKimiTitle) {
+        this.oldKimiTitle = oldKimiTitle;
+    }
+
+    public String getKimiTitleUpdateAccount() {
+        return kimiTitleUpdateAccount;
+    }
+
+    public void setKimiTitleUpdateAccount(String kimiTitleUpdateAccount) {
+        this.kimiTitleUpdateAccount = kimiTitleUpdateAccount;
+    }
+
+    public Long getKimiTitleUpdateTimestamp() {
+        return kimiTitleUpdateTimestamp;
+    }
+
+    public void setKimiTitleUpdateTimestamp(Long kimiTitleUpdateTimestamp) {
+        this.kimiTitleUpdateTimestamp = kimiTitleUpdateTimestamp;
+    }
+
+    public String getKimiSummary() {
+        return kimiSummary;
+    }
+
+    public void setKimiSummary(String kimiSummary) {
+        this.kimiSummary = kimiSummary;
+    }
+
+    public String getKimiKeys() {
+        return kimiKeys;
+    }
+
+    public void setKimiKeys(String kimiKeys) {
+        this.kimiKeys = kimiKeys;
+    }
+
+    public Integer getKimiStatus() {
+        return kimiStatus;
+    }
+
+    public void setKimiStatus(Integer kimiStatus) {
+        this.kimiStatus = kimiStatus;
+    }
+
+    public Integer getSimilarityStatus() {
+        return similarityStatus;
+    }
+
+    public void setSimilarityStatus(Integer similarityStatus) {
+        this.similarityStatus = similarityStatus;
+    }
+
+    public Date getStartProcessingTime() {
+        return startProcessingTime;
+    }
+
+    public void setStartProcessingTime(Date startProcessingTime) {
+        this.startProcessingTime = startProcessingTime;
+    }
+
+    public Integer getResultStatus() {
+        return resultStatus;
+    }
+
+    public void setResultStatus(Integer resultStatus) {
+        this.resultStatus = resultStatus;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getArticleText() {
+        return articleText;
+    }
+
+    public void setArticleText(String articleText) {
+        this.articleText = articleText;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", contentId=").append(contentId);
+        sb.append(", articleTitle=").append(articleTitle);
+        sb.append(", oldArticleTitle=").append(oldArticleTitle);
+        sb.append(", articleTitleUpdateAccount=").append(articleTitleUpdateAccount);
+        sb.append(", articleTitleUpdateTimestamp=").append(articleTitleUpdateTimestamp);
+        sb.append(", kimiTitle=").append(kimiTitle);
+        sb.append(", oldKimiTitle=").append(oldKimiTitle);
+        sb.append(", kimiTitleUpdateAccount=").append(kimiTitleUpdateAccount);
+        sb.append(", kimiTitleUpdateTimestamp=").append(kimiTitleUpdateTimestamp);
+        sb.append(", kimiSummary=").append(kimiSummary);
+        sb.append(", kimiKeys=").append(kimiKeys);
+        sb.append(", kimiStatus=").append(kimiStatus);
+        sb.append(", similarityStatus=").append(similarityStatus);
+        sb.append(", startProcessingTime=").append(startProcessingTime);
+        sb.append(", resultStatus=").append(resultStatus);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", articleText=").append(articleText);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 1262 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/LongArticlesTextExample.java

@@ -0,0 +1,1262 @@
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
+
+import com.tzld.piaoquan.longarticle.utils.page.Page;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class LongArticlesTextExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    protected Page page;
+
+    public LongArticlesTextExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    public void setPage(Page page) {
+        this.page=page;
+    }
+
+    public Page getPage() {
+        return page;
+    }
+
+    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 andContentIdIsNull() {
+            addCriterion("content_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andContentIdIsNotNull() {
+            addCriterion("content_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andContentIdEqualTo(String value) {
+            addCriterion("content_id =", value, "contentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andContentIdNotEqualTo(String value) {
+            addCriterion("content_id <>", value, "contentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andContentIdGreaterThan(String value) {
+            addCriterion("content_id >", value, "contentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andContentIdGreaterThanOrEqualTo(String value) {
+            addCriterion("content_id >=", value, "contentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andContentIdLessThan(String value) {
+            addCriterion("content_id <", value, "contentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andContentIdLessThanOrEqualTo(String value) {
+            addCriterion("content_id <=", value, "contentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andContentIdLike(String value) {
+            addCriterion("content_id like", value, "contentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andContentIdNotLike(String value) {
+            addCriterion("content_id not like", value, "contentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andContentIdIn(List<String> values) {
+            addCriterion("content_id in", values, "contentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andContentIdNotIn(List<String> values) {
+            addCriterion("content_id not in", values, "contentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andContentIdBetween(String value1, String value2) {
+            addCriterion("content_id between", value1, value2, "contentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andContentIdNotBetween(String value1, String value2) {
+            addCriterion("content_id not between", value1, value2, "contentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleIsNull() {
+            addCriterion("article_title is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleIsNotNull() {
+            addCriterion("article_title is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleEqualTo(String value) {
+            addCriterion("article_title =", value, "articleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleNotEqualTo(String value) {
+            addCriterion("article_title <>", value, "articleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleGreaterThan(String value) {
+            addCriterion("article_title >", value, "articleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleGreaterThanOrEqualTo(String value) {
+            addCriterion("article_title >=", value, "articleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleLessThan(String value) {
+            addCriterion("article_title <", value, "articleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleLessThanOrEqualTo(String value) {
+            addCriterion("article_title <=", value, "articleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleLike(String value) {
+            addCriterion("article_title like", value, "articleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleNotLike(String value) {
+            addCriterion("article_title not like", value, "articleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleIn(List<String> values) {
+            addCriterion("article_title in", values, "articleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleNotIn(List<String> values) {
+            addCriterion("article_title not in", values, "articleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleBetween(String value1, String value2) {
+            addCriterion("article_title between", value1, value2, "articleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleNotBetween(String value1, String value2) {
+            addCriterion("article_title not between", value1, value2, "articleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleIsNull() {
+            addCriterion("old_article_title is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleIsNotNull() {
+            addCriterion("old_article_title is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleEqualTo(String value) {
+            addCriterion("old_article_title =", value, "oldArticleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleNotEqualTo(String value) {
+            addCriterion("old_article_title <>", value, "oldArticleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleGreaterThan(String value) {
+            addCriterion("old_article_title >", value, "oldArticleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleGreaterThanOrEqualTo(String value) {
+            addCriterion("old_article_title >=", value, "oldArticleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleLessThan(String value) {
+            addCriterion("old_article_title <", value, "oldArticleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleLessThanOrEqualTo(String value) {
+            addCriterion("old_article_title <=", value, "oldArticleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleLike(String value) {
+            addCriterion("old_article_title like", value, "oldArticleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleNotLike(String value) {
+            addCriterion("old_article_title not like", value, "oldArticleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleIn(List<String> values) {
+            addCriterion("old_article_title in", values, "oldArticleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleNotIn(List<String> values) {
+            addCriterion("old_article_title not in", values, "oldArticleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleBetween(String value1, String value2) {
+            addCriterion("old_article_title between", value1, value2, "oldArticleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldArticleTitleNotBetween(String value1, String value2) {
+            addCriterion("old_article_title not between", value1, value2, "oldArticleTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountIsNull() {
+            addCriterion("article_title_update_account is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountIsNotNull() {
+            addCriterion("article_title_update_account is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountEqualTo(String value) {
+            addCriterion("article_title_update_account =", value, "articleTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountNotEqualTo(String value) {
+            addCriterion("article_title_update_account <>", value, "articleTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountGreaterThan(String value) {
+            addCriterion("article_title_update_account >", value, "articleTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountGreaterThanOrEqualTo(String value) {
+            addCriterion("article_title_update_account >=", value, "articleTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountLessThan(String value) {
+            addCriterion("article_title_update_account <", value, "articleTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountLessThanOrEqualTo(String value) {
+            addCriterion("article_title_update_account <=", value, "articleTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountLike(String value) {
+            addCriterion("article_title_update_account like", value, "articleTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountNotLike(String value) {
+            addCriterion("article_title_update_account not like", value, "articleTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountIn(List<String> values) {
+            addCriterion("article_title_update_account in", values, "articleTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountNotIn(List<String> values) {
+            addCriterion("article_title_update_account not in", values, "articleTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountBetween(String value1, String value2) {
+            addCriterion("article_title_update_account between", value1, value2, "articleTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateAccountNotBetween(String value1, String value2) {
+            addCriterion("article_title_update_account not between", value1, value2, "articleTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateTimestampIsNull() {
+            addCriterion("article_title_update_timestamp is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateTimestampIsNotNull() {
+            addCriterion("article_title_update_timestamp is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateTimestampEqualTo(Long value) {
+            addCriterion("article_title_update_timestamp =", value, "articleTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateTimestampNotEqualTo(Long value) {
+            addCriterion("article_title_update_timestamp <>", value, "articleTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateTimestampGreaterThan(Long value) {
+            addCriterion("article_title_update_timestamp >", value, "articleTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateTimestampGreaterThanOrEqualTo(Long value) {
+            addCriterion("article_title_update_timestamp >=", value, "articleTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateTimestampLessThan(Long value) {
+            addCriterion("article_title_update_timestamp <", value, "articleTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateTimestampLessThanOrEqualTo(Long value) {
+            addCriterion("article_title_update_timestamp <=", value, "articleTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateTimestampIn(List<Long> values) {
+            addCriterion("article_title_update_timestamp in", values, "articleTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateTimestampNotIn(List<Long> values) {
+            addCriterion("article_title_update_timestamp not in", values, "articleTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateTimestampBetween(Long value1, Long value2) {
+            addCriterion("article_title_update_timestamp between", value1, value2, "articleTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleTitleUpdateTimestampNotBetween(Long value1, Long value2) {
+            addCriterion("article_title_update_timestamp not between", value1, value2, "articleTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleIsNull() {
+            addCriterion("kimi_title is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleIsNotNull() {
+            addCriterion("kimi_title is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleEqualTo(String value) {
+            addCriterion("kimi_title =", value, "kimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleNotEqualTo(String value) {
+            addCriterion("kimi_title <>", value, "kimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleGreaterThan(String value) {
+            addCriterion("kimi_title >", value, "kimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleGreaterThanOrEqualTo(String value) {
+            addCriterion("kimi_title >=", value, "kimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleLessThan(String value) {
+            addCriterion("kimi_title <", value, "kimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleLessThanOrEqualTo(String value) {
+            addCriterion("kimi_title <=", value, "kimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleLike(String value) {
+            addCriterion("kimi_title like", value, "kimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleNotLike(String value) {
+            addCriterion("kimi_title not like", value, "kimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleIn(List<String> values) {
+            addCriterion("kimi_title in", values, "kimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleNotIn(List<String> values) {
+            addCriterion("kimi_title not in", values, "kimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleBetween(String value1, String value2) {
+            addCriterion("kimi_title between", value1, value2, "kimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleNotBetween(String value1, String value2) {
+            addCriterion("kimi_title not between", value1, value2, "kimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleIsNull() {
+            addCriterion("old_kimi_title is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleIsNotNull() {
+            addCriterion("old_kimi_title is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleEqualTo(String value) {
+            addCriterion("old_kimi_title =", value, "oldKimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleNotEqualTo(String value) {
+            addCriterion("old_kimi_title <>", value, "oldKimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleGreaterThan(String value) {
+            addCriterion("old_kimi_title >", value, "oldKimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleGreaterThanOrEqualTo(String value) {
+            addCriterion("old_kimi_title >=", value, "oldKimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleLessThan(String value) {
+            addCriterion("old_kimi_title <", value, "oldKimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleLessThanOrEqualTo(String value) {
+            addCriterion("old_kimi_title <=", value, "oldKimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleLike(String value) {
+            addCriterion("old_kimi_title like", value, "oldKimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleNotLike(String value) {
+            addCriterion("old_kimi_title not like", value, "oldKimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleIn(List<String> values) {
+            addCriterion("old_kimi_title in", values, "oldKimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleNotIn(List<String> values) {
+            addCriterion("old_kimi_title not in", values, "oldKimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleBetween(String value1, String value2) {
+            addCriterion("old_kimi_title between", value1, value2, "oldKimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andOldKimiTitleNotBetween(String value1, String value2) {
+            addCriterion("old_kimi_title not between", value1, value2, "oldKimiTitle");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountIsNull() {
+            addCriterion("kimi_title_update_account is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountIsNotNull() {
+            addCriterion("kimi_title_update_account is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountEqualTo(String value) {
+            addCriterion("kimi_title_update_account =", value, "kimiTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountNotEqualTo(String value) {
+            addCriterion("kimi_title_update_account <>", value, "kimiTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountGreaterThan(String value) {
+            addCriterion("kimi_title_update_account >", value, "kimiTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountGreaterThanOrEqualTo(String value) {
+            addCriterion("kimi_title_update_account >=", value, "kimiTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountLessThan(String value) {
+            addCriterion("kimi_title_update_account <", value, "kimiTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountLessThanOrEqualTo(String value) {
+            addCriterion("kimi_title_update_account <=", value, "kimiTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountLike(String value) {
+            addCriterion("kimi_title_update_account like", value, "kimiTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountNotLike(String value) {
+            addCriterion("kimi_title_update_account not like", value, "kimiTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountIn(List<String> values) {
+            addCriterion("kimi_title_update_account in", values, "kimiTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountNotIn(List<String> values) {
+            addCriterion("kimi_title_update_account not in", values, "kimiTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountBetween(String value1, String value2) {
+            addCriterion("kimi_title_update_account between", value1, value2, "kimiTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateAccountNotBetween(String value1, String value2) {
+            addCriterion("kimi_title_update_account not between", value1, value2, "kimiTitleUpdateAccount");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateTimestampIsNull() {
+            addCriterion("kimi_title_update_timestamp is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateTimestampIsNotNull() {
+            addCriterion("kimi_title_update_timestamp is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateTimestampEqualTo(Long value) {
+            addCriterion("kimi_title_update_timestamp =", value, "kimiTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateTimestampNotEqualTo(Long value) {
+            addCriterion("kimi_title_update_timestamp <>", value, "kimiTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateTimestampGreaterThan(Long value) {
+            addCriterion("kimi_title_update_timestamp >", value, "kimiTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateTimestampGreaterThanOrEqualTo(Long value) {
+            addCriterion("kimi_title_update_timestamp >=", value, "kimiTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateTimestampLessThan(Long value) {
+            addCriterion("kimi_title_update_timestamp <", value, "kimiTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateTimestampLessThanOrEqualTo(Long value) {
+            addCriterion("kimi_title_update_timestamp <=", value, "kimiTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateTimestampIn(List<Long> values) {
+            addCriterion("kimi_title_update_timestamp in", values, "kimiTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateTimestampNotIn(List<Long> values) {
+            addCriterion("kimi_title_update_timestamp not in", values, "kimiTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateTimestampBetween(Long value1, Long value2) {
+            addCriterion("kimi_title_update_timestamp between", value1, value2, "kimiTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiTitleUpdateTimestampNotBetween(Long value1, Long value2) {
+            addCriterion("kimi_title_update_timestamp not between", value1, value2, "kimiTitleUpdateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryIsNull() {
+            addCriterion("kimi_summary is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryIsNotNull() {
+            addCriterion("kimi_summary is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryEqualTo(String value) {
+            addCriterion("kimi_summary =", value, "kimiSummary");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryNotEqualTo(String value) {
+            addCriterion("kimi_summary <>", value, "kimiSummary");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryGreaterThan(String value) {
+            addCriterion("kimi_summary >", value, "kimiSummary");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryGreaterThanOrEqualTo(String value) {
+            addCriterion("kimi_summary >=", value, "kimiSummary");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryLessThan(String value) {
+            addCriterion("kimi_summary <", value, "kimiSummary");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryLessThanOrEqualTo(String value) {
+            addCriterion("kimi_summary <=", value, "kimiSummary");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryLike(String value) {
+            addCriterion("kimi_summary like", value, "kimiSummary");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryNotLike(String value) {
+            addCriterion("kimi_summary not like", value, "kimiSummary");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryIn(List<String> values) {
+            addCriterion("kimi_summary in", values, "kimiSummary");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryNotIn(List<String> values) {
+            addCriterion("kimi_summary not in", values, "kimiSummary");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryBetween(String value1, String value2) {
+            addCriterion("kimi_summary between", value1, value2, "kimiSummary");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiSummaryNotBetween(String value1, String value2) {
+            addCriterion("kimi_summary not between", value1, value2, "kimiSummary");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysIsNull() {
+            addCriterion("kimi_keys is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysIsNotNull() {
+            addCriterion("kimi_keys is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysEqualTo(String value) {
+            addCriterion("kimi_keys =", value, "kimiKeys");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysNotEqualTo(String value) {
+            addCriterion("kimi_keys <>", value, "kimiKeys");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysGreaterThan(String value) {
+            addCriterion("kimi_keys >", value, "kimiKeys");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysGreaterThanOrEqualTo(String value) {
+            addCriterion("kimi_keys >=", value, "kimiKeys");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysLessThan(String value) {
+            addCriterion("kimi_keys <", value, "kimiKeys");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysLessThanOrEqualTo(String value) {
+            addCriterion("kimi_keys <=", value, "kimiKeys");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysLike(String value) {
+            addCriterion("kimi_keys like", value, "kimiKeys");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysNotLike(String value) {
+            addCriterion("kimi_keys not like", value, "kimiKeys");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysIn(List<String> values) {
+            addCriterion("kimi_keys in", values, "kimiKeys");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysNotIn(List<String> values) {
+            addCriterion("kimi_keys not in", values, "kimiKeys");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysBetween(String value1, String value2) {
+            addCriterion("kimi_keys between", value1, value2, "kimiKeys");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiKeysNotBetween(String value1, String value2) {
+            addCriterion("kimi_keys not between", value1, value2, "kimiKeys");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiStatusIsNull() {
+            addCriterion("kimi_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiStatusIsNotNull() {
+            addCriterion("kimi_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiStatusEqualTo(Integer value) {
+            addCriterion("kimi_status =", value, "kimiStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiStatusNotEqualTo(Integer value) {
+            addCriterion("kimi_status <>", value, "kimiStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiStatusGreaterThan(Integer value) {
+            addCriterion("kimi_status >", value, "kimiStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("kimi_status >=", value, "kimiStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiStatusLessThan(Integer value) {
+            addCriterion("kimi_status <", value, "kimiStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("kimi_status <=", value, "kimiStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiStatusIn(List<Integer> values) {
+            addCriterion("kimi_status in", values, "kimiStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiStatusNotIn(List<Integer> values) {
+            addCriterion("kimi_status not in", values, "kimiStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiStatusBetween(Integer value1, Integer value2) {
+            addCriterion("kimi_status between", value1, value2, "kimiStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andKimiStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("kimi_status not between", value1, value2, "kimiStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimilarityStatusIsNull() {
+            addCriterion("similarity_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimilarityStatusIsNotNull() {
+            addCriterion("similarity_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimilarityStatusEqualTo(Integer value) {
+            addCriterion("similarity_status =", value, "similarityStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimilarityStatusNotEqualTo(Integer value) {
+            addCriterion("similarity_status <>", value, "similarityStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimilarityStatusGreaterThan(Integer value) {
+            addCriterion("similarity_status >", value, "similarityStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimilarityStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("similarity_status >=", value, "similarityStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimilarityStatusLessThan(Integer value) {
+            addCriterion("similarity_status <", value, "similarityStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimilarityStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("similarity_status <=", value, "similarityStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimilarityStatusIn(List<Integer> values) {
+            addCriterion("similarity_status in", values, "similarityStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimilarityStatusNotIn(List<Integer> values) {
+            addCriterion("similarity_status not in", values, "similarityStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimilarityStatusBetween(Integer value1, Integer value2) {
+            addCriterion("similarity_status between", value1, value2, "similarityStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimilarityStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("similarity_status not between", value1, value2, "similarityStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartProcessingTimeIsNull() {
+            addCriterion("start_processing_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartProcessingTimeIsNotNull() {
+            addCriterion("start_processing_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartProcessingTimeEqualTo(Date value) {
+            addCriterion("start_processing_time =", value, "startProcessingTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartProcessingTimeNotEqualTo(Date value) {
+            addCriterion("start_processing_time <>", value, "startProcessingTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartProcessingTimeGreaterThan(Date value) {
+            addCriterion("start_processing_time >", value, "startProcessingTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartProcessingTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("start_processing_time >=", value, "startProcessingTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartProcessingTimeLessThan(Date value) {
+            addCriterion("start_processing_time <", value, "startProcessingTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartProcessingTimeLessThanOrEqualTo(Date value) {
+            addCriterion("start_processing_time <=", value, "startProcessingTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartProcessingTimeIn(List<Date> values) {
+            addCriterion("start_processing_time in", values, "startProcessingTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartProcessingTimeNotIn(List<Date> values) {
+            addCriterion("start_processing_time not in", values, "startProcessingTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartProcessingTimeBetween(Date value1, Date value2) {
+            addCriterion("start_processing_time between", value1, value2, "startProcessingTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartProcessingTimeNotBetween(Date value1, Date value2) {
+            addCriterion("start_processing_time not between", value1, value2, "startProcessingTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andResultStatusIsNull() {
+            addCriterion("result_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andResultStatusIsNotNull() {
+            addCriterion("result_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andResultStatusEqualTo(Integer value) {
+            addCriterion("result_status =", value, "resultStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andResultStatusNotEqualTo(Integer value) {
+            addCriterion("result_status <>", value, "resultStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andResultStatusGreaterThan(Integer value) {
+            addCriterion("result_status >", value, "resultStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andResultStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("result_status >=", value, "resultStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andResultStatusLessThan(Integer value) {
+            addCriterion("result_status <", value, "resultStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andResultStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("result_status <=", value, "resultStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andResultStatusIn(List<Integer> values) {
+            addCriterion("result_status in", values, "resultStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andResultStatusNotIn(List<Integer> values) {
+            addCriterion("result_status not in", values, "resultStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andResultStatusBetween(Integer value1, Integer value2) {
+            addCriterion("result_status between", value1, value2, "resultStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andResultStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("result_status not between", value1, value2, "resultStatus");
+            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(Date value) {
+            addCriterion("create_time =", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotEqualTo(Date value) {
+            addCriterion("create_time <>", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThan(Date value) {
+            addCriterion("create_time >", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("create_time >=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThan(Date value) {
+            addCriterion("create_time <", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("create_time <=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIn(List<Date> values) {
+            addCriterion("create_time in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotIn(List<Date> values) {
+            addCriterion("create_time not in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeBetween(Date value1, Date value2) {
+            addCriterion("create_time between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("create_time not between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    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);
+        }
+    }
+}

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/MatchVideo.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/MatchVideo.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import java.util.Date;
 

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/MatchVideoExample.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/MatchVideoExample.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import com.tzld.piaoquan.longarticle.utils.page.Page;
 import java.util.ArrayList;

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/OffVideo.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/OffVideo.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 public class OffVideo {
     private Long videoId;

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/OffVideoExample.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/OffVideoExample.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import com.tzld.piaoquan.longarticle.utils.page.Page;
 import java.util.ArrayList;

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/Plan.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/Plan.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import java.util.Date;
 

+ 12 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/PlanAccount.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PlanAccount.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import java.util.Date;
 
@@ -55,6 +55,8 @@ public class PlanAccount {
 
     private Integer publishOpenFlag;
 
+    private Integer isSpecialSetting;
+
     private Integer isDelete;
 
     private Date createTime;
@@ -269,6 +271,14 @@ public class PlanAccount {
         this.publishOpenFlag = publishOpenFlag;
     }
 
+    public Integer getIsSpecialSetting() {
+        return isSpecialSetting;
+    }
+
+    public void setIsSpecialSetting(Integer isSpecialSetting) {
+        this.isSpecialSetting = isSpecialSetting;
+    }
+
     public Integer getIsDelete() {
         return isDelete;
     }
@@ -325,6 +335,7 @@ public class PlanAccount {
         sb.append(", retryCount=").append(retryCount);
         sb.append(", sendCount=").append(sendCount);
         sb.append(", publishOpenFlag=").append(publishOpenFlag);
+        sb.append(", isSpecialSetting=").append(isSpecialSetting);
         sb.append(", isDelete=").append(isDelete);
         sb.append(", createTime=").append(createTime);
         sb.append(", updateTime=").append(updateTime);

+ 61 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/PlanAccountExample.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PlanAccountExample.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import com.tzld.piaoquan.longarticle.utils.page.Page;
 import java.util.ArrayList;
@@ -1796,6 +1796,66 @@ public class PlanAccountExample {
             return (Criteria) this;
         }
 
+        public Criteria andIsSpecialSettingIsNull() {
+            addCriterion("is_special_setting is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSpecialSettingIsNotNull() {
+            addCriterion("is_special_setting is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSpecialSettingEqualTo(Integer value) {
+            addCriterion("is_special_setting =", value, "isSpecialSetting");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSpecialSettingNotEqualTo(Integer value) {
+            addCriterion("is_special_setting <>", value, "isSpecialSetting");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSpecialSettingGreaterThan(Integer value) {
+            addCriterion("is_special_setting >", value, "isSpecialSetting");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSpecialSettingGreaterThanOrEqualTo(Integer value) {
+            addCriterion("is_special_setting >=", value, "isSpecialSetting");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSpecialSettingLessThan(Integer value) {
+            addCriterion("is_special_setting <", value, "isSpecialSetting");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSpecialSettingLessThanOrEqualTo(Integer value) {
+            addCriterion("is_special_setting <=", value, "isSpecialSetting");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSpecialSettingIn(List<Integer> values) {
+            addCriterion("is_special_setting in", values, "isSpecialSetting");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSpecialSettingNotIn(List<Integer> values) {
+            addCriterion("is_special_setting not in", values, "isSpecialSetting");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSpecialSettingBetween(Integer value1, Integer value2) {
+            addCriterion("is_special_setting between", value1, value2, "isSpecialSetting");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSpecialSettingNotBetween(Integer value1, Integer value2) {
+            addCriterion("is_special_setting not between", value1, value2, "isSpecialSetting");
+            return (Criteria) this;
+        }
+
         public Criteria andIsDeleteIsNull() {
             addCriterion("is_delete is null");
             return (Criteria) this;

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/PlanExample.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PlanExample.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import com.tzld.piaoquan.longarticle.utils.page.Page;
 import java.util.ArrayList;

+ 145 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PromotionSource.java

@@ -0,0 +1,145 @@
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
+
+public class PromotionSource {
+    private String channelContentId;
+
+    private String sourcePublishContentId;
+
+    private String rootPublishContentId;
+
+    private String rootProduceContentId;
+
+    private String wxSn;
+
+    private String title;
+
+    private String titleMd5;
+
+    private String level;
+
+    private Integer status;
+
+    private Integer deleted;
+
+    private Long createTimestamp;
+
+    private Long updateTimestamp;
+
+    public String getChannelContentId() {
+        return channelContentId;
+    }
+
+    public void setChannelContentId(String channelContentId) {
+        this.channelContentId = channelContentId;
+    }
+
+    public String getSourcePublishContentId() {
+        return sourcePublishContentId;
+    }
+
+    public void setSourcePublishContentId(String sourcePublishContentId) {
+        this.sourcePublishContentId = sourcePublishContentId;
+    }
+
+    public String getRootPublishContentId() {
+        return rootPublishContentId;
+    }
+
+    public void setRootPublishContentId(String rootPublishContentId) {
+        this.rootPublishContentId = rootPublishContentId;
+    }
+
+    public String getRootProduceContentId() {
+        return rootProduceContentId;
+    }
+
+    public void setRootProduceContentId(String rootProduceContentId) {
+        this.rootProduceContentId = rootProduceContentId;
+    }
+
+    public String getWxSn() {
+        return wxSn;
+    }
+
+    public void setWxSn(String wxSn) {
+        this.wxSn = wxSn;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getTitleMd5() {
+        return titleMd5;
+    }
+
+    public void setTitleMd5(String titleMd5) {
+        this.titleMd5 = titleMd5;
+    }
+
+    public String getLevel() {
+        return level;
+    }
+
+    public void setLevel(String level) {
+        this.level = level;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Integer getDeleted() {
+        return deleted;
+    }
+
+    public void setDeleted(Integer deleted) {
+        this.deleted = deleted;
+    }
+
+    public Long getCreateTimestamp() {
+        return createTimestamp;
+    }
+
+    public void setCreateTimestamp(Long createTimestamp) {
+        this.createTimestamp = createTimestamp;
+    }
+
+    public Long getUpdateTimestamp() {
+        return updateTimestamp;
+    }
+
+    public void setUpdateTimestamp(Long updateTimestamp) {
+        this.updateTimestamp = updateTimestamp;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", channelContentId=").append(channelContentId);
+        sb.append(", sourcePublishContentId=").append(sourcePublishContentId);
+        sb.append(", rootPublishContentId=").append(rootPublishContentId);
+        sb.append(", rootProduceContentId=").append(rootProduceContentId);
+        sb.append(", wxSn=").append(wxSn);
+        sb.append(", title=").append(title);
+        sb.append(", titleMd5=").append(titleMd5);
+        sb.append(", level=").append(level);
+        sb.append(", status=").append(status);
+        sb.append(", deleted=").append(deleted);
+        sb.append(", createTimestamp=").append(createTimestamp);
+        sb.append(", updateTimestamp=").append(updateTimestamp);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 1011 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PromotionSourceExample.java

@@ -0,0 +1,1011 @@
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
+
+import com.tzld.piaoquan.longarticle.utils.page.Page;
+import java.util.ArrayList;
+import java.util.List;
+
+public class PromotionSourceExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    protected Page page;
+
+    public PromotionSourceExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    public void setPage(Page page) {
+        this.page=page;
+    }
+
+    public Page getPage() {
+        return page;
+    }
+
+    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 andChannelContentIdIsNull() {
+            addCriterion("channel_content_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdIsNotNull() {
+            addCriterion("channel_content_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdEqualTo(String value) {
+            addCriterion("channel_content_id =", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdNotEqualTo(String value) {
+            addCriterion("channel_content_id <>", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdGreaterThan(String value) {
+            addCriterion("channel_content_id >", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdGreaterThanOrEqualTo(String value) {
+            addCriterion("channel_content_id >=", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdLessThan(String value) {
+            addCriterion("channel_content_id <", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdLessThanOrEqualTo(String value) {
+            addCriterion("channel_content_id <=", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdLike(String value) {
+            addCriterion("channel_content_id like", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdNotLike(String value) {
+            addCriterion("channel_content_id not like", value, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdIn(List<String> values) {
+            addCriterion("channel_content_id in", values, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdNotIn(List<String> values) {
+            addCriterion("channel_content_id not in", values, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdBetween(String value1, String value2) {
+            addCriterion("channel_content_id between", value1, value2, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelContentIdNotBetween(String value1, String value2) {
+            addCriterion("channel_content_id not between", value1, value2, "channelContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdIsNull() {
+            addCriterion("source_publish_content_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdIsNotNull() {
+            addCriterion("source_publish_content_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdEqualTo(String value) {
+            addCriterion("source_publish_content_id =", value, "sourcePublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdNotEqualTo(String value) {
+            addCriterion("source_publish_content_id <>", value, "sourcePublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdGreaterThan(String value) {
+            addCriterion("source_publish_content_id >", value, "sourcePublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdGreaterThanOrEqualTo(String value) {
+            addCriterion("source_publish_content_id >=", value, "sourcePublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdLessThan(String value) {
+            addCriterion("source_publish_content_id <", value, "sourcePublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdLessThanOrEqualTo(String value) {
+            addCriterion("source_publish_content_id <=", value, "sourcePublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdLike(String value) {
+            addCriterion("source_publish_content_id like", value, "sourcePublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdNotLike(String value) {
+            addCriterion("source_publish_content_id not like", value, "sourcePublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdIn(List<String> values) {
+            addCriterion("source_publish_content_id in", values, "sourcePublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdNotIn(List<String> values) {
+            addCriterion("source_publish_content_id not in", values, "sourcePublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdBetween(String value1, String value2) {
+            addCriterion("source_publish_content_id between", value1, value2, "sourcePublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourcePublishContentIdNotBetween(String value1, String value2) {
+            addCriterion("source_publish_content_id not between", value1, value2, "sourcePublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdIsNull() {
+            addCriterion("root_publish_content_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdIsNotNull() {
+            addCriterion("root_publish_content_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdEqualTo(String value) {
+            addCriterion("root_publish_content_id =", value, "rootPublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdNotEqualTo(String value) {
+            addCriterion("root_publish_content_id <>", value, "rootPublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdGreaterThan(String value) {
+            addCriterion("root_publish_content_id >", value, "rootPublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdGreaterThanOrEqualTo(String value) {
+            addCriterion("root_publish_content_id >=", value, "rootPublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdLessThan(String value) {
+            addCriterion("root_publish_content_id <", value, "rootPublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdLessThanOrEqualTo(String value) {
+            addCriterion("root_publish_content_id <=", value, "rootPublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdLike(String value) {
+            addCriterion("root_publish_content_id like", value, "rootPublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdNotLike(String value) {
+            addCriterion("root_publish_content_id not like", value, "rootPublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdIn(List<String> values) {
+            addCriterion("root_publish_content_id in", values, "rootPublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdNotIn(List<String> values) {
+            addCriterion("root_publish_content_id not in", values, "rootPublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdBetween(String value1, String value2) {
+            addCriterion("root_publish_content_id between", value1, value2, "rootPublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootPublishContentIdNotBetween(String value1, String value2) {
+            addCriterion("root_publish_content_id not between", value1, value2, "rootPublishContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdIsNull() {
+            addCriterion("root_produce_content_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdIsNotNull() {
+            addCriterion("root_produce_content_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdEqualTo(String value) {
+            addCriterion("root_produce_content_id =", value, "rootProduceContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdNotEqualTo(String value) {
+            addCriterion("root_produce_content_id <>", value, "rootProduceContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdGreaterThan(String value) {
+            addCriterion("root_produce_content_id >", value, "rootProduceContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdGreaterThanOrEqualTo(String value) {
+            addCriterion("root_produce_content_id >=", value, "rootProduceContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdLessThan(String value) {
+            addCriterion("root_produce_content_id <", value, "rootProduceContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdLessThanOrEqualTo(String value) {
+            addCriterion("root_produce_content_id <=", value, "rootProduceContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdLike(String value) {
+            addCriterion("root_produce_content_id like", value, "rootProduceContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdNotLike(String value) {
+            addCriterion("root_produce_content_id not like", value, "rootProduceContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdIn(List<String> values) {
+            addCriterion("root_produce_content_id in", values, "rootProduceContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdNotIn(List<String> values) {
+            addCriterion("root_produce_content_id not in", values, "rootProduceContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdBetween(String value1, String value2) {
+            addCriterion("root_produce_content_id between", value1, value2, "rootProduceContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootProduceContentIdNotBetween(String value1, String value2) {
+            addCriterion("root_produce_content_id not between", value1, value2, "rootProduceContentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnIsNull() {
+            addCriterion("wx_sn is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnIsNotNull() {
+            addCriterion("wx_sn is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnEqualTo(String value) {
+            addCriterion("wx_sn =", value, "wxSn");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnNotEqualTo(String value) {
+            addCriterion("wx_sn <>", value, "wxSn");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnGreaterThan(String value) {
+            addCriterion("wx_sn >", value, "wxSn");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnGreaterThanOrEqualTo(String value) {
+            addCriterion("wx_sn >=", value, "wxSn");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnLessThan(String value) {
+            addCriterion("wx_sn <", value, "wxSn");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnLessThanOrEqualTo(String value) {
+            addCriterion("wx_sn <=", value, "wxSn");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnLike(String value) {
+            addCriterion("wx_sn like", value, "wxSn");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnNotLike(String value) {
+            addCriterion("wx_sn not like", value, "wxSn");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnIn(List<String> values) {
+            addCriterion("wx_sn in", values, "wxSn");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnNotIn(List<String> values) {
+            addCriterion("wx_sn not in", values, "wxSn");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnBetween(String value1, String value2) {
+            addCriterion("wx_sn between", value1, value2, "wxSn");
+            return (Criteria) this;
+        }
+
+        public Criteria andWxSnNotBetween(String value1, String value2) {
+            addCriterion("wx_sn not between", value1, value2, "wxSn");
+            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 andTitleMd5IsNull() {
+            addCriterion("title_md5 is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleMd5IsNotNull() {
+            addCriterion("title_md5 is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleMd5EqualTo(String value) {
+            addCriterion("title_md5 =", value, "titleMd5");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleMd5NotEqualTo(String value) {
+            addCriterion("title_md5 <>", value, "titleMd5");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleMd5GreaterThan(String value) {
+            addCriterion("title_md5 >", value, "titleMd5");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleMd5GreaterThanOrEqualTo(String value) {
+            addCriterion("title_md5 >=", value, "titleMd5");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleMd5LessThan(String value) {
+            addCriterion("title_md5 <", value, "titleMd5");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleMd5LessThanOrEqualTo(String value) {
+            addCriterion("title_md5 <=", value, "titleMd5");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleMd5Like(String value) {
+            addCriterion("title_md5 like", value, "titleMd5");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleMd5NotLike(String value) {
+            addCriterion("title_md5 not like", value, "titleMd5");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleMd5In(List<String> values) {
+            addCriterion("title_md5 in", values, "titleMd5");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleMd5NotIn(List<String> values) {
+            addCriterion("title_md5 not in", values, "titleMd5");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleMd5Between(String value1, String value2) {
+            addCriterion("title_md5 between", value1, value2, "titleMd5");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleMd5NotBetween(String value1, String value2) {
+            addCriterion("title_md5 not between", value1, value2, "titleMd5");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelIsNull() {
+            addCriterion("`level` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelIsNotNull() {
+            addCriterion("`level` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelEqualTo(String value) {
+            addCriterion("`level` =", value, "level");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelNotEqualTo(String value) {
+            addCriterion("`level` <>", value, "level");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelGreaterThan(String value) {
+            addCriterion("`level` >", value, "level");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelGreaterThanOrEqualTo(String value) {
+            addCriterion("`level` >=", value, "level");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelLessThan(String value) {
+            addCriterion("`level` <", value, "level");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelLessThanOrEqualTo(String value) {
+            addCriterion("`level` <=", value, "level");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelLike(String value) {
+            addCriterion("`level` like", value, "level");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelNotLike(String value) {
+            addCriterion("`level` not like", value, "level");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelIn(List<String> values) {
+            addCriterion("`level` in", values, "level");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelNotIn(List<String> values) {
+            addCriterion("`level` not in", values, "level");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelBetween(String value1, String value2) {
+            addCriterion("`level` between", value1, value2, "level");
+            return (Criteria) this;
+        }
+
+        public Criteria andLevelNotBetween(String value1, String value2) {
+            addCriterion("`level` not between", value1, value2, "level");
+            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(Integer value) {
+            addCriterion("`status` =", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotEqualTo(Integer value) {
+            addCriterion("`status` <>", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThan(Integer value) {
+            addCriterion("`status` >", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("`status` >=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThan(Integer value) {
+            addCriterion("`status` <", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("`status` <=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIn(List<Integer> values) {
+            addCriterion("`status` in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotIn(List<Integer> values) {
+            addCriterion("`status` not in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusBetween(Integer value1, Integer value2) {
+            addCriterion("`status` between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("`status` not between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeletedIsNull() {
+            addCriterion("deleted is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeletedIsNotNull() {
+            addCriterion("deleted is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeletedEqualTo(Integer value) {
+            addCriterion("deleted =", value, "deleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeletedNotEqualTo(Integer value) {
+            addCriterion("deleted <>", value, "deleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeletedGreaterThan(Integer value) {
+            addCriterion("deleted >", value, "deleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeletedGreaterThanOrEqualTo(Integer value) {
+            addCriterion("deleted >=", value, "deleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeletedLessThan(Integer value) {
+            addCriterion("deleted <", value, "deleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeletedLessThanOrEqualTo(Integer value) {
+            addCriterion("deleted <=", value, "deleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeletedIn(List<Integer> values) {
+            addCriterion("deleted in", values, "deleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeletedNotIn(List<Integer> values) {
+            addCriterion("deleted not in", values, "deleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeletedBetween(Integer value1, Integer value2) {
+            addCriterion("deleted between", value1, value2, "deleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeletedNotBetween(Integer value1, Integer value2) {
+            addCriterion("deleted not between", value1, value2, "deleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampIsNull() {
+            addCriterion("create_timestamp is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampIsNotNull() {
+            addCriterion("create_timestamp is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampEqualTo(Long value) {
+            addCriterion("create_timestamp =", value, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampNotEqualTo(Long value) {
+            addCriterion("create_timestamp <>", value, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampGreaterThan(Long value) {
+            addCriterion("create_timestamp >", value, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampGreaterThanOrEqualTo(Long value) {
+            addCriterion("create_timestamp >=", value, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampLessThan(Long value) {
+            addCriterion("create_timestamp <", value, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampLessThanOrEqualTo(Long value) {
+            addCriterion("create_timestamp <=", value, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampIn(List<Long> values) {
+            addCriterion("create_timestamp in", values, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampNotIn(List<Long> values) {
+            addCriterion("create_timestamp not in", values, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampBetween(Long value1, Long value2) {
+            addCriterion("create_timestamp between", value1, value2, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimestampNotBetween(Long value1, Long value2) {
+            addCriterion("create_timestamp not between", value1, value2, "createTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampIsNull() {
+            addCriterion("update_timestamp is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampIsNotNull() {
+            addCriterion("update_timestamp is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampEqualTo(Long value) {
+            addCriterion("update_timestamp =", value, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampNotEqualTo(Long value) {
+            addCriterion("update_timestamp <>", value, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampGreaterThan(Long value) {
+            addCriterion("update_timestamp >", value, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampGreaterThanOrEqualTo(Long value) {
+            addCriterion("update_timestamp >=", value, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampLessThan(Long value) {
+            addCriterion("update_timestamp <", value, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampLessThanOrEqualTo(Long value) {
+            addCriterion("update_timestamp <=", value, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampIn(List<Long> values) {
+            addCriterion("update_timestamp in", values, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampNotIn(List<Long> values) {
+            addCriterion("update_timestamp not in", values, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampBetween(Long value1, Long value2) {
+            addCriterion("update_timestamp between", value1, value2, "updateTimestamp");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimestampNotBetween(Long value1, Long value2) {
+            addCriterion("update_timestamp not between", value1, value2, "updateTimestamp");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    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);
+        }
+    }
+}

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/PublishContent.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PublishContent.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import java.util.Date;
 

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/PublishContentExample.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PublishContentExample.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import com.tzld.piaoquan.longarticle.utils.page.Page;
 import java.util.ArrayList;

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/PublishMatchContent.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PublishMatchContent.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import java.util.Date;
 

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/PublishMatchContentExample.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PublishMatchContentExample.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import com.tzld.piaoquan.longarticle.utils.page.Page;
 import java.util.ArrayList;

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/PublishMiniprogram.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PublishMiniprogram.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import java.util.Date;
 

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/PublishMiniprogramExample.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/PublishMiniprogramExample.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import com.tzld.piaoquan.longarticle.utils.page.Page;
 import java.util.ArrayList;

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/RootSource.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/RootSource.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 public class RootSource {
     private String rootSourceId;

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/RootSourceExample.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/RootSourceExample.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import com.tzld.piaoquan.longarticle.utils.page.Page;
 import java.util.ArrayList;

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/SingleVideoSource.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/SingleVideoSource.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 public class SingleVideoSource {
     private Integer id;

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/SingleVideoSourceExample.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/SingleVideoSourceExample.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import com.tzld.piaoquan.longarticle.utils.page.Page;
 import java.util.ArrayList;

+ 79 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/TitleAudit.java

@@ -0,0 +1,79 @@
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
+
+public class TitleAudit {
+    private String contentId;
+
+    private Integer status;
+
+    private String flowPoolLevel;
+
+    private Long createTimestamp;
+
+    private String auditAccount;
+
+    private Long auditTimestamp;
+
+    public String getContentId() {
+        return contentId;
+    }
+
+    public void setContentId(String contentId) {
+        this.contentId = contentId;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public String getFlowPoolLevel() {
+        return flowPoolLevel;
+    }
+
+    public void setFlowPoolLevel(String flowPoolLevel) {
+        this.flowPoolLevel = flowPoolLevel;
+    }
+
+    public Long getCreateTimestamp() {
+        return createTimestamp;
+    }
+
+    public void setCreateTimestamp(Long createTimestamp) {
+        this.createTimestamp = createTimestamp;
+    }
+
+    public String getAuditAccount() {
+        return auditAccount;
+    }
+
+    public void setAuditAccount(String auditAccount) {
+        this.auditAccount = auditAccount;
+    }
+
+    public Long getAuditTimestamp() {
+        return auditTimestamp;
+    }
+
+    public void setAuditTimestamp(Long auditTimestamp) {
+        this.auditTimestamp = auditTimestamp;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", contentId=").append(contentId);
+        sb.append(", status=").append(status);
+        sb.append(", flowPoolLevel=").append(flowPoolLevel);
+        sb.append(", createTimestamp=").append(createTimestamp);
+        sb.append(", auditAccount=").append(auditAccount);
+        sb.append(", auditTimestamp=").append(auditTimestamp);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 131 - 151
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/LongArticlesTextExample.java → long-article-server/src/main/java/com/tzld/piaoquan/longarticle/model/po/longarticle/TitleAuditExample.java

@@ -1,10 +1,10 @@
-package com.tzld.piaoquan.longarticle.model.po;
+package com.tzld.piaoquan.longarticle.model.po.longarticle;
 
 import com.tzld.piaoquan.longarticle.utils.page.Page;
 import java.util.ArrayList;
 import java.util.List;
 
-public class LongArticlesTextExample {
+public class TitleAuditExample {
     protected String orderByClause;
 
     protected boolean distinct;
@@ -13,7 +13,7 @@ public class LongArticlesTextExample {
 
     protected Page page;
 
-    public LongArticlesTextExample() {
+    public TitleAuditExample() {
         oredCriteria = new ArrayList<Criteria>();
     }
 
@@ -185,343 +185,323 @@ public class LongArticlesTextExample {
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleIsNull() {
-            addCriterion("article_title is null");
+        public Criteria andStatusIsNull() {
+            addCriterion("`status` is null");
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleIsNotNull() {
-            addCriterion("article_title is not null");
+        public Criteria andStatusIsNotNull() {
+            addCriterion("`status` is not null");
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleEqualTo(String value) {
-            addCriterion("article_title =", value, "articleTitle");
+        public Criteria andStatusEqualTo(Integer value) {
+            addCriterion("`status` =", value, "status");
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleNotEqualTo(String value) {
-            addCriterion("article_title <>", value, "articleTitle");
+        public Criteria andStatusNotEqualTo(Integer value) {
+            addCriterion("`status` <>", value, "status");
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleGreaterThan(String value) {
-            addCriterion("article_title >", value, "articleTitle");
+        public Criteria andStatusGreaterThan(Integer value) {
+            addCriterion("`status` >", value, "status");
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleGreaterThanOrEqualTo(String value) {
-            addCriterion("article_title >=", value, "articleTitle");
+        public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("`status` >=", value, "status");
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleLessThan(String value) {
-            addCriterion("article_title <", value, "articleTitle");
+        public Criteria andStatusLessThan(Integer value) {
+            addCriterion("`status` <", value, "status");
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleLessThanOrEqualTo(String value) {
-            addCriterion("article_title <=", value, "articleTitle");
+        public Criteria andStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("`status` <=", value, "status");
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleLike(String value) {
-            addCriterion("article_title like", value, "articleTitle");
+        public Criteria andStatusIn(List<Integer> values) {
+            addCriterion("`status` in", values, "status");
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleNotLike(String value) {
-            addCriterion("article_title not like", value, "articleTitle");
+        public Criteria andStatusNotIn(List<Integer> values) {
+            addCriterion("`status` not in", values, "status");
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleIn(List<String> values) {
-            addCriterion("article_title in", values, "articleTitle");
+        public Criteria andStatusBetween(Integer value1, Integer value2) {
+            addCriterion("`status` between", value1, value2, "status");
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleNotIn(List<String> values) {
-            addCriterion("article_title not in", values, "articleTitle");
+        public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("`status` not between", value1, value2, "status");
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleBetween(String value1, String value2) {
-            addCriterion("article_title between", value1, value2, "articleTitle");
+        public Criteria andFlowPoolLevelIsNull() {
+            addCriterion("flow_pool_level is null");
             return (Criteria) this;
         }
 
-        public Criteria andArticleTitleNotBetween(String value1, String value2) {
-            addCriterion("article_title not between", value1, value2, "articleTitle");
+        public Criteria andFlowPoolLevelIsNotNull() {
+            addCriterion("flow_pool_level is not null");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleIsNull() {
-            addCriterion("kimi_title is null");
+        public Criteria andFlowPoolLevelEqualTo(String value) {
+            addCriterion("flow_pool_level =", value, "flowPoolLevel");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleIsNotNull() {
-            addCriterion("kimi_title is not null");
+        public Criteria andFlowPoolLevelNotEqualTo(String value) {
+            addCriterion("flow_pool_level <>", value, "flowPoolLevel");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleEqualTo(String value) {
-            addCriterion("kimi_title =", value, "kimiTitle");
+        public Criteria andFlowPoolLevelGreaterThan(String value) {
+            addCriterion("flow_pool_level >", value, "flowPoolLevel");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleNotEqualTo(String value) {
-            addCriterion("kimi_title <>", value, "kimiTitle");
+        public Criteria andFlowPoolLevelGreaterThanOrEqualTo(String value) {
+            addCriterion("flow_pool_level >=", value, "flowPoolLevel");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleGreaterThan(String value) {
-            addCriterion("kimi_title >", value, "kimiTitle");
+        public Criteria andFlowPoolLevelLessThan(String value) {
+            addCriterion("flow_pool_level <", value, "flowPoolLevel");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleGreaterThanOrEqualTo(String value) {
-            addCriterion("kimi_title >=", value, "kimiTitle");
+        public Criteria andFlowPoolLevelLessThanOrEqualTo(String value) {
+            addCriterion("flow_pool_level <=", value, "flowPoolLevel");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleLessThan(String value) {
-            addCriterion("kimi_title <", value, "kimiTitle");
+        public Criteria andFlowPoolLevelLike(String value) {
+            addCriterion("flow_pool_level like", value, "flowPoolLevel");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleLessThanOrEqualTo(String value) {
-            addCriterion("kimi_title <=", value, "kimiTitle");
+        public Criteria andFlowPoolLevelNotLike(String value) {
+            addCriterion("flow_pool_level not like", value, "flowPoolLevel");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleLike(String value) {
-            addCriterion("kimi_title like", value, "kimiTitle");
+        public Criteria andFlowPoolLevelIn(List<String> values) {
+            addCriterion("flow_pool_level in", values, "flowPoolLevel");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleNotLike(String value) {
-            addCriterion("kimi_title not like", value, "kimiTitle");
+        public Criteria andFlowPoolLevelNotIn(List<String> values) {
+            addCriterion("flow_pool_level not in", values, "flowPoolLevel");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleIn(List<String> values) {
-            addCriterion("kimi_title in", values, "kimiTitle");
+        public Criteria andFlowPoolLevelBetween(String value1, String value2) {
+            addCriterion("flow_pool_level between", value1, value2, "flowPoolLevel");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleNotIn(List<String> values) {
-            addCriterion("kimi_title not in", values, "kimiTitle");
+        public Criteria andFlowPoolLevelNotBetween(String value1, String value2) {
+            addCriterion("flow_pool_level not between", value1, value2, "flowPoolLevel");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleBetween(String value1, String value2) {
-            addCriterion("kimi_title between", value1, value2, "kimiTitle");
+        public Criteria andCreateTimestampIsNull() {
+            addCriterion("create_timestamp is null");
             return (Criteria) this;
         }
 
-        public Criteria andKimiTitleNotBetween(String value1, String value2) {
-            addCriterion("kimi_title not between", value1, value2, "kimiTitle");
+        public Criteria andCreateTimestampIsNotNull() {
+            addCriterion("create_timestamp is not null");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryIsNull() {
-            addCriterion("kimi_summary is null");
+        public Criteria andCreateTimestampEqualTo(Long value) {
+            addCriterion("create_timestamp =", value, "createTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryIsNotNull() {
-            addCriterion("kimi_summary is not null");
+        public Criteria andCreateTimestampNotEqualTo(Long value) {
+            addCriterion("create_timestamp <>", value, "createTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryEqualTo(String value) {
-            addCriterion("kimi_summary =", value, "kimiSummary");
+        public Criteria andCreateTimestampGreaterThan(Long value) {
+            addCriterion("create_timestamp >", value, "createTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryNotEqualTo(String value) {
-            addCriterion("kimi_summary <>", value, "kimiSummary");
+        public Criteria andCreateTimestampGreaterThanOrEqualTo(Long value) {
+            addCriterion("create_timestamp >=", value, "createTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryGreaterThan(String value) {
-            addCriterion("kimi_summary >", value, "kimiSummary");
+        public Criteria andCreateTimestampLessThan(Long value) {
+            addCriterion("create_timestamp <", value, "createTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryGreaterThanOrEqualTo(String value) {
-            addCriterion("kimi_summary >=", value, "kimiSummary");
+        public Criteria andCreateTimestampLessThanOrEqualTo(Long value) {
+            addCriterion("create_timestamp <=", value, "createTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryLessThan(String value) {
-            addCriterion("kimi_summary <", value, "kimiSummary");
+        public Criteria andCreateTimestampIn(List<Long> values) {
+            addCriterion("create_timestamp in", values, "createTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryLessThanOrEqualTo(String value) {
-            addCriterion("kimi_summary <=", value, "kimiSummary");
+        public Criteria andCreateTimestampNotIn(List<Long> values) {
+            addCriterion("create_timestamp not in", values, "createTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryLike(String value) {
-            addCriterion("kimi_summary like", value, "kimiSummary");
+        public Criteria andCreateTimestampBetween(Long value1, Long value2) {
+            addCriterion("create_timestamp between", value1, value2, "createTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryNotLike(String value) {
-            addCriterion("kimi_summary not like", value, "kimiSummary");
+        public Criteria andCreateTimestampNotBetween(Long value1, Long value2) {
+            addCriterion("create_timestamp not between", value1, value2, "createTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryIn(List<String> values) {
-            addCriterion("kimi_summary in", values, "kimiSummary");
+        public Criteria andAuditAccountIsNull() {
+            addCriterion("audit_account is null");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryNotIn(List<String> values) {
-            addCriterion("kimi_summary not in", values, "kimiSummary");
+        public Criteria andAuditAccountIsNotNull() {
+            addCriterion("audit_account is not null");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryBetween(String value1, String value2) {
-            addCriterion("kimi_summary between", value1, value2, "kimiSummary");
+        public Criteria andAuditAccountEqualTo(String value) {
+            addCriterion("audit_account =", value, "auditAccount");
             return (Criteria) this;
         }
 
-        public Criteria andKimiSummaryNotBetween(String value1, String value2) {
-            addCriterion("kimi_summary not between", value1, value2, "kimiSummary");
+        public Criteria andAuditAccountNotEqualTo(String value) {
+            addCriterion("audit_account <>", value, "auditAccount");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysIsNull() {
-            addCriterion("kimi_keys is null");
+        public Criteria andAuditAccountGreaterThan(String value) {
+            addCriterion("audit_account >", value, "auditAccount");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysIsNotNull() {
-            addCriterion("kimi_keys is not null");
+        public Criteria andAuditAccountGreaterThanOrEqualTo(String value) {
+            addCriterion("audit_account >=", value, "auditAccount");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysEqualTo(String value) {
-            addCriterion("kimi_keys =", value, "kimiKeys");
+        public Criteria andAuditAccountLessThan(String value) {
+            addCriterion("audit_account <", value, "auditAccount");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysNotEqualTo(String value) {
-            addCriterion("kimi_keys <>", value, "kimiKeys");
+        public Criteria andAuditAccountLessThanOrEqualTo(String value) {
+            addCriterion("audit_account <=", value, "auditAccount");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysGreaterThan(String value) {
-            addCriterion("kimi_keys >", value, "kimiKeys");
+        public Criteria andAuditAccountLike(String value) {
+            addCriterion("audit_account like", value, "auditAccount");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysGreaterThanOrEqualTo(String value) {
-            addCriterion("kimi_keys >=", value, "kimiKeys");
+        public Criteria andAuditAccountNotLike(String value) {
+            addCriterion("audit_account not like", value, "auditAccount");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysLessThan(String value) {
-            addCriterion("kimi_keys <", value, "kimiKeys");
+        public Criteria andAuditAccountIn(List<String> values) {
+            addCriterion("audit_account in", values, "auditAccount");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysLessThanOrEqualTo(String value) {
-            addCriterion("kimi_keys <=", value, "kimiKeys");
+        public Criteria andAuditAccountNotIn(List<String> values) {
+            addCriterion("audit_account not in", values, "auditAccount");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysLike(String value) {
-            addCriterion("kimi_keys like", value, "kimiKeys");
+        public Criteria andAuditAccountBetween(String value1, String value2) {
+            addCriterion("audit_account between", value1, value2, "auditAccount");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysNotLike(String value) {
-            addCriterion("kimi_keys not like", value, "kimiKeys");
+        public Criteria andAuditAccountNotBetween(String value1, String value2) {
+            addCriterion("audit_account not between", value1, value2, "auditAccount");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysIn(List<String> values) {
-            addCriterion("kimi_keys in", values, "kimiKeys");
+        public Criteria andAuditTimestampIsNull() {
+            addCriterion("audit_timestamp is null");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysNotIn(List<String> values) {
-            addCriterion("kimi_keys not in", values, "kimiKeys");
+        public Criteria andAuditTimestampIsNotNull() {
+            addCriterion("audit_timestamp is not null");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysBetween(String value1, String value2) {
-            addCriterion("kimi_keys between", value1, value2, "kimiKeys");
+        public Criteria andAuditTimestampEqualTo(Long value) {
+            addCriterion("audit_timestamp =", value, "auditTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiKeysNotBetween(String value1, String value2) {
-            addCriterion("kimi_keys not between", value1, value2, "kimiKeys");
+        public Criteria andAuditTimestampNotEqualTo(Long value) {
+            addCriterion("audit_timestamp <>", value, "auditTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiStatusIsNull() {
-            addCriterion("kimi_status is null");
+        public Criteria andAuditTimestampGreaterThan(Long value) {
+            addCriterion("audit_timestamp >", value, "auditTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiStatusIsNotNull() {
-            addCriterion("kimi_status is not null");
+        public Criteria andAuditTimestampGreaterThanOrEqualTo(Long value) {
+            addCriterion("audit_timestamp >=", value, "auditTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiStatusEqualTo(Integer value) {
-            addCriterion("kimi_status =", value, "kimiStatus");
+        public Criteria andAuditTimestampLessThan(Long value) {
+            addCriterion("audit_timestamp <", value, "auditTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiStatusNotEqualTo(Integer value) {
-            addCriterion("kimi_status <>", value, "kimiStatus");
+        public Criteria andAuditTimestampLessThanOrEqualTo(Long value) {
+            addCriterion("audit_timestamp <=", value, "auditTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiStatusGreaterThan(Integer value) {
-            addCriterion("kimi_status >", value, "kimiStatus");
+        public Criteria andAuditTimestampIn(List<Long> values) {
+            addCriterion("audit_timestamp in", values, "auditTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiStatusGreaterThanOrEqualTo(Integer value) {
-            addCriterion("kimi_status >=", value, "kimiStatus");
+        public Criteria andAuditTimestampNotIn(List<Long> values) {
+            addCriterion("audit_timestamp not in", values, "auditTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiStatusLessThan(Integer value) {
-            addCriterion("kimi_status <", value, "kimiStatus");
+        public Criteria andAuditTimestampBetween(Long value1, Long value2) {
+            addCriterion("audit_timestamp between", value1, value2, "auditTimestamp");
             return (Criteria) this;
         }
 
-        public Criteria andKimiStatusLessThanOrEqualTo(Integer value) {
-            addCriterion("kimi_status <=", value, "kimiStatus");
-            return (Criteria) this;
-        }
-
-        public Criteria andKimiStatusIn(List<Integer> values) {
-            addCriterion("kimi_status in", values, "kimiStatus");
-            return (Criteria) this;
-        }
-
-        public Criteria andKimiStatusNotIn(List<Integer> values) {
-            addCriterion("kimi_status not in", values, "kimiStatus");
-            return (Criteria) this;
-        }
-
-        public Criteria andKimiStatusBetween(Integer value1, Integer value2) {
-            addCriterion("kimi_status between", value1, value2, "kimiStatus");
-            return (Criteria) this;
-        }
-
-        public Criteria andKimiStatusNotBetween(Integer value1, Integer value2) {
-            addCriterion("kimi_status not between", value1, value2, "kimiStatus");
+        public Criteria andAuditTimestampNotBetween(Long value1, Long value2) {
+            addCriterion("audit_timestamp not between", value1, value2, "auditTimestamp");
             return (Criteria) this;
         }
     }

+ 5 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/AccountService.java

@@ -1,6 +1,6 @@
 package com.tzld.piaoquan.longarticle.service.local;
 
-import com.tzld.piaoquan.longarticle.model.po.AccountSpecialSettings;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettings;
 
 import java.util.List;
 
@@ -8,5 +8,9 @@ public interface AccountService {
 
     List<AccountSpecialSettings> getAccountSpecialSettings();
 
+    List<AccountSpecialSettings> getSendAccountSpecialSettings();
+
     void saveOrUpdateAccountSpecialSettings(AccountSpecialSettings accountSpecialSettings);
+
+    boolean isSendSpecialSettings(String accountId);
 }

+ 5 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/KimiService.java

@@ -1,8 +1,12 @@
 package com.tzld.piaoquan.longarticle.service.local;
 
-import com.tzld.piaoquan.longarticle.model.po.LongArticlesText;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesText;
 
 public interface KimiService {
 
     LongArticlesText getKimiText(String contentId);
+
+    boolean updateKimiContent(String contentId);
+
+    void updateKimiContentStatus(String contentId, Integer status);
 }

+ 10 - 2
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/PlanAccountService.java

@@ -1,12 +1,16 @@
 package com.tzld.piaoquan.longarticle.service.local;
 
-import com.tzld.piaoquan.longarticle.model.po.Plan;
-import com.tzld.piaoquan.longarticle.model.po.PlanAccount;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.Plan;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccount;
 
 import java.util.List;
 
 public interface PlanAccountService {
 
+    void addPlanAccount(PlanAccount planAccount);
+
+    void updatePlanAccount(PlanAccount planAccount);
+
     void saveOrUpdatePlanAccount(PlanAccount planAccount);
 
     void saveOrUpdatePlan(Plan plan);
@@ -17,6 +21,10 @@ public interface PlanAccountService {
 
     List<PlanAccount> getNormalPlanAccount();
 
+    List<PlanAccount> getNormalPlanAccount(String accountId);
+
+    List<PlanAccount> getSpecialPlanAccount(String accountId);
+
     List<PlanAccount> getPlanAccount(String planId, String accountId);
 
     List<Plan> getPlanList();

+ 20 - 8
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/AccountServiceImpl.java

@@ -1,19 +1,15 @@
 package com.tzld.piaoquan.longarticle.service.local.impl;
 
-import com.tzld.piaoquan.longarticle.dao.mapper.AccountSpecialSettingsMapper;
-import com.tzld.piaoquan.longarticle.model.po.AccountSpecialSettings;
-import com.tzld.piaoquan.longarticle.model.po.AccountSpecialSettingsExample;
-import com.tzld.piaoquan.longarticle.model.po.PlanAccount;
-import com.tzld.piaoquan.longarticle.model.po.PlanAccountExample;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.AccountSpecialSettingsMapper;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettings;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettingsExample;
 import com.tzld.piaoquan.longarticle.service.local.AccountService;
 import com.tzld.piaoquan.longarticle.utils.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 @Service
 public class AccountServiceImpl implements AccountService {
@@ -25,7 +21,14 @@ public class AccountServiceImpl implements AccountService {
     public List<AccountSpecialSettings> getAccountSpecialSettings() {
         String dateString = DateUtil.getThatDayDateString();
         AccountSpecialSettingsExample example = new AccountSpecialSettingsExample();
-        example.createCriteria().andEffectiveDateEqualTo(dateString);
+        example.createCriteria().andEffectiveDateEqualTo(dateString).andIsDeleteEqualTo(0);
+        return accountSpecialSettingsMapper.selectByExample(example);
+    }
+
+    public List<AccountSpecialSettings> getSendAccountSpecialSettings() {
+        String dateString = DateUtil.getTomorrowDateString();
+        AccountSpecialSettingsExample example = new AccountSpecialSettingsExample();
+        example.createCriteria().andEffectiveDateEqualTo(dateString).andIsDeleteEqualTo(0);
         return accountSpecialSettingsMapper.selectByExample(example);
     }
 
@@ -43,5 +46,14 @@ public class AccountServiceImpl implements AccountService {
         }
     }
 
+    @Override
+    public boolean isSendSpecialSettings(String accountId) {
+        String dateString = DateUtil.getTomorrowDateString();
+        AccountSpecialSettingsExample example = new AccountSpecialSettingsExample();
+        example.createCriteria().andEffectiveDateEqualTo(dateString)
+                .andAccountIdEqualTo(accountId).andIsDeleteEqualTo(0);
+        return accountSpecialSettingsMapper.countByExample(example) > 0;
+    }
+
 
 }

+ 59 - 6
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/CardServiceImpl.java

@@ -3,9 +3,9 @@ package com.tzld.piaoquan.longarticle.service.local.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.tzld.piaoquan.longarticle.model.bo.VideoDetail;
-import com.tzld.piaoquan.longarticle.model.po.PlanAccount;
-import com.tzld.piaoquan.longarticle.model.po.PublishContent;
-import com.tzld.piaoquan.longarticle.model.po.PublishMiniprogram;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccount;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PublishContent;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PublishMiniprogram;
 import com.tzld.piaoquan.longarticle.service.local.CardService;
 import com.tzld.piaoquan.longarticle.service.remote.AigcService;
 import lombok.extern.slf4j.Slf4j;
@@ -33,7 +33,55 @@ public class CardServiceImpl implements CardService {
     @Autowired
     AigcService aigcService;
 
-    private static final List<String> useShareImgPathList = new ArrayList<String>();
+    private static final List<String> crawlerImgPathList = new ArrayList<String>() {{
+        add("20250208065525959973866");
+        add("20250208111811026884434");
+        add("20250212125646224172850");
+        add("20250213023808593788754");
+        add("20250213091337867990118");
+        add("20250214091843879629665");
+        add("20250214122110960857913");
+        add("20250217080347557694800");
+        add("20250217120153840400833");
+    }};
+
+    private static final List<String> useShareImgPathList = new ArrayList<String>() {{
+        add("生活情感叁读");
+        add("缘来养心厅");
+        add("心灵情感驿站");
+        add("生活良读");
+        add("祝福养心厅");
+        add("音药金曲厅");
+        add("音药养心馆");
+        add("农耕趣时刻");
+        add("趣史论");
+        add("妙招持家帮手");
+        add("多彩妙生活");
+        add("家家生活指南");
+        add("异闻趣事多");
+        add("史记趣言");
+        add("繁花史阁");
+        add("麒阁史记");
+        add("退休无忧生活");
+        add("那些历史");
+        add("心海情澜起");
+        add("日常生活小技巧集");
+        add("史记有言");
+        add("趣谈史记");
+        add("日常巧思集");
+        add("日常小妙招秘籍");
+        add("快乐生活妙技巧");
+        add("持家有妙招");
+        add("生活小优招");
+        add("生活之大全");
+        add("轻松生活方法");
+        add("晚年家人");
+        add("趣读奇事");
+        add("晚年多享乐");
+        add("福康俏生活");
+        add("福享暮年");
+        add("奇读趣史");
+    }};
 
 
     public JSONObject createGzhPath(String videoId, String sharedUid, String ghId, Integer miniProgramType) throws UnsupportedEncodingException {
@@ -86,8 +134,9 @@ public class CardServiceImpl implements CardService {
             }
             return sb.toString();
         } catch (NoSuchAlgorithmException e) {
-            throw new RuntimeException(e);
+            log.error("CardServiceImpl md5 error", e);
         }
+        return null;
     }
 
     public PublishMiniprogram generateSingleCard(Integer index, Integer miniId, VideoDetail videoDetail,
@@ -114,8 +163,12 @@ public class CardServiceImpl implements CardService {
         publishMiniprogram.setVideoId(Long.parseLong(videoId));
         publishMiniprogram.setSource(videoDetail.getSource());
         publishMiniprogram.setVideoTitle(videoDetail.getKimiTitle());
-        if (useShareImgPathList.contains(planAccount.getAccountName())) {
+        if (crawlerImgPathList.contains(planAccount.getPlanId())
+                || useShareImgPathList.contains(planAccount.getAccountName())) {
             publishMiniprogram.setVideoCover(videoDetail.getShareImgPath());
+            if (crawlerImgPathList.contains(planAccount.getPlanId())) {
+                publishMiniprogram.setVideoCover(videoDetail.getRawImgPath());
+            }
         } else {
             publishMiniprogram.setVideoCover(videoDetail.getCoverImgPath());
         }

+ 49 - 16
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/ContentServiceImpl.java

@@ -3,17 +3,19 @@ package com.tzld.piaoquan.longarticle.service.local.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
+import com.tzld.piaoquan.longarticle.common.enums.ContentStatusEnum;
+import com.tzld.piaoquan.longarticle.common.enums.PublicFlagEnum;
 import com.tzld.piaoquan.longarticle.common.enums.PublishGzhPushTypeEnum;
-import com.tzld.piaoquan.longarticle.dao.mapper.CrawlerVideoMapper;
-import com.tzld.piaoquan.longarticle.dao.mapper.MatchVideoMapper;
-import com.tzld.piaoquan.longarticle.dao.mapper.PublishMatchContentMapper;
-import com.tzld.piaoquan.longarticle.dao.mapper.SingleVideoSourceMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.CrawlerVideoMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.MatchVideoMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.PublishMatchContentMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.SingleVideoSourceMapper;
 import com.tzld.piaoquan.longarticle.model.bo.VideoDetail;
 import com.tzld.piaoquan.longarticle.model.dto.ArticleSortRequest;
 import com.tzld.piaoquan.longarticle.model.dto.ArticleSortResponse;
 import com.tzld.piaoquan.longarticle.model.dto.ArticleSortResponseData;
 import com.tzld.piaoquan.longarticle.model.dto.PublishArticleData;
-import com.tzld.piaoquan.longarticle.model.po.*;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.*;
 import com.tzld.piaoquan.longarticle.model.vo.*;
 import com.tzld.piaoquan.longarticle.service.local.ContentService;
 import com.tzld.piaoquan.longarticle.service.local.KimiService;
@@ -37,6 +39,18 @@ public class ContentServiceImpl implements ContentService {
 
     private final String SINGLE_VIDEO_UID = "76862180";
 
+    private static final List<String> multipleVideoPlanIdList = new ArrayList<String>() {{
+        add("20250208065525959973866");
+        add("20250208111811026884434");
+        add("20250212125646224172850");
+        add("20250213023808593788754");
+        add("20250213091337867990118");
+        add("20250214091843879629665");
+        add("20250214122110960857913");
+        add("20250217080347557694800");
+        add("20250217120153840400833");
+    }};
+
     @Autowired
     private MatchVideoMapper matchVideoMapper;
 
@@ -104,8 +118,8 @@ public class ContentServiceImpl implements ContentService {
             String traceId = matchVideo.getTraceId();
             MatchVideo updateMatchVideo = new MatchVideo();
             updateMatchVideo.setId(matchVideo.getId());
-            updateMatchVideo.setContentStatus(4);
-            updateMatchVideo.setPublishFlag(2);
+            updateMatchVideo.setContentStatus(ContentStatusEnum.SUCCESS_4.getStatusCode());
+            updateMatchVideo.setPublishFlag(PublicFlagEnum.NOT_PUBLIC.getStatusCode());
             updateMatchVideo.setResponse(jsonArray.toJSONString());
             matchVideoMapper.updateByPrimaryKeySelective(updateMatchVideo);
             publicContentService.updatePublishContentTraceId(traceId, publishContent.getId());
@@ -215,17 +229,17 @@ public class ContentServiceImpl implements ContentService {
         return data.getRank_list();
     }
 
-    public List<VideoDetail> getPublishVideoDetail(PublishContent publishContent, PlanAccount planAccount, MatchVideo matchVideo) {
-        List<CrawlerVideo> contentMiniVideos = getContentMiniVideo(publishContent, planAccount);
+    public List<VideoDetail> getPublishVideoDetail(MatchVideo matchVideo, Integer publicFlag, PlanAccount planAccount) {
+        List<CrawlerVideo> contentMiniVideos = getContentMiniVideo(matchVideo.getContentId(), publicFlag, planAccount);
         log.info("getPublishVideoDetail contentMiniVideos={}", contentMiniVideos);
         if (CollectionUtils.isEmpty(contentMiniVideos)) {
-            LarkRobotUtil.sendMessage("文章获取小程序为空 publishContent.getSourceId=" + publishContent.getSourceId());
+            LarkRobotUtil.sendMessage("文章获取小程序为空 matchVideo.getContentId" + matchVideo.getContentId());
             return new ArrayList<>();
         }
         List<VideoDetail> videoDetails = publishVideo(contentMiniVideos, matchVideo);
         log.info("getPublishVideoDetail videoDetails={}", videoDetails);
         if (CollectionUtils.isEmpty(videoDetails)) {
-            LarkRobotUtil.sendMessage("发布后小程序为空 publishContent.getSourceId=" + publishContent.getSourceId());
+            LarkRobotUtil.sendMessage("发布后小程序为空 matchVideo.getContentId" + matchVideo.getContentId());
             return new ArrayList<>();
         }
         return videoDetails;
@@ -278,20 +292,39 @@ public class ContentServiceImpl implements ContentService {
             videoDetail.setSource(platform);
             videoDetail.setTraceId(traceId);
             videoDetails.add(videoDetail);
+            if (StringUtils.isNotEmpty(crawlerVideo.getCoverOssPath())) {
+                videoDetail.setCoverOss(crawlerVideo.getCoverOssPath());
+                String rawImgPath = "https://rescdn.yishihui.com/" + crawlerVideo.getCoverOssPath()
+                        + "?x-oss-process=image/resize,m_fill,w_600,h_480,limit_0/format,jpg/watermark,image_eXNoL3BpYy93YXRlcm1hcmtlci9pY29uX3BsYXlfd2hpdGUucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLHdfMTQ0,g_center";
+                videoDetail.setRawImgPath(rawImgPath);
+            }
         }
         return videoDetails;
     }
 
 
-    public List<CrawlerVideo> getContentMiniVideo(PublishContent publishContent, PlanAccount planAccount) {
+    public List<CrawlerVideo> getContentMiniVideo(String contentId, Integer publicFlag, PlanAccount planAccount) {
         try {
             CrawlerVideoExample example = new CrawlerVideoExample();
             example.setOrderByClause("score desc");
-            example.createCriteria().andDownloadStatusEqualTo(2)
-                    .andContentIdEqualTo(publishContent.getSourceId())
-                    .andStatusEqualTo(1)
-                    .andIsIllegalEqualTo(0);
+            CrawlerVideoExample.Criteria criteria = example.createCriteria().andDownloadStatusEqualTo(2)
+                    .andContentIdEqualTo(contentId);
+            //不发布需要审核后才能使用
+            if (PublicFlagEnum.NOT_PUBLIC.getStatusCode() == publicFlag) {
+                criteria.andStatusNotEqualTo(2).andIsIllegalEqualTo(0);
+            }
             List<CrawlerVideo> crawlerVideoList = crawlerVideoMapper.selectByExample(example);
+            if (planAccount == null) {
+                return crawlerVideoList;
+            }
+
+            //临时逻辑  该计划返回正常数量小程序
+            if (multipleVideoPlanIdList.contains(planAccount.getPlanId())) {
+                if (crawlerVideoList.size() > 3) {
+                    return crawlerVideoList.subList(0, 3);
+                }
+                return crawlerVideoList;
+            }
             List<CrawlerVideo> videoList = new ArrayList<>();
             if (!CollectionUtils.isEmpty(crawlerVideoList)) {
                 videoList.add(crawlerVideoList.get(0));

+ 70 - 86
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/CoreServiceImpl.java

@@ -4,14 +4,14 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.tzld.piaoquan.longarticle.common.constants.TimeConstant;
 import com.tzld.piaoquan.longarticle.common.enums.*;
-import com.tzld.piaoquan.longarticle.dao.mapper.PlanAccountMapper;
-import com.tzld.piaoquan.longarticle.dao.mapper.PublishContentMapper;
-import com.tzld.piaoquan.longarticle.dao.mapper.PublishMiniprogramMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.PlanAccountMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.PublishContentMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.PublishMiniprogramMapper;
 import com.tzld.piaoquan.longarticle.model.bo.MatchContent;
 import com.tzld.piaoquan.longarticle.model.bo.VideoDetail;
 import com.tzld.piaoquan.longarticle.model.dto.MiniprogramCardRequest;
 import com.tzld.piaoquan.longarticle.model.dto.PublishArticleData;
-import com.tzld.piaoquan.longarticle.model.po.*;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.*;
 import com.tzld.piaoquan.longarticle.model.vo.*;
 import com.tzld.piaoquan.longarticle.service.local.AccountService;
 import com.tzld.piaoquan.longarticle.service.local.CoreService;
@@ -43,9 +43,6 @@ public class CoreServiceImpl implements CoreService {
     @Autowired
     private AigcService aigcService;
 
-    @Autowired
-    private SortServiceImpl sortService;
-
     @Autowired
     private ContentServiceImpl contentService;
 
@@ -749,14 +746,13 @@ public class CoreServiceImpl implements CoreService {
 
     @Override
     public void initPlanAccount() {
+        log.info("initPlanAccount start");
         //例外设置查询和存储
-        Map<String, AccountSpecialSettings> accountSpecialSettingsMap = null;
-        Map<String, List<PlanAccount>> planAccountMap = new HashMap<>();
+        //获取当天不能发送操作计划的账号列表
         List<AccountSpecialSettings> accountSpecialSettings = accountService.getAccountSpecialSettings();
-        if (!CollectionUtils.isEmpty(accountSpecialSettings)) {
-            accountSpecialSettingsMap = accountSpecialSettings.stream()
-                    .collect(Collectors.toMap(AccountSpecialSettings::getAccountId, Function.identity()));
-        }
+        List<String> specialAccountIds = accountSpecialSettings.stream().map(AccountSpecialSettings::getAccountId).collect(Collectors.toList());
+        //获取当天需要额外推送的例外设置账号列表
+        List<AccountSpecialSettings> sendAccountSpecialSettings = accountService.getSendAccountSpecialSettings();
         //操作计划遍历
         List<Plan> planList = planAccountService.getPlanList();
         Set<String> planIdSet = planList.stream().map(Plan::getPlanId).collect(Collectors.toSet());
@@ -817,9 +813,7 @@ public class CoreServiceImpl implements CoreService {
                     planAccount.setSortStrategy(sortStgMap.get(accountId));
                 }
                 planAccount.setPushType(longArticleSystemPlan.getPushType());
-                if (accountSpecialSettingsMap != null && accountSpecialSettingsMap.containsKey(planAccount.getAccountId())) {
-                    planAccountMap.computeIfAbsent(planAccount.getAccountId(), k -> new ArrayList<>()).add(planAccount);
-                } else {
+                if (CollectionUtils.isEmpty(specialAccountIds) || !specialAccountIds.contains(planAccount.getAccountId())) {
                     planAccountService.saveOrUpdatePlanAccount(planAccount);
                 }
             }
@@ -831,72 +825,54 @@ public class CoreServiceImpl implements CoreService {
             }
 
         }
-        if (CollectionUtils.isEmpty(planIdSet)) {
-            return;
-        }
-        for (String planId : planIdSet) {
-            planAccountService.delPlan(planId);
+        log.info("initPlanAccount end");
+        if (!CollectionUtils.isEmpty(planIdSet)) {
+            for (String planId : planIdSet) {
+                planAccountService.delPlan(planId);
+            }
         }
 
         //例外设置处理
-        if (!CollectionUtils.isEmpty(planAccountMap)) {
-            setSpecialAccount(planAccountMap, accountSpecialSettingsMap);
-        }
+        setSpecialAccount(accountSpecialSettings, sendAccountSpecialSettings);
+
     }
 
-    private void setSpecialAccount(Map<String, List<PlanAccount>> planAccountMap,
-                                   Map<String, AccountSpecialSettings> accountSpecialSettingsMap) {
-        for (Map.Entry<String, List<PlanAccount>> entry : planAccountMap.entrySet()) {
-            String accountId = entry.getKey();
-            List<PlanAccount> planAccounts = entry.getValue();
-            AccountSpecialSettings accountSpecialSettings = accountSpecialSettingsMap.get(accountId);
-            if (accountSpecialSettings == null) {
-                LarkRobotUtil.sendMessage("获取例外设置失败,accountId=" + accountId);
+    public void setSpecialAccount(List<AccountSpecialSettings> accountSpecialSettings,
+                                  List<AccountSpecialSettings> sendAccountSpecialSettings) {
+
+        //当天计划不发送
+        log.info("accountSpecialSettings={}", accountSpecialSettings);
+        log.info("sendAccountSpecialSettings={}", sendAccountSpecialSettings);
+        for (AccountSpecialSettings accountSpecialSetting : accountSpecialSettings) {
+            List<PlanAccount> planAccountList = planAccountService.getPlanAccount(accountSpecialSetting.getAccountId());
+            if (CollectionUtils.isEmpty(planAccountList)) {
                 continue;
             }
-            //根据例外设置账号判断,当天已经有发送成功的记录,确保不会生成新的例外操作计划
-            boolean isSend = false;
-            List<PlanAccount> planAccountList = planAccountService.getPlanAccount(accountId);
             for (PlanAccount planAccount : planAccountList) {
-                int sendCount = publicContentService.getSendCount(planAccount.getId());
-                if (sendCount > 0) {
-                    isSend = true;
-                    break;
-                }
-            }
-            if (isSend) {
-                continue;
+                planAccount.setPublishOpenFlag(0);
+                planAccountService.saveOrUpdatePlanAccount(planAccount);
             }
+        }
 
-            //例外设置的新增和更新
-            List<PlanAccount> normalPlanAccounts = planAccountList.stream().filter(e -> e.getIsDelete() == 0).filter(e -> e.getPublishOpenFlag() == 1).collect(Collectors.toList());
-            if (CollectionUtils.isEmpty(normalPlanAccounts)) {
-                Optional<PlanAccount> firstAccount = planAccounts.stream().min((a1, a2) -> -a1.getPublishNum().compareTo(a2.getPublishNum()));
-                if (!firstAccount.isPresent()) {
+        //额外发送
+        for (AccountSpecialSettings accountSpecialSetting : sendAccountSpecialSettings) {
+            List<PlanAccount> specialPlanAccount = planAccountService.getSpecialPlanAccount(accountSpecialSetting.getAccountId());
+            if (CollectionUtils.isEmpty(specialPlanAccount)) {
+                List<PlanAccount> planAccountList = planAccountService.getNormalPlanAccount(accountSpecialSetting.getAccountId());
+                if (CollectionUtils.isEmpty(planAccountList)) {
                     continue;
                 }
+                Optional<PlanAccount> firstAccount = planAccountList.stream().min((a1, a2) -> -a1.getPublishNum().compareTo(a2.getPublishNum()));
                 PlanAccount targetPlanAccount = firstAccount.get();
-                for (PlanAccount planAccount : planAccounts) {
-                    if (!Objects.equals(planAccount.getPlanId(), targetPlanAccount.getPlanId())) {
-                        planAccount.setPublishOpenFlag(0);
-                        planAccountService.saveOrUpdatePlanAccount(planAccount);
-                        continue;
-                    }
-                    updateAccountSetting(accountSpecialSettings, planAccount);
-                    planAccountService.saveOrUpdatePlanAccount(planAccount);
-                }
+                updateAccountSetting(accountSpecialSetting, targetPlanAccount);
+                targetPlanAccount.setStatus(0);
+                targetPlanAccount.setIsSpecialSetting(1);
+                targetPlanAccount.setId(null);
+                planAccountService.addPlanAccount(targetPlanAccount);
             } else {
-                if (normalPlanAccounts.size() == 1) {
-                    PlanAccount planAccount = normalPlanAccounts.get(0);
-                    updateAccountSetting(accountSpecialSettings, planAccount);
-                    planAccountService.saveOrUpdatePlanAccount(planAccount);
-                } else {
-                    LarkRobotUtil.sendMessage("存在多个例外计划,accountId=" + accountId);
-                    for (PlanAccount planAccount : planAccounts) {
-                        planAccount.setPublishOpenFlag(0);
-                        planAccountService.saveOrUpdatePlanAccount(planAccount);
-                    }
-                }
+                PlanAccount planAccount = specialPlanAccount.get(0);
+                updateAccountSetting(accountSpecialSetting, planAccount);
+                planAccountService.updatePlanAccount(planAccount);
             }
         }
     }
@@ -980,7 +956,8 @@ public class CoreServiceImpl implements CoreService {
                                 aigcService.updateMatchMiniprogramStatus(statusParam);
                                 continue;
                             }
-                            MatchVideo matchVideo = contentService.getContent(matchContent.getSourceId(), matchContent.getGhId(), 2);
+                            MatchVideo matchVideo = contentService.getContent(matchContent.getSourceId(),
+                                    matchContent.getGhId(), PublicFlagEnum.NOT_PUBLIC.getStatusCode());
                             if (matchVideo != null) {
                                 Integer contentStatus = matchVideo.getContentStatus();
                                 if (ContentStatusEnum.isSuccess(contentStatus)) {
@@ -1010,7 +987,7 @@ public class CoreServiceImpl implements CoreService {
                                 request.setStrategy("strategy_v2");
                                 request.setArticleId(matchContent.getSourceId());
                                 request.setFlowPoolLevelTag(matchContent.getFlowPoolLevelTag());
-                                request.setPublishFlag(2);
+                                request.setPublishFlag(PublicFlagEnum.NOT_PUBLIC.getStatusCode());
                                 Integer status = matchService.matchMiniprogramVideo(request);
                                 if (status == MatchRequestStatusEnum.NOT_CONTENT.getStatusCode()) {
                                     MatchMiniprogramStatusParam statusParam = new MatchMiniprogramStatusParam();
@@ -1022,7 +999,7 @@ public class CoreServiceImpl implements CoreService {
                                 }
                             }
                         } catch (InterruptedException e) {
-                            throw new RuntimeException(e);
+                            log.error("匹配小程序线程异常", e);
                         }
                     }
                     log.info("启动匹配小程序线程结束");
@@ -1057,7 +1034,7 @@ public class CoreServiceImpl implements CoreService {
                     try {
                         matchQueue.put(matchContent);
                     } catch (InterruptedException e) {
-                        throw new RuntimeException(e);
+                        log.error("matchQueue put error", e);
                     }
                 }
             }
@@ -1125,22 +1102,26 @@ public class CoreServiceImpl implements CoreService {
         PushRecordParam param = new PushRecordParam();
         param.setPlanId(planAccount.getPlanId());
         param.setPublishAccountId(planAccount.getAccountId());
-        List<PushRecordVO> todayPushRecords = aigcService.getTodayPushRecords(param);
-
+        boolean sendSpecialSettings = accountService.isSendSpecialSettings(planAccount.getAccountId());
 
-        //查询aigc发布成功数量
+        //例外设置不查询aigc数量  一定会多发
         int aigcCount = 0;
-        if (!CollectionUtils.isEmpty(todayPushRecords)) {
-            List<PushRecordVO> collect = todayPushRecords.stream()
-                    .filter(e -> ((e.getPushStatus() != 3) && (e.getPublishStatus() != 3))).collect(Collectors.toList());
-            if (!CollectionUtils.isEmpty(collect)) {
-                for (PushRecordVO pushRecordVO : collect) {
-                    if (pushRecordVO.getPublishContentCount() != null) {
-                        aigcCount += pushRecordVO.getPublishContentCount();
+        if (!sendSpecialSettings) {
+            //查询aigc发布成功数量
+            List<PushRecordVO> todayPushRecords = aigcService.getTodayPushRecords(param);
+            if (!CollectionUtils.isEmpty(todayPushRecords)) {
+                List<PushRecordVO> collect = todayPushRecords.stream()
+                        .filter(e -> ((e.getPushStatus() != 3) && (e.getPublishStatus() != 3))).collect(Collectors.toList());
+                if (!CollectionUtils.isEmpty(collect)) {
+                    for (PushRecordVO pushRecordVO : collect) {
+                        if (pushRecordVO.getPublishContentCount() != null) {
+                            aigcCount += pushRecordVO.getPublishContentCount();
+                        }
                     }
                 }
             }
         }
+
         //长文系统发布数量
         int sendCount = publicContentService.getSendCount(planAccount.getId());
         //取发布数量多的
@@ -1286,7 +1267,8 @@ public class CoreServiceImpl implements CoreService {
                         if (matchVideo == null) {
                             continue;
                         }
-                        List<VideoDetail> videoDetails = contentService.getPublishVideoDetail(publishContent, planAccount, matchVideo);
+                        List<VideoDetail> videoDetails = contentService.
+                                getPublishVideoDetail(matchVideo, PublicFlagEnum.NOT_PUBLIC.getStatusCode(), planAccount);
                         log.info("publishContentId={}, videoDetails={}", publishContent.getId(), videoDetails);
                         if (CollectionUtils.isEmpty(videoDetails)) {
                             continue;
@@ -1358,10 +1340,12 @@ public class CoreServiceImpl implements CoreService {
         if (CollectionUtils.isEmpty(pushContentList)) {
             return null;
         }
-        //自动群发少于最少数量不发送
+        //自动群发少于最少数量不发送  例外设置数量少于最少发送数量不发送
         if (Objects.equals(planAccount.getPushType(), PublishGzhPushTypeEnum.auto_group_publish.getVal())
-                && pushContentList.size() < planAccount.getPublishPreMinNum()) {
-            return null;
+                || planAccount.getIsSpecialSetting() == 1) {
+            if (pushContentList.size() < planAccount.getPublishPreMinNum()) {
+                return null;
+            }
         }
         gzhPushParam.setPushContentList(pushContentList);
         return gzhPushParam;

+ 338 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/CrawlerVideoServiceImpl.java

@@ -0,0 +1,338 @@
+package com.tzld.piaoquan.longarticle.service.local.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.CrawlerVideoMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.TitleAuditMapper;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.*;
+import com.tzld.piaoquan.longarticle.utils.other.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+public class CrawlerVideoServiceImpl {
+
+    @Autowired
+    private CrawlerVideoMapper crawlerVideoMapper;
+
+    @Autowired
+    private TitleAuditMapper titleAuditMapper;
+
+    private static final String default_user_id = "69637498";
+
+    private static final Double NLP_SIMILARITY_THRESHOLD = 0.55;
+
+    private static final int MAX_NUM = 3;
+
+    private static final int MIN_NUM = 1;
+
+    private static final List<String> sensitiveWords = new ArrayList<String>() {{
+        add("人民");
+        add("必胜");
+        add("正义必胜");
+        add("中国");
+        add("老虎");
+        add("人生的扣子");
+        add("共产党");
+        add("总书记");
+        add("政");
+        add("习");
+    }};
+
+    public boolean addCrawlerVideo(String contentId, String rootContentId, LongArticlesText kimiText) {
+        if (existCrawlerVideo(contentId)) {
+            return true;
+        }
+        //查询原contentId,如果已经爬取到视频,则不再爬取
+        if (rootContentId != null) {
+            CrawlerVideoExample example = new CrawlerVideoExample();
+            example.createCriteria().andContentIdEqualTo(rootContentId);
+            List<CrawlerVideo> crawlerVideos = crawlerVideoMapper.selectByExample(example);
+            if (!CollectionUtils.isEmpty(crawlerVideos)) {
+                for (CrawlerVideo crawlerVideo : crawlerVideos) {
+                    crawlerVideo.setContentId(contentId);
+                    crawlerVideo.setId(null);
+                    crawlerVideoMapper.insertSelective(crawlerVideo);
+                    return true;
+                }
+            }
+        }
+        log.info("addCrawlerVideo contentId={} rootContentId={} kimiText={}", contentId, rootContentId, kimiText);
+        //爬虫爬取视频
+        int count = 0;
+        List<CrawlerVideo> crawlerVideoList = searchVideosFromWeb(kimiText);
+        if (!CollectionUtils.isEmpty(crawlerVideoList)) {
+            CrawlerVideoExample example = new CrawlerVideoExample();
+            example.createCriteria().andContentIdEqualTo(contentId);
+            List<CrawlerVideo> crawlerVideos = crawlerVideoMapper.selectByExample(example);
+            List<CrawlerVideo> filteredList = crawlerVideoList;
+            if (!CollectionUtils.isEmpty(crawlerVideos)) {
+                count += crawlerVideos.size();
+                // 使用 Lambda 表达式过滤 crawlerVideoList 已经存在的视频
+                filteredList = crawlerVideoList.stream()
+                        .filter(video -> crawlerVideos.stream()
+                                .noneMatch(existingVideo ->
+                                        existingVideo.getOutVideoId().equals(video.getOutVideoId()) &&
+                                                existingVideo.getPlatform().equals(video.getPlatform())
+                                )
+                        )
+                        .collect(Collectors.toList());
+            }
+            for (CrawlerVideo crawlerVideo : filteredList) {
+                crawlerVideo.setContentId(contentId);
+                crawlerVideo.setDownloadStatus(0);
+                crawlerVideo.setCrawlerTime(new Date());
+                crawlerVideoMapper.insertSelective(crawlerVideo);
+                count++;
+            }
+        }
+        return count >= MIN_NUM;
+    }
+
+
+    public boolean uploadCrawlerVideo(MatchVideo matchVideo) {
+        boolean b = existUploadCrawlerVideo(matchVideo.getContentId());
+        if (b) {
+            return true;
+        }
+        boolean pushRes = pushOss(matchVideo.getContentId());
+        if (pushRes) {
+            try {
+                Random random = new Random();
+                int randomInt = random.nextInt(10) + 97;
+                // 将随机整数转换为字符
+                char auditAccount = (char) randomInt;
+                TitleAudit titleAudit = new TitleAudit();
+                titleAudit.setContentId(matchVideo.getContentId());
+                titleAudit.setFlowPoolLevel(matchVideo.getFlowPoolLevel());
+                titleAudit.setAuditAccount(String.valueOf(auditAccount));
+                titleAudit.setCreateTimestamp(System.currentTimeMillis());
+                titleAuditMapper.insertSelective(titleAudit);
+            } catch (Exception e) {
+                log.error("addCrawlerVideo add titleAudit error", e);
+            }
+        }
+        return pushRes;
+    }
+
+    public boolean existUploadCrawlerVideo(String contentId) {
+        CrawlerVideoExample example = new CrawlerVideoExample();
+        example.createCriteria().andContentIdEqualTo(contentId).andDownloadStatusEqualTo(2);
+        long l = crawlerVideoMapper.countByExample(example);
+        return l >= MIN_NUM;
+    }
+
+    public boolean existCrawlerVideo(String contentId) {
+        CrawlerVideoExample example = new CrawlerVideoExample();
+        example.createCriteria().andContentIdEqualTo(contentId);
+        long l = crawlerVideoMapper.countByExample(example);
+        return l >= MIN_NUM;
+    }
+
+
+    public List<CrawlerVideo> searchVideosFromWeb(LongArticlesText longArticlesText) {
+        String articleSummary;
+        if (longArticlesText.getKimiSummary().length() > 15) {
+            articleSummary = longArticlesText.getKimiSummary().substring(0, 15);
+        } else {
+            articleSummary = longArticlesText.getKimiSummary();
+        }
+
+        String oriTitle;
+        if (longArticlesText.getKimiTitle().length() > 15) {
+            oriTitle = longArticlesText.getKimiTitle().substring(0, 15);
+        } else {
+            oriTitle = longArticlesText.getKimiTitle();
+        }
+        String kimiKeys = longArticlesText.getKimiKeys();
+        JSONArray jsonArray = JSONArray.parseArray(kimiKeys);
+        String newKimiKeys = jsonArray.stream()
+                .map(Object::toString)
+                .collect(Collectors.joining(","));
+        List<JSONObject> res = new ArrayList<>();
+        List<JSONObject> list0 = searchVideo(articleSummary, sensitiveWords);
+        List<JSONObject> list1 = searchVideo(oriTitle, sensitiveWords);
+        List<JSONObject> list2 = searchVideo(newKimiKeys, sensitiveWords);
+        if (!CollectionUtils.isEmpty(list0)) {
+            res.addAll(list0);
+        }
+        if (!CollectionUtils.isEmpty(list1)) {
+            res.addAll(list1);
+        }
+        if (!CollectionUtils.isEmpty(list2)) {
+            res.addAll(list2);
+        }
+        log.info("searchVideosFromWeb res={} longArticlesText={}", res, longArticlesText);
+        if (CollectionUtils.isEmpty(res)) {
+            return null;
+        }
+        res = res.stream().filter(f -> StringUtils.isNotEmpty(f.getString("title"))).collect(Collectors.toList());
+        List<String> titleList = res.stream().map(e -> e.getString("title")).collect(Collectors.toList());
+        List<Float> titleSimilarityWithNlp = getTitleSimilarityWithNlp(oriTitle, titleList);
+        if (CollectionUtils.isEmpty(titleSimilarityWithNlp) || titleSimilarityWithNlp.size() != res.size()) {
+            return null;
+        }
+        for (int i = 0; i < res.size(); i++) {
+            JSONObject jsonObject = res.get(i);
+            jsonObject.put("score", titleSimilarityWithNlp.get(i));
+        }
+        res = res.stream().filter(f -> f.getDouble("score") != null && f.getFloat("score") > NLP_SIMILARITY_THRESHOLD)
+                .collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(res)) {
+            //没有符合评分要求的视频
+            return null;
+        }
+        List<CrawlerVideo> crawlerVideoList = new ArrayList<>();
+        for (JSONObject jsonObject : res) {
+            String platform = jsonObject.getString("platform");
+            if (StringUtils.isEmpty(platform)) {
+                continue;
+            }
+            if ("dy_search".equals(platform)) {
+                crawlerVideoList.add(dyVideoProduce(jsonObject));
+            }
+            if ("baidu_search".equals(platform)) {
+                crawlerVideoList.add(baiduVideoProduce(jsonObject));
+            }
+        }
+        log.info("searchVideosFromWeb crawlerVideoList={}", crawlerVideoList);
+        return crawlerVideoList;
+    }
+
+
+    public List<Float> getTitleSimilarityWithNlp(String oriTitle, List<String> titleList) {
+        List<Float> baseScores = NlpUtils.baseNlpTitleSimilarity(oriTitle, titleList);
+        if (!CollectionUtils.isEmpty(baseScores)) {
+            return baseScores;
+        }
+        List<Float> aliyunScores = NlpUtils.aliyunNlpTitleSimilarity(oriTitle, titleList);
+        if (!CollectionUtils.isEmpty(aliyunScores)) {
+            return aliyunScores;
+        }
+        return null;
+    }
+
+
+    public List<JSONObject> searchVideo(String text, List<String> sensitiveWords) {
+        List<JSONObject> res;
+        res = DouyinSearch.douyinSearch(text, sensitiveWords, "");
+        if (!CollectionUtils.isEmpty(res)) {
+            for (JSONObject jsonObject : res) {
+                jsonObject.put("platform", "dy_search");
+            }
+            return res;
+        }
+        res = HkspSearch.hkspSearch(text, sensitiveWords, "");
+        if (!CollectionUtils.isEmpty(res)) {
+            for (JSONObject jsonObject : res) {
+                jsonObject.put("platform", "baidu_search");
+            }
+            return res;
+        }
+        return null;
+    }
+
+    public CrawlerVideo dyVideoProduce(JSONObject jsonObject) {
+        CrawlerVideo crawlerVideo = new CrawlerVideo();
+        crawlerVideo.setPlatform(jsonObject.getString("platform"));
+        crawlerVideo.setVideoTitle(jsonObject.getString("title"));
+        crawlerVideo.setOutVideoId(jsonObject.getString("channel_content_id"));
+        if (jsonObject.getLong("publish_timestamp") != null) {
+            crawlerVideo.setPublishTime(new Date(jsonObject.getLong("publish_timestamp")));
+        }
+        crawlerVideo.setVideoUrl(jsonObject.getJSONArray("video_url_list").getJSONObject(0).getString("video_url"));
+        crawlerVideo.setCoverUrl(jsonObject.getJSONArray("image_url_list").getJSONObject(0).getString("image_url"));
+        crawlerVideo.setPlayCount(jsonObject.getInteger("play_count"));
+        crawlerVideo.setLikeCount(jsonObject.getInteger("like_count"));
+        crawlerVideo.setShareCount(jsonObject.getInteger("share_count"));
+        crawlerVideo.setDuration(jsonObject.getJSONArray("video_url_list").getJSONObject(0).getInteger("video_duration"));
+        crawlerVideo.setScore(jsonObject.getFloat("score"));
+        crawlerVideo.setUserId(default_user_id);
+        return crawlerVideo;
+    }
+
+    public CrawlerVideo baiduVideoProduce(JSONObject jsonObject) {
+        CrawlerVideo crawlerVideo = new CrawlerVideo();
+        crawlerVideo.setPlatform(jsonObject.getString("platform"));
+        crawlerVideo.setVideoTitle(jsonObject.getString("title"));
+        crawlerVideo.setOutVideoId(jsonObject.getString("id"));
+        if (jsonObject.getLong("publish_time") != null) {
+            crawlerVideo.setPublishTime(new Date(jsonObject.getLong("publish_time") * 1000));
+        }
+        crawlerVideo.setVideoUrl(jsonObject.getString("playurl"));
+        crawlerVideo.setCoverUrl(jsonObject.getString("poster"));
+        crawlerVideo.setLikeCount(jsonObject.getInteger("like") == null ? 0 : jsonObject.getInteger("like"));
+        crawlerVideo.setPlayCount(jsonObject.getInteger("playcnt"));
+        crawlerVideo.setDuration(jsonObject.getInteger("duration"));
+        crawlerVideo.setScore(jsonObject.getFloat("score"));
+        crawlerVideo.setUserId(default_user_id);
+        return crawlerVideo;
+    }
+
+    public boolean pushOss(String contentId) {
+        CrawlerVideoExample example = new CrawlerVideoExample();
+        example.createCriteria().andContentIdEqualTo(contentId).andDownloadStatusEqualTo(0);
+        example.setOrderByClause("score desc");
+        List<CrawlerVideo> crawlerVideoList = crawlerVideoMapper.selectByExampleWithBLOBs(example);
+        if (CollectionUtils.isEmpty(crawlerVideoList)) {
+            return false;
+        }
+        int count = 0;
+        for (CrawlerVideo crawlerVideo : crawlerVideoList) {
+            String platform = crawlerVideo.getPlatform();
+            String outVideoId = crawlerVideo.getOutVideoId();
+            String videoPath = VideoDownloader.downloadVideo(outVideoId, platform, crawlerVideo.getVideoUrl());
+            String coverPath = VideoDownloader.downloadCover(outVideoId, platform, crawlerVideo.getCoverUrl());
+            if (StringUtils.isNotEmpty(videoPath)) {
+                String videoOssPath = OSSUploader.uploadToOSS(videoPath, "video");
+                int uploadOssCount = 0;
+                while (StringUtils.isEmpty(videoOssPath) && uploadOssCount < 3) {
+                    videoOssPath = OSSUploader.uploadToOSS(videoPath, "video");
+                    uploadOssCount++;
+                }
+                if (StringUtils.isNotEmpty(videoOssPath)) {
+                    CrawlerVideo udpateCrawlerVideo = new CrawlerVideo();
+                    udpateCrawlerVideo.setVideoOssPath(videoOssPath);
+                    if (StringUtils.isNotEmpty(coverPath)) {
+                        String coverOssPath = OSSUploader.uploadToOSS(coverPath, "image");
+                        udpateCrawlerVideo.setCoverOssPath(coverOssPath);
+                    }
+                    udpateCrawlerVideo.setId(crawlerVideo.getId());
+                    udpateCrawlerVideo.setDownloadStatus(2);
+                    crawlerVideoMapper.updateByPrimaryKeySelective(udpateCrawlerVideo);
+                    count++;
+                    try {
+                        Files.delete(Paths.get(videoPath));
+                        Files.delete(Paths.get(coverPath));
+                    } catch (Exception e) {
+                        log.error("pushOss del file error", e);
+                    }
+                } else {
+                    //下载失败
+                    CrawlerVideo udpateCrawlerVideo = new CrawlerVideo();
+                    udpateCrawlerVideo.setId(crawlerVideo.getId());
+                    udpateCrawlerVideo.setDownloadStatus(3);
+                    crawlerVideoMapper.updateByPrimaryKeySelective(udpateCrawlerVideo);
+                }
+            }
+            if (count >= MAX_NUM) {
+                return true;
+            }
+        }
+        return count >= MIN_NUM;
+    }
+
+}

+ 65 - 5
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/KimiServiceImpl.java

@@ -1,29 +1,89 @@
 package com.tzld.piaoquan.longarticle.service.local.impl;
 
-import com.tzld.piaoquan.longarticle.dao.mapper.LongArticlesTextMapper;
-import com.tzld.piaoquan.longarticle.model.po.LongArticlesText;
-import com.tzld.piaoquan.longarticle.model.po.LongArticlesTextExample;
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.LongArticlesTextMapper;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesText;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesTextExample;
 import com.tzld.piaoquan.longarticle.service.local.KimiService;
+import com.tzld.piaoquan.longarticle.utils.other.OpenAIUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import java.util.List;
 
+@Slf4j
 @Service
 public class KimiServiceImpl implements KimiService {
 
+    private static final Integer SAFE_SCORE = 7;
+
     @Autowired
-    LongArticlesTextMapper longArticlesTextMapper;
+    private LongArticlesTextMapper longArticlesTextMapper;
 
     @Override
     public LongArticlesText getKimiText(String contentId) {
         LongArticlesTextExample example = new LongArticlesTextExample();
         example.createCriteria().andContentIdEqualTo(contentId);
         List<LongArticlesText> longArticlesTexts = longArticlesTextMapper.selectByExample(example);
-        if(CollectionUtils.isEmpty(longArticlesTexts)){
+        if (CollectionUtils.isEmpty(longArticlesTexts)) {
             return null;
         }
         return longArticlesTexts.get(0);
     }
+
+    public boolean updateKimiContent(String contentId) {
+        LongArticlesTextExample example = new LongArticlesTextExample();
+        example.createCriteria().andContentIdEqualTo(contentId);
+        List<LongArticlesText> longArticlesTexts = longArticlesTextMapper.selectByExampleWithBLOBs(example);
+        log.info("updateKimiContent contentId={} longArticlesTexts={}", contentId, longArticlesTexts);
+        if (CollectionUtils.isEmpty(longArticlesTexts)) {
+            return false;
+        }
+        LongArticlesText longArticlesText = longArticlesTexts.get(0);
+        if (longArticlesText.getKimiStatus() == 1) {
+            return true;
+        }
+        String kimiTitle = OpenAIUtils.getKimiTitle(longArticlesText.getArticleTitle());
+        if (StringUtils.isEmpty(kimiTitle)) {
+            return false;
+        }
+        Integer score = OpenAIUtils.getKimiTitleSafeScore(kimiTitle);
+        if (score == null || score > SAFE_SCORE) {
+            kimiTitle = OpenAIUtils.makeKimiTitleSafer(longArticlesText.getArticleTitle());
+        }
+        kimiTitle = kimiTitle.replace("'", "").replace("\"", "").replace("\\", "");
+        if (StringUtils.isEmpty(kimiTitle)) {
+            return false;
+        }
+        JSONObject kimiInfo = OpenAIUtils.kimiMining(longArticlesText.getArticleText());
+        if (kimiInfo == null) {
+            return false;
+        }
+        String kimiSummary = kimiInfo.getString("content_title").replace("'", "").replace("\"", "");
+        String kimiKeys = kimiInfo.getJSONArray("content_keys").toJSONString();
+        log.info("updateKimiContent contentId={} kimiTitle={} kimiSummary={} kimiKeys={}", contentId, kimiTitle, kimiSummary, kimiKeys);
+        if (StringUtils.isNotEmpty(kimiTitle) && StringUtils.isNotEmpty(kimiSummary) && StringUtils.isNotEmpty(kimiKeys)) {
+            longArticlesText.setKimiTitle(kimiTitle);
+            longArticlesText.setKimiSummary(kimiSummary);
+            longArticlesText.setKimiKeys(kimiKeys);
+            longArticlesText.setKimiStatus(1);
+            longArticlesTextMapper.updateByPrimaryKeySelective(longArticlesText);
+            return true;
+        }
+        return false;
+    }
+
+    public void updateKimiContentStatus(String contentId, Integer status) {
+        LongArticlesTextExample example = new LongArticlesTextExample();
+        example.createCriteria().andContentIdEqualTo(contentId);
+        List<LongArticlesText> longArticlesTexts = longArticlesTextMapper.selectByExampleWithBLOBs(example);
+        if (!CollectionUtils.isEmpty(longArticlesTexts)) {
+            LongArticlesText longArticlesText = longArticlesTexts.get(0);
+            longArticlesText.setKimiStatus(status);
+            longArticlesTextMapper.updateByPrimaryKeySelective(longArticlesText);
+        }
+    }
 }

+ 613 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/MatchVideoServiceImpl.java

@@ -0,0 +1,613 @@
+package com.tzld.piaoquan.longarticle.service.local.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.piaoquan.longarticle.common.enums.ContentResultStatusEnum;
+import com.tzld.piaoquan.longarticle.common.enums.ContentStatusEnum;
+import com.tzld.piaoquan.longarticle.common.enums.PublicFlagEnum;
+import com.tzld.piaoquan.longarticle.component.RedisLock;
+import com.tzld.piaoquan.longarticle.dao.mapper.aigc.ProducePlanExeRecordMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.LongArticlesTextMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.MatchVideoMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.PromotionSourceMapper;
+import com.tzld.piaoquan.longarticle.model.bo.MatchContent;
+import com.tzld.piaoquan.longarticle.model.bo.VideoDetail;
+import com.tzld.piaoquan.longarticle.model.po.aigc.ProducePlanExeRecord;
+import com.tzld.piaoquan.longarticle.model.po.aigc.ProducePlanExeRecordExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.*;
+import com.tzld.piaoquan.longarticle.service.local.KimiService;
+import com.tzld.piaoquan.longarticle.utils.LarkRobotUtil;
+import com.tzld.piaoquan.longarticle.utils.page.Page;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+import java.util.concurrent.*;
+
+@Slf4j
+@Service
+public class MatchVideoServiceImpl {
+
+
+    private static final String KIMI_LOCK_KEY = "kimi_lock_key_%s";
+
+    private static final String CRAWLER_LOCK_KEY = "crawler_lock_key_%s";
+
+    private static final String UPLOAD_CRAWLER_LOCK_KEY = "upload_crawler_lock_key_%s";
+
+    private static final String CRAWLER_FAIL_COUNT_KEY = "crawler_count_key_%s";
+
+    private static final String UPLOAD_CRAWLER_FAIL_COUNT_KEY = "upload_crawler_count_key_%s";
+
+    private static final String KIMI_FAIL_COUNT_KEY = "kimi_count_key_%s";
+
+    private static final String EXIST_RESULT_KEY = "exist_result_key_%s";
+
+
+    @Autowired
+    KimiService kimiService;
+
+    @Autowired
+    private MatchVideoMapper matchVideoMapper;
+
+    @Autowired
+    private LongArticlesTextMapper longArticlesTextMapper;
+
+    @Autowired
+    private CrawlerVideoServiceImpl crawlerVideoService;
+
+    @Autowired
+    private RedisLock redisLock;
+
+    @Autowired
+    private RedisTemplate<String, Object> redisTemplate;
+
+    @Autowired
+    private ProducePlanExeRecordMapper producePlanExeRecordMapper;
+
+    @Autowired
+    private PromotionSourceMapper promotionSourceMapper;
+
+    @Autowired
+    private ContentServiceImpl contentService;
+
+
+    // 定义一个阻塞队列
+    private static final ArrayBlockingQueue<MatchVideo> matchKimiVideoQueue = new ArrayBlockingQueue<>(1000000);
+    // 定义一个线程池,设置消费线程的数量
+    private static final ThreadPoolExecutor matchKimiVideoPoolExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(5);
+
+
+    // 定义一个阻塞队列
+    private static final ArrayBlockingQueue<MatchVideo> matchCrawlerVideoQueue = new ArrayBlockingQueue<>(1000000);
+    // 定义一个线程池,设置消费线程的数量
+    private static final ThreadPoolExecutor matchCrawlerVideoPoolExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(10);
+
+    // 定义一个阻塞队列
+    private static final ArrayBlockingQueue<MatchVideo> uploadCrawlerVideoQueue = new ArrayBlockingQueue<>(1000000);
+    // 定义一个线程池,设置消费线程的数量
+    private static final ThreadPoolExecutor uploadCrawlerVideoPoolExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(5);
+
+    @Transactional
+    public void addMatchVideo(MatchContent matchContent) {
+        MatchVideoExample example = new MatchVideoExample();
+        example.createCriteria().andContentIdEqualTo(matchContent.getSourceId())
+                .andGhIdEqualTo(matchContent.getGhId())
+                .andPublishFlagEqualTo(matchContent.getPublishFlag());
+        long l = matchVideoMapper.countByExample(example);
+        if (l > 0) {
+            return;
+        }
+        String traceId = "search-" + UUID.randomUUID();
+        MatchVideo matchVideo = new MatchVideo();
+        matchVideo.setTraceId(traceId);
+        matchVideo.setContentId(matchContent.getSourceId());
+        matchVideo.setAccountName(matchContent.getAccountName());
+        matchVideo.setGhId(matchContent.getGhId());
+        matchVideo.setFlowPoolLevel(matchContent.getFlowPoolLevelTag());
+        matchVideo.setContentStatus(0);
+        matchVideo.setPublishFlag(matchContent.getPublishFlag());
+        long timestamp = System.currentTimeMillis() / 1000;
+        matchVideo.setContentStatusUpdateTime(Long.valueOf(timestamp).intValue());
+        matchVideo.setRequestTimestamp(Long.valueOf(timestamp).intValue());
+        matchVideoMapper.insertSelective(matchVideo);
+        LongArticlesTextExample longArticlesTextExample = new LongArticlesTextExample();
+        longArticlesTextExample.createCriteria().andContentIdEqualTo(matchContent.getSourceId());
+        long l1 = longArticlesTextMapper.countByExample(longArticlesTextExample);
+        if (l1 == 0) {
+            LongArticlesText longArticlesText = new LongArticlesText();
+            longArticlesText.setArticleTitle(matchContent.getTitle());
+            longArticlesText.setArticleText(matchContent.getContent());
+            longArticlesText.setContentId(matchContent.getSourceId());
+            longArticlesText.setKimiStatus(0);
+            longArticlesTextMapper.insertSelective(longArticlesText);
+        }
+    }
+
+    public void kimiContent() throws InterruptedException {
+        if (matchKimiVideoPoolExecutor.getCorePoolSize() - matchKimiVideoPoolExecutor.getActiveCount() > 0) {
+            int threadSize = matchKimiVideoPoolExecutor.getCorePoolSize() - matchKimiVideoPoolExecutor.getActiveCount();
+            log.info("threadNum={}", threadSize);
+            CountDownLatch countDownLatch = new CountDownLatch(threadSize);
+            // 启动消费者线程
+            for (int i = 0; i < threadSize; i++) {
+                matchKimiVideoPoolExecutor.execute(new Thread(() -> {
+                    log.info("启动Kimi搜索线程");
+                    while (true) {
+                        try {
+                            // 超过 5 分钟没有数据,销毁当前线程
+                            MatchVideo matchVideo = matchKimiVideoQueue.poll(5, TimeUnit.MINUTES); // 等待最多 5 分钟
+                            log.info("matchKimiVideoQueue size={}", matchKimiVideoQueue.size());
+                            if (matchVideo == null) {
+                                break; // 退出当前线程
+                            }
+                            processKimiMatchContent(matchVideo);
+                        } catch (Exception e) {
+                            log.error("Kimi搜索线程异常", e);
+                        }
+                    }
+                    log.info("启动Kimi搜索线程结束");
+                    countDownLatch.countDown();
+                }));
+            }
+            List<Integer> targetStatus = Arrays.asList(0, 1, 2);
+            List<MatchVideo> matchVideos;
+            //循环增加游标位置,通过主键索引过滤已经处理的数据
+            do {
+                Integer id = (Integer) redisTemplate.opsForValue().get("last_match_video_id");
+                if (id == null) {
+                    redisTemplate.opsForValue().set("last_match_video_id", 12864912);
+                    id = 12864912;
+                }
+                MatchVideoExample example = new MatchVideoExample();
+                example.createCriteria().andIdGreaterThan(id);
+                example.setOrderByClause("id asc");
+                Page<Object> page = new Page<>();
+                page.setCurrentPage(1);
+                page.setPageSize(1000);
+                example.setPage(page);
+                matchVideos = matchVideoMapper.selectByExample(example);
+                if (CollectionUtils.isEmpty(matchVideos)) {
+                    break;
+                }
+                boolean flag = true;
+                for (MatchVideo matchVideo : matchVideos) {
+                    if (targetStatus.contains(matchVideo.getContentStatus())) {
+                        flag = false;
+                        break;
+                    }
+                    //需要发布的状态需要到4才能结束
+                    if (matchVideo.getContentStatus() == ContentStatusEnum.SUCCESS_3.getStatusCode() && matchVideo.getPublishFlag() == 1) {
+                        flag = false;
+                        break;
+                    }
+                }
+                if (flag) {
+                    Integer lastId = matchVideos.get(matchVideos.size() - 1).getId();
+                    redisTemplate.opsForValue().set("last_match_video_id", lastId);
+                } else {
+                    break;
+                }
+            } while (!CollectionUtils.isEmpty(matchVideos));
+
+            Integer id = (Integer) redisTemplate.opsForValue().get("last_match_video_id");
+            if (id != null) {
+                do {
+                    MatchVideoExample example = new MatchVideoExample();
+                    example.createCriteria().andIdGreaterThan(id).andContentStatusEqualTo(0);
+                    example.setOrderByClause("id asc");
+                    Page<Object> page = new Page<>();
+                    page.setCurrentPage(1);
+                    page.setPageSize(1000);
+                    example.setPage(page);
+                    matchVideos = matchVideoMapper.selectByExample(example);
+                    if (CollectionUtils.isEmpty(matchVideos)) {
+                        break;
+                    }
+                    id = matchVideos.get(matchVideos.size() - 1).getId();
+                    matchKimiVideoQueue.addAll(matchVideos);
+                } while (!CollectionUtils.isEmpty(matchVideos));
+            }
+            countDownLatch.await();
+        }
+    }
+
+
+    public void processKimiMatchContent(MatchVideo matchVideo) {
+        if (matchVideo.getContentStatus() != ContentStatusEnum.DEFAULT.getStatusCode()) {
+            return;
+        }
+        //1.执行kimi任务
+        LongArticlesText kimiText = kimiService.getKimiText(matchVideo.getContentId());
+        if (kimiText == null) {
+            return;
+        }
+        //执行kimi任务
+        if (kimiText.getKimiStatus() == 0) {
+            //已经存在结果  直接设置
+            if (existMatchVideoResult(matchVideo)) {
+                return;
+            }
+            String lockKey = String.format(KIMI_LOCK_KEY, matchVideo.getContentId());
+            String lockValue = UUID.randomUUID().toString();
+            boolean lock = redisLock.tryLock(lockKey, lockValue, 300, TimeUnit.SECONDS);
+            if (lock) {
+                log.info("processKimiMatchContent lock lockKey={}", lockKey);
+                addStartProcessingTime(matchVideo.getContentId());
+                boolean res = kimiService.updateKimiContent(matchVideo.getContentId());
+                if (res) {
+                    updateStatus(matchVideo.getId(), ContentStatusEnum.KIMI_SUCCESS.getStatusCode());
+                } else {
+                    String countKey = String.format(KIMI_FAIL_COUNT_KEY, matchVideo.getContentId());
+                    Integer count = (Integer) redisTemplate.opsForValue().get(countKey);
+                    if (count != null && count >= 3) {
+                        //更新状态为失败
+                        LarkRobotUtil.sendMessage("kimiService updateKimiContent fail contentId=" + matchVideo.getContentId());
+                        log.error("kimiService updateKimiContent fail contentId={}", matchVideo.getContentId());
+                        kimiService.updateKimiContentStatus(matchVideo.getContentId(), 2);
+                        failMatchVideo(matchVideo);
+                    } else {
+                        if (count == null) {
+                            redisTemplate.opsForValue().set(countKey, 1, 3, TimeUnit.DAYS);
+                        } else {
+                            redisTemplate.opsForValue().set(countKey, count + 1, 3, TimeUnit.DAYS);
+                        }
+                    }
+                }
+                log.info("processKimiMatchContent unlock lockKey={}", lockKey);
+                redisLock.unlock(lockKey, lockValue);
+            }
+        } else if (kimiText.getKimiStatus() == 1) {
+            //更新状态为kimi执行完成
+            updateStatus(matchVideo.getId(), ContentStatusEnum.KIMI_SUCCESS.getStatusCode());
+        }
+
+    }
+
+    public void matchCrawlerVideo() throws InterruptedException {
+        if (matchCrawlerVideoPoolExecutor.getCorePoolSize() - matchCrawlerVideoPoolExecutor.getActiveCount() > 0) {
+            int threadSize = matchCrawlerVideoPoolExecutor.getCorePoolSize() - matchCrawlerVideoPoolExecutor.getActiveCount();
+            log.info("threadNum={}", threadSize);
+            CountDownLatch countDownLatch = new CountDownLatch(threadSize);
+            // 启动消费者线程
+            for (int i = 0; i < threadSize; i++) {
+                matchCrawlerVideoPoolExecutor.execute(new Thread(() -> {
+                    log.info("启动匹配小程序线程");
+                    while (true) {
+                        try {
+                            // 超过 5 分钟没有数据,销毁当前线程
+                            MatchVideo matchVideo = matchCrawlerVideoQueue.poll(5, TimeUnit.MINUTES); // 等待最多 5 分钟
+                            log.info("matchCrawlerVideoQueue size={}", matchCrawlerVideoQueue.size());
+                            if (matchVideo == null) {
+                                break; // 退出当前线程
+                            }
+                            processCrawlerMatchContent(matchVideo);
+                        } catch (Exception e) {
+                            log.error("匹配小程序线程异常", e);
+                        }
+                    }
+                    log.info("启动匹配小程序线程结束");
+                    countDownLatch.countDown();
+                }));
+            }
+            List<MatchVideo> matchVideos;
+            Integer id = (Integer) redisTemplate.opsForValue().get("last_match_video_id");
+            if (id != null) {
+                do {
+                    MatchVideoExample example = new MatchVideoExample();
+                    example.createCriteria().andIdGreaterThan(id).andContentStatusEqualTo(1);
+                    example.setOrderByClause("id asc");
+                    Page<Object> page = new Page<>();
+                    page.setCurrentPage(1);
+                    page.setPageSize(1000);
+                    example.setPage(page);
+                    matchVideos = matchVideoMapper.selectByExample(example);
+                    if (CollectionUtils.isEmpty(matchVideos)) {
+                        break;
+                    }
+                    id = matchVideos.get(matchVideos.size() - 1).getId();
+                    matchCrawlerVideoQueue.addAll(matchVideos);
+                } while (!CollectionUtils.isEmpty(matchVideos));
+            }
+            countDownLatch.await();
+        }
+    }
+
+
+    public void processCrawlerMatchContent(MatchVideo matchVideo) {
+        if (matchVideo.getContentStatus() != ContentStatusEnum.KIMI_SUCCESS.getStatusCode()) {
+            return;
+        }
+        boolean existCrawlerVideo = crawlerVideoService.existCrawlerVideo(matchVideo.getContentId());
+        log.info("processCrawlerMatchContent contentId={} existCrawlerVideo={}", matchVideo.getContentId(), existCrawlerVideo);
+        if (!existCrawlerVideo) {
+            //已经存在结果  直接设置
+            if (existMatchVideoResult(matchVideo)) {
+                return;
+            }
+            String lockKey = String.format(CRAWLER_LOCK_KEY, matchVideo.getContentId());
+            String lockValue = UUID.randomUUID().toString();
+            boolean lock = redisLock.tryLock(lockKey, lockValue, 20, TimeUnit.MINUTES);
+            if (lock) {
+                LongArticlesText kimiText = kimiService.getKimiText(matchVideo.getContentId());
+                if (kimiText.getKimiStatus() == 1) {
+                    String rootContentId = getRootContentId(matchVideo.getContentId());
+                    boolean res = crawlerVideoService.addCrawlerVideo(matchVideo.getContentId(), rootContentId, kimiText);
+                    if (res) {
+                        updateStatus(matchVideo.getId(), ContentStatusEnum.CRAWLER_SUCCESS.getStatusCode());
+                    } else {
+                        //匹配失败记录
+                        String countKey = String.format(CRAWLER_FAIL_COUNT_KEY, matchVideo.getContentId());
+                        Integer count = (Integer) redisTemplate.opsForValue().get(countKey);
+                        if (count != null && count >= 3) {
+                            //更新状态为失败
+                            LarkRobotUtil.sendMessage("crawlerVideoService addCrawlerVideo fail contentId=" + matchVideo.getContentId());
+                            log.error("crawlerVideoService addCrawlerVideo fail contentId={}", matchVideo.getContentId());
+                            failMatchVideo(matchVideo);
+                        } else {
+                            if (count == null) {
+                                redisTemplate.opsForValue().set(countKey, 1, 3, TimeUnit.DAYS);
+                            } else {
+                                redisTemplate.opsForValue().set(countKey, count + 1, 3, TimeUnit.DAYS);
+                            }
+                        }
+                    }
+                } else if (kimiText.getKimiStatus() == 2) {
+                    failMatchVideo(matchVideo);
+                }
+                redisLock.unlock(lockKey, lockValue);
+            }
+        } else {
+            //更新状态为爬虫执行完成
+            updateStatus(matchVideo.getId(), ContentStatusEnum.CRAWLER_SUCCESS.getStatusCode());
+        }
+    }
+
+    private String getRootContentId(String contentId) {
+        ProducePlanExeRecordExample example = new ProducePlanExeRecordExample();
+        example.createCriteria().andPlanExeIdEqualTo(contentId);
+        List<ProducePlanExeRecord> producePlanExeRecords = producePlanExeRecordMapper.selectByExample(example);
+        if (!CollectionUtils.isEmpty(producePlanExeRecords)) {
+            String channelContentId = producePlanExeRecords.get(0).getChannelContentId();
+            if (channelContentId == null) {
+                return null;
+            }
+            PromotionSourceExample promotionSourceExample = new PromotionSourceExample();
+            promotionSourceExample.createCriteria().andChannelContentIdEqualTo(channelContentId);
+            List<PromotionSource> promotionSources = promotionSourceMapper.selectByExample(promotionSourceExample);
+            if (CollectionUtils.isEmpty(promotionSources)) {
+                return null;
+            }
+            return promotionSources.get(0).getRootProduceContentId();
+        }
+        return null;
+    }
+
+    public void uploadCrawlerVideo() throws InterruptedException {
+        if (uploadCrawlerVideoPoolExecutor.getCorePoolSize() - uploadCrawlerVideoPoolExecutor.getActiveCount() > 0) {
+            int threadSize = uploadCrawlerVideoPoolExecutor.getCorePoolSize() - uploadCrawlerVideoPoolExecutor.getActiveCount();
+            log.info("threadNum={}", threadSize);
+            CountDownLatch countDownLatch = new CountDownLatch(threadSize);
+            // 启动消费者线程
+            for (int i = 0; i < threadSize; i++) {
+                uploadCrawlerVideoPoolExecutor.execute(new Thread(() -> {
+                    log.info("启动上传小程序视频线程");
+                    while (true) {
+                        try {
+                            // 超过 5 分钟没有数据,销毁当前线程
+                            MatchVideo matchVideo = uploadCrawlerVideoQueue.poll(5, TimeUnit.MINUTES); // 等待最多 5 分钟
+                            if (matchVideo == null) {
+                                break; // 退出当前线程
+                            }
+                            processUploadCrawlerVideo(matchVideo);
+                        } catch (Exception e) {
+                            log.error("上传小程序视频线程异常", e);
+                        }
+                    }
+                    log.info("启动匹配小程序线程结束");
+                    countDownLatch.countDown();
+                }));
+            }
+
+
+            List<MatchVideo> matchVideos;
+            Integer id = (Integer) redisTemplate.opsForValue().get("last_match_video_id");
+            if (id != null) {
+                do {
+                    MatchVideoExample example = new MatchVideoExample();
+                    example.createCriteria().andIdGreaterThan(id)
+                            .andContentStatusEqualTo(ContentStatusEnum.CRAWLER_SUCCESS.getStatusCode());
+                    example.setOrderByClause("id asc");
+                    Page<Object> page = new Page<>();
+                    page.setCurrentPage(1);
+                    page.setPageSize(1000);
+                    example.setPage(page);
+                    matchVideos = matchVideoMapper.selectByExample(example);
+                    if (CollectionUtils.isEmpty(matchVideos)) {
+                        break;
+                    }
+                    id = matchVideos.get(matchVideos.size() - 1).getId();
+                    uploadCrawlerVideoQueue.addAll(matchVideos);
+                } while (!CollectionUtils.isEmpty(matchVideos));
+            }
+            countDownLatch.await();
+        }
+
+    }
+
+    public void processUploadCrawlerVideo(MatchVideo matchVideo) {
+        if (matchVideo.getContentStatus() != ContentStatusEnum.CRAWLER_SUCCESS.getStatusCode()) {
+            return;
+        }
+        boolean existUploadCrawlerVideo = crawlerVideoService.existUploadCrawlerVideo(matchVideo.getContentId());
+        log.info("processUploadCrawlerVideo contentId={} existCrawlerVideo={}", matchVideo.getContentId(), existUploadCrawlerVideo);
+        if (!existUploadCrawlerVideo) {
+            //已经存在结果  直接设置
+            if (existMatchVideoResult(matchVideo)) {
+                return;
+            }
+            String lockKey = String.format(UPLOAD_CRAWLER_LOCK_KEY, matchVideo.getContentId());
+            String lockValue = UUID.randomUUID().toString();
+            boolean lock = redisLock.tryLock(lockKey, lockValue, 10, TimeUnit.MINUTES);
+            if (lock) {
+                boolean res = crawlerVideoService.uploadCrawlerVideo(matchVideo);
+                if (res) {
+                    successMatchVideo(matchVideo);
+                } else {
+                    //上传失败记录
+                    String countKey = String.format(UPLOAD_CRAWLER_FAIL_COUNT_KEY, matchVideo.getContentId());
+                    Integer count = (Integer) redisTemplate.opsForValue().get(countKey);
+                    if (count != null && count >= 3) {
+                        LarkRobotUtil.sendMessage("crawlerVideoService uploadCrawlerVideo fail contentId=" + matchVideo.getContentId());
+                        log.error("crawlerVideoService uploadCrawlerVideo fail contentId={}", matchVideo.getContentId());
+                        //更新状态为失败
+                        failMatchVideo(matchVideo);
+                    } else {
+                        if (count == null) {
+                            redisTemplate.opsForValue().set(countKey, 1, 3, TimeUnit.DAYS);
+                        } else {
+                            redisTemplate.opsForValue().set(countKey, count + 1, 3, TimeUnit.DAYS);
+                        }
+                    }
+                }
+                redisLock.unlock(lockKey, lockValue);
+            }
+        } else {
+            //更新状态为etl执行完成 并更新匹配成功状态
+            successMatchVideo(matchVideo);
+        }
+    }
+
+    public void publishCrawlerVideo() {
+        List<MatchVideo> matchVideos;
+        Integer id = (Integer) redisTemplate.opsForValue().get("last_match_video_id");
+        if (id != null) {
+            do {
+                MatchVideoExample example = new MatchVideoExample();
+                example.createCriteria().andIdGreaterThan(id)
+                        .andContentStatusEqualTo(ContentStatusEnum.SUCCESS_3.getStatusCode())
+                        .andPublishFlagEqualTo(PublicFlagEnum.PUBLIC.getStatusCode());
+                example.setOrderByClause("id asc");
+                Page<Object> page = new Page<>();
+                page.setCurrentPage(1);
+                page.setPageSize(1000);
+                example.setPage(page);
+                matchVideos = matchVideoMapper.selectByExample(example);
+                if (CollectionUtils.isEmpty(matchVideos)) {
+                    break;
+                }
+                id = matchVideos.get(matchVideos.size() - 1).getId();
+                for (MatchVideo matchVideo : matchVideos) {
+                    processPublishCrawlerVideo(matchVideo);
+                }
+            } while (!CollectionUtils.isEmpty(matchVideos));
+        }
+    }
+
+    public void processPublishCrawlerVideo(MatchVideo matchVideo) {
+        List<VideoDetail> videoDetails = contentService.getPublishVideoDetail(matchVideo, PublicFlagEnum.PUBLIC.getStatusCode(), null);
+        if (CollectionUtils.isEmpty(videoDetails)) {
+            return;
+        }
+        JSONArray response = getResponse(videoDetails);
+        matchVideo.setContentStatus(ContentStatusEnum.SUCCESS_4.getStatusCode());
+        matchVideo.setResponse(response.toJSONString());
+        matchVideoMapper.updateByPrimaryKeySelective(matchVideo);
+    }
+
+    private JSONArray getResponse(List<VideoDetail> videoDetails) {
+        JSONArray jsonArray = new JSONArray();
+        for (VideoDetail videoDetail : videoDetails) {
+            //生成match表json数据
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("uid", videoDetail.getUid());
+            jsonObject.put("source", videoDetail.getSource());
+            jsonObject.put("kimiTitle", videoDetail.getKimiTitle());
+            jsonObject.put("videoId", videoDetail.getVideoId());
+            jsonObject.put("videoCover", videoDetail.getShareImgPath());
+            jsonObject.put("videoPath", videoDetail.getVideoPath());
+            jsonObject.put("videoOss", videoDetail.getVideoOss());
+            jsonArray.add(jsonObject);
+        }
+        return jsonArray;
+    }
+
+    public void updateStatus(Integer id, Integer status) {
+        MatchVideo matchVideo = new MatchVideo();
+        matchVideo.setId(id);
+        matchVideo.setContentStatus(status);
+        matchVideoMapper.updateByPrimaryKeySelective(matchVideo);
+    }
+
+    private boolean existMatchVideoResult(MatchVideo matchVideo) {
+
+        //先查询缓存  缓存中存在直接返回结果
+        String key = String.format(EXIST_RESULT_KEY, matchVideo.getContentId());
+        Integer status = (Integer) redisTemplate.opsForValue().get(key);
+        if (status != null) {
+            updateStatus(matchVideo.getId(), status);
+            return true;
+        }
+
+        //查询文章状态 查询到更新缓存
+        LongArticlesTextExample example = new LongArticlesTextExample();
+        example.createCriteria().andContentIdEqualTo(matchVideo.getContentId());
+        List<LongArticlesText> longArticlesTexts = longArticlesTextMapper.selectByExample(example);
+        if (CollectionUtils.isEmpty(longArticlesTexts)) {
+            return false;
+        }
+        LongArticlesText longArticlesText = longArticlesTexts.get(0);
+        if (ContentResultStatusEnum.SUCCESS.getStatus() == longArticlesText.getResultStatus()) {
+            updateStatus(matchVideo.getId(), ContentStatusEnum.SUCCESS_3.getStatusCode());
+            redisTemplate.opsForValue().set(key, ContentStatusEnum.SUCCESS_3.getStatusCode(), 1, TimeUnit.DAYS);
+            return true;
+        }
+        if (ContentResultStatusEnum.FAIL.getStatus() == longArticlesText.getResultStatus()) {
+            updateStatus(matchVideo.getId(), ContentStatusEnum.ERROR_99.getStatusCode());
+            redisTemplate.opsForValue().set(key, ContentStatusEnum.ERROR_99.getStatusCode(), 1, TimeUnit.DAYS);
+            return true;
+        }
+        return false;
+    }
+
+    private void addStartProcessingTime(String contentId) {
+        LongArticlesTextExample example = new LongArticlesTextExample();
+        example.createCriteria().andContentIdEqualTo(contentId);
+        List<LongArticlesText> longArticlesTexts = longArticlesTextMapper.selectByExample(example);
+        if (CollectionUtils.isEmpty(longArticlesTexts)) {
+            return;
+        }
+        LongArticlesText longArticlesText = longArticlesTexts.get(0);
+        if (longArticlesText.getStartProcessingTime() == null) {
+            LongArticlesText updateLongArticlesText = new LongArticlesText();
+            updateLongArticlesText.setContentId(contentId);
+            updateLongArticlesText.setStartProcessingTime(new Date());
+            longArticlesTextMapper.updateByPrimaryKeySelective(updateLongArticlesText);
+        }
+    }
+
+    private void updateResultStatus(String contentId, Integer resultStatus) {
+        LongArticlesText updateLongArticlesText = new LongArticlesText();
+        updateLongArticlesText.setContentId(contentId);
+        updateLongArticlesText.setResultStatus(resultStatus);
+        longArticlesTextMapper.updateByPrimaryKeySelective(updateLongArticlesText);
+
+    }
+
+    private void failMatchVideo(MatchVideo matchVideo) {
+        updateStatus(matchVideo.getId(), ContentStatusEnum.ERROR_99.getStatusCode());
+        updateResultStatus(matchVideo.getContentId(), ContentResultStatusEnum.FAIL.getStatus());
+    }
+
+    private void successMatchVideo(MatchVideo matchVideo) {
+        updateStatus(matchVideo.getId(), ContentStatusEnum.SUCCESS_3.getStatusCode());
+        updateResultStatus(matchVideo.getContentId(), ContentResultStatusEnum.SUCCESS.getStatus());
+    }
+}
+
+
+

+ 31 - 6
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/PlanAccountServiceImpl.java

@@ -1,11 +1,11 @@
 package com.tzld.piaoquan.longarticle.service.local.impl;
 
-import com.tzld.piaoquan.longarticle.dao.mapper.PlanAccountMapper;
-import com.tzld.piaoquan.longarticle.dao.mapper.PlanMapper;
-import com.tzld.piaoquan.longarticle.model.po.Plan;
-import com.tzld.piaoquan.longarticle.model.po.PlanAccount;
-import com.tzld.piaoquan.longarticle.model.po.PlanAccountExample;
-import com.tzld.piaoquan.longarticle.model.po.PlanExample;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.PlanAccountMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.PlanMapper;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.Plan;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccount;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccountExample;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PlanExample;
 import com.tzld.piaoquan.longarticle.service.local.PlanAccountService;
 import com.tzld.piaoquan.longarticle.utils.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,6 +24,14 @@ public class PlanAccountServiceImpl implements PlanAccountService {
     @Autowired
     private PlanMapper planMapper;
 
+    public void addPlanAccount(PlanAccount planAccount) {
+        planAccountMapper.insertSelective(planAccount);
+    }
+
+    public void updatePlanAccount(PlanAccount planAccount) {
+        planAccountMapper.updateByPrimaryKeySelective(planAccount);
+    }
+
     public void saveOrUpdatePlanAccount(PlanAccount planAccount) {
         PlanAccountExample example = new PlanAccountExample();
         example.createCriteria().andAccountIdEqualTo(planAccount.getAccountId())
@@ -75,6 +83,23 @@ public class PlanAccountServiceImpl implements PlanAccountService {
         return planAccountMapper.selectByExample(example);
     }
 
+    public List<PlanAccount> getNormalPlanAccount(String accountId) {
+        PlanAccountExample example = new PlanAccountExample();
+        example.createCriteria().andCreateTimeGreaterThan(DateUtil.getThatDayDate())
+                .andAccountIdEqualTo(accountId)
+                .andIsDeleteEqualTo(0).andPublishOpenFlagEqualTo(1);
+        return planAccountMapper.selectByExample(example);
+    }
+
+    @Override
+    public List<PlanAccount> getSpecialPlanAccount(String accountId) {
+        PlanAccountExample example = new PlanAccountExample();
+        example.createCriteria().andCreateTimeGreaterThan(DateUtil.getThatDayDate())
+                .andAccountIdEqualTo(accountId)
+                .andIsSpecialSettingEqualTo(1);
+        return planAccountMapper.selectByExample(example);
+    }
+
     public List<PlanAccount> getPlanAccount(String planId, String accountId) {
         PlanAccountExample example = new PlanAccountExample();
         example.createCriteria().andCreateTimeGreaterThan(DateUtil.getThatDayDate())

+ 3 - 4
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/PublicContentServiceImpl.java

@@ -1,10 +1,9 @@
 package com.tzld.piaoquan.longarticle.service.local.impl;
 
-import com.tzld.piaoquan.longarticle.dao.mapper.PublishContentMapper;
-import com.tzld.piaoquan.longarticle.dao.mapper.PublishMiniprogramMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.PublishContentMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.PublishMiniprogramMapper;
 import com.tzld.piaoquan.longarticle.model.dto.PublishArticleData;
-import com.tzld.piaoquan.longarticle.model.po.*;
-import com.tzld.piaoquan.longarticle.model.vo.MatchMiniprogramStatusParam;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.*;
 import com.tzld.piaoquan.longarticle.service.remote.AigcService;
 import com.tzld.piaoquan.longarticle.utils.DateUtil;
 import lombok.extern.slf4j.Slf4j;

+ 5 - 5
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/RootSourceServiceImpl.java

@@ -1,10 +1,10 @@
 package com.tzld.piaoquan.longarticle.service.local.impl;
 
-import com.tzld.piaoquan.longarticle.dao.mapper.RootSourceMapper;
-import com.tzld.piaoquan.longarticle.model.po.PlanAccount;
-import com.tzld.piaoquan.longarticle.model.po.PublishContent;
-import com.tzld.piaoquan.longarticle.model.po.PublishMiniprogram;
-import com.tzld.piaoquan.longarticle.model.po.RootSource;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.RootSourceMapper;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccount;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PublishContent;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PublishMiniprogram;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.RootSource;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/remote/VideoService.java

@@ -1,7 +1,7 @@
 package com.tzld.piaoquan.longarticle.service.remote;
 
 import com.tzld.piaoquan.longarticle.model.bo.VideoDetail;
-import com.tzld.piaoquan.longarticle.model.po.PublishMiniprogram;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PublishMiniprogram;
 
 public interface VideoService {
 

+ 3 - 3
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/remote/impl/VideoServiceImpl.java

@@ -4,10 +4,10 @@ import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
-import com.tzld.piaoquan.longarticle.dao.mapper.OffVideoMapper;
+import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.OffVideoMapper;
 import com.tzld.piaoquan.longarticle.model.bo.VideoDetail;
-import com.tzld.piaoquan.longarticle.model.po.OffVideo;
-import com.tzld.piaoquan.longarticle.model.po.PublishMiniprogram;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.OffVideo;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.PublishMiniprogram;
 import com.tzld.piaoquan.longarticle.service.remote.VideoService;
 import com.tzld.piaoquan.longarticle.utils.HttpClientUtil;
 import com.tzld.piaoquan.longarticle.utils.HttpPoolClientUtil;

+ 31 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/ConfigUtil.java

@@ -0,0 +1,31 @@
+package com.tzld.piaoquan.longarticle.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.core.io.ClassPathResource;
+
+import java.io.IOException;
+import java.util.Properties;
+
+@Slf4j
+public class ConfigUtil {
+
+    private static Properties properties = readProperties("application.properties");
+
+    private static Properties readProperties(String... confFile) {
+        final Properties properties = new Properties();
+        try {
+            for (String path : confFile) {
+                final ClassPathResource resource = new ClassPathResource(path);
+                properties.load(resource.getInputStream());
+            }
+        } catch (IOException e) {
+            log.error("ConfigUtil readProperties error", e);
+        }
+        return properties;
+    }
+
+    public static String getConfig(String key) {
+        return properties.getProperty(key);
+    }
+
+}

+ 7 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/DateUtil.java

@@ -34,4 +34,11 @@ public class DateUtil {
         return dateFormat.format(today);
     }
 
+    public static String getTomorrowDateString() {
+        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate tomorrow = LocalDate.now().minusDays(-1);
+        return dateFormat.format(tomorrow);
+    }
+
+
 }

+ 1 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/HttpPoolClientUtil.java

@@ -164,7 +164,7 @@ public class HttpPoolClientUtil {
      * @param retryCount     重试次数
      * @return httpclient instance
      */
-    protected static HttpPoolClientUtil create(int connectTimeout, int socketTimeout, int maxPerRoute, int maxTotal, int retryCount, int connectionWaitTimeout) {
+    public static HttpPoolClientUtil create(int connectTimeout, int socketTimeout, int maxPerRoute, int maxTotal, int retryCount, int connectionWaitTimeout) {
         try {
             RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(connectTimeout).setSocketTimeout(socketTimeout).setConnectionRequestTimeout(connectionWaitTimeout).build();
             CloseableHttpClient client = HttpClientBuilder.create()

+ 85 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/DeepSeekAPI.java

@@ -0,0 +1,85 @@
+package com.tzld.piaoquan.longarticle.utils.other;
+
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class DeepSeekAPI {
+
+    /**
+     * 聊天端点
+     */
+    static String chatEndpoint = "https://api.deepseek.com/chat/completions";
+    /**
+     * api密匙
+     */
+    static String apiKey = "Bearer sk-30d00642c8b643cab3f54e5672f651c9";
+
+    /**
+     * 发送消息
+     *
+     * @param txt 内容
+     * @return {@link String}
+     */
+    public static String chat(String txt) {
+        return chat(txt, null);
+    }
+
+    public static String chat(String txt, Map<String, String> responseFormat) {
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("model", "deepseek-chat");
+        if (!CollectionUtils.isEmpty(responseFormat)) {
+            paramMap.put("response_format", responseFormat);
+        }
+        List<Map<String, String>> dataList = new ArrayList<>();
+        dataList.add(new HashMap<String, String>() {{
+            put("role", "user");
+            put("content", txt);
+        }});
+        paramMap.put("messages", dataList);
+        JSONObject message = null;
+        try {
+            String body = HttpRequest.post(chatEndpoint)
+                    .header("Authorization", apiKey)
+                    .header("Content-Type", "application/json")
+                    .body(JSONObject.toJSONString(paramMap))
+                    .execute()
+                    .body();
+            JSONObject jsonObject = JSONObject.parseObject(body);
+            JSONArray choices = jsonObject.getJSONArray("choices");
+            JSONObject result = choices.getJSONObject(0);
+            message = result.getJSONObject("message");
+            return message.getString("content");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+
+    public static void main(String[] args) {
+        String title = "63岁大爷退休金13000,再婚娶37岁女护士,新婚当晚,他看到她的肚子,瞬间晕倒在地";
+        String single_title_prompt = "请将以上标题改写成适合小程序点击和传播的小程序标题,小程序标题的写作规范如下,请学习后进行小程序标题的编写。直接输出最终的小程序标题\n" +
+                "        小程序标题写作规范:\n" +
+                "        1.要点前置:将最重要的信息放在标题的最前面,以快速吸引读者的注意力。例如,“5月一辈子同学,三辈子亲,送给我的老同学,听哭无数人!”中的“5月”和“一辈子同学,三辈子亲”都是重要的信息点。\n" +
+                "        2.激发情绪:使用能够触动人心的语言,激发读者的情感共鸣。如“只剩两人同学聚会,看后感动落泪。”使用“感动落泪”激发读者的同情和怀旧情绪。\n" +
+                "        3.使用数字和特殊符号:数字可以提供具体性,而特殊符号如“\uD83D\uDD34”、“\uD83D\uDE04”、“\uD83D\uDD25”等可以吸引视觉注意力,增加点击率。\n" +
+                "        4.悬念和好奇心:创建悬念或提出问题,激发读者的好奇心。例如,“太神奇了!长江水位下降,重庆出现惊奇一幕!”中的“惊奇一幕”就是一个悬念。\n" +
+                "        5.名人效应:如果内容与知名人士相关,提及他们的名字可以增加标题的吸引力。\n" +
+                "        6.社会价值观:触及读者的文化和社会价值观,如家庭、友情、国家荣誉等。\n" +
+                "        7.标点符号的运用:使用感叹号、问号等标点来增强语气和情感表达。\n" +
+                "        8.直接的语言:使用直白、口语化的语言,易于理解,如“狗屁股,笑死我了!”。\n" +
+                "        9.热点人物或事件:提及当前的热点人物或事件,利用热点效应吸引读者。\n" +
+                "        10.字数适中:保持标题在10-20个字之间,既不过长也不过短,确保信息的完整性和吸引力。\n" +
+                "        11.适当的紧迫感:使用“最新”、“首次”、“紧急”等词汇,创造一种紧迫感,促使读者立即行动。\n" +
+                "        12.情感或价值诉求:使用如“感动”、“泪目”、“经典”等词汇,直接与读者的情感或价值观产生共鸣。\n" +
+                "        避免误导:确保标题准确反映内容,避免夸大或误导读者。";
+        System.out.println(chat(title + "\n" + single_title_prompt));
+    }
+}

+ 119 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/DouyinSearch.java

@@ -0,0 +1,119 @@
+package com.tzld.piaoquan.longarticle.utils.other;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.piaoquan.longarticle.common.constants.CrawlerConstant;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideo;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class DouyinSearch {
+
+    public static CrawlerVideo dyVideoProduce(JSONObject jsonObject) {
+        CrawlerVideo crawlerVideo = new CrawlerVideo();
+        crawlerVideo.setPlatform(jsonObject.getString("platform"));
+        crawlerVideo.setVideoTitle(jsonObject.getString("title"));
+        crawlerVideo.setOutVideoId(jsonObject.getString("channel_content_id"));
+        if (jsonObject.getLong("publish_timestamp") != null) {
+            crawlerVideo.setPublishTime(new Date(jsonObject.getLong("publish_timestamp")));
+        }
+        crawlerVideo.setVideoUrl(jsonObject.getJSONArray("video_url_list").getJSONObject(0).getString("video_url"));
+        crawlerVideo.setCoverUrl(jsonObject.getJSONArray("image_url_list").getJSONObject(0).getString("image_url"));
+        crawlerVideo.setPlayCount(jsonObject.getInteger("play_count"));
+        crawlerVideo.setLikeCount(jsonObject.getInteger("like_count"));
+        crawlerVideo.setDuration(jsonObject.getJSONArray("video_url_list").getJSONObject(0).getInteger("video_duration"));
+        crawlerVideo.setScore(jsonObject.getFloat("score"));
+        return crawlerVideo;
+    }
+
+    public static void main(String[] args) {
+        List<String> sensitiveWords = new ArrayList<>();
+        List<JSONObject> list = douyinSearch("【25万手术费】安徽男子垫付后遭拒还,法院判决大快人心!\uD83D\uDD34", sensitiveWords, "");
+        for (JSONObject jsonObject : list) {
+            System.out.println(jsonObject);
+            CrawlerVideo crawlerVideo = dyVideoProduce(jsonObject);
+            System.out.println(crawlerVideo);
+        }
+    }
+
+    public static List<JSONObject> douyinSearch(String keyword, List<String> sensitiveWords, String traceId) {
+        String url = "http://crawler-cn.aiddit.com/crawler/dou_yin/detail";
+        JSONObject payload = new JSONObject();
+        payload.put("keyword", keyword);
+        payload.put("category", "全部");
+        payload.put("period", "近90天");
+        payload.put("content_modal", "视频");
+        payload.put("cursor", "");
+
+        HttpResponse response = HttpRequest.post(url)
+                .header("Content-Type", "application/json")
+                .body(payload.toString())
+                .timeout(60000) // 设置超时时间
+                .execute();
+
+        List<JSONObject> resultList = new ArrayList<>();
+
+        try {
+            JSONObject jsonResponse = JSONObject.parseObject(response.body());
+            JSONArray dtList = jsonResponse.getJSONObject("data").getJSONArray("data");
+            for (int i = 0; i < dtList.size(); i++) {
+                JSONObject obj = dtList.getJSONObject(i);
+                try {
+                    String title = obj.getString("video_desc");
+                    String videoId = obj.getString("video_id");
+                    int duration = obj.getInteger("duration");
+
+                    if (sensitiveFlag(sensitiveWords, title) && duration < CrawlerConstant.MAX_VIDEO_DURATION * 1000) {
+                        JSONObject res = douyinDetail(videoId);
+                        if (res != null) {
+                            resultList.add(res);
+                        }
+                    }
+                } catch (Exception e) {
+                    System.out.println(e.getMessage());
+                    // 处理异常
+                }
+            }
+            return resultList;
+        } catch (Exception e) {
+            return new ArrayList<>();
+        }
+    }
+
+    public static JSONObject douyinDetail(String videoId) {
+        String url = "http://crawler-cn.aiddit.com/crawler/dou_yin/detail";
+        JSONObject payload = new JSONObject();
+        payload.put("content_id", videoId);
+
+        HttpResponse response = HttpRequest.post(url)
+                .header("Content-Type", "application/json")
+                .body(payload.toString())
+                .timeout(60000) // 设置超时时间
+                .execute();
+
+        JSONObject videoInfo = JSONObject.parseObject(response.body()).getJSONObject("data").getJSONObject("data");
+        if ("note".equals(videoInfo.getString("content_type"))) {
+            return null;
+        } else {
+            return videoInfo;
+        }
+    }
+
+    private static boolean sensitiveFlag(List<String> sensitiveWords, String title) {
+        // 实现敏感词检查逻辑
+        for (String word : sensitiveWords) {
+            if (title.contains(word)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+}
+
+

+ 170 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/HkspSearch.java

@@ -0,0 +1,170 @@
+package com.tzld.piaoquan.longarticle.utils.other;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.piaoquan.longarticle.common.constants.CrawlerConstant;
+import com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideo;
+import lombok.extern.slf4j.Slf4j;
+
+
+import java.io.IOException;
+import java.net.*;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.*;
+
+@Slf4j
+public class HkspSearch {
+
+
+    public static CrawlerVideo baiduVideoProduce(JSONObject jsonObject) {
+        CrawlerVideo crawlerVideo = new CrawlerVideo();
+        crawlerVideo.setPlatform(jsonObject.getString("platform"));
+        crawlerVideo.setVideoTitle(jsonObject.getString("title"));
+        crawlerVideo.setOutVideoId(jsonObject.getString("id"));
+        if (jsonObject.getLong("publish_time") != null) {
+            crawlerVideo.setPublishTime(new Date(jsonObject.getLong("publish_time") * 1000));
+        }
+        crawlerVideo.setVideoUrl(jsonObject.getString("playurl"));
+        crawlerVideo.setCoverUrl(jsonObject.getString("poster"));
+        crawlerVideo.setLikeCount(jsonObject.getInteger("like") == null ? 0 : jsonObject.getInteger("like"));
+        crawlerVideo.setPlayCount(jsonObject.getInteger("playcnt"));
+        crawlerVideo.setDuration(jsonObject.getInteger("duration"));
+        return crawlerVideo;
+    }
+
+    public static void main(String[] args) {
+        // 这行代码是身份验证的关键配置,不然身份验证不起作用
+        System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
+        // 身份验证
+        Authenticator.setDefault(
+                new Authenticator() {
+                    public PasswordAuthentication getPasswordAuthentication() {
+                        return new PasswordAuthentication(
+                                "t11983523373311", "mtuhdr2z".toCharArray());
+                    }
+                }
+        );
+        List<String> sensitiveWords = new ArrayList<>();
+        List<JSONObject> list = hkspSearch("代际沟通,家庭和谐,老年人适应", sensitiveWords, "");
+        for (JSONObject jsonObject : list) {
+            CrawlerVideo crawlerVideo = baiduVideoProduce(jsonObject);
+            System.out.println(jsonObject);
+            System.out.println(crawlerVideo);
+        }
+    }
+
+    public static List<JSONObject> hkspSearch(String key, List<String> sensitiveWords, String traceId) {
+        try {
+            long timestampMilliseconds = System.currentTimeMillis();
+            String url = "https://haokan.baidu.com/haokan/ui-search/pc/search/video";
+            String encodedKey = URLEncoder.encode(key, "UTF-8");
+            String strings = String.format("%d_%s_%d_%d_%d", 1, encodedKey, 10, timestampMilliseconds, 1);
+            String sign = md5(strings);
+
+            JSONObject params = new JSONObject();
+            params.put("pn", 1);
+            params.put("rn", 10);
+            params.put("type", "video");
+            params.put("query", key);
+            params.put("sign", sign);
+            params.put("version", 1);
+            params.put("timestamp", timestampMilliseconds);
+
+            String base64String = Base64.getEncoder().encodeToString(UUID.randomUUID().toString().getBytes());
+            HttpResponse response = HttpRequest.get(url)
+                    .header("authority", "haokan.baidu.com")
+                    .header("accept", "*/*")
+                    .header("accept-language", "zh,en;q=0.9,zh-CN;q=0.8")
+                    .header("cookie", "BIDUPSID=" + base64String)
+                    .header("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36")
+                    .header("x-requested-with", "xmlhttprequest")
+                    .timeout(120000) // 设置超时时间
+                    .setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("l901.kdltps.com", 15818)))
+                    .form(params)
+                    .execute();
+
+            List<JSONObject> resultList = new ArrayList<>();
+            System.out.println(response.body());
+            JSONObject jsonResponse = JSONObject.parseObject(response.body());
+            JSONArray dataList = jsonResponse.getJSONObject("data").getJSONArray("list");
+
+            for (int i = 0; i < dataList.size(); i++) {
+                JSONObject data = dataList.getJSONObject(i);
+                try {
+                    String videoId = data.getString("vid");
+                    String title = data.getString("title");
+                    int duration = parseDuration(data.getString("duration"));
+
+                    if (sensitiveFlag(sensitiveWords, title) && duration <= CrawlerConstant.MAX_VIDEO_DURATION) {
+                        JSONObject res = getVideoDetail(videoId);
+                        if (res != null) {
+                            resultList.add(res);
+                        }
+                    }
+                } catch (Exception e) {
+                    // 处理异常
+                }
+            }
+            return resultList;
+        } catch (Exception e) {
+            return new ArrayList<>();
+        }
+    }
+
+    private static int parseDuration(String duration) {
+        String[] parts = duration.split(":");
+        return Integer.parseInt(parts[0]) * 60 + Integer.parseInt(parts[1]);
+    }
+
+    private static String md5(String input) {
+        try {
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            byte[] messageDigest = md.digest(input.getBytes());
+            StringBuilder sb = new StringBuilder();
+            for (byte b : messageDigest) {
+                sb.append(String.format("%02x", b));
+            }
+            return sb.toString();
+        } catch (NoSuchAlgorithmException e) {
+            log.error("HkspSearch md5 error", e);
+        }
+        return "";
+    }
+
+    private static boolean sensitiveFlag(List<String> sensitiveWords, String title) {
+        // 实现敏感词检查逻辑
+        for (String word : sensitiveWords) {
+            if (title.contains(word)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    public static JSONObject getVideoDetail(String videoId) {
+        String url = "https://haokan.baidu.com/v";
+        JSONObject params = new JSONObject();
+        params.put("vid", videoId);
+        params.put("_format", "json");
+
+        String base64String = Base64.getEncoder().encodeToString(UUID.randomUUID().toString().getBytes());
+        HttpResponse response = HttpRequest.get(url)
+                .header("Accept", "*/*")
+                .header("cookie", "BIDUPSID=" + base64String)
+                .header("Accept-Language", "en,zh;q=0.9,zh-CN;q=0.8")
+                .header("Cache-Control", "no-cache")
+                .header("Connection", "keep-alive")
+                .header("Content-Type", "application/x-www-form-urlencoded")
+                .header("Referer", "https://haokan.baidu.com")
+                .header("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36")
+                .timeout(120000) // 设置超时时间
+                .form(params)
+                .setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("l901.kdltps.com", 15818)))
+                .execute();
+        return JSONObject.parseObject(response.body()).getJSONObject("data").getJSONObject("apiData").getJSONObject("curVideoMeta");
+    }
+
+}

+ 91 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/KimiAPI.java

@@ -0,0 +1,91 @@
+package com.tzld.piaoquan.longarticle.utils.other;
+
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+public class KimiAPI {
+
+    /**
+     * 聊天端点
+     */
+    static String chatEndpoint = "https://api.moonshot.cn/v1/chat/completions";
+    /**
+     * api密匙
+     */
+    static String apiKey = "Bearer sk-5DqYCa88kche6nwIWjLE1p4oMm8nXrR9kQMKbBolNAWERu7q";
+
+    /**
+     * 发送消息
+     *
+     * @param txt 内容
+     * @return {@link String}
+     */
+    public static String chat(String txt) {
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("model", "moonshot-v1-8k");
+        List<Map<String, String>> dataList = new ArrayList<>();
+        dataList.add(new HashMap<String, String>() {{
+            put("role", "user");
+            put("content", txt);
+        }});
+        paramMap.put("messages", dataList);
+        JSONObject message = null;
+        try {
+            String body = HttpRequest.post(chatEndpoint)
+                    .header("Authorization", apiKey)
+                    .header("Content-Type", "application/json")
+                    .body(JSONObject.toJSONString(paramMap))
+                    .timeout(60000)
+                    .execute()
+                    .body();
+            JSONObject jsonObject = JSONObject.parseObject(body);
+            JSONArray choices = jsonObject.getJSONArray("choices");
+            JSONObject result = choices.getJSONObject(0);
+            message = result.getJSONObject("message");
+            return message.getString("content");
+        } catch (Exception e) {
+            log.error("KimiAPI chat error", e);
+        }
+        return "";
+    }
+
+    public static String jsonChat(String txt) {
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("model", "moonshot-v1-8k");
+        List<Map<String, String>> dataList = new ArrayList<>();
+        dataList.add(new HashMap<String, String>() {{
+            put("role", "user");
+            put("content", txt);
+        }});
+        paramMap.put("messages", dataList);
+        Map<String, String> responseFormat = new HashMap<>();
+        responseFormat.put("type", "json_object");
+        paramMap.put("response_format", responseFormat);
+        JSONObject message = null;
+        try {
+            String body = HttpRequest.post(chatEndpoint)
+                    .header("Authorization", apiKey)
+                    .header("Content-Type", "application/json")
+                    .body(JSONObject.toJSONString(paramMap))
+                    .timeout(60000)
+                    .execute()
+                    .body();
+            JSONObject jsonObject = JSONObject.parseObject(body);
+            JSONArray choices = jsonObject.getJSONArray("choices");
+            JSONObject result = choices.getJSONObject(0);
+            message = result.getJSONObject("message");
+            return message.getString("content");
+        } catch (Exception e) {
+            log.error("KimiAPI chat error", e);
+        }
+        return "";
+    }
+}

+ 64 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/NlpUtils.java

@@ -0,0 +1,64 @@
+package com.tzld.piaoquan.longarticle.utils.other;
+
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.util.*;
+
+@Slf4j
+public class NlpUtils {
+
+    private static final String nlp_base_url = "http://61.48.133.26:6060/nlp";
+
+    private static final String nlp_aliyun_url = "http://47.98.136.48:6060/nlp";
+
+    public static void main(String[] args) {
+        String title1 = "在女儿出嫁的那神圣时刻,交接仪式上的父亲。。。";
+        String title2 = "转载:““和老婆置气,我去女儿家避难。女。。。";
+        String title3 = "“姨夫”和“姑父”哪个亲为何一个是父亲的父,一个是丈夫的夫";
+        List<String> titleList = new ArrayList<>();
+        titleList.add(title1);
+        titleList.add(title2);
+        titleList.add(title3);
+        System.out.println(nlpTitleSimilarity(nlp_base_url, "这是我的女儿", titleList));
+    }
+
+    public static List<Float> baseNlpTitleSimilarity(String oriTitle, List<String> titleList){
+        return nlpTitleSimilarity(nlp_base_url, oriTitle, titleList);
+    }
+
+    public static List<Float> aliyunNlpTitleSimilarity(String oriTitle, List<String> titleList){
+        return nlpTitleSimilarity(nlp_aliyun_url, oriTitle, titleList);
+    }
+
+    public static List<Float> nlpTitleSimilarity(String url, String oriTitle, List<String> titleList) {
+        List<String> oriTitles = Collections.singletonList(oriTitle);
+
+        JSONObject param = new JSONObject();
+        JSONObject data = new JSONObject();
+        data.put("text_list_a", oriTitles);
+        data.put("text_list_b", titleList);
+        param.put("data", data);
+        param.put("function", "similarities_cross");
+        param.put("use_cache", false);
+        try {
+            String body = HttpRequest.post(url)
+                    .header("Content-Type", "application/json")
+                    .body(JSONObject.toJSONString(param))
+                    .execute()
+                    .body();
+            JSONObject jsonObject = JSONObject.parseObject(body);
+            JSONArray scoreListList = jsonObject.getJSONArray("score_list_list").getJSONArray(0);
+            if (!CollectionUtils.isEmpty(scoreListList)) {
+                return scoreListList.toJavaList(Float.class);
+            }
+        } catch (Exception e) {
+            log.error("NlpUtils nlpTitleSimilarity error");
+        }
+        return null;
+    }
+}

+ 39 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/OSSUploader.java

@@ -0,0 +1,39 @@
+package com.tzld.piaoquan.longarticle.utils.other;
+
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.model.PutObjectRequest;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.File;
+import java.util.UUID;
+
+@Slf4j
+public class OSSUploader {
+
+    private static final String ACCESS_KEY_ID = "LTAIP6x1l3DXfSxm"; // 填写您的 Access Key ID
+    private static final String ACCESS_KEY_SECRET = "KbTaM9ars4OX3PMS6Xm7rtxGr1FLon"; // 填写您的 Access Key Secret
+    private static final String ENDPOINT = "oss-cn-hangzhou.aliyuncs.com"; // OSS 访问域名
+    private static final String BUCKET_NAME = "art-pubbucket"; // 存储空间名称
+
+    public static String uploadToOSS(String localVideoPath, String downloadType) {
+        String ossVideoKey = String.format("long_articles/%s/%s", downloadType, UUID.randomUUID().toString());
+
+        // 创建 OSSClient 实例
+        OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
+
+        try {
+            // 创建上传请求
+            PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET_NAME, ossVideoKey, new File(localVideoPath));
+            // 上传文件
+            ossClient.putObject(putObjectRequest);
+            return ossVideoKey;
+        } catch (Exception e) {
+            log.error("OSSUploader uploadToOSS error", e);
+            return null;
+        } finally {
+            // 关闭 OSSClient
+            ossClient.shutdown();
+        }
+    }
+}

+ 137 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/OpenAIUtils.java

@@ -0,0 +1,137 @@
+package com.tzld.piaoquan.longarticle.utils.other;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class OpenAIUtils {
+
+    public static void main(String[] args) {
+        System.out.println(makeKimiTitleSafer("历史上真实的王莽,还真不是传说中的那样"));
+//        System.out.println(kimiMining("在这个充满喜悦和庆祝的日子里,我决定为弟弟的婚礼准备一份特别的礼物——30000元作为结婚礼金。\n" +
+//                "这笔钱对我和我的家庭来说不算小数目,但在我看来,能为弟弟的新生活贡献一份力量,这份心意远远超过了金钱的价值。\n" +
+//                "我和丈夫商量过后,都认为这是一个表达我们祝福和支持的好办法。\n" +
+//                "婚礼当天,一切都安排得井井有条。喜悦和幸福的气氛弥漫在空气中,我看着弟弟和他的新娘幸福地站在一起,心中充满了欣慰。\n" +
+//                "然而,在这一天中,我意外听到了一段对话,这段对话让我重新审视了家庭成员之间的关系和支持的真正含义。\n" +
+//                "当我上厕所时,无意中经过一个小房间,听到了里面传出的声音。那是弟弟和母亲的对话。\n" +
+//                "原来,弟弟在担心,担心这份厚重的礼金会给我和我的丈夫带来经济上的负担。\n" +
+//                "他在对母亲说,他宁愿没有这笔钱,也不愿看到我们因此受到影响。这番话让我站在门外的脚步凝固了,心中充满了复杂的情感。\n" +
+//                "\n" +
+//                "我感动于弟弟的体贴和关心,但同时也感到了一丝悲哀。我们之间的爱和支持,难道仅仅局限于物质的给予吗?我对支持的理解,是否太过狭隘,忽略了弟弟真正的感受和需求?\n" +
+//                "泪水在眼眶中打转,我没有进去打扰他们,而是默默地拉起我的丈夫,决定离开宴会,我需要时间来消化这突如其来的情感波动。\n" +
+//                "回到家后,我花了很长时间去思考和反思。我意识到,作为家庭成员,我们之间的支持不应该成为彼此的负担。\n" +
+//                "真正的支持,应该是基于对彼此需求的理解和尊重,而不仅仅是物质上的帮助。\n" +
+//                "\n" +
+//                "于是,我和弟弟进行了一次深入的交谈。我向他解释了我给予礼金的初衷,同时也表达了我对他顾虑的理解和尊重。\n" +
+//                "我们都意识到,家庭成员之间的沟通是多么的重要。只有通过开放和坦诚的沟通,我们才能更好地理解彼此的需求和感受,避免不必要的误解和心理负担。\n" +
+//                "这次事件让我深刻体会到,家庭关系的维护不仅仅需要物质上的支持,更需要心灵上的交流和理解。在未来的日子里,我希望我们每个人都能成为一个倾听者,一个理解者,让我们的家充满爱和支持,而不是压力和负担。\n" +
+//                "家庭的爱,应该是无条件的,它不仅仅存在于物质的传递中,更重要的是心与心之间的连接。\n" +
+//                "通过有效的沟通,我们可以解决误会和矛盾,使得家庭关系变得更加紧密和和谐。\n" +
+//                "我相信,只要我们愿意打开心扉,相互理解和支持,就能构建一个充满爱的家园。\n" +
+//                "\n" +
+//                "这次经历虽然让我一时感到困惑和伤心,但最终却让我获得了更多的成长和领悟。\n" +
+//                "我感谢弟弟无意间给我的这堂课,它让我认识到,在家庭这个小社会中,每个人的感受和需求都是重要的,我们应该学会更加细腻和周到地去关爱彼此。"));
+    }
+
+    public static String getKimiTitle(String title) {
+        String single_title_prompt = "请将以上标题改写成适合小程序点击和传播的小程序标题,小程序标题的写作规范如下,请学习后进行小程序标题的编写。直接输出最终的小程序标题\n" +
+                "        小程序标题写作规范:\n" +
+                "        1.要点前置:将最重要的信息放在标题的最前面,以快速吸引读者的注意力。例如,“5月一辈子同学,三辈子亲,送给我的老同学,听哭无数人!”中的“5月”和“一辈子同学,三辈子亲”都是重要的信息点。\n" +
+                "        2.激发情绪:使用能够触动人心的语言,激发读者的情感共鸣。如“只剩两人同学聚会,看后感动落泪。”使用“感动落泪”激发读者的同情和怀旧情绪。\n" +
+                "        3.使用数字和特殊符号:数字可以提供具体性,而特殊符号如“\uD83D\uDD34”、“\uD83D\uDE04”、“\uD83D\uDD25”等可以吸引视觉注意力,增加点击率。\n" +
+                "        4.悬念和好奇心:创建悬念或提出问题,激发读者的好奇心。例如,“太神奇了!长江水位下降,重庆出现惊奇一幕!”中的“惊奇一幕”就是一个悬念。\n" +
+                "        5.名人效应:如果内容与知名人士相关,提及他们的名字可以增加标题的吸引力。\n" +
+                "        6.社会价值观:触及读者的文化和社会价值观,如家庭、友情、国家荣誉等。\n" +
+                "        7.标点符号的运用:使用感叹号、问号等标点来增强语气和情感表达。\n" +
+                "        8.直接的语言:使用直白、口语化的语言,易于理解,如“狗屁股,笑死我了!”。\n" +
+                "        9.热点人物或事件:提及当前的热点人物或事件,利用热点效应吸引读者。\n" +
+                "        10.字数适中:保持标题在10-20个字之间,既不过长也不过短,确保信息的完整性和吸引力。\n" +
+                "        11.适当的紧迫感:使用“最新”、“首次”、“紧急”等词汇,创造一种紧迫感,促使读者立即行动。\n" +
+                "        12.情感或价值诉求:使用如“感动”、“泪目”、“经典”等词汇,直接与读者的情感或价值观产生共鸣。\n" +
+                "        避免误导:确保标题准确反映内容,避免夸大或误导读者。" +
+                "        输出:只输出标题,不输出其他内容";
+        return KimiAPI.chat(title + "\n" + single_title_prompt);
+    }
+
+    public static Integer getKimiTitleSafeScore(String kimiTitle) {
+        String prompt = "请你学习一下内容规范,以下标题可能会违反了某条内容规范。请你对标题做一个内容风险评级,1-10分,等级越高内容违规风险越大。 \n" +
+                "        请直接输出内容风险评级的分数,不要输出你的理由、分析等内容。 \n" +
+                "        输出:\n" +
+                "            只需要输出危险分级分数,不要输出任何其他内容。\n" +
+                "        内容规范为: \n" +
+                "        4.2 色俗内容 \n" +
+                "            4.2.1 散布淫秽、色情内容,包括但不限于招嫖、寻找一夜情、性伴侣等。 \n" +
+                "            4.2.2 发布有色情意味的情色文字、情色视频、情色漫画等内容。 \n" +
+                "            4.2.3 以投稿/爆料等形式描述约炮经历、性交体验、偷情、涉隐私部位偷拍等伤风败俗的话题内容。 \n" +
+                "            4.2.4 以低俗的配图引诱用户阅读文章、关注微信公众号。包含性撩拨、性挑逗画面;疑似女性性高潮/性虐场面;偷拍的沐浴/更衣/如厕/亲热等私密画面;女性故意露出敏感部位 (纯裸露的胸、生殖器官)以及敏感部位未打码的真人写真/艺术摄影等。 \n" +
+                "            4.2.5 文内以低俗类的动图或引导图,诱导用户点击进而跳转至另一篇图文页或关注某个公众号。 \n" +
+                "            4.2.6 文章主要描述PUA撩妹、撩汉等相关话题,且引导用户关注公众号/加个人微信号/加群。 \n" +
+                "        4.11 煽动、夸大、误导类内容 平台鼓励创作者提供准确、清晰、能体现文章内容主旨的标题,不允许通过标题噱头诱导用户点击或误导用户。\n" +
+                "            包括但不限于以下情况: \n" +
+                "            4.11.1 标题含有危害人身安全、恐吓侮辱、惊悚、极端内容,或者以命令式语气强迫用户阅读。 \n" +
+                "            4.11.2 标题无依据夸大事件严重程度、紧急程度、受影响面以及事件引发的情绪。 \n" +
+                "            4.11.3 标题以浮夸的描述,反常识强调某种食物/行为对人体健康的影响,煽动人群要/不要去做某行为。 \n" +
+                "            4.11.4 非官方通知或者公告,但标题假借官方名义煽动获取流量,或以信息来源机密、看完即删来诱导用户。 \n" +
+                "            4.11.5 标题故意隐藏关键信息,或无中生有部分信息,给用户造成误导。 \n" +
+                "            4.12 违反国家法律法规禁止的内容 \n" +
+                "                (1)违反宪法确定的基本原则的; \n" +
+                "                (2)危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的; \n" +
+                "                (3)损害国家荣誉和利益的; \n" +
+                "                (4)煽动民族仇恨、民族歧视,破坏民族团结的; \n" +
+                "                (5)破坏国家宗教政策,宣扬邪教和封建迷信的; \n" +
+                "                (6)散布不实信息,扰乱社会秩序,破坏社会稳定的; \n" +
+                "                (7)散布淫秽、色情、赌博、暴力、恐怖或者教唆犯罪的; \n" +
+                "                (8)侮辱或者诽谤他人,侵害他人合法权益的; \n" +
+                "                (9)煽动非法集会、结社、游行、示威、聚众扰乱社会秩序; \n" +
+                "                (10)以非法民间组织名义活动的; \n" +
+                "                (11)不符合《即时通信工具公众信息服务发展管理暂行规定》及遵守法律法规、社会主义制度、国家利益、公民合法利益、公共秩序、社会道德风尚和信息真实性等“七条底线”要求的; \n" +
+                "                (12)含有法律、行政法规禁止的其他内容的。\n" +
+                "        输入的标题是: " + kimiTitle;
+        String res = KimiAPI.chat(prompt);
+        if (StringUtils.isNotEmpty(res) && NumberUtils.isParsable(res)) {
+            return Integer.parseInt(res);
+        }
+        return null;
+    }
+
+    public static String makeKimiTitleSafer(String title) {
+        String prompt = "以下每行为一个文章的标题,请用尽量平实的语言对以上标题进行改写,保持在10~15字左右,请注意:\n" +
+                "            1. 不要虚构或改变标题的含义。\n" +
+                "            2. 不要用笃定的语气描述存疑的可能性,不要将表述可能性的问句改为肯定句。\n" +
+                "            直接输出改写后的标题列表。\n" +
+                "            在改写完成后,再输出一次,在改写的标题前增加和标题情感、语气匹配的特殊符号,如:“\uD83D\uDD34”、“\uD83D\uDE04”、“\uD83D\uDD25”、“\uD83D\uDE28”等等\n" +
+                "            输出:\n" +
+                "                输出结果是Dict, 格式为: \n" +
+                "                {\n" +
+                "                \"title_v1\": 请填写第一次输出的标题,\n" +
+                "                \"title_v2\": 请填写第二次输出的标题\n" +
+                "                }\n" +
+                "            输入的标题是: " + title;
+        String res = KimiAPI.jsonChat(prompt);
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        return jsonObject.getString("title_v2");
+    }
+
+    public static JSONObject kimiMining(String text) {
+        String textPrompt = "请从我给你的文章中挖掘出以下信息并且返回如下结果。\n" +
+                "        你返回的结果是一个 json, 格式如下:\n" +
+                "        {\n" +
+                "            \"content_keys\": [] # 同时提供三个与文章内容高度相关的关键词,这些关键词将用于网络上搜索相关视频内容,\n" +
+                "            \"content_title\": 一个总结性的标题,该标题应简洁并能够反映文章的主要内容\n" +
+                "        }\n" +
+                "        你需要处理的文本是:";
+//        Map<String, String> responseFormat = new HashMap<>();
+//        responseFormat.put("type", "json_object");
+//        String content = DeepSeekAPI.chat(textPrompt + text, responseFormat);
+        String content = KimiAPI.jsonChat(textPrompt + text);
+        if (StringUtils.isEmpty(content)) {
+            return null;
+        }
+        return JSONObject.parseObject(content);
+    }
+
+
+}

+ 156 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/other/VideoDownloader.java

@@ -0,0 +1,156 @@
+package com.tzld.piaoquan.longarticle.utils.other;
+
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.piaoquan.longarticle.utils.ConfigUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicHeader;
+import org.springframework.util.CollectionUtils;
+
+import java.io.*;
+import java.net.*;
+import java.nio.file.Files;
+import java.util.Objects;
+import java.util.UUID;
+
+@Slf4j
+public class VideoDownloader {
+
+    private static final String PROXY_HOST = "l901.kdltps.com";
+    private static final int PROXY_PORT = 15818;
+    private static final String USERNAME = "t11983523373311";
+    private static final String PASSWORD = "mtuhdr2z";
+    private static final int MAX_RETRIES = 3;
+
+    public static String downloadCover(String outVideoId, String platform, String coverUrl) {
+        String path = generateCoverPath(platform, outVideoId);
+        if (download(path, coverUrl, platform) == 0) {
+            return path;
+        }
+        return "";
+    }
+
+    public static String downloadVideo(String outVideoId, String platform, String videoUrl) {
+        int retries = 0;
+        while (retries < MAX_RETRIES) {
+            String path = generateVideoPath(platform, outVideoId);
+            int download = download(path, videoUrl, platform);
+            if (download == 0) {
+                return path;
+            }
+
+            //百度重新获取链接
+            if (download == 403 && Objects.equals(platform, "baidu_search")) {
+                JSONObject videoDetail = HkspSearch.getVideoDetail(outVideoId);
+                if (videoDetail != null) {
+                    String newVideoUrl = videoDetail.getString("playurl");
+                    if (newVideoUrl != null) {
+                        videoUrl = newVideoUrl;
+                    }
+                }
+            }
+
+            //抖音重新获取链接
+            if (download == 403 && Objects.equals(platform, "dy_search")) {
+                JSONObject videoDetail = DouyinSearch.douyinDetail(outVideoId);
+                if (videoDetail != null) {
+                    JSONArray videoUrlList = videoDetail.getJSONArray("video_url_list");
+                    if (!CollectionUtils.isEmpty(videoUrlList)) {
+                        String newVideoUrl = videoUrlList.getJSONObject(0).getString("video_url");
+                        if (newVideoUrl != null) {
+                            videoUrl = newVideoUrl;
+                        }
+                    }
+                }
+            }
+            retries++;
+        }
+        return "";
+    }
+
+    public static int download(String path, String videoUrl, String platform) {
+        try {
+            File file = new File(path);
+            if (file.exists()) {
+                file.delete();
+            }
+            Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(PROXY_HOST, PROXY_PORT));
+            HttpURLConnection connection = (HttpURLConnection) new URL(videoUrl).openConnection(proxy);
+            connection.setRequestMethod("GET");
+            connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0");
+            connection.setRequestProperty("Accept", "*/*");
+            connection.setRequestProperty("accept-language", "en,zh;q=0.9,zh-CN;q=0.8");
+            if (Objects.equals(platform, "dy_search")) {
+                connection.setRequestProperty("referer", "https://v11-coldf.douyinvod.com/");
+            }
+            // 连接并获取响应
+            connection.connect();
+
+            int responseCode = connection.getResponseCode();
+            if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_PARTIAL) {
+                // 下载文件
+                try (InputStream inputStream = connection.getInputStream();
+                     OutputStream outputStream = Files.newOutputStream(file.toPath())) { // 追加模式
+                    byte[] buffer = new byte[1024 * 1024]; // 1MB buffer
+                    int bytesRead;
+                    while ((bytesRead = inputStream.read(buffer)) != -1) {
+                        outputStream.write(buffer, 0, bytesRead);
+                    }
+                }
+                // 检查文件是否为空
+                if (file.length() != 0) {
+                    return 0;
+                }
+            }
+
+            return responseCode;
+        } catch (Exception e) {
+            log.error("download error", e);
+        }
+        return -1;
+    }
+
+    private static String generateVideoPath(String platform, String videoId) {
+        String index = String.format("%s-%s-%s", platform, videoId, UUID.randomUUID());
+        String md5Hash = DigestUtils.md5Hex(index);
+        String fileName = String.format("%s.mp4", md5Hash);
+        String path = ConfigUtil.getConfig("download.path");
+        File uploadDir = new File(path);
+        if (!uploadDir.exists()) {
+            uploadDir.mkdirs(); // 创建目录
+        }
+        return String.join(File.separator, path, fileName); // 返回文件路径和封面路径
+    }
+
+    private static String generateCoverPath(String platform, String videoId) {
+        String index = String.format("%s-%s-%s", platform, videoId, UUID.randomUUID());
+        String md5Hash = DigestUtils.md5Hex(index);
+        String coverName = String.format("%s.png", md5Hash);
+        String path = ConfigUtil.getConfig("download.path");
+        File uploadDir = new File(path);
+        if (!uploadDir.exists()) {
+            uploadDir.mkdirs(); // 创建目录
+        }
+        return String.join(File.separator, path, coverName); // 返回文件路径和封面路径
+    }
+
+    public static void main(String[] args) {
+        System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
+        Authenticator.setDefault(
+                new Authenticator() {
+                    public PasswordAuthentication getPasswordAuthentication() {
+                        return new PasswordAuthentication(
+                                "t11983523373311", "mtuhdr2z".toCharArray());
+                    }
+                }
+        );
+        downloadVideo("2562802497357206175", "baidu_search", "https://vdept3.bdstatic.com/mda-qkt120240g2y8uka/cae_h264/1732792181901415854/mda-qkt120240g2y8uka.mp4?v_from_s=hkapp-haokan-suzhou&auth_key=1738759058-0-0-115429d241bdab4208d998b5f3f95507&bcevod_channel=searchbox_feed&cr=0&cd=0&pd=1&pt=3&logid=2258462520&vid=2562802497357206175&abtest=132219_1");
+    }
+
+}

+ 72 - 0
long-article-server/src/main/resources/aigc-mybatis-generator-config.xml

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE generatorConfiguration
+        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
+        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
+<!-- 配置生成器 -->
+<generatorConfiguration>
+    <context id="mysql" defaultModelType="flat">
+        <property name="autoDelimitKeywords" value="true"/>
+        <!-- 生成的Java文件的编码 -->
+        <property name="javaFileEncoding" value="UTF-8"/>
+        <!-- 格式化java代码 -->
+        <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
+        <!-- 格式化XML代码 -->
+        <property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>
+        <!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; -->
+        <property name="beginningDelimiter" value="`"/>
+        <property name="endingDelimiter" value="`"/>
+
+        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
+        <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>
+        <plugin type="com.tzld.piaoquan.longarticle.dao.generator.PaginationPlugin"/>
+
+        <commentGenerator>
+<!--            <property name="addRemarkComments" value="true"/>-->
+            <property name="suppressDate" value="true"/>
+            <property name="suppressAllComments" value="true"/>
+        </commentGenerator>
+
+        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
+                        connectionURL="jdbc:mysql://rm-t4na9qj85v7790tf84o.mysql.singapore.rds.aliyuncs.com:3306/aigc-admin-prod?useUnicode=true&amp;characterEncoding=utf-8&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false"
+                        userId="crawler_admin" password="cyber#crawler_2023">
+        </jdbcConnection>
+
+        <javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl">
+            <property name="forceBigDecimals" value="false"/>
+        </javaTypeResolver>
+
+        <javaModelGenerator targetPackage="com.tzld.piaoquan.longarticle.model.po.aigc" targetProject="/Users/shimeng/Desktop/project/long-article-manage/long-article-server/src/main/java">
+            <property name="constructorBased" value="false"/>
+            <property name="enableSubPackages" value="true"/>
+            <property name="immutable" value="false"/>
+        </javaModelGenerator>
+
+        <sqlMapGenerator targetPackage="mapper/aigc" targetProject="/Users/shimeng/Desktop/project/long-article-manage/long-article-server/src/main/resources">
+            <property name="enableSubPackages" value="true"/>
+        </sqlMapGenerator>
+
+        <javaClientGenerator targetPackage="com.tzld.piaoquan.longarticle.dao.mapper.aigc" type="XMLMAPPER"
+                             targetProject="/Users/shimeng/Desktop/project/long-article-manage/long-article-server/src/main/java">
+            <property name="enableSubPackages" value="true"/>
+        </javaClientGenerator>
+<!--        <table tableName="long_articles_match_videos" domainObjectName="MatchVideo" alias="" />-->
+<!--            <columnOverride column="response" javaType="java.lang.String" jdbcType="LONGVARCHAR" />-->
+<!--        </table>-->
+<!--        <table tableName="long_articles_text" domainObjectName="LongArticlesText" alias="">-->
+<!--            <columnOverride column="article_text" javaType="java.lang.String" jdbcType="LONGVARCHAR" />-->
+<!--        </table>-->
+<!--        <table tableName="long_articles_crawler_videos" domainObjectName="CrawlerVideo" alias="">-->
+<!--            <columnOverride column="video_url" javaType="java.lang.String" jdbcType="LONGVARCHAR" />-->
+<!--            <columnOverride column="cover_url" javaType="java.lang.String" jdbcType="LONGVARCHAR" />-->
+<!--        </table>-->
+<!--        <table tableName="long_articles_root_source_id" domainObjectName="RootSource" alias=""/>-->
+        <table tableName="produce_plan_exe_record" domainObjectName="ProducePlanExeRecord" alias=""/>
+<!--            <table tableName="long_articles_plan" domainObjectName="Plan" alias=""/>-->
+
+<!--                <table tableName="long_articles_publish_content" domainObjectName="PublishContent" alias=""/>-->
+<!--                <table tableName="long_articles_publish_miniprogram" domainObjectName="PublishMiniprogram" alias=""/>-->
+<!--        <table tableName="get_off_videos" domainObjectName="OffVideo" alias=""/>-->
+
+    </context>
+
+</generatorConfiguration>

+ 18 - 0
long-article-server/src/main/resources/application-dev.properties

@@ -0,0 +1,18 @@
+server.port=8080
+
+spring.datasource.username=crawler
+spring.datasource.password=crawler123456@
+spring.datasource.url=jdbc:mysql://rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com:3306/long_articles?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true
+
+aigc.datasource.username=crawler_admin
+aigc.datasource.password=cyber#crawler_2023
+aigc.datasource.url=jdbc:mysql://rm-t4na9qj85v7790tf84o.mysql.singapore.rds.aliyuncs.com:3306/aigc-admin-prod?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true
+
+spring.redis.database=2
+spring.redis.host=r-bp154bpw97gptefiqkpd.redis.rds.aliyuncs.com
+spring.redis.port=6379
+spring.redis.password=Qingqu2019
+
+apollo.meta: https://apolloconfig-internal.piaoquantv.com
+
+xxl.job.admin.addresses=http://xxl-job-internal.piaoquantv.com/xxl-job-admin

+ 4 - 0
long-article-server/src/main/resources/application-prod.properties

@@ -4,6 +4,10 @@ spring.datasource.username=changwen_admin
 spring.datasource.password=changwen@123456
 spring.datasource.url=jdbc:mysql://rm-bp14529nwwcw75yr1.mysql.rds.aliyuncs.com:3306/long_articles?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true
 
+aigc.datasource.username=crawler_admin
+aigc.datasource.password=cyber#crawler_2023
+aigc.datasource.url=jdbc:mysql://rm-t4na9qj85v7790tf84o.mysql.singapore.rds.aliyuncs.com:3306/aigc-admin-prod?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true
+
 spring.redis.database=2
 spring.redis.host=r-bp154bpw97gptefiqkpd.redis.rds.aliyuncs.com
 spring.redis.port=6379

+ 6 - 2
long-article-server/src/main/resources/application-test.properties

@@ -2,7 +2,11 @@ server.port=8080
 
 spring.datasource.username=changwen_admin
 spring.datasource.password=changwen@123456
-spring.datasource.url=jdbc:mysql://rm-bp14529nwwcw75yr1ko.mysql.rds.aliyuncs.com:3306/long_articles?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true
+spring.datasource.url=jdbc:mysql://rm-bp14529nwwcw75yr1.mysql.rds.aliyuncs.com:3306/long_articles?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true
+
+aigc.datasource.username=crawler_admin
+aigc.datasource.password=cyber#crawler_2023
+aigc.datasource.url=jdbc:mysql://rm-t4na9qj85v7790tf84o.mysql.singapore.rds.aliyuncs.com:3306/aigc-admin-prod?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true
 
 spring.redis.database=2
 spring.redis.host=r-bp154bpw97gptefiqkpd.redis.rds.aliyuncs.com
@@ -11,4 +15,4 @@ spring.redis.password=Qingqu2019
 
 apollo.meta: https://apolloconfig-internal.piaoquantv.com
 
-xxl.job.admin.addresses=http://xxl-job-internal.piaoquantv.com/xxl-job-admin
+xxl.job.admin.addresses=http://test-xxl-job-internal.piaoquantv.com/xxl-job-admin

+ 15 - 0
long-article-server/src/main/resources/application.properties

@@ -14,6 +14,19 @@ spring.datasource.testOnBorrow=false
 spring.datasource.testOnReturn=false
 spring.datasource.poolPreparedStatements=true
 
+
+aigc.datasource.initialSize=5
+aigc.datasource.maxActive=20
+aigc.datasource.maxWait=60000
+aigc.datasource.timeBetweenEvictionRunsMillis=60000
+aigc.datasource.minEvictableIdleTimeMillis=300000
+aigc.datasource.validationQuery=SELECT 1 FROM DUAL
+aigc.datasource.testWhileIdle=true
+aigc.datasource.testOnBorrow=false
+aigc.datasource.testOnReturn=false
+aigc.datasource.poolPreparedStatements=true
+
+
 spring.redis.lettuce.pool.max-active=8
 spring.redis.lettuce.pool.max-wait=-1
 spring.redis.lettuce.pool.max-idle=8
@@ -37,6 +50,8 @@ xxl.job.executor.logpath=${datalog}/xxl-job/
 xxl.job.executor.logretentiondays=30
 
 
+download.path=/download
+
 
 
 

+ 0 - 293
long-article-server/src/main/resources/mapper/LongArticlesTextMapper.xml

@@ -1,293 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.tzld.piaoquan.longarticle.dao.mapper.LongArticlesTextMapper">
-  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.LongArticlesText">
-    <id column="content_id" jdbcType="VARCHAR" property="contentId" />
-    <result column="article_title" jdbcType="VARCHAR" property="articleTitle" />
-    <result column="kimi_title" jdbcType="VARCHAR" property="kimiTitle" />
-    <result column="kimi_summary" jdbcType="VARCHAR" property="kimiSummary" />
-    <result column="kimi_keys" jdbcType="VARCHAR" property="kimiKeys" />
-    <result column="kimi_status" jdbcType="INTEGER" property="kimiStatus" />
-  </resultMap>
-  <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.tzld.piaoquan.longarticle.model.po.LongArticlesText">
-    <result column="article_text" jdbcType="LONGVARCHAR" property="articleText" />
-  </resultMap>
-  <sql id="Example_Where_Clause">
-    <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">
-    <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">
-    content_id, article_title, kimi_title, kimi_summary, kimi_keys, kimi_status
-  </sql>
-  <sql id="Blob_Column_List">
-    article_text
-  </sql>
-  <select id="selectByExampleWithBLOBs" parameterType="com.tzld.piaoquan.longarticle.model.po.LongArticlesTextExample" resultMap="ResultMapWithBLOBs">
-    select
-    <if test="distinct">
-      distinct
-    </if>
-    <include refid="Base_Column_List" />
-    ,
-    <include refid="Blob_Column_List" />
-    from long_articles_text
-    <if test="_parameter != null">
-      <include refid="Example_Where_Clause" />
-    </if>
-    <if test="orderByClause != null">
-      order by ${orderByClause}
-    </if>
-    <if test="page != null">
-      limit #{page.offset} , #{page.pageSize}
-    </if>
-  </select>
-  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.LongArticlesTextExample" resultMap="BaseResultMap">
-    select
-    <if test="distinct">
-      distinct
-    </if>
-    <include refid="Base_Column_List" />
-    from long_articles_text
-    <if test="_parameter != null">
-      <include refid="Example_Where_Clause" />
-    </if>
-    <if test="orderByClause != null">
-      order by ${orderByClause}
-    </if>
-    <if test="page != null">
-      limit #{page.offset} , #{page.pageSize}
-    </if>
-  </select>
-  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="ResultMapWithBLOBs">
-    select
-    <include refid="Base_Column_List" />
-    ,
-    <include refid="Blob_Column_List" />
-    from long_articles_text
-    where content_id = #{contentId,jdbcType=VARCHAR}
-  </select>
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
-    delete from long_articles_text
-    where content_id = #{contentId,jdbcType=VARCHAR}
-  </delete>
-  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.LongArticlesTextExample">
-    delete from long_articles_text
-    <if test="_parameter != null">
-      <include refid="Example_Where_Clause" />
-    </if>
-  </delete>
-  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.LongArticlesText">
-    insert into long_articles_text (content_id, article_title, kimi_title,
-                                    kimi_summary, kimi_keys, kimi_status,
-                                    article_text)
-    values (#{contentId,jdbcType=VARCHAR}, #{articleTitle,jdbcType=VARCHAR}, #{kimiTitle,jdbcType=VARCHAR},
-            #{kimiSummary,jdbcType=VARCHAR}, #{kimiKeys,jdbcType=VARCHAR}, #{kimiStatus,jdbcType=INTEGER},
-            #{articleText,jdbcType=LONGVARCHAR})
-  </insert>
-  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.LongArticlesText">
-    insert into long_articles_text
-    <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="contentId != null">
-        content_id,
-      </if>
-      <if test="articleTitle != null">
-        article_title,
-      </if>
-      <if test="kimiTitle != null">
-        kimi_title,
-      </if>
-      <if test="kimiSummary != null">
-        kimi_summary,
-      </if>
-      <if test="kimiKeys != null">
-        kimi_keys,
-      </if>
-      <if test="kimiStatus != null">
-        kimi_status,
-      </if>
-      <if test="articleText != null">
-        article_text,
-      </if>
-    </trim>
-    <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="contentId != null">
-        #{contentId,jdbcType=VARCHAR},
-      </if>
-      <if test="articleTitle != null">
-        #{articleTitle,jdbcType=VARCHAR},
-      </if>
-      <if test="kimiTitle != null">
-        #{kimiTitle,jdbcType=VARCHAR},
-      </if>
-      <if test="kimiSummary != null">
-        #{kimiSummary,jdbcType=VARCHAR},
-      </if>
-      <if test="kimiKeys != null">
-        #{kimiKeys,jdbcType=VARCHAR},
-      </if>
-      <if test="kimiStatus != null">
-        #{kimiStatus,jdbcType=INTEGER},
-      </if>
-      <if test="articleText != null">
-        #{articleText,jdbcType=LONGVARCHAR},
-      </if>
-    </trim>
-  </insert>
-  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.LongArticlesTextExample" resultType="java.lang.Long">
-    select count(*) from long_articles_text
-    <if test="_parameter != null">
-      <include refid="Example_Where_Clause" />
-    </if>
-  </select>
-  <update id="updateByExampleSelective" parameterType="map">
-    update long_articles_text
-    <set>
-      <if test="record.contentId != null">
-        content_id = #{record.contentId,jdbcType=VARCHAR},
-      </if>
-      <if test="record.articleTitle != null">
-        article_title = #{record.articleTitle,jdbcType=VARCHAR},
-      </if>
-      <if test="record.kimiTitle != null">
-        kimi_title = #{record.kimiTitle,jdbcType=VARCHAR},
-      </if>
-      <if test="record.kimiSummary != null">
-        kimi_summary = #{record.kimiSummary,jdbcType=VARCHAR},
-      </if>
-      <if test="record.kimiKeys != null">
-        kimi_keys = #{record.kimiKeys,jdbcType=VARCHAR},
-      </if>
-      <if test="record.kimiStatus != null">
-        kimi_status = #{record.kimiStatus,jdbcType=INTEGER},
-      </if>
-      <if test="record.articleText != null">
-        article_text = #{record.articleText,jdbcType=LONGVARCHAR},
-      </if>
-    </set>
-    <if test="_parameter != null">
-      <include refid="Update_By_Example_Where_Clause" />
-    </if>
-  </update>
-  <update id="updateByExampleWithBLOBs" parameterType="map">
-    update long_articles_text
-    set content_id = #{record.contentId,jdbcType=VARCHAR},
-    article_title = #{record.articleTitle,jdbcType=VARCHAR},
-    kimi_title = #{record.kimiTitle,jdbcType=VARCHAR},
-    kimi_summary = #{record.kimiSummary,jdbcType=VARCHAR},
-    kimi_keys = #{record.kimiKeys,jdbcType=VARCHAR},
-    kimi_status = #{record.kimiStatus,jdbcType=INTEGER},
-    article_text = #{record.articleText,jdbcType=LONGVARCHAR}
-    <if test="_parameter != null">
-      <include refid="Update_By_Example_Where_Clause" />
-    </if>
-  </update>
-  <update id="updateByExample" parameterType="map">
-    update long_articles_text
-    set content_id = #{record.contentId,jdbcType=VARCHAR},
-    article_title = #{record.articleTitle,jdbcType=VARCHAR},
-    kimi_title = #{record.kimiTitle,jdbcType=VARCHAR},
-    kimi_summary = #{record.kimiSummary,jdbcType=VARCHAR},
-    kimi_keys = #{record.kimiKeys,jdbcType=VARCHAR},
-    kimi_status = #{record.kimiStatus,jdbcType=INTEGER}
-    <if test="_parameter != null">
-      <include refid="Update_By_Example_Where_Clause" />
-    </if>
-  </update>
-  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.LongArticlesText">
-    update long_articles_text
-    <set>
-      <if test="articleTitle != null">
-        article_title = #{articleTitle,jdbcType=VARCHAR},
-      </if>
-      <if test="kimiTitle != null">
-        kimi_title = #{kimiTitle,jdbcType=VARCHAR},
-      </if>
-      <if test="kimiSummary != null">
-        kimi_summary = #{kimiSummary,jdbcType=VARCHAR},
-      </if>
-      <if test="kimiKeys != null">
-        kimi_keys = #{kimiKeys,jdbcType=VARCHAR},
-      </if>
-      <if test="kimiStatus != null">
-        kimi_status = #{kimiStatus,jdbcType=INTEGER},
-      </if>
-      <if test="articleText != null">
-        article_text = #{articleText,jdbcType=LONGVARCHAR},
-      </if>
-    </set>
-    where content_id = #{contentId,jdbcType=VARCHAR}
-  </update>
-  <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.tzld.piaoquan.longarticle.model.po.LongArticlesText">
-    update long_articles_text
-    set article_title = #{articleTitle,jdbcType=VARCHAR},
-        kimi_title = #{kimiTitle,jdbcType=VARCHAR},
-        kimi_summary = #{kimiSummary,jdbcType=VARCHAR},
-        kimi_keys = #{kimiKeys,jdbcType=VARCHAR},
-        kimi_status = #{kimiStatus,jdbcType=INTEGER},
-        article_text = #{articleText,jdbcType=LONGVARCHAR}
-    where content_id = #{contentId,jdbcType=VARCHAR}
-  </update>
-  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.LongArticlesText">
-    update long_articles_text
-    set article_title = #{articleTitle,jdbcType=VARCHAR},
-        kimi_title = #{kimiTitle,jdbcType=VARCHAR},
-        kimi_summary = #{kimiSummary,jdbcType=VARCHAR},
-        kimi_keys = #{kimiKeys,jdbcType=VARCHAR},
-        kimi_status = #{kimiStatus,jdbcType=INTEGER}
-    where content_id = #{contentId,jdbcType=VARCHAR}
-  </update>
-</mapper>

+ 327 - 0
long-article-server/src/main/resources/mapper/aigc/ProducePlanExeRecordMapper.xml

@@ -0,0 +1,327 @@
+<?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.piaoquan.longarticle.dao.mapper.aigc.ProducePlanExeRecordMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.aigc.ProducePlanExeRecord">
+    <id column="plan_exe_id" jdbcType="VARCHAR" property="planExeId" />
+    <result column="plan_id" jdbcType="VARCHAR" property="planId" />
+    <result column="channel_content_id" jdbcType="VARCHAR" property="channelContentId" />
+    <result column="status" jdbcType="INTEGER" property="status" />
+    <result column="error_msg" jdbcType="VARCHAR" property="errorMsg" />
+    <result column="create_timestamp" jdbcType="BIGINT" property="createTimestamp" />
+    <result column="update_timestamp" jdbcType="BIGINT" property="updateTimestamp" />
+    <result column="produce_timestamp" jdbcType="BIGINT" property="produceTimestamp" />
+    <result column="audit_status" jdbcType="INTEGER" property="auditStatus" />
+    <result column="audit_account" jdbcType="VARCHAR" property="auditAccount" />
+    <result column="audit_timestamp" jdbcType="BIGINT" property="auditTimestamp" />
+    <result column="audit_count" jdbcType="INTEGER" property="auditCount" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <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">
+    <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">
+    plan_exe_id, plan_id, channel_content_id, `status`, error_msg, create_timestamp, 
+    update_timestamp, produce_timestamp, audit_status, audit_account, audit_timestamp, 
+    audit_count
+  </sql>
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.aigc.ProducePlanExeRecordExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from produce_plan_exe_record
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+    <if test="page != null">
+      limit #{page.offset} , #{page.pageSize}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from produce_plan_exe_record
+    where plan_exe_id = #{planExeId,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    delete from produce_plan_exe_record
+    where plan_exe_id = #{planExeId,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.aigc.ProducePlanExeRecordExample">
+    delete from produce_plan_exe_record
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.aigc.ProducePlanExeRecord">
+    insert into produce_plan_exe_record (plan_exe_id, plan_id, channel_content_id, 
+      `status`, error_msg, create_timestamp, 
+      update_timestamp, produce_timestamp, audit_status, 
+      audit_account, audit_timestamp, audit_count
+      )
+    values (#{planExeId,jdbcType=VARCHAR}, #{planId,jdbcType=VARCHAR}, #{channelContentId,jdbcType=VARCHAR}, 
+      #{status,jdbcType=INTEGER}, #{errorMsg,jdbcType=VARCHAR}, #{createTimestamp,jdbcType=BIGINT}, 
+      #{updateTimestamp,jdbcType=BIGINT}, #{produceTimestamp,jdbcType=BIGINT}, #{auditStatus,jdbcType=INTEGER}, 
+      #{auditAccount,jdbcType=VARCHAR}, #{auditTimestamp,jdbcType=BIGINT}, #{auditCount,jdbcType=INTEGER}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.aigc.ProducePlanExeRecord">
+    insert into produce_plan_exe_record
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="planExeId != null">
+        plan_exe_id,
+      </if>
+      <if test="planId != null">
+        plan_id,
+      </if>
+      <if test="channelContentId != null">
+        channel_content_id,
+      </if>
+      <if test="status != null">
+        `status`,
+      </if>
+      <if test="errorMsg != null">
+        error_msg,
+      </if>
+      <if test="createTimestamp != null">
+        create_timestamp,
+      </if>
+      <if test="updateTimestamp != null">
+        update_timestamp,
+      </if>
+      <if test="produceTimestamp != null">
+        produce_timestamp,
+      </if>
+      <if test="auditStatus != null">
+        audit_status,
+      </if>
+      <if test="auditAccount != null">
+        audit_account,
+      </if>
+      <if test="auditTimestamp != null">
+        audit_timestamp,
+      </if>
+      <if test="auditCount != null">
+        audit_count,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="planExeId != null">
+        #{planExeId,jdbcType=VARCHAR},
+      </if>
+      <if test="planId != null">
+        #{planId,jdbcType=VARCHAR},
+      </if>
+      <if test="channelContentId != null">
+        #{channelContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        #{status,jdbcType=INTEGER},
+      </if>
+      <if test="errorMsg != null">
+        #{errorMsg,jdbcType=VARCHAR},
+      </if>
+      <if test="createTimestamp != null">
+        #{createTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="updateTimestamp != null">
+        #{updateTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="produceTimestamp != null">
+        #{produceTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="auditStatus != null">
+        #{auditStatus,jdbcType=INTEGER},
+      </if>
+      <if test="auditAccount != null">
+        #{auditAccount,jdbcType=VARCHAR},
+      </if>
+      <if test="auditTimestamp != null">
+        #{auditTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="auditCount != null">
+        #{auditCount,jdbcType=INTEGER},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.aigc.ProducePlanExeRecordExample" resultType="java.lang.Long">
+    select count(*) from produce_plan_exe_record
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update produce_plan_exe_record
+    <set>
+      <if test="record.planExeId != null">
+        plan_exe_id = #{record.planExeId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.planId != null">
+        plan_id = #{record.planId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.channelContentId != null">
+        channel_content_id = #{record.channelContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.status != null">
+        `status` = #{record.status,jdbcType=INTEGER},
+      </if>
+      <if test="record.errorMsg != null">
+        error_msg = #{record.errorMsg,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createTimestamp != null">
+        create_timestamp = #{record.createTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="record.updateTimestamp != null">
+        update_timestamp = #{record.updateTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="record.produceTimestamp != null">
+        produce_timestamp = #{record.produceTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="record.auditStatus != null">
+        audit_status = #{record.auditStatus,jdbcType=INTEGER},
+      </if>
+      <if test="record.auditAccount != null">
+        audit_account = #{record.auditAccount,jdbcType=VARCHAR},
+      </if>
+      <if test="record.auditTimestamp != null">
+        audit_timestamp = #{record.auditTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="record.auditCount != null">
+        audit_count = #{record.auditCount,jdbcType=INTEGER},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update produce_plan_exe_record
+    set plan_exe_id = #{record.planExeId,jdbcType=VARCHAR},
+      plan_id = #{record.planId,jdbcType=VARCHAR},
+      channel_content_id = #{record.channelContentId,jdbcType=VARCHAR},
+      `status` = #{record.status,jdbcType=INTEGER},
+      error_msg = #{record.errorMsg,jdbcType=VARCHAR},
+      create_timestamp = #{record.createTimestamp,jdbcType=BIGINT},
+      update_timestamp = #{record.updateTimestamp,jdbcType=BIGINT},
+      produce_timestamp = #{record.produceTimestamp,jdbcType=BIGINT},
+      audit_status = #{record.auditStatus,jdbcType=INTEGER},
+      audit_account = #{record.auditAccount,jdbcType=VARCHAR},
+      audit_timestamp = #{record.auditTimestamp,jdbcType=BIGINT},
+      audit_count = #{record.auditCount,jdbcType=INTEGER}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.aigc.ProducePlanExeRecord">
+    update produce_plan_exe_record
+    <set>
+      <if test="planId != null">
+        plan_id = #{planId,jdbcType=VARCHAR},
+      </if>
+      <if test="channelContentId != null">
+        channel_content_id = #{channelContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        `status` = #{status,jdbcType=INTEGER},
+      </if>
+      <if test="errorMsg != null">
+        error_msg = #{errorMsg,jdbcType=VARCHAR},
+      </if>
+      <if test="createTimestamp != null">
+        create_timestamp = #{createTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="updateTimestamp != null">
+        update_timestamp = #{updateTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="produceTimestamp != null">
+        produce_timestamp = #{produceTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="auditStatus != null">
+        audit_status = #{auditStatus,jdbcType=INTEGER},
+      </if>
+      <if test="auditAccount != null">
+        audit_account = #{auditAccount,jdbcType=VARCHAR},
+      </if>
+      <if test="auditTimestamp != null">
+        audit_timestamp = #{auditTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="auditCount != null">
+        audit_count = #{auditCount,jdbcType=INTEGER},
+      </if>
+    </set>
+    where plan_exe_id = #{planExeId,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.aigc.ProducePlanExeRecord">
+    update produce_plan_exe_record
+    set plan_id = #{planId,jdbcType=VARCHAR},
+      channel_content_id = #{channelContentId,jdbcType=VARCHAR},
+      `status` = #{status,jdbcType=INTEGER},
+      error_msg = #{errorMsg,jdbcType=VARCHAR},
+      create_timestamp = #{createTimestamp,jdbcType=BIGINT},
+      update_timestamp = #{updateTimestamp,jdbcType=BIGINT},
+      produce_timestamp = #{produceTimestamp,jdbcType=BIGINT},
+      audit_status = #{auditStatus,jdbcType=INTEGER},
+      audit_account = #{auditAccount,jdbcType=VARCHAR},
+      audit_timestamp = #{auditTimestamp,jdbcType=BIGINT},
+      audit_count = #{auditCount,jdbcType=INTEGER}
+    where plan_exe_id = #{planExeId,jdbcType=VARCHAR}
+  </update>
+</mapper>

+ 9 - 9
long-article-server/src/main/resources/mapper/AccountSpecialSettingsMapper.xml → long-article-server/src/main/resources/mapper/longarticle/AccountSpecialSettingsMapper.xml

@@ -1,7 +1,7 @@
 <?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.piaoquan.longarticle.dao.mapper.AccountSpecialSettingsMapper">
-  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.AccountSpecialSettings">
+<mapper namespace="com.tzld.piaoquan.longarticle.dao.mapper.longarticle.AccountSpecialSettingsMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettings">
     <id column="id" jdbcType="BIGINT" property="id" />
     <result column="special_setting_id" jdbcType="VARCHAR" property="specialSettingId" />
     <result column="effective_date" jdbcType="VARCHAR" property="effectiveDate" />
@@ -76,7 +76,7 @@
     id, special_setting_id, effective_date, account_id, publish_push_time, push_type, 
     publish_num, exclude_content_index, is_delete, create_time, update_time
   </sql>
-  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.AccountSpecialSettingsExample" resultMap="BaseResultMap">
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettingsExample" resultMap="BaseResultMap">
     select
     <if test="distinct">
       distinct
@@ -103,13 +103,13 @@
     delete from long_articles_account_special_settings
     where id = #{id,jdbcType=BIGINT}
   </delete>
-  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.AccountSpecialSettingsExample">
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettingsExample">
     delete from long_articles_account_special_settings
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
     </if>
   </delete>
-  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.AccountSpecialSettings">
+  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettings">
     insert into long_articles_account_special_settings (id, special_setting_id, effective_date, 
       account_id, publish_push_time, push_type, 
       publish_num, exclude_content_index, is_delete, 
@@ -119,7 +119,7 @@
       #{publishNum,jdbcType=INTEGER}, #{excludeContentIndex,jdbcType=VARCHAR}, #{isDelete,jdbcType=INTEGER}, 
       #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP})
   </insert>
-  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.AccountSpecialSettings">
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettings">
     insert into long_articles_account_special_settings
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -192,7 +192,7 @@
       </if>
     </trim>
   </insert>
-  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.AccountSpecialSettingsExample" resultType="java.lang.Long">
+  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettingsExample" resultType="java.lang.Long">
     select count(*) from long_articles_account_special_settings
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
@@ -256,7 +256,7 @@
       <include refid="Update_By_Example_Where_Clause" />
     </if>
   </update>
-  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.AccountSpecialSettings">
+  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettings">
     update long_articles_account_special_settings
     <set>
       <if test="specialSettingId != null">
@@ -292,7 +292,7 @@
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
-  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.AccountSpecialSettings">
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettings">
     update long_articles_account_special_settings
     set special_setting_id = #{specialSettingId,jdbcType=VARCHAR},
       effective_date = #{effectiveDate,jdbcType=VARCHAR},

+ 12 - 12
long-article-server/src/main/resources/mapper/CrawlerVideoMapper.xml → long-article-server/src/main/resources/mapper/longarticle/CrawlerVideoMapper.xml

@@ -1,7 +1,7 @@
 <?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.piaoquan.longarticle.dao.mapper.CrawlerVideoMapper">
-  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.CrawlerVideo">
+<mapper namespace="com.tzld.piaoquan.longarticle.dao.mapper.longarticle.CrawlerVideoMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideo">
     <id column="id" jdbcType="INTEGER" property="id" />
     <result column="content_id" jdbcType="VARCHAR" property="contentId" />
     <result column="out_video_id" jdbcType="VARCHAR" property="outVideoId" />
@@ -25,7 +25,7 @@
     <result column="audit_timestamp" jdbcType="BIGINT" property="auditTimestamp" />
     <result column="score_version" jdbcType="TINYINT" property="scoreVersion" />
   </resultMap>
-  <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.tzld.piaoquan.longarticle.model.po.CrawlerVideo">
+  <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideo">
     <result column="video_url" jdbcType="LONGVARCHAR" property="videoUrl" />
     <result column="cover_url" jdbcType="LONGVARCHAR" property="coverUrl" />
   </resultMap>
@@ -95,7 +95,7 @@
   <sql id="Blob_Column_List">
     video_url, cover_url
   </sql>
-  <select id="selectByExampleWithBLOBs" parameterType="com.tzld.piaoquan.longarticle.model.po.CrawlerVideoExample" resultMap="ResultMapWithBLOBs">
+  <select id="selectByExampleWithBLOBs" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideoExample" resultMap="ResultMapWithBLOBs">
     select
     <if test="distinct">
       distinct
@@ -114,7 +114,7 @@
       limit #{page.offset} , #{page.pageSize}
     </if>
   </select>
-  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.CrawlerVideoExample" resultMap="BaseResultMap">
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideoExample" resultMap="BaseResultMap">
     select
     <if test="distinct">
       distinct
@@ -143,13 +143,13 @@
     delete from long_articles_crawler_videos
     where id = #{id,jdbcType=INTEGER}
   </delete>
-  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.CrawlerVideoExample">
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideoExample">
     delete from long_articles_crawler_videos
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
     </if>
   </delete>
-  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.CrawlerVideo">
+  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideo">
     insert into long_articles_crawler_videos (id, content_id, out_video_id, 
       platform, video_title, play_count, 
       like_count, share_count, publish_time, 
@@ -169,7 +169,7 @@
       #{scoreVersion,jdbcType=TINYINT}, #{videoUrl,jdbcType=LONGVARCHAR}, #{coverUrl,jdbcType=LONGVARCHAR}
       )
   </insert>
-  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.CrawlerVideo">
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideo">
     insert into long_articles_crawler_videos
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -320,7 +320,7 @@
       </if>
     </trim>
   </insert>
-  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.CrawlerVideoExample" resultType="java.lang.Long">
+  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideoExample" resultType="java.lang.Long">
     select count(*) from long_articles_crawler_videos
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
@@ -464,7 +464,7 @@
       <include refid="Update_By_Example_Where_Clause" />
     </if>
   </update>
-  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.CrawlerVideo">
+  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideo">
     update long_articles_crawler_videos
     <set>
       <if test="contentId != null">
@@ -539,7 +539,7 @@
     </set>
     where id = #{id,jdbcType=INTEGER}
   </update>
-  <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.tzld.piaoquan.longarticle.model.po.CrawlerVideo">
+  <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideo">
     update long_articles_crawler_videos
     set content_id = #{contentId,jdbcType=VARCHAR},
       out_video_id = #{outVideoId,jdbcType=VARCHAR},
@@ -566,7 +566,7 @@
       cover_url = #{coverUrl,jdbcType=LONGVARCHAR}
     where id = #{id,jdbcType=INTEGER}
   </update>
-  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.CrawlerVideo">
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.CrawlerVideo">
     update long_articles_crawler_videos
     set content_id = #{contentId,jdbcType=VARCHAR},
       out_video_id = #{outVideoId,jdbcType=VARCHAR},

+ 474 - 0
long-article-server/src/main/resources/mapper/longarticle/LongArticlesTextMapper.xml

@@ -0,0 +1,474 @@
+<?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.piaoquan.longarticle.dao.mapper.longarticle.LongArticlesTextMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesText">
+    <id column="content_id" jdbcType="VARCHAR" property="contentId" />
+    <result column="article_title" jdbcType="VARCHAR" property="articleTitle" />
+    <result column="old_article_title" jdbcType="VARCHAR" property="oldArticleTitle" />
+    <result column="article_title_update_account" jdbcType="VARCHAR" property="articleTitleUpdateAccount" />
+    <result column="article_title_update_timestamp" jdbcType="BIGINT" property="articleTitleUpdateTimestamp" />
+    <result column="kimi_title" jdbcType="VARCHAR" property="kimiTitle" />
+    <result column="old_kimi_title" jdbcType="VARCHAR" property="oldKimiTitle" />
+    <result column="kimi_title_update_account" jdbcType="VARCHAR" property="kimiTitleUpdateAccount" />
+    <result column="kimi_title_update_timestamp" jdbcType="BIGINT" property="kimiTitleUpdateTimestamp" />
+    <result column="kimi_summary" jdbcType="VARCHAR" property="kimiSummary" />
+    <result column="kimi_keys" jdbcType="VARCHAR" property="kimiKeys" />
+    <result column="kimi_status" jdbcType="INTEGER" property="kimiStatus" />
+    <result column="similarity_status" jdbcType="INTEGER" property="similarityStatus" />
+    <result column="start_processing_time" jdbcType="TIMESTAMP" property="startProcessingTime" />
+    <result column="result_status" jdbcType="INTEGER" property="resultStatus" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+  </resultMap>
+  <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesText">
+    <result column="article_text" jdbcType="LONGVARCHAR" property="articleText" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <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">
+    <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">
+    content_id, article_title, old_article_title, article_title_update_account, article_title_update_timestamp, 
+    kimi_title, old_kimi_title, kimi_title_update_account, kimi_title_update_timestamp, 
+    kimi_summary, kimi_keys, kimi_status, similarity_status, start_processing_time, result_status, 
+    create_time
+  </sql>
+  <sql id="Blob_Column_List">
+    article_text
+  </sql>
+  <select id="selectByExampleWithBLOBs" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesTextExample" resultMap="ResultMapWithBLOBs">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    ,
+    <include refid="Blob_Column_List" />
+    from long_articles_text
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+    <if test="page != null">
+      limit #{page.offset} , #{page.pageSize}
+    </if>
+  </select>
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesTextExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from long_articles_text
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+    <if test="page != null">
+      limit #{page.offset} , #{page.pageSize}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="ResultMapWithBLOBs">
+    select 
+    <include refid="Base_Column_List" />
+    ,
+    <include refid="Blob_Column_List" />
+    from long_articles_text
+    where content_id = #{contentId,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    delete from long_articles_text
+    where content_id = #{contentId,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesTextExample">
+    delete from long_articles_text
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesText">
+    insert into long_articles_text (content_id, article_title, old_article_title, 
+      article_title_update_account, article_title_update_timestamp, 
+      kimi_title, old_kimi_title, kimi_title_update_account, 
+      kimi_title_update_timestamp, kimi_summary, kimi_keys, 
+      kimi_status, similarity_status, start_processing_time, 
+      result_status, create_time, article_text
+      )
+    values (#{contentId,jdbcType=VARCHAR}, #{articleTitle,jdbcType=VARCHAR}, #{oldArticleTitle,jdbcType=VARCHAR}, 
+      #{articleTitleUpdateAccount,jdbcType=VARCHAR}, #{articleTitleUpdateTimestamp,jdbcType=BIGINT}, 
+      #{kimiTitle,jdbcType=VARCHAR}, #{oldKimiTitle,jdbcType=VARCHAR}, #{kimiTitleUpdateAccount,jdbcType=VARCHAR}, 
+      #{kimiTitleUpdateTimestamp,jdbcType=BIGINT}, #{kimiSummary,jdbcType=VARCHAR}, #{kimiKeys,jdbcType=VARCHAR}, 
+      #{kimiStatus,jdbcType=INTEGER}, #{similarityStatus,jdbcType=INTEGER}, #{startProcessingTime,jdbcType=TIMESTAMP}, 
+      #{resultStatus,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, #{articleText,jdbcType=LONGVARCHAR}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesText">
+    insert into long_articles_text
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="contentId != null">
+        content_id,
+      </if>
+      <if test="articleTitle != null">
+        article_title,
+      </if>
+      <if test="oldArticleTitle != null">
+        old_article_title,
+      </if>
+      <if test="articleTitleUpdateAccount != null">
+        article_title_update_account,
+      </if>
+      <if test="articleTitleUpdateTimestamp != null">
+        article_title_update_timestamp,
+      </if>
+      <if test="kimiTitle != null">
+        kimi_title,
+      </if>
+      <if test="oldKimiTitle != null">
+        old_kimi_title,
+      </if>
+      <if test="kimiTitleUpdateAccount != null">
+        kimi_title_update_account,
+      </if>
+      <if test="kimiTitleUpdateTimestamp != null">
+        kimi_title_update_timestamp,
+      </if>
+      <if test="kimiSummary != null">
+        kimi_summary,
+      </if>
+      <if test="kimiKeys != null">
+        kimi_keys,
+      </if>
+      <if test="kimiStatus != null">
+        kimi_status,
+      </if>
+      <if test="similarityStatus != null">
+        similarity_status,
+      </if>
+      <if test="startProcessingTime != null">
+        start_processing_time,
+      </if>
+      <if test="resultStatus != null">
+        result_status,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+      <if test="articleText != null">
+        article_text,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="contentId != null">
+        #{contentId,jdbcType=VARCHAR},
+      </if>
+      <if test="articleTitle != null">
+        #{articleTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="oldArticleTitle != null">
+        #{oldArticleTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="articleTitleUpdateAccount != null">
+        #{articleTitleUpdateAccount,jdbcType=VARCHAR},
+      </if>
+      <if test="articleTitleUpdateTimestamp != null">
+        #{articleTitleUpdateTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="kimiTitle != null">
+        #{kimiTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="oldKimiTitle != null">
+        #{oldKimiTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="kimiTitleUpdateAccount != null">
+        #{kimiTitleUpdateAccount,jdbcType=VARCHAR},
+      </if>
+      <if test="kimiTitleUpdateTimestamp != null">
+        #{kimiTitleUpdateTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="kimiSummary != null">
+        #{kimiSummary,jdbcType=VARCHAR},
+      </if>
+      <if test="kimiKeys != null">
+        #{kimiKeys,jdbcType=VARCHAR},
+      </if>
+      <if test="kimiStatus != null">
+        #{kimiStatus,jdbcType=INTEGER},
+      </if>
+      <if test="similarityStatus != null">
+        #{similarityStatus,jdbcType=INTEGER},
+      </if>
+      <if test="startProcessingTime != null">
+        #{startProcessingTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="resultStatus != null">
+        #{resultStatus,jdbcType=INTEGER},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="articleText != null">
+        #{articleText,jdbcType=LONGVARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesTextExample" resultType="java.lang.Long">
+    select count(*) from long_articles_text
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update long_articles_text
+    <set>
+      <if test="record.contentId != null">
+        content_id = #{record.contentId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.articleTitle != null">
+        article_title = #{record.articleTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="record.oldArticleTitle != null">
+        old_article_title = #{record.oldArticleTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="record.articleTitleUpdateAccount != null">
+        article_title_update_account = #{record.articleTitleUpdateAccount,jdbcType=VARCHAR},
+      </if>
+      <if test="record.articleTitleUpdateTimestamp != null">
+        article_title_update_timestamp = #{record.articleTitleUpdateTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="record.kimiTitle != null">
+        kimi_title = #{record.kimiTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="record.oldKimiTitle != null">
+        old_kimi_title = #{record.oldKimiTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="record.kimiTitleUpdateAccount != null">
+        kimi_title_update_account = #{record.kimiTitleUpdateAccount,jdbcType=VARCHAR},
+      </if>
+      <if test="record.kimiTitleUpdateTimestamp != null">
+        kimi_title_update_timestamp = #{record.kimiTitleUpdateTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="record.kimiSummary != null">
+        kimi_summary = #{record.kimiSummary,jdbcType=VARCHAR},
+      </if>
+      <if test="record.kimiKeys != null">
+        kimi_keys = #{record.kimiKeys,jdbcType=VARCHAR},
+      </if>
+      <if test="record.kimiStatus != null">
+        kimi_status = #{record.kimiStatus,jdbcType=INTEGER},
+      </if>
+      <if test="record.similarityStatus != null">
+        similarity_status = #{record.similarityStatus,jdbcType=INTEGER},
+      </if>
+      <if test="record.startProcessingTime != null">
+        start_processing_time = #{record.startProcessingTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.resultStatus != null">
+        result_status = #{record.resultStatus,jdbcType=INTEGER},
+      </if>
+      <if test="record.createTime != null">
+        create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.articleText != null">
+        article_text = #{record.articleText,jdbcType=LONGVARCHAR},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExampleWithBLOBs" parameterType="map">
+    update long_articles_text
+    set content_id = #{record.contentId,jdbcType=VARCHAR},
+      article_title = #{record.articleTitle,jdbcType=VARCHAR},
+      old_article_title = #{record.oldArticleTitle,jdbcType=VARCHAR},
+      article_title_update_account = #{record.articleTitleUpdateAccount,jdbcType=VARCHAR},
+      article_title_update_timestamp = #{record.articleTitleUpdateTimestamp,jdbcType=BIGINT},
+      kimi_title = #{record.kimiTitle,jdbcType=VARCHAR},
+      old_kimi_title = #{record.oldKimiTitle,jdbcType=VARCHAR},
+      kimi_title_update_account = #{record.kimiTitleUpdateAccount,jdbcType=VARCHAR},
+      kimi_title_update_timestamp = #{record.kimiTitleUpdateTimestamp,jdbcType=BIGINT},
+      kimi_summary = #{record.kimiSummary,jdbcType=VARCHAR},
+      kimi_keys = #{record.kimiKeys,jdbcType=VARCHAR},
+      kimi_status = #{record.kimiStatus,jdbcType=INTEGER},
+      similarity_status = #{record.similarityStatus,jdbcType=INTEGER},
+      start_processing_time = #{record.startProcessingTime,jdbcType=TIMESTAMP},
+      result_status = #{record.resultStatus,jdbcType=INTEGER},
+      create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      article_text = #{record.articleText,jdbcType=LONGVARCHAR}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update long_articles_text
+    set content_id = #{record.contentId,jdbcType=VARCHAR},
+      article_title = #{record.articleTitle,jdbcType=VARCHAR},
+      old_article_title = #{record.oldArticleTitle,jdbcType=VARCHAR},
+      article_title_update_account = #{record.articleTitleUpdateAccount,jdbcType=VARCHAR},
+      article_title_update_timestamp = #{record.articleTitleUpdateTimestamp,jdbcType=BIGINT},
+      kimi_title = #{record.kimiTitle,jdbcType=VARCHAR},
+      old_kimi_title = #{record.oldKimiTitle,jdbcType=VARCHAR},
+      kimi_title_update_account = #{record.kimiTitleUpdateAccount,jdbcType=VARCHAR},
+      kimi_title_update_timestamp = #{record.kimiTitleUpdateTimestamp,jdbcType=BIGINT},
+      kimi_summary = #{record.kimiSummary,jdbcType=VARCHAR},
+      kimi_keys = #{record.kimiKeys,jdbcType=VARCHAR},
+      kimi_status = #{record.kimiStatus,jdbcType=INTEGER},
+      similarity_status = #{record.similarityStatus,jdbcType=INTEGER},
+      start_processing_time = #{record.startProcessingTime,jdbcType=TIMESTAMP},
+      result_status = #{record.resultStatus,jdbcType=INTEGER},
+      create_time = #{record.createTime,jdbcType=TIMESTAMP}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesText">
+    update long_articles_text
+    <set>
+      <if test="articleTitle != null">
+        article_title = #{articleTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="oldArticleTitle != null">
+        old_article_title = #{oldArticleTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="articleTitleUpdateAccount != null">
+        article_title_update_account = #{articleTitleUpdateAccount,jdbcType=VARCHAR},
+      </if>
+      <if test="articleTitleUpdateTimestamp != null">
+        article_title_update_timestamp = #{articleTitleUpdateTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="kimiTitle != null">
+        kimi_title = #{kimiTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="oldKimiTitle != null">
+        old_kimi_title = #{oldKimiTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="kimiTitleUpdateAccount != null">
+        kimi_title_update_account = #{kimiTitleUpdateAccount,jdbcType=VARCHAR},
+      </if>
+      <if test="kimiTitleUpdateTimestamp != null">
+        kimi_title_update_timestamp = #{kimiTitleUpdateTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="kimiSummary != null">
+        kimi_summary = #{kimiSummary,jdbcType=VARCHAR},
+      </if>
+      <if test="kimiKeys != null">
+        kimi_keys = #{kimiKeys,jdbcType=VARCHAR},
+      </if>
+      <if test="kimiStatus != null">
+        kimi_status = #{kimiStatus,jdbcType=INTEGER},
+      </if>
+      <if test="similarityStatus != null">
+        similarity_status = #{similarityStatus,jdbcType=INTEGER},
+      </if>
+      <if test="startProcessingTime != null">
+        start_processing_time = #{startProcessingTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="resultStatus != null">
+        result_status = #{resultStatus,jdbcType=INTEGER},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="articleText != null">
+        article_text = #{articleText,jdbcType=LONGVARCHAR},
+      </if>
+    </set>
+    where content_id = #{contentId,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesText">
+    update long_articles_text
+    set article_title = #{articleTitle,jdbcType=VARCHAR},
+      old_article_title = #{oldArticleTitle,jdbcType=VARCHAR},
+      article_title_update_account = #{articleTitleUpdateAccount,jdbcType=VARCHAR},
+      article_title_update_timestamp = #{articleTitleUpdateTimestamp,jdbcType=BIGINT},
+      kimi_title = #{kimiTitle,jdbcType=VARCHAR},
+      old_kimi_title = #{oldKimiTitle,jdbcType=VARCHAR},
+      kimi_title_update_account = #{kimiTitleUpdateAccount,jdbcType=VARCHAR},
+      kimi_title_update_timestamp = #{kimiTitleUpdateTimestamp,jdbcType=BIGINT},
+      kimi_summary = #{kimiSummary,jdbcType=VARCHAR},
+      kimi_keys = #{kimiKeys,jdbcType=VARCHAR},
+      kimi_status = #{kimiStatus,jdbcType=INTEGER},
+      similarity_status = #{similarityStatus,jdbcType=INTEGER},
+      start_processing_time = #{startProcessingTime,jdbcType=TIMESTAMP},
+      result_status = #{resultStatus,jdbcType=INTEGER},
+      create_time = #{createTime,jdbcType=TIMESTAMP},
+      article_text = #{articleText,jdbcType=LONGVARCHAR}
+    where content_id = #{contentId,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.LongArticlesText">
+    update long_articles_text
+    set article_title = #{articleTitle,jdbcType=VARCHAR},
+      old_article_title = #{oldArticleTitle,jdbcType=VARCHAR},
+      article_title_update_account = #{articleTitleUpdateAccount,jdbcType=VARCHAR},
+      article_title_update_timestamp = #{articleTitleUpdateTimestamp,jdbcType=BIGINT},
+      kimi_title = #{kimiTitle,jdbcType=VARCHAR},
+      old_kimi_title = #{oldKimiTitle,jdbcType=VARCHAR},
+      kimi_title_update_account = #{kimiTitleUpdateAccount,jdbcType=VARCHAR},
+      kimi_title_update_timestamp = #{kimiTitleUpdateTimestamp,jdbcType=BIGINT},
+      kimi_summary = #{kimiSummary,jdbcType=VARCHAR},
+      kimi_keys = #{kimiKeys,jdbcType=VARCHAR},
+      kimi_status = #{kimiStatus,jdbcType=INTEGER},
+      similarity_status = #{similarityStatus,jdbcType=INTEGER},
+      start_processing_time = #{startProcessingTime,jdbcType=TIMESTAMP},
+      result_status = #{resultStatus,jdbcType=INTEGER},
+      create_time = #{createTime,jdbcType=TIMESTAMP}
+    where content_id = #{contentId,jdbcType=VARCHAR}
+  </update>
+</mapper>

+ 12 - 12
long-article-server/src/main/resources/mapper/MatchVideoMapper.xml → long-article-server/src/main/resources/mapper/longarticle/MatchVideoMapper.xml

@@ -1,7 +1,7 @@
 <?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.piaoquan.longarticle.dao.mapper.MatchVideoMapper">
-  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.MatchVideo">
+<mapper namespace="com.tzld.piaoquan.longarticle.dao.mapper.longarticle.MatchVideoMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.longarticle.MatchVideo">
     <id column="id" jdbcType="INTEGER" property="id" />
     <result column="trace_id" jdbcType="VARCHAR" property="traceId" />
     <result column="content_id" jdbcType="VARCHAR" property="contentId" />
@@ -16,7 +16,7 @@
     <result column="process_times" jdbcType="INTEGER" property="processTimes" />
     <result column="publish_flag" jdbcType="INTEGER" property="publishFlag" />
   </resultMap>
-  <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.tzld.piaoquan.longarticle.model.po.MatchVideo">
+  <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.tzld.piaoquan.longarticle.model.po.longarticle.MatchVideo">
     <result column="response" jdbcType="LONGVARCHAR" property="response" />
   </resultMap>
   <sql id="Example_Where_Clause">
@@ -84,7 +84,7 @@
   <sql id="Blob_Column_List">
     response
   </sql>
-  <select id="selectByExampleWithBLOBs" parameterType="com.tzld.piaoquan.longarticle.model.po.MatchVideoExample" resultMap="ResultMapWithBLOBs">
+  <select id="selectByExampleWithBLOBs" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.MatchVideoExample" resultMap="ResultMapWithBLOBs">
     select
     <if test="distinct">
       distinct
@@ -103,7 +103,7 @@
       limit #{page.offset} , #{page.pageSize}
     </if>
   </select>
-  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.MatchVideoExample" resultMap="BaseResultMap">
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.MatchVideoExample" resultMap="BaseResultMap">
     select
     <if test="distinct">
       distinct
@@ -132,13 +132,13 @@
     delete from long_articles_match_videos
     where id = #{id,jdbcType=INTEGER}
   </delete>
-  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.MatchVideoExample">
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.MatchVideoExample">
     delete from long_articles_match_videos
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
     </if>
   </delete>
-  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.MatchVideo">
+  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.MatchVideo">
     insert into long_articles_match_videos (id, trace_id, content_id, 
       flow_pool_level, gh_id, account_name, 
       content_status, content_status_update_time, 
@@ -152,7 +152,7 @@
       #{processTimes,jdbcType=INTEGER}, #{publishFlag,jdbcType=INTEGER}, #{response,jdbcType=LONGVARCHAR}
       )
   </insert>
-  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.MatchVideo">
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.MatchVideo">
     insert into long_articles_match_videos
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -243,7 +243,7 @@
       </if>
     </trim>
   </insert>
-  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.MatchVideoExample" resultType="java.lang.Long">
+  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.MatchVideoExample" resultType="java.lang.Long">
     select count(*) from long_articles_match_videos
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
@@ -338,7 +338,7 @@
       <include refid="Update_By_Example_Where_Clause" />
     </if>
   </update>
-  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.MatchVideo">
+  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.MatchVideo">
     update long_articles_match_videos
     <set>
       <if test="traceId != null">
@@ -383,7 +383,7 @@
     </set>
     where id = #{id,jdbcType=INTEGER}
   </update>
-  <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.tzld.piaoquan.longarticle.model.po.MatchVideo">
+  <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.MatchVideo">
     update long_articles_match_videos
     set trace_id = #{traceId,jdbcType=VARCHAR},
       content_id = #{contentId,jdbcType=VARCHAR},
@@ -400,7 +400,7 @@
       response = #{response,jdbcType=LONGVARCHAR}
     where id = #{id,jdbcType=INTEGER}
   </update>
-  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.MatchVideo">
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.MatchVideo">
     update long_articles_match_videos
     set trace_id = #{traceId,jdbcType=VARCHAR},
       content_id = #{contentId,jdbcType=VARCHAR},

+ 9 - 9
long-article-server/src/main/resources/mapper/OffVideoMapper.xml → long-article-server/src/main/resources/mapper/longarticle/OffVideoMapper.xml

@@ -1,7 +1,7 @@
 <?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.piaoquan.longarticle.dao.mapper.OffVideoMapper">
-  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.OffVideo">
+<mapper namespace="com.tzld.piaoquan.longarticle.dao.mapper.longarticle.OffVideoMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.longarticle.OffVideo">
     <id column="video_id" jdbcType="BIGINT" property="videoId" />
     <result column="publish_time" jdbcType="BIGINT" property="publishTime" />
     <result column="video_status" jdbcType="INTEGER" property="videoStatus" />
@@ -70,7 +70,7 @@
   <sql id="Base_Column_List">
     video_id, publish_time, video_status, trace_id, get_off_time, check_status
   </sql>
-  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.OffVideoExample" resultMap="BaseResultMap">
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.OffVideoExample" resultMap="BaseResultMap">
     select
     <if test="distinct">
       distinct
@@ -97,13 +97,13 @@
     delete from get_off_videos
     where video_id = #{videoId,jdbcType=BIGINT}
   </delete>
-  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.OffVideoExample">
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.OffVideoExample">
     delete from get_off_videos
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
     </if>
   </delete>
-  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.OffVideo">
+  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.OffVideo">
     insert into get_off_videos (video_id, publish_time, video_status, 
       trace_id, get_off_time, check_status
       )
@@ -111,7 +111,7 @@
       #{traceId,jdbcType=VARCHAR}, #{getOffTime,jdbcType=BIGINT}, #{checkStatus,jdbcType=INTEGER}
       )
   </insert>
-  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.OffVideo">
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.OffVideo">
     insert into get_off_videos
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="videoId != null">
@@ -154,7 +154,7 @@
       </if>
     </trim>
   </insert>
-  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.OffVideoExample" resultType="java.lang.Long">
+  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.OffVideoExample" resultType="java.lang.Long">
     select count(*) from get_off_videos
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
@@ -198,7 +198,7 @@
       <include refid="Update_By_Example_Where_Clause" />
     </if>
   </update>
-  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.OffVideo">
+  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.OffVideo">
     update get_off_videos
     <set>
       <if test="publishTime != null">
@@ -219,7 +219,7 @@
     </set>
     where video_id = #{videoId,jdbcType=BIGINT}
   </update>
-  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.OffVideo">
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.OffVideo">
     update get_off_videos
     set publish_time = #{publishTime,jdbcType=BIGINT},
       video_status = #{videoStatus,jdbcType=INTEGER},

+ 30 - 14
long-article-server/src/main/resources/mapper/PlanAccountMapper.xml → long-article-server/src/main/resources/mapper/longarticle/PlanAccountMapper.xml

@@ -1,7 +1,7 @@
 <?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.piaoquan.longarticle.dao.mapper.PlanAccountMapper">
-  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.PlanAccount">
+<mapper namespace="com.tzld.piaoquan.longarticle.dao.mapper.longarticle.PlanAccountMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccount">
     <id column="id" jdbcType="BIGINT" property="id" />
     <result column="plan_id" jdbcType="VARCHAR" property="planId" />
     <result column="plan_name" jdbcType="VARCHAR" property="planName" />
@@ -28,6 +28,7 @@
     <result column="retry_count" jdbcType="INTEGER" property="retryCount" />
     <result column="send_count" jdbcType="INTEGER" property="sendCount" />
     <result column="publish_open_flag" jdbcType="INTEGER" property="publishOpenFlag" />
+    <result column="is_special_setting" jdbcType="INTEGER" property="isSpecialSetting" />
     <result column="is_delete" jdbcType="INTEGER" property="isDelete" />
     <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
     <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
@@ -95,9 +96,10 @@
     publish_window_start, publish_window_end, publish_time_interval, publish_num, publish_pre_num, 
     publish_pre_min_num, publish_push_time, push_type, miniprogram_insert_flag, mini_strategy, 
     miniprogram_use_type, sort_strategy, exclude_content_index, `status`, match_status, 
-    retry_count, send_count, publish_open_flag, is_delete, create_time, update_time
+    retry_count, send_count, publish_open_flag, is_special_setting, is_delete, create_time, 
+    update_time
   </sql>
-  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.PlanAccountExample" resultMap="BaseResultMap">
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccountExample" resultMap="BaseResultMap">
     select
     <if test="distinct">
       distinct
@@ -124,13 +126,13 @@
     delete from long_articles_plan_account
     where id = #{id,jdbcType=BIGINT}
   </delete>
-  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.PlanAccountExample">
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccountExample">
     delete from long_articles_plan_account
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
     </if>
   </delete>
-  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.PlanAccount">
+  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccount">
     insert into long_articles_plan_account (id, plan_id, plan_name, 
       account_id, account_name, gh_id, 
       publish_rate, publish_date, publish_window_start, 
@@ -140,8 +142,8 @@
       mini_strategy, miniprogram_use_type, sort_strategy, 
       exclude_content_index, `status`, match_status, 
       retry_count, send_count, publish_open_flag, 
-      is_delete, create_time, update_time
-      )
+      is_special_setting, is_delete, create_time, 
+      update_time)
     values (#{id,jdbcType=BIGINT}, #{planId,jdbcType=VARCHAR}, #{planName,jdbcType=VARCHAR}, 
       #{accountId,jdbcType=VARCHAR}, #{accountName,jdbcType=VARCHAR}, #{ghId,jdbcType=VARCHAR}, 
       #{publishRate,jdbcType=INTEGER}, #{publishDate,jdbcType=VARCHAR}, #{publishWindowStart,jdbcType=VARCHAR}, 
@@ -151,10 +153,10 @@
       #{miniStrategy,jdbcType=VARCHAR}, #{miniprogramUseType,jdbcType=INTEGER}, #{sortStrategy,jdbcType=VARCHAR}, 
       #{excludeContentIndex,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{matchStatus,jdbcType=INTEGER}, 
       #{retryCount,jdbcType=INTEGER}, #{sendCount,jdbcType=INTEGER}, #{publishOpenFlag,jdbcType=INTEGER}, 
-      #{isDelete,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}
-      )
+      #{isSpecialSetting,jdbcType=INTEGER}, #{isDelete,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, 
+      #{updateTime,jdbcType=TIMESTAMP})
   </insert>
-  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.PlanAccount">
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccount">
     insert into long_articles_plan_account
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -235,6 +237,9 @@
       <if test="publishOpenFlag != null">
         publish_open_flag,
       </if>
+      <if test="isSpecialSetting != null">
+        is_special_setting,
+      </if>
       <if test="isDelete != null">
         is_delete,
       </if>
@@ -324,6 +329,9 @@
       <if test="publishOpenFlag != null">
         #{publishOpenFlag,jdbcType=INTEGER},
       </if>
+      <if test="isSpecialSetting != null">
+        #{isSpecialSetting,jdbcType=INTEGER},
+      </if>
       <if test="isDelete != null">
         #{isDelete,jdbcType=INTEGER},
       </if>
@@ -335,7 +343,7 @@
       </if>
     </trim>
   </insert>
-  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.PlanAccountExample" resultType="java.lang.Long">
+  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccountExample" resultType="java.lang.Long">
     select count(*) from long_articles_plan_account
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
@@ -422,6 +430,9 @@
       <if test="record.publishOpenFlag != null">
         publish_open_flag = #{record.publishOpenFlag,jdbcType=INTEGER},
       </if>
+      <if test="record.isSpecialSetting != null">
+        is_special_setting = #{record.isSpecialSetting,jdbcType=INTEGER},
+      </if>
       <if test="record.isDelete != null">
         is_delete = #{record.isDelete,jdbcType=INTEGER},
       </if>
@@ -464,6 +475,7 @@
       retry_count = #{record.retryCount,jdbcType=INTEGER},
       send_count = #{record.sendCount,jdbcType=INTEGER},
       publish_open_flag = #{record.publishOpenFlag,jdbcType=INTEGER},
+      is_special_setting = #{record.isSpecialSetting,jdbcType=INTEGER},
       is_delete = #{record.isDelete,jdbcType=INTEGER},
       create_time = #{record.createTime,jdbcType=TIMESTAMP},
       update_time = #{record.updateTime,jdbcType=TIMESTAMP}
@@ -471,7 +483,7 @@
       <include refid="Update_By_Example_Where_Clause" />
     </if>
   </update>
-  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.PlanAccount">
+  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccount">
     update long_articles_plan_account
     <set>
       <if test="planId != null">
@@ -549,6 +561,9 @@
       <if test="publishOpenFlag != null">
         publish_open_flag = #{publishOpenFlag,jdbcType=INTEGER},
       </if>
+      <if test="isSpecialSetting != null">
+        is_special_setting = #{isSpecialSetting,jdbcType=INTEGER},
+      </if>
       <if test="isDelete != null">
         is_delete = #{isDelete,jdbcType=INTEGER},
       </if>
@@ -561,7 +576,7 @@
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
-  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.PlanAccount">
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PlanAccount">
     update long_articles_plan_account
     set plan_id = #{planId,jdbcType=VARCHAR},
       plan_name = #{planName,jdbcType=VARCHAR},
@@ -588,6 +603,7 @@
       retry_count = #{retryCount,jdbcType=INTEGER},
       send_count = #{sendCount,jdbcType=INTEGER},
       publish_open_flag = #{publishOpenFlag,jdbcType=INTEGER},
+      is_special_setting = #{isSpecialSetting,jdbcType=INTEGER},
       is_delete = #{isDelete,jdbcType=INTEGER},
       create_time = #{createTime,jdbcType=TIMESTAMP},
       update_time = #{updateTime,jdbcType=TIMESTAMP}

+ 9 - 9
long-article-server/src/main/resources/mapper/PlanMapper.xml → long-article-server/src/main/resources/mapper/longarticle/PlanMapper.xml

@@ -1,7 +1,7 @@
 <?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.piaoquan.longarticle.dao.mapper.PlanMapper">
-  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.Plan">
+<mapper namespace="com.tzld.piaoquan.longarticle.dao.mapper.longarticle.PlanMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.longarticle.Plan">
     <id column="id" jdbcType="BIGINT" property="id" />
     <result column="plan_id" jdbcType="VARCHAR" property="planId" />
     <result column="plan_name" jdbcType="VARCHAR" property="planName" />
@@ -83,7 +83,7 @@
     publish_time_interval, publish_num, publish_pre_num, publish_pre_min_num, publish_push_time, 
     push_type, miniprogram_insert_flag, is_delete, create_time, update_time
   </sql>
-  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.PlanExample" resultMap="BaseResultMap">
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PlanExample" resultMap="BaseResultMap">
     select
     <if test="distinct">
       distinct
@@ -110,13 +110,13 @@
     delete from long_articles_plan
     where id = #{id,jdbcType=BIGINT}
   </delete>
-  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.PlanExample">
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PlanExample">
     delete from long_articles_plan
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
     </if>
   </delete>
-  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.Plan">
+  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.Plan">
     insert into long_articles_plan (id, plan_id, plan_name, 
       publish_rate, publish_date, publish_window_start, 
       publish_window_end, publish_time_interval, 
@@ -132,7 +132,7 @@
       #{isDelete,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}
       )
   </insert>
-  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.Plan">
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.Plan">
     insert into long_articles_plan
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -241,7 +241,7 @@
       </if>
     </trim>
   </insert>
-  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.PlanExample" resultType="java.lang.Long">
+  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PlanExample" resultType="java.lang.Long">
     select count(*) from long_articles_plan
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
@@ -329,7 +329,7 @@
       <include refid="Update_By_Example_Where_Clause" />
     </if>
   </update>
-  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.Plan">
+  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.Plan">
     update long_articles_plan
     <set>
       <if test="planId != null">
@@ -383,7 +383,7 @@
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
-  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.Plan">
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.Plan">
     update long_articles_plan
     set plan_id = #{planId,jdbcType=VARCHAR},
       plan_name = #{planName,jdbcType=VARCHAR},

+ 326 - 0
long-article-server/src/main/resources/mapper/longarticle/PromotionSourceMapper.xml

@@ -0,0 +1,326 @@
+<?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.piaoquan.longarticle.dao.mapper.longarticle.PromotionSourceMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.longarticle.model.po.longarticle.PromotionSource">
+    <id column="channel_content_id" jdbcType="VARCHAR" property="channelContentId" />
+    <result column="source_publish_content_id" jdbcType="VARCHAR" property="sourcePublishContentId" />
+    <result column="root_publish_content_id" jdbcType="VARCHAR" property="rootPublishContentId" />
+    <result column="root_produce_content_id" jdbcType="VARCHAR" property="rootProduceContentId" />
+    <result column="wx_sn" jdbcType="VARCHAR" property="wxSn" />
+    <result column="title" jdbcType="VARCHAR" property="title" />
+    <result column="title_md5" jdbcType="VARCHAR" property="titleMd5" />
+    <result column="level" jdbcType="VARCHAR" property="level" />
+    <result column="status" jdbcType="INTEGER" property="status" />
+    <result column="deleted" jdbcType="INTEGER" property="deleted" />
+    <result column="create_timestamp" jdbcType="BIGINT" property="createTimestamp" />
+    <result column="update_timestamp" jdbcType="BIGINT" property="updateTimestamp" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <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">
+    <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">
+    channel_content_id, source_publish_content_id, root_publish_content_id, root_produce_content_id, 
+    wx_sn, title, title_md5, `level`, `status`, deleted, create_timestamp, update_timestamp
+  </sql>
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PromotionSourceExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from article_pool_promotion_source
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+    <if test="page != null">
+      limit #{page.offset} , #{page.pageSize}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from article_pool_promotion_source
+    where channel_content_id = #{channelContentId,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    delete from article_pool_promotion_source
+    where channel_content_id = #{channelContentId,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PromotionSourceExample">
+    delete from article_pool_promotion_source
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PromotionSource">
+    insert into article_pool_promotion_source (channel_content_id, source_publish_content_id, 
+      root_publish_content_id, root_produce_content_id, 
+      wx_sn, title, title_md5, 
+      `level`, `status`, deleted, 
+      create_timestamp, update_timestamp)
+    values (#{channelContentId,jdbcType=VARCHAR}, #{sourcePublishContentId,jdbcType=VARCHAR}, 
+      #{rootPublishContentId,jdbcType=VARCHAR}, #{rootProduceContentId,jdbcType=VARCHAR}, 
+      #{wxSn,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, #{titleMd5,jdbcType=VARCHAR}, 
+      #{level,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{deleted,jdbcType=INTEGER}, 
+      #{createTimestamp,jdbcType=BIGINT}, #{updateTimestamp,jdbcType=BIGINT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PromotionSource">
+    insert into article_pool_promotion_source
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="channelContentId != null">
+        channel_content_id,
+      </if>
+      <if test="sourcePublishContentId != null">
+        source_publish_content_id,
+      </if>
+      <if test="rootPublishContentId != null">
+        root_publish_content_id,
+      </if>
+      <if test="rootProduceContentId != null">
+        root_produce_content_id,
+      </if>
+      <if test="wxSn != null">
+        wx_sn,
+      </if>
+      <if test="title != null">
+        title,
+      </if>
+      <if test="titleMd5 != null">
+        title_md5,
+      </if>
+      <if test="level != null">
+        `level`,
+      </if>
+      <if test="status != null">
+        `status`,
+      </if>
+      <if test="deleted != null">
+        deleted,
+      </if>
+      <if test="createTimestamp != null">
+        create_timestamp,
+      </if>
+      <if test="updateTimestamp != null">
+        update_timestamp,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="channelContentId != null">
+        #{channelContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="sourcePublishContentId != null">
+        #{sourcePublishContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="rootPublishContentId != null">
+        #{rootPublishContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="rootProduceContentId != null">
+        #{rootProduceContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="wxSn != null">
+        #{wxSn,jdbcType=VARCHAR},
+      </if>
+      <if test="title != null">
+        #{title,jdbcType=VARCHAR},
+      </if>
+      <if test="titleMd5 != null">
+        #{titleMd5,jdbcType=VARCHAR},
+      </if>
+      <if test="level != null">
+        #{level,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        #{status,jdbcType=INTEGER},
+      </if>
+      <if test="deleted != null">
+        #{deleted,jdbcType=INTEGER},
+      </if>
+      <if test="createTimestamp != null">
+        #{createTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="updateTimestamp != null">
+        #{updateTimestamp,jdbcType=BIGINT},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PromotionSourceExample" resultType="java.lang.Long">
+    select count(*) from article_pool_promotion_source
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update article_pool_promotion_source
+    <set>
+      <if test="record.channelContentId != null">
+        channel_content_id = #{record.channelContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.sourcePublishContentId != null">
+        source_publish_content_id = #{record.sourcePublishContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.rootPublishContentId != null">
+        root_publish_content_id = #{record.rootPublishContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.rootProduceContentId != null">
+        root_produce_content_id = #{record.rootProduceContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.wxSn != null">
+        wx_sn = #{record.wxSn,jdbcType=VARCHAR},
+      </if>
+      <if test="record.title != null">
+        title = #{record.title,jdbcType=VARCHAR},
+      </if>
+      <if test="record.titleMd5 != null">
+        title_md5 = #{record.titleMd5,jdbcType=VARCHAR},
+      </if>
+      <if test="record.level != null">
+        `level` = #{record.level,jdbcType=VARCHAR},
+      </if>
+      <if test="record.status != null">
+        `status` = #{record.status,jdbcType=INTEGER},
+      </if>
+      <if test="record.deleted != null">
+        deleted = #{record.deleted,jdbcType=INTEGER},
+      </if>
+      <if test="record.createTimestamp != null">
+        create_timestamp = #{record.createTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="record.updateTimestamp != null">
+        update_timestamp = #{record.updateTimestamp,jdbcType=BIGINT},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update article_pool_promotion_source
+    set channel_content_id = #{record.channelContentId,jdbcType=VARCHAR},
+      source_publish_content_id = #{record.sourcePublishContentId,jdbcType=VARCHAR},
+      root_publish_content_id = #{record.rootPublishContentId,jdbcType=VARCHAR},
+      root_produce_content_id = #{record.rootProduceContentId,jdbcType=VARCHAR},
+      wx_sn = #{record.wxSn,jdbcType=VARCHAR},
+      title = #{record.title,jdbcType=VARCHAR},
+      title_md5 = #{record.titleMd5,jdbcType=VARCHAR},
+      `level` = #{record.level,jdbcType=VARCHAR},
+      `status` = #{record.status,jdbcType=INTEGER},
+      deleted = #{record.deleted,jdbcType=INTEGER},
+      create_timestamp = #{record.createTimestamp,jdbcType=BIGINT},
+      update_timestamp = #{record.updateTimestamp,jdbcType=BIGINT}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PromotionSource">
+    update article_pool_promotion_source
+    <set>
+      <if test="sourcePublishContentId != null">
+        source_publish_content_id = #{sourcePublishContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="rootPublishContentId != null">
+        root_publish_content_id = #{rootPublishContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="rootProduceContentId != null">
+        root_produce_content_id = #{rootProduceContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="wxSn != null">
+        wx_sn = #{wxSn,jdbcType=VARCHAR},
+      </if>
+      <if test="title != null">
+        title = #{title,jdbcType=VARCHAR},
+      </if>
+      <if test="titleMd5 != null">
+        title_md5 = #{titleMd5,jdbcType=VARCHAR},
+      </if>
+      <if test="level != null">
+        `level` = #{level,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        `status` = #{status,jdbcType=INTEGER},
+      </if>
+      <if test="deleted != null">
+        deleted = #{deleted,jdbcType=INTEGER},
+      </if>
+      <if test="createTimestamp != null">
+        create_timestamp = #{createTimestamp,jdbcType=BIGINT},
+      </if>
+      <if test="updateTimestamp != null">
+        update_timestamp = #{updateTimestamp,jdbcType=BIGINT},
+      </if>
+    </set>
+    where channel_content_id = #{channelContentId,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.longarticle.model.po.longarticle.PromotionSource">
+    update article_pool_promotion_source
+    set source_publish_content_id = #{sourcePublishContentId,jdbcType=VARCHAR},
+      root_publish_content_id = #{rootPublishContentId,jdbcType=VARCHAR},
+      root_produce_content_id = #{rootProduceContentId,jdbcType=VARCHAR},
+      wx_sn = #{wxSn,jdbcType=VARCHAR},
+      title = #{title,jdbcType=VARCHAR},
+      title_md5 = #{titleMd5,jdbcType=VARCHAR},
+      `level` = #{level,jdbcType=VARCHAR},
+      `status` = #{status,jdbcType=INTEGER},
+      deleted = #{deleted,jdbcType=INTEGER},
+      create_timestamp = #{createTimestamp,jdbcType=BIGINT},
+      update_timestamp = #{updateTimestamp,jdbcType=BIGINT}
+    where channel_content_id = #{channelContentId,jdbcType=VARCHAR}
+  </update>
+</mapper>

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio