Просмотр исходного кода

Merge remote-tracking branch 'origin/master' into cooperation_video_candidate_pool_improved_lld_0509

刘立冬 1 день назад
Родитель
Сommit
6e838de931

+ 26 - 0
api-module/src/main/java/com/tzld/piaoquan/api/controller/contentplatform/ContentPlatformPlanController.java

@@ -2,6 +2,7 @@ package com.tzld.piaoquan.api.controller.contentplatform;
 
 import com.tzld.piaoquan.api.annotation.JwtIgnore;
 import com.tzld.piaoquan.api.job.contentplatform.ContentPlatformVideoJob;
+import com.tzld.piaoquan.api.job.contentplatform.ContentPlatformDemandVideoJob;
 import com.tzld.piaoquan.api.model.param.IdParam;
 import com.tzld.piaoquan.api.model.param.contentplatform.*;
 import com.tzld.piaoquan.api.model.vo.contentplatform.GzhPlanItemVO;
@@ -27,6 +28,9 @@ public class ContentPlatformPlanController {
     @Autowired
     private ContentPlatformVideoJob videoJob;
 
+    @Autowired
+    private ContentPlatformDemandVideoJob demandVideoJob;
+
     @ApiOperation(value = "公众号计划列表")
     @PostMapping("/gzh/list")
     public CommonResponse<Page<GzhPlanItemVO>> gzhPlanList(@RequestBody GzhPlanListParam param) {
@@ -66,6 +70,12 @@ public class ContentPlatformPlanController {
         return CommonResponse.success(planService.getUploadVideoContentList(param));
     }
 
+    @ApiOperation(value = "需求匹配视频列表")
+    @PostMapping("/demand/videoContentList")
+    public CommonResponse<Page<VideoContentItemVO>> getDemandVideoContentList(@RequestBody VideoContentListParam param) {
+        return CommonResponse.success(planService.getDemandVideoContentList(param));
+    }
+
     @ApiOperation(value = "发布内容视频品类列表")
     @GetMapping("/videoContentCategoryList")
     public CommonResponse<List<String>> getVideoContentCategoryList(String category) {
@@ -154,4 +164,20 @@ public class ContentPlatformPlanController {
     public CommonResponse<Boolean> gzhPushCheckExistRootSourceId(String rootSourceId) {
         return CommonResponse.success(planService.gzhPushCheckExistRootSourceId(rootSourceId));
     }
+
+    @ApiOperation(value = "同步需求匹配视频数据", hidden = true)
+    @JwtIgnore
+    @GetMapping("/job/syncContentPlatformDemandVideoJob")
+    public CommonResponse<Void> syncContentPlatformDemandVideoJob(String dateStr) {
+        demandVideoJob.syncContentPlatformDemandVideoJob(dateStr);
+        return CommonResponse.success();
+    }
+
+    @ApiOperation(value = "检查需求匹配视频状态", hidden = true)
+    @JwtIgnore
+    @GetMapping("/job/checkContentPlatformDemandVideoStatusJob")
+    public CommonResponse<Void> checkContentPlatformDemandVideoStatusJob() {
+        demandVideoJob.checkContentPlatformDemandVideoStatusJob(null);
+        return CommonResponse.success();
+    }
 }

+ 2 - 2
api-module/src/main/java/com/tzld/piaoquan/api/dao/generator/MybatisGeneratorMain.java

@@ -20,9 +20,9 @@ public class MybatisGeneratorMain {
             throws SQLException, IOException, InterruptedException, InvalidConfigurationException, XMLParserException {
         List<String> warnings = new ArrayList<>();
 
-        File configFile = new File(MybatisGeneratorMain.class.getResource("/mybatis-generator-config.xml").getFile());
+//        File configFile = new File(MybatisGeneratorMain.class.getResource("/mybatis-generator-config.xml").getFile());
         //File configFile = new File(MybatisGeneratorMain.class.getResource("/mybatis-api-generator-config.xml").getFile());
-        //File configFile = new File(MybatisGeneratorMain.class.getResource("/mybatis-api-contentPlatform-generator-config.xml").getFile());
+        File configFile = new File(MybatisGeneratorMain.class.getResource("/mybatis-api-contentPlatform-generator-config.xml").getFile());
 //        File configFile = new File(MybatisGeneratorMain.class.getResource("/mybatis-api-wecomThirdpart-generator-config.xml").getFile());
         ConfigurationParser cp = new ConfigurationParser(warnings);
         Configuration config = cp.parseConfiguration(configFile);

+ 30 - 0
api-module/src/main/java/com/tzld/piaoquan/api/dao/mapper/contentplatform/ContentPlatformDemandVideoMapper.java

@@ -0,0 +1,30 @@
+package com.tzld.piaoquan.api.dao.mapper.contentplatform;
+
+import com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo;
+import com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideoExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface ContentPlatformDemandVideoMapper {
+    long countByExample(ContentPlatformDemandVideoExample example);
+
+    int deleteByExample(ContentPlatformDemandVideoExample example);
+
+    int deleteByPrimaryKey(Long id);
+
+    int insert(ContentPlatformDemandVideo record);
+
+    int insertSelective(ContentPlatformDemandVideo record);
+
+    List<ContentPlatformDemandVideo> selectByExample(ContentPlatformDemandVideoExample example);
+
+    ContentPlatformDemandVideo selectByPrimaryKey(Long id);
+
+    int updateByExampleSelective(@Param("record") ContentPlatformDemandVideo record, @Param("example") ContentPlatformDemandVideoExample example);
+
+    int updateByExample(@Param("record") ContentPlatformDemandVideo record, @Param("example") ContentPlatformDemandVideoExample example);
+
+    int updateByPrimaryKeySelective(ContentPlatformDemandVideo record);
+
+    int updateByPrimaryKey(ContentPlatformDemandVideo record);
+}

+ 33 - 0
api-module/src/main/java/com/tzld/piaoquan/api/dao/mapper/contentplatform/ext/ContentPlatformDemandVideoMapperExt.java

@@ -0,0 +1,33 @@
+package com.tzld.piaoquan.api.dao.mapper.contentplatform.ext;
+
+import com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ContentPlatformDemandVideoMapperExt {
+
+    int batchInsert(@Param("list") List<ContentPlatformDemandVideo> list);
+
+    int deleteByDt(@Param("dt") String dt);
+
+    List<ContentPlatformDemandVideo> selectByCondition(@Param("dt") String dt,
+                                                       @Param("channelName") String channelName,
+                                                       @Param("pointType") String pointType,
+                                                       @Param("title") String title,
+                                                       @Param("crowdSegment") String crowdSegment,
+                                                       @Param("offset") int offset,
+                                                       @Param("pageSize") int pageSize);
+
+    int countByCondition(@Param("dt") String dt,
+                         @Param("channelName") String channelName,
+                         @Param("pointType") String pointType,
+                         @Param("title") String title,
+                         @Param("crowdSegment") String crowdSegment);
+
+    String getMaxDt();
+
+    List<ContentPlatformDemandVideo> selectActiveVideos(@Param("dt") String dt);
+
+    int updateStatusByVideoId(@Param("videoId") Long videoId, @Param("dt") String dt, @Param("status") Integer status, @Param("updateTimestamp") Long updateTimestamp);
+}

+ 196 - 0
api-module/src/main/java/com/tzld/piaoquan/api/job/contentplatform/ContentPlatformDemandVideoJob.java

@@ -0,0 +1,196 @@
+package com.tzld.piaoquan.api.job.contentplatform;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.google.common.collect.Lists;
+import com.tzld.piaoquan.api.dao.mapper.contentplatform.ext.ContentPlatformDemandVideoMapperExt;
+import com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo;
+import com.tzld.piaoquan.growth.common.component.HttpPoolClient;
+import com.tzld.piaoquan.growth.common.model.bo.VideoDetail;
+import com.tzld.piaoquan.growth.common.service.MessageAttachmentService;
+import com.tzld.piaoquan.growth.common.utils.DateUtil;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class ContentPlatformDemandVideoJob {
+
+    private static final String DEMAND_MATCH_API_URL = "http://api-internal.piaoquantv.com/videoVector/videoSearch/queryDemandMatchResult";
+
+    @Autowired
+    private HttpPoolClient httpPoolClient;
+
+    @Autowired
+    private ContentPlatformDemandVideoMapperExt demandVideoMapperExt;
+
+    @Autowired
+    private MessageAttachmentService messageAttachmentService;
+
+    @XxlJob("syncContentPlatformDemandVideoJob")
+    public ReturnT<String> syncContentPlatformDemandVideoJob(String param) {
+        String dt = DateUtil.getBeforeDayDateString("yyyyMMdd");
+        if (StringUtils.hasText(param)) {
+            dt = param;
+        }
+        log.info("syncContentPlatformDemandVideoJob start, dt={}", dt);
+
+        try {
+            // 调用接口获取需求匹配结果
+            JSONObject requestParam = new JSONObject();
+            requestParam.put("dt", dt);
+            requestParam.put("channelName", "群/企微合作-稳定");
+
+            String response = httpPoolClient.post(DEMAND_MATCH_API_URL, requestParam.toJSONString());
+            if (!StringUtils.hasText(response)) {
+                log.error("syncContentPlatformDemandVideoJob response is empty, dt={}", dt);
+                return ReturnT.FAIL;
+            }
+
+            JSONObject result = JSONObject.parseObject(response);
+            if (result.getInteger("code") != 0) {
+                log.error("syncContentPlatformDemandVideoJob api error, dt={}, msg={}", dt, result.getString("msg"));
+                return ReturnT.FAIL;
+            }
+
+            JSONArray dataArray = result.getJSONArray("data");
+            if (dataArray == null || dataArray.isEmpty()) {
+                log.info("syncContentPlatformDemandVideoJob no data, dt={}", dt);
+                return ReturnT.SUCCESS;
+            }
+
+            Long now = System.currentTimeMillis();
+            List<ContentPlatformDemandVideo> saveList = new ArrayList<>();
+
+            for (int i = 0; i < dataArray.size(); i++) {
+                JSONObject demandItem = dataArray.getJSONObject(i);
+                String channelName = demandItem.getString("channelName");
+                String crowdSegment = demandItem.getString("crowdSegment");
+                String dimension = demandItem.getString("dimension");
+                String pointType = demandItem.getString("pointType");
+                String standardElement = demandItem.getString("standardElement");
+                String categoryName = demandItem.getString("categoryName");
+                Long visitUv = demandItem.getLong("visitUv");
+                Double totalRov = demandItem.getDouble("totalRov");
+
+                JSONArray matchedVideos = demandItem.getJSONArray("matchedVideos");
+                if (matchedVideos == null || matchedVideos.isEmpty()) {
+                    continue;
+                }
+
+                for (int j = 0; j < matchedVideos.size(); j++) {
+                    JSONObject videoItem = matchedVideos.getJSONObject(j);
+                    ContentPlatformDemandVideo demandVideo = new ContentPlatformDemandVideo();
+                    demandVideo.setDt(dt);
+                    demandVideo.setChannelName(channelName != null ? channelName : "");
+                    demandVideo.setCrowdSegment(crowdSegment != null ? crowdSegment : "");
+                    demandVideo.setDimension(dimension != null ? dimension : "");
+                    demandVideo.setPointType(pointType != null ? pointType : "");
+                    demandVideo.setStandardElement(standardElement != null ? standardElement : "");
+                    demandVideo.setCategoryName(categoryName != null ? categoryName : "");
+                    demandVideo.setVisitUv(visitUv);
+                    demandVideo.setTotalRov(totalRov);
+                    demandVideo.setVideoId(videoItem.getLong("videoId"));
+                    demandVideo.setConfigCode(videoItem.getString("configCode") != null ? videoItem.getString("configCode") : "");
+                    demandVideo.setScore(videoItem.getDouble("score"));
+                    demandVideo.setSim(videoItem.getDouble("sim"));
+                    demandVideo.setRov(videoItem.getDouble("rov"));
+                    demandVideo.setMatchText(videoItem.getString("text") != null ? videoItem.getString("text") : "");
+                    demandVideo.setStatus(1);
+                    demandVideo.setCreateTimestamp(now);
+                    saveList.add(demandVideo);
+                }
+            }
+
+            if (CollectionUtils.isEmpty(saveList)) {
+                log.info("syncContentPlatformDemandVideoJob no matched videos, dt={}", dt);
+                return ReturnT.SUCCESS;
+            }
+
+            // 获取视频详情(标题、封面、视频URL)
+            List<Long> videoIds = saveList.stream().map(ContentPlatformDemandVideo::getVideoId)
+                    .distinct().collect(Collectors.toList());
+            Map<Long, VideoDetail> videoDetailMap = new HashMap<>();
+            for (List<Long> partition : Lists.partition(videoIds, 20)) {
+                Set<Long> ids = new HashSet<>(partition);
+                videoDetailMap.putAll(messageAttachmentService.getVideoDetail(ids));
+            }
+
+            // 填充视频详情
+            for (ContentPlatformDemandVideo demandVideo : saveList) {
+                VideoDetail detail = videoDetailMap.get(demandVideo.getVideoId());
+                if (Objects.nonNull(detail)) {
+                    demandVideo.setTitle(detail.getTitle());
+                    String cover = detail.getCover();
+                    if (StringUtils.hasText(cover) && cover.contains("/watermark")) {
+                        cover = cover.substring(0, cover.indexOf("/watermark"));
+                    }
+                    demandVideo.setCover(cover);
+                    demandVideo.setVideo(detail.getVideoPath());
+                }
+            }
+
+            // 过滤未获取到视频详情的记录
+            saveList = saveList.stream()
+                    .filter(v -> StringUtils.hasText(v.getTitle()))
+                    .collect(Collectors.toList());
+
+            // 按crowd_segment粒度去重,相同videoId保留分数最高的一条
+            saveList = saveList.stream()
+                    .collect(Collectors.groupingBy(v -> v.getCrowdSegment() + "_" + v.getVideoId()))
+                    .values().stream()
+                    .map(group -> group.stream()
+                            .max(Comparator.comparingDouble(v -> v.getScore() != null ? v.getScore() : 0.0))
+                            .orElse(null))
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.toList());
+
+            // 先删除当天数据,再批量插入
+            demandVideoMapperExt.deleteByDt(dt);
+            for (List<ContentPlatformDemandVideo> partition : Lists.partition(saveList, 500)) {
+                demandVideoMapperExt.batchInsert(partition);
+            }
+
+            log.info("syncContentPlatformDemandVideoJob success, dt={}, count={}", dt, saveList.size());
+            return ReturnT.SUCCESS;
+        } catch (Exception e) {
+            log.error("syncContentPlatformDemandVideoJob error, dt={}", dt, e);
+            return ReturnT.FAIL;
+        }
+    }
+
+    @XxlJob("checkContentPlatformDemandVideoStatusJob")
+    public ReturnT<String> checkContentPlatformDemandVideoStatusJob(String param) {
+        String dt = demandVideoMapperExt.getMaxDt();
+        if (!StringUtils.hasText(dt)) {
+            log.info("checkContentPlatformDemandVideoStatusJob no data");
+            return ReturnT.SUCCESS;
+        }
+        log.info("checkContentPlatformDemandVideoStatusJob start, dt={}", dt);
+        List<ContentPlatformDemandVideo> activeVideos = demandVideoMapperExt.selectActiveVideos(dt);
+        if (CollectionUtils.isEmpty(activeVideos)) {
+            return ReturnT.SUCCESS;
+        }
+        Long now = System.currentTimeMillis();
+        for (List<ContentPlatformDemandVideo> partition : Lists.partition(activeVideos, 20)) {
+            List<Long> videoIds = partition.stream().map(ContentPlatformDemandVideo::getVideoId).collect(Collectors.toList());
+            Map<Long, VideoDetail> videoDetailMap = messageAttachmentService.getVideoDetail(new HashSet<>(videoIds));
+            for (ContentPlatformDemandVideo video : partition) {
+                VideoDetail videoDetail = videoDetailMap.get(video.getVideoId());
+                if (videoDetail == null || videoDetail.getAuditStatus() != 5) {
+                    demandVideoMapperExt.updateStatusByVideoId(video.getVideoId(), dt, 0, now);
+                }
+            }
+        }
+        log.info("checkContentPlatformDemandVideoStatusJob done, dt={}", dt);
+        return ReturnT.SUCCESS;
+    }
+}

+ 255 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/ContentPlatformDemandVideo.java

@@ -0,0 +1,255 @@
+package com.tzld.piaoquan.api.model.po.contentplatform;
+
+public class ContentPlatformDemandVideo {
+    private Long id;
+
+    private String dt;
+
+    private String channelName;
+
+    private String crowdSegment;
+
+    private String dimension;
+
+    private String pointType;
+
+    private String standardElement;
+
+    private String categoryName;
+
+    private Long visitUv;
+
+    private Double totalRov;
+
+    private Long videoId;
+
+    private String configCode;
+
+    private Double score;
+
+    private Double sim;
+
+    private Double rov;
+
+    private String matchText;
+
+    private String title;
+
+    private String cover;
+
+    private String video;
+
+    private Integer status;
+
+    private Long createTimestamp;
+
+    private Long updateTimestamp;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getDt() {
+        return dt;
+    }
+
+    public void setDt(String dt) {
+        this.dt = dt;
+    }
+
+    public String getChannelName() {
+        return channelName;
+    }
+
+    public void setChannelName(String channelName) {
+        this.channelName = channelName;
+    }
+
+    public String getCrowdSegment() {
+        return crowdSegment;
+    }
+
+    public void setCrowdSegment(String crowdSegment) {
+        this.crowdSegment = crowdSegment;
+    }
+
+    public String getDimension() {
+        return dimension;
+    }
+
+    public void setDimension(String dimension) {
+        this.dimension = dimension;
+    }
+
+    public String getPointType() {
+        return pointType;
+    }
+
+    public void setPointType(String pointType) {
+        this.pointType = pointType;
+    }
+
+    public String getStandardElement() {
+        return standardElement;
+    }
+
+    public void setStandardElement(String standardElement) {
+        this.standardElement = standardElement;
+    }
+
+    public String getCategoryName() {
+        return categoryName;
+    }
+
+    public void setCategoryName(String categoryName) {
+        this.categoryName = categoryName;
+    }
+
+    public Long getVisitUv() {
+        return visitUv;
+    }
+
+    public void setVisitUv(Long visitUv) {
+        this.visitUv = visitUv;
+    }
+
+    public Double getTotalRov() {
+        return totalRov;
+    }
+
+    public void setTotalRov(Double totalRov) {
+        this.totalRov = totalRov;
+    }
+
+    public Long getVideoId() {
+        return videoId;
+    }
+
+    public void setVideoId(Long videoId) {
+        this.videoId = videoId;
+    }
+
+    public String getConfigCode() {
+        return configCode;
+    }
+
+    public void setConfigCode(String configCode) {
+        this.configCode = configCode;
+    }
+
+    public Double getScore() {
+        return score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
+    }
+
+    public Double getSim() {
+        return sim;
+    }
+
+    public void setSim(Double sim) {
+        this.sim = sim;
+    }
+
+    public Double getRov() {
+        return rov;
+    }
+
+    public void setRov(Double rov) {
+        this.rov = rov;
+    }
+
+    public String getMatchText() {
+        return matchText;
+    }
+
+    public void setMatchText(String matchText) {
+        this.matchText = matchText;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getCover() {
+        return cover;
+    }
+
+    public void setCover(String cover) {
+        this.cover = cover;
+    }
+
+    public String getVideo() {
+        return video;
+    }
+
+    public void setVideo(String video) {
+        this.video = video;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    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(", id=").append(id);
+        sb.append(", dt=").append(dt);
+        sb.append(", channelName=").append(channelName);
+        sb.append(", crowdSegment=").append(crowdSegment);
+        sb.append(", dimension=").append(dimension);
+        sb.append(", pointType=").append(pointType);
+        sb.append(", standardElement=").append(standardElement);
+        sb.append(", categoryName=").append(categoryName);
+        sb.append(", visitUv=").append(visitUv);
+        sb.append(", totalRov=").append(totalRov);
+        sb.append(", videoId=").append(videoId);
+        sb.append(", configCode=").append(configCode);
+        sb.append(", score=").append(score);
+        sb.append(", sim=").append(sim);
+        sb.append(", rov=").append(rov);
+        sb.append(", matchText=").append(matchText);
+        sb.append(", title=").append(title);
+        sb.append(", cover=").append(cover);
+        sb.append(", video=").append(video);
+        sb.append(", status=").append(status);
+        sb.append(", createTimestamp=").append(createTimestamp);
+        sb.append(", updateTimestamp=").append(updateTimestamp);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 1651 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/ContentPlatformDemandVideoExample.java

@@ -0,0 +1,1651 @@
+package com.tzld.piaoquan.api.model.po.contentplatform;
+
+import com.tzld.piaoquan.growth.common.utils.page.Page;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ContentPlatformDemandVideoExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    protected Page page;
+
+    public ContentPlatformDemandVideoExample() {
+        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 andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Long value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Long value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Long value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Long value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Long value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Long> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Long> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Long value1, Long value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Long value1, Long value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtIsNull() {
+            addCriterion("dt is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtIsNotNull() {
+            addCriterion("dt is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtEqualTo(String value) {
+            addCriterion("dt =", value, "dt");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtNotEqualTo(String value) {
+            addCriterion("dt <>", value, "dt");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtGreaterThan(String value) {
+            addCriterion("dt >", value, "dt");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtGreaterThanOrEqualTo(String value) {
+            addCriterion("dt >=", value, "dt");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtLessThan(String value) {
+            addCriterion("dt <", value, "dt");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtLessThanOrEqualTo(String value) {
+            addCriterion("dt <=", value, "dt");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtLike(String value) {
+            addCriterion("dt like", value, "dt");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtNotLike(String value) {
+            addCriterion("dt not like", value, "dt");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtIn(List<String> values) {
+            addCriterion("dt in", values, "dt");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtNotIn(List<String> values) {
+            addCriterion("dt not in", values, "dt");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtBetween(String value1, String value2) {
+            addCriterion("dt between", value1, value2, "dt");
+            return (Criteria) this;
+        }
+
+        public Criteria andDtNotBetween(String value1, String value2) {
+            addCriterion("dt not between", value1, value2, "dt");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameIsNull() {
+            addCriterion("channel_name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameIsNotNull() {
+            addCriterion("channel_name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameEqualTo(String value) {
+            addCriterion("channel_name =", value, "channelName");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameNotEqualTo(String value) {
+            addCriterion("channel_name <>", value, "channelName");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameGreaterThan(String value) {
+            addCriterion("channel_name >", value, "channelName");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameGreaterThanOrEqualTo(String value) {
+            addCriterion("channel_name >=", value, "channelName");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameLessThan(String value) {
+            addCriterion("channel_name <", value, "channelName");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameLessThanOrEqualTo(String value) {
+            addCriterion("channel_name <=", value, "channelName");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameLike(String value) {
+            addCriterion("channel_name like", value, "channelName");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameNotLike(String value) {
+            addCriterion("channel_name not like", value, "channelName");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameIn(List<String> values) {
+            addCriterion("channel_name in", values, "channelName");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameNotIn(List<String> values) {
+            addCriterion("channel_name not in", values, "channelName");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameBetween(String value1, String value2) {
+            addCriterion("channel_name between", value1, value2, "channelName");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelNameNotBetween(String value1, String value2) {
+            addCriterion("channel_name not between", value1, value2, "channelName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentIsNull() {
+            addCriterion("crowd_segment is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentIsNotNull() {
+            addCriterion("crowd_segment is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentEqualTo(String value) {
+            addCriterion("crowd_segment =", value, "crowdSegment");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentNotEqualTo(String value) {
+            addCriterion("crowd_segment <>", value, "crowdSegment");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentGreaterThan(String value) {
+            addCriterion("crowd_segment >", value, "crowdSegment");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentGreaterThanOrEqualTo(String value) {
+            addCriterion("crowd_segment >=", value, "crowdSegment");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentLessThan(String value) {
+            addCriterion("crowd_segment <", value, "crowdSegment");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentLessThanOrEqualTo(String value) {
+            addCriterion("crowd_segment <=", value, "crowdSegment");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentLike(String value) {
+            addCriterion("crowd_segment like", value, "crowdSegment");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentNotLike(String value) {
+            addCriterion("crowd_segment not like", value, "crowdSegment");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentIn(List<String> values) {
+            addCriterion("crowd_segment in", values, "crowdSegment");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentNotIn(List<String> values) {
+            addCriterion("crowd_segment not in", values, "crowdSegment");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentBetween(String value1, String value2) {
+            addCriterion("crowd_segment between", value1, value2, "crowdSegment");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrowdSegmentNotBetween(String value1, String value2) {
+            addCriterion("crowd_segment not between", value1, value2, "crowdSegment");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionIsNull() {
+            addCriterion("dimension is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionIsNotNull() {
+            addCriterion("dimension is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionEqualTo(String value) {
+            addCriterion("dimension =", value, "dimension");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionNotEqualTo(String value) {
+            addCriterion("dimension <>", value, "dimension");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionGreaterThan(String value) {
+            addCriterion("dimension >", value, "dimension");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionGreaterThanOrEqualTo(String value) {
+            addCriterion("dimension >=", value, "dimension");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionLessThan(String value) {
+            addCriterion("dimension <", value, "dimension");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionLessThanOrEqualTo(String value) {
+            addCriterion("dimension <=", value, "dimension");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionLike(String value) {
+            addCriterion("dimension like", value, "dimension");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionNotLike(String value) {
+            addCriterion("dimension not like", value, "dimension");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionIn(List<String> values) {
+            addCriterion("dimension in", values, "dimension");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionNotIn(List<String> values) {
+            addCriterion("dimension not in", values, "dimension");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionBetween(String value1, String value2) {
+            addCriterion("dimension between", value1, value2, "dimension");
+            return (Criteria) this;
+        }
+
+        public Criteria andDimensionNotBetween(String value1, String value2) {
+            addCriterion("dimension not between", value1, value2, "dimension");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeIsNull() {
+            addCriterion("point_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeIsNotNull() {
+            addCriterion("point_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeEqualTo(String value) {
+            addCriterion("point_type =", value, "pointType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeNotEqualTo(String value) {
+            addCriterion("point_type <>", value, "pointType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeGreaterThan(String value) {
+            addCriterion("point_type >", value, "pointType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("point_type >=", value, "pointType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeLessThan(String value) {
+            addCriterion("point_type <", value, "pointType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeLessThanOrEqualTo(String value) {
+            addCriterion("point_type <=", value, "pointType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeLike(String value) {
+            addCriterion("point_type like", value, "pointType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeNotLike(String value) {
+            addCriterion("point_type not like", value, "pointType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeIn(List<String> values) {
+            addCriterion("point_type in", values, "pointType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeNotIn(List<String> values) {
+            addCriterion("point_type not in", values, "pointType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeBetween(String value1, String value2) {
+            addCriterion("point_type between", value1, value2, "pointType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPointTypeNotBetween(String value1, String value2) {
+            addCriterion("point_type not between", value1, value2, "pointType");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementIsNull() {
+            addCriterion("standard_element is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementIsNotNull() {
+            addCriterion("standard_element is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementEqualTo(String value) {
+            addCriterion("standard_element =", value, "standardElement");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementNotEqualTo(String value) {
+            addCriterion("standard_element <>", value, "standardElement");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementGreaterThan(String value) {
+            addCriterion("standard_element >", value, "standardElement");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementGreaterThanOrEqualTo(String value) {
+            addCriterion("standard_element >=", value, "standardElement");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementLessThan(String value) {
+            addCriterion("standard_element <", value, "standardElement");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementLessThanOrEqualTo(String value) {
+            addCriterion("standard_element <=", value, "standardElement");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementLike(String value) {
+            addCriterion("standard_element like", value, "standardElement");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementNotLike(String value) {
+            addCriterion("standard_element not like", value, "standardElement");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementIn(List<String> values) {
+            addCriterion("standard_element in", values, "standardElement");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementNotIn(List<String> values) {
+            addCriterion("standard_element not in", values, "standardElement");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementBetween(String value1, String value2) {
+            addCriterion("standard_element between", value1, value2, "standardElement");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardElementNotBetween(String value1, String value2) {
+            addCriterion("standard_element not between", value1, value2, "standardElement");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameIsNull() {
+            addCriterion("category_name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameIsNotNull() {
+            addCriterion("category_name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameEqualTo(String value) {
+            addCriterion("category_name =", value, "categoryName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameNotEqualTo(String value) {
+            addCriterion("category_name <>", value, "categoryName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameGreaterThan(String value) {
+            addCriterion("category_name >", value, "categoryName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameGreaterThanOrEqualTo(String value) {
+            addCriterion("category_name >=", value, "categoryName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameLessThan(String value) {
+            addCriterion("category_name <", value, "categoryName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameLessThanOrEqualTo(String value) {
+            addCriterion("category_name <=", value, "categoryName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameLike(String value) {
+            addCriterion("category_name like", value, "categoryName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameNotLike(String value) {
+            addCriterion("category_name not like", value, "categoryName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameIn(List<String> values) {
+            addCriterion("category_name in", values, "categoryName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameNotIn(List<String> values) {
+            addCriterion("category_name not in", values, "categoryName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameBetween(String value1, String value2) {
+            addCriterion("category_name between", value1, value2, "categoryName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCategoryNameNotBetween(String value1, String value2) {
+            addCriterion("category_name not between", value1, value2, "categoryName");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitUvIsNull() {
+            addCriterion("visit_uv is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitUvIsNotNull() {
+            addCriterion("visit_uv is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitUvEqualTo(Long value) {
+            addCriterion("visit_uv =", value, "visitUv");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitUvNotEqualTo(Long value) {
+            addCriterion("visit_uv <>", value, "visitUv");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitUvGreaterThan(Long value) {
+            addCriterion("visit_uv >", value, "visitUv");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitUvGreaterThanOrEqualTo(Long value) {
+            addCriterion("visit_uv >=", value, "visitUv");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitUvLessThan(Long value) {
+            addCriterion("visit_uv <", value, "visitUv");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitUvLessThanOrEqualTo(Long value) {
+            addCriterion("visit_uv <=", value, "visitUv");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitUvIn(List<Long> values) {
+            addCriterion("visit_uv in", values, "visitUv");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitUvNotIn(List<Long> values) {
+            addCriterion("visit_uv not in", values, "visitUv");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitUvBetween(Long value1, Long value2) {
+            addCriterion("visit_uv between", value1, value2, "visitUv");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitUvNotBetween(Long value1, Long value2) {
+            addCriterion("visit_uv not between", value1, value2, "visitUv");
+            return (Criteria) this;
+        }
+
+        public Criteria andTotalRovIsNull() {
+            addCriterion("total_rov is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTotalRovIsNotNull() {
+            addCriterion("total_rov is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTotalRovEqualTo(Double value) {
+            addCriterion("total_rov =", value, "totalRov");
+            return (Criteria) this;
+        }
+
+        public Criteria andTotalRovNotEqualTo(Double value) {
+            addCriterion("total_rov <>", value, "totalRov");
+            return (Criteria) this;
+        }
+
+        public Criteria andTotalRovGreaterThan(Double value) {
+            addCriterion("total_rov >", value, "totalRov");
+            return (Criteria) this;
+        }
+
+        public Criteria andTotalRovGreaterThanOrEqualTo(Double value) {
+            addCriterion("total_rov >=", value, "totalRov");
+            return (Criteria) this;
+        }
+
+        public Criteria andTotalRovLessThan(Double value) {
+            addCriterion("total_rov <", value, "totalRov");
+            return (Criteria) this;
+        }
+
+        public Criteria andTotalRovLessThanOrEqualTo(Double value) {
+            addCriterion("total_rov <=", value, "totalRov");
+            return (Criteria) this;
+        }
+
+        public Criteria andTotalRovIn(List<Double> values) {
+            addCriterion("total_rov in", values, "totalRov");
+            return (Criteria) this;
+        }
+
+        public Criteria andTotalRovNotIn(List<Double> values) {
+            addCriterion("total_rov not in", values, "totalRov");
+            return (Criteria) this;
+        }
+
+        public Criteria andTotalRovBetween(Double value1, Double value2) {
+            addCriterion("total_rov between", value1, value2, "totalRov");
+            return (Criteria) this;
+        }
+
+        public Criteria andTotalRovNotBetween(Double value1, Double value2) {
+            addCriterion("total_rov not between", value1, value2, "totalRov");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIdIsNull() {
+            addCriterion("video_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIdIsNotNull() {
+            addCriterion("video_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIdEqualTo(Long value) {
+            addCriterion("video_id =", value, "videoId");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIdNotEqualTo(Long value) {
+            addCriterion("video_id <>", value, "videoId");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIdGreaterThan(Long value) {
+            addCriterion("video_id >", value, "videoId");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("video_id >=", value, "videoId");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIdLessThan(Long value) {
+            addCriterion("video_id <", value, "videoId");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIdLessThanOrEqualTo(Long value) {
+            addCriterion("video_id <=", value, "videoId");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIdIn(List<Long> values) {
+            addCriterion("video_id in", values, "videoId");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIdNotIn(List<Long> values) {
+            addCriterion("video_id not in", values, "videoId");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIdBetween(Long value1, Long value2) {
+            addCriterion("video_id between", value1, value2, "videoId");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIdNotBetween(Long value1, Long value2) {
+            addCriterion("video_id not between", value1, value2, "videoId");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeIsNull() {
+            addCriterion("config_code is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeIsNotNull() {
+            addCriterion("config_code is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeEqualTo(String value) {
+            addCriterion("config_code =", value, "configCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeNotEqualTo(String value) {
+            addCriterion("config_code <>", value, "configCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeGreaterThan(String value) {
+            addCriterion("config_code >", value, "configCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeGreaterThanOrEqualTo(String value) {
+            addCriterion("config_code >=", value, "configCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeLessThan(String value) {
+            addCriterion("config_code <", value, "configCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeLessThanOrEqualTo(String value) {
+            addCriterion("config_code <=", value, "configCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeLike(String value) {
+            addCriterion("config_code like", value, "configCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeNotLike(String value) {
+            addCriterion("config_code not like", value, "configCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeIn(List<String> values) {
+            addCriterion("config_code in", values, "configCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeNotIn(List<String> values) {
+            addCriterion("config_code not in", values, "configCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeBetween(String value1, String value2) {
+            addCriterion("config_code between", value1, value2, "configCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andConfigCodeNotBetween(String value1, String value2) {
+            addCriterion("config_code not between", value1, value2, "configCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreIsNull() {
+            addCriterion("score is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreIsNotNull() {
+            addCriterion("score is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreEqualTo(Double value) {
+            addCriterion("score =", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreNotEqualTo(Double value) {
+            addCriterion("score <>", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreGreaterThan(Double value) {
+            addCriterion("score >", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreGreaterThanOrEqualTo(Double value) {
+            addCriterion("score >=", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreLessThan(Double value) {
+            addCriterion("score <", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreLessThanOrEqualTo(Double value) {
+            addCriterion("score <=", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreIn(List<Double> values) {
+            addCriterion("score in", values, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreNotIn(List<Double> values) {
+            addCriterion("score not in", values, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreBetween(Double value1, Double value2) {
+            addCriterion("score between", value1, value2, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreNotBetween(Double value1, Double value2) {
+            addCriterion("score not between", value1, value2, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimIsNull() {
+            addCriterion("sim is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimIsNotNull() {
+            addCriterion("sim is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimEqualTo(Double value) {
+            addCriterion("sim =", value, "sim");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimNotEqualTo(Double value) {
+            addCriterion("sim <>", value, "sim");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimGreaterThan(Double value) {
+            addCriterion("sim >", value, "sim");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimGreaterThanOrEqualTo(Double value) {
+            addCriterion("sim >=", value, "sim");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimLessThan(Double value) {
+            addCriterion("sim <", value, "sim");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimLessThanOrEqualTo(Double value) {
+            addCriterion("sim <=", value, "sim");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimIn(List<Double> values) {
+            addCriterion("sim in", values, "sim");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimNotIn(List<Double> values) {
+            addCriterion("sim not in", values, "sim");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimBetween(Double value1, Double value2) {
+            addCriterion("sim between", value1, value2, "sim");
+            return (Criteria) this;
+        }
+
+        public Criteria andSimNotBetween(Double value1, Double value2) {
+            addCriterion("sim not between", value1, value2, "sim");
+            return (Criteria) this;
+        }
+
+        public Criteria andRovIsNull() {
+            addCriterion("rov is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRovIsNotNull() {
+            addCriterion("rov is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRovEqualTo(Double value) {
+            addCriterion("rov =", value, "rov");
+            return (Criteria) this;
+        }
+
+        public Criteria andRovNotEqualTo(Double value) {
+            addCriterion("rov <>", value, "rov");
+            return (Criteria) this;
+        }
+
+        public Criteria andRovGreaterThan(Double value) {
+            addCriterion("rov >", value, "rov");
+            return (Criteria) this;
+        }
+
+        public Criteria andRovGreaterThanOrEqualTo(Double value) {
+            addCriterion("rov >=", value, "rov");
+            return (Criteria) this;
+        }
+
+        public Criteria andRovLessThan(Double value) {
+            addCriterion("rov <", value, "rov");
+            return (Criteria) this;
+        }
+
+        public Criteria andRovLessThanOrEqualTo(Double value) {
+            addCriterion("rov <=", value, "rov");
+            return (Criteria) this;
+        }
+
+        public Criteria andRovIn(List<Double> values) {
+            addCriterion("rov in", values, "rov");
+            return (Criteria) this;
+        }
+
+        public Criteria andRovNotIn(List<Double> values) {
+            addCriterion("rov not in", values, "rov");
+            return (Criteria) this;
+        }
+
+        public Criteria andRovBetween(Double value1, Double value2) {
+            addCriterion("rov between", value1, value2, "rov");
+            return (Criteria) this;
+        }
+
+        public Criteria andRovNotBetween(Double value1, Double value2) {
+            addCriterion("rov not between", value1, value2, "rov");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextIsNull() {
+            addCriterion("match_text is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextIsNotNull() {
+            addCriterion("match_text is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextEqualTo(String value) {
+            addCriterion("match_text =", value, "matchText");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextNotEqualTo(String value) {
+            addCriterion("match_text <>", value, "matchText");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextGreaterThan(String value) {
+            addCriterion("match_text >", value, "matchText");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextGreaterThanOrEqualTo(String value) {
+            addCriterion("match_text >=", value, "matchText");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextLessThan(String value) {
+            addCriterion("match_text <", value, "matchText");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextLessThanOrEqualTo(String value) {
+            addCriterion("match_text <=", value, "matchText");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextLike(String value) {
+            addCriterion("match_text like", value, "matchText");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextNotLike(String value) {
+            addCriterion("match_text not like", value, "matchText");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextIn(List<String> values) {
+            addCriterion("match_text in", values, "matchText");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextNotIn(List<String> values) {
+            addCriterion("match_text not in", values, "matchText");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextBetween(String value1, String value2) {
+            addCriterion("match_text between", value1, value2, "matchText");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchTextNotBetween(String value1, String value2) {
+            addCriterion("match_text not between", value1, value2, "matchText");
+            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 andCoverIsNull() {
+            addCriterion("cover is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverIsNotNull() {
+            addCriterion("cover is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverEqualTo(String value) {
+            addCriterion("cover =", value, "cover");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverNotEqualTo(String value) {
+            addCriterion("cover <>", value, "cover");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverGreaterThan(String value) {
+            addCriterion("cover >", value, "cover");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverGreaterThanOrEqualTo(String value) {
+            addCriterion("cover >=", value, "cover");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverLessThan(String value) {
+            addCriterion("cover <", value, "cover");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverLessThanOrEqualTo(String value) {
+            addCriterion("cover <=", value, "cover");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverLike(String value) {
+            addCriterion("cover like", value, "cover");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverNotLike(String value) {
+            addCriterion("cover not like", value, "cover");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverIn(List<String> values) {
+            addCriterion("cover in", values, "cover");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverNotIn(List<String> values) {
+            addCriterion("cover not in", values, "cover");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverBetween(String value1, String value2) {
+            addCriterion("cover between", value1, value2, "cover");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverNotBetween(String value1, String value2) {
+            addCriterion("cover not between", value1, value2, "cover");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIsNull() {
+            addCriterion("video is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIsNotNull() {
+            addCriterion("video is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoEqualTo(String value) {
+            addCriterion("video =", value, "video");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoNotEqualTo(String value) {
+            addCriterion("video <>", value, "video");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoGreaterThan(String value) {
+            addCriterion("video >", value, "video");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoGreaterThanOrEqualTo(String value) {
+            addCriterion("video >=", value, "video");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoLessThan(String value) {
+            addCriterion("video <", value, "video");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoLessThanOrEqualTo(String value) {
+            addCriterion("video <=", value, "video");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoLike(String value) {
+            addCriterion("video like", value, "video");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoNotLike(String value) {
+            addCriterion("video not like", value, "video");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoIn(List<String> values) {
+            addCriterion("video in", values, "video");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoNotIn(List<String> values) {
+            addCriterion("video not in", values, "video");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoBetween(String value1, String value2) {
+            addCriterion("video between", value1, value2, "video");
+            return (Criteria) this;
+        }
+
+        public Criteria andVideoNotBetween(String value1, String value2) {
+            addCriterion("video not between", value1, value2, "video");
+            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 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);
+        }
+    }
+}

+ 2 - 0
api-module/src/main/java/com/tzld/piaoquan/api/service/contentplatform/ContentPlatformPlanService.java

@@ -89,4 +89,6 @@ public interface ContentPlatformPlanService {
     void saveQwPlanVideo(QwPlanSaveVideoParam videoParam, Long planId, Long loginAccountId);
 
     Boolean gzhPushCheckExistRootSourceId(String rootSourceId);
+
+    Page<VideoContentItemVO> getDemandVideoContentList(VideoContentListParam param);
 }

+ 52 - 0
api-module/src/main/java/com/tzld/piaoquan/api/service/contentplatform/impl/ContentPlatformPlanServiceImpl.java

@@ -8,6 +8,7 @@ import com.tzld.piaoquan.api.common.enums.contentplatform.*;
 import com.tzld.piaoquan.api.common.exception.CommonException;
 import com.tzld.piaoquan.api.component.*;
 import com.tzld.piaoquan.api.dao.mapper.contentplatform.*;
+import com.tzld.piaoquan.api.dao.mapper.contentplatform.ext.ContentPlatformDemandVideoMapperExt;
 import com.tzld.piaoquan.api.dao.mapper.contentplatform.ext.ContentPlatformPlanMapperExt;
 import com.tzld.piaoquan.api.model.bo.AdPutFlowRecordTencent;
 import com.tzld.piaoquan.api.model.bo.BucketDataParam;
@@ -98,6 +99,9 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
     @Autowired
     private VideoMultiService videoMultiService;
 
+    @Autowired
+    private ContentPlatformDemandVideoMapperExt demandVideoMapperExt;
+
     @Autowired
     private RedisUtils redisUtils;
 
@@ -1134,4 +1138,52 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
         return exists;
     }
 
+    @Override
+    public Page<VideoContentItemVO> getDemandVideoContentList(VideoContentListParam param) {
+        Page<VideoContentItemVO> result = new Page<>(param.getPageNum(), param.getPageSize());
+        // 仅允许企微type(2-企微-社群、3-企微-自动回复)传入,其他返回空
+        if (param.getType() == null || (param.getType() != 2 && param.getType() != 3)) {
+            result.setTotalSize(0);
+            result.setObjs(new ArrayList<>());
+            return result;
+        }
+        ContentPlatformAccount loginAccount = LoginUserContext.getUser();
+        String crowdSegment = loginAccount.getChannel();
+        int offset = (param.getPageNum() - 1) * param.getPageSize();
+        String dt = demandVideoMapperExt.getMaxDt();
+        if (!StringUtils.hasText(dt)) {
+            result.setTotalSize(0);
+            result.setObjs(new ArrayList<>());
+            return result;
+        }
+        int count = demandVideoMapperExt.countByCondition(dt, null, null, param.getTitle(), crowdSegment);
+        result.setTotalSize(count);
+        if (count == 0) {
+            result.setObjs(new ArrayList<>());
+            return result;
+        }
+        List<ContentPlatformDemandVideo> videoList = demandVideoMapperExt.selectByCondition(dt,
+                null, null, param.getTitle(), crowdSegment, offset, param.getPageSize());
+        List<VideoContentItemVO> list = buildDemandVideoContentItemVOList(videoList);
+        result.setObjs(list);
+        return result;
+    }
+
+    private List<VideoContentItemVO> buildDemandVideoContentItemVOList(List<ContentPlatformDemandVideo> videoList) {
+        if (CollectionUtils.isEmpty(videoList)) {
+            return new ArrayList<>();
+        }
+        List<VideoContentItemVO> result = new ArrayList<>();
+        for (ContentPlatformDemandVideo video : videoList) {
+            VideoContentItemVO item = new VideoContentItemVO();
+            item.setVideoId(video.getVideoId());
+            item.setTitle(video.getTitle());
+            item.setCover(video.getCover());
+            item.setVideo(video.getVideo());
+            item.setScore(video.getScore());
+            result.add(item);
+        }
+        return result;
+    }
+
 }

+ 483 - 0
api-module/src/main/resources/mapper/contentplatform/ContentPlatformDemandVideoMapper.xml

@@ -0,0 +1,483 @@
+<?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.api.dao.mapper.contentplatform.ContentPlatformDemandVideoMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="dt" jdbcType="VARCHAR" property="dt" />
+    <result column="channel_name" jdbcType="VARCHAR" property="channelName" />
+    <result column="crowd_segment" jdbcType="VARCHAR" property="crowdSegment" />
+    <result column="dimension" jdbcType="VARCHAR" property="dimension" />
+    <result column="point_type" jdbcType="VARCHAR" property="pointType" />
+    <result column="standard_element" jdbcType="VARCHAR" property="standardElement" />
+    <result column="category_name" jdbcType="VARCHAR" property="categoryName" />
+    <result column="visit_uv" jdbcType="BIGINT" property="visitUv" />
+    <result column="total_rov" jdbcType="DOUBLE" property="totalRov" />
+    <result column="video_id" jdbcType="BIGINT" property="videoId" />
+    <result column="config_code" jdbcType="VARCHAR" property="configCode" />
+    <result column="score" jdbcType="DOUBLE" property="score" />
+    <result column="sim" jdbcType="DOUBLE" property="sim" />
+    <result column="rov" jdbcType="DOUBLE" property="rov" />
+    <result column="match_text" jdbcType="VARCHAR" property="matchText" />
+    <result column="title" jdbcType="VARCHAR" property="title" />
+    <result column="cover" jdbcType="VARCHAR" property="cover" />
+    <result column="video" jdbcType="VARCHAR" property="video" />
+    <result column="status" jdbcType="INTEGER" property="status" />
+    <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">
+    id, dt, channel_name, crowd_segment, dimension, point_type, standard_element, category_name, 
+    visit_uv, total_rov, video_id, config_code, score, sim, rov, match_text, title, cover, 
+    video, `status`, create_timestamp, update_timestamp
+  </sql>
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideoExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from content_platform_demand_video
+    <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.Long" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from content_platform_demand_video
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    delete from content_platform_demand_video
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideoExample">
+    delete from content_platform_demand_video
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo">
+    insert into content_platform_demand_video (id, dt, channel_name, 
+      crowd_segment, dimension, point_type, 
+      standard_element, category_name, visit_uv, 
+      total_rov, video_id, config_code, 
+      score, sim, rov, match_text, 
+      title, cover, video, 
+      `status`, create_timestamp, update_timestamp
+      )
+    values (#{id,jdbcType=BIGINT}, #{dt,jdbcType=VARCHAR}, #{channelName,jdbcType=VARCHAR}, 
+      #{crowdSegment,jdbcType=VARCHAR}, #{dimension,jdbcType=VARCHAR}, #{pointType,jdbcType=VARCHAR}, 
+      #{standardElement,jdbcType=VARCHAR}, #{categoryName,jdbcType=VARCHAR}, #{visitUv,jdbcType=BIGINT}, 
+      #{totalRov,jdbcType=DOUBLE}, #{videoId,jdbcType=BIGINT}, #{configCode,jdbcType=VARCHAR}, 
+      #{score,jdbcType=DOUBLE}, #{sim,jdbcType=DOUBLE}, #{rov,jdbcType=DOUBLE}, #{matchText,jdbcType=VARCHAR}, 
+      #{title,jdbcType=VARCHAR}, #{cover,jdbcType=VARCHAR}, #{video,jdbcType=VARCHAR}, 
+      #{status,jdbcType=INTEGER}, #{createTimestamp,jdbcType=BIGINT}, #{updateTimestamp,jdbcType=BIGINT}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo">
+    insert into content_platform_demand_video
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="dt != null">
+        dt,
+      </if>
+      <if test="channelName != null">
+        channel_name,
+      </if>
+      <if test="crowdSegment != null">
+        crowd_segment,
+      </if>
+      <if test="dimension != null">
+        dimension,
+      </if>
+      <if test="pointType != null">
+        point_type,
+      </if>
+      <if test="standardElement != null">
+        standard_element,
+      </if>
+      <if test="categoryName != null">
+        category_name,
+      </if>
+      <if test="visitUv != null">
+        visit_uv,
+      </if>
+      <if test="totalRov != null">
+        total_rov,
+      </if>
+      <if test="videoId != null">
+        video_id,
+      </if>
+      <if test="configCode != null">
+        config_code,
+      </if>
+      <if test="score != null">
+        score,
+      </if>
+      <if test="sim != null">
+        sim,
+      </if>
+      <if test="rov != null">
+        rov,
+      </if>
+      <if test="matchText != null">
+        match_text,
+      </if>
+      <if test="title != null">
+        title,
+      </if>
+      <if test="cover != null">
+        cover,
+      </if>
+      <if test="video != null">
+        video,
+      </if>
+      <if test="status != null">
+        `status`,
+      </if>
+      <if test="createTimestamp != null">
+        create_timestamp,
+      </if>
+      <if test="updateTimestamp != null">
+        update_timestamp,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="dt != null">
+        #{dt,jdbcType=VARCHAR},
+      </if>
+      <if test="channelName != null">
+        #{channelName,jdbcType=VARCHAR},
+      </if>
+      <if test="crowdSegment != null">
+        #{crowdSegment,jdbcType=VARCHAR},
+      </if>
+      <if test="dimension != null">
+        #{dimension,jdbcType=VARCHAR},
+      </if>
+      <if test="pointType != null">
+        #{pointType,jdbcType=VARCHAR},
+      </if>
+      <if test="standardElement != null">
+        #{standardElement,jdbcType=VARCHAR},
+      </if>
+      <if test="categoryName != null">
+        #{categoryName,jdbcType=VARCHAR},
+      </if>
+      <if test="visitUv != null">
+        #{visitUv,jdbcType=BIGINT},
+      </if>
+      <if test="totalRov != null">
+        #{totalRov,jdbcType=DOUBLE},
+      </if>
+      <if test="videoId != null">
+        #{videoId,jdbcType=BIGINT},
+      </if>
+      <if test="configCode != null">
+        #{configCode,jdbcType=VARCHAR},
+      </if>
+      <if test="score != null">
+        #{score,jdbcType=DOUBLE},
+      </if>
+      <if test="sim != null">
+        #{sim,jdbcType=DOUBLE},
+      </if>
+      <if test="rov != null">
+        #{rov,jdbcType=DOUBLE},
+      </if>
+      <if test="matchText != null">
+        #{matchText,jdbcType=VARCHAR},
+      </if>
+      <if test="title != null">
+        #{title,jdbcType=VARCHAR},
+      </if>
+      <if test="cover != null">
+        #{cover,jdbcType=VARCHAR},
+      </if>
+      <if test="video != null">
+        #{video,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        #{status,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.api.model.po.contentplatform.ContentPlatformDemandVideoExample" resultType="java.lang.Long">
+    select count(*) from content_platform_demand_video
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update content_platform_demand_video
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=BIGINT},
+      </if>
+      <if test="record.dt != null">
+        dt = #{record.dt,jdbcType=VARCHAR},
+      </if>
+      <if test="record.channelName != null">
+        channel_name = #{record.channelName,jdbcType=VARCHAR},
+      </if>
+      <if test="record.crowdSegment != null">
+        crowd_segment = #{record.crowdSegment,jdbcType=VARCHAR},
+      </if>
+      <if test="record.dimension != null">
+        dimension = #{record.dimension,jdbcType=VARCHAR},
+      </if>
+      <if test="record.pointType != null">
+        point_type = #{record.pointType,jdbcType=VARCHAR},
+      </if>
+      <if test="record.standardElement != null">
+        standard_element = #{record.standardElement,jdbcType=VARCHAR},
+      </if>
+      <if test="record.categoryName != null">
+        category_name = #{record.categoryName,jdbcType=VARCHAR},
+      </if>
+      <if test="record.visitUv != null">
+        visit_uv = #{record.visitUv,jdbcType=BIGINT},
+      </if>
+      <if test="record.totalRov != null">
+        total_rov = #{record.totalRov,jdbcType=DOUBLE},
+      </if>
+      <if test="record.videoId != null">
+        video_id = #{record.videoId,jdbcType=BIGINT},
+      </if>
+      <if test="record.configCode != null">
+        config_code = #{record.configCode,jdbcType=VARCHAR},
+      </if>
+      <if test="record.score != null">
+        score = #{record.score,jdbcType=DOUBLE},
+      </if>
+      <if test="record.sim != null">
+        sim = #{record.sim,jdbcType=DOUBLE},
+      </if>
+      <if test="record.rov != null">
+        rov = #{record.rov,jdbcType=DOUBLE},
+      </if>
+      <if test="record.matchText != null">
+        match_text = #{record.matchText,jdbcType=VARCHAR},
+      </if>
+      <if test="record.title != null">
+        title = #{record.title,jdbcType=VARCHAR},
+      </if>
+      <if test="record.cover != null">
+        cover = #{record.cover,jdbcType=VARCHAR},
+      </if>
+      <if test="record.video != null">
+        video = #{record.video,jdbcType=VARCHAR},
+      </if>
+      <if test="record.status != null">
+        `status` = #{record.status,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 content_platform_demand_video
+    set id = #{record.id,jdbcType=BIGINT},
+      dt = #{record.dt,jdbcType=VARCHAR},
+      channel_name = #{record.channelName,jdbcType=VARCHAR},
+      crowd_segment = #{record.crowdSegment,jdbcType=VARCHAR},
+      dimension = #{record.dimension,jdbcType=VARCHAR},
+      point_type = #{record.pointType,jdbcType=VARCHAR},
+      standard_element = #{record.standardElement,jdbcType=VARCHAR},
+      category_name = #{record.categoryName,jdbcType=VARCHAR},
+      visit_uv = #{record.visitUv,jdbcType=BIGINT},
+      total_rov = #{record.totalRov,jdbcType=DOUBLE},
+      video_id = #{record.videoId,jdbcType=BIGINT},
+      config_code = #{record.configCode,jdbcType=VARCHAR},
+      score = #{record.score,jdbcType=DOUBLE},
+      sim = #{record.sim,jdbcType=DOUBLE},
+      rov = #{record.rov,jdbcType=DOUBLE},
+      match_text = #{record.matchText,jdbcType=VARCHAR},
+      title = #{record.title,jdbcType=VARCHAR},
+      cover = #{record.cover,jdbcType=VARCHAR},
+      video = #{record.video,jdbcType=VARCHAR},
+      `status` = #{record.status,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.api.model.po.contentplatform.ContentPlatformDemandVideo">
+    update content_platform_demand_video
+    <set>
+      <if test="dt != null">
+        dt = #{dt,jdbcType=VARCHAR},
+      </if>
+      <if test="channelName != null">
+        channel_name = #{channelName,jdbcType=VARCHAR},
+      </if>
+      <if test="crowdSegment != null">
+        crowd_segment = #{crowdSegment,jdbcType=VARCHAR},
+      </if>
+      <if test="dimension != null">
+        dimension = #{dimension,jdbcType=VARCHAR},
+      </if>
+      <if test="pointType != null">
+        point_type = #{pointType,jdbcType=VARCHAR},
+      </if>
+      <if test="standardElement != null">
+        standard_element = #{standardElement,jdbcType=VARCHAR},
+      </if>
+      <if test="categoryName != null">
+        category_name = #{categoryName,jdbcType=VARCHAR},
+      </if>
+      <if test="visitUv != null">
+        visit_uv = #{visitUv,jdbcType=BIGINT},
+      </if>
+      <if test="totalRov != null">
+        total_rov = #{totalRov,jdbcType=DOUBLE},
+      </if>
+      <if test="videoId != null">
+        video_id = #{videoId,jdbcType=BIGINT},
+      </if>
+      <if test="configCode != null">
+        config_code = #{configCode,jdbcType=VARCHAR},
+      </if>
+      <if test="score != null">
+        score = #{score,jdbcType=DOUBLE},
+      </if>
+      <if test="sim != null">
+        sim = #{sim,jdbcType=DOUBLE},
+      </if>
+      <if test="rov != null">
+        rov = #{rov,jdbcType=DOUBLE},
+      </if>
+      <if test="matchText != null">
+        match_text = #{matchText,jdbcType=VARCHAR},
+      </if>
+      <if test="title != null">
+        title = #{title,jdbcType=VARCHAR},
+      </if>
+      <if test="cover != null">
+        cover = #{cover,jdbcType=VARCHAR},
+      </if>
+      <if test="video != null">
+        video = #{video,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        `status` = #{status,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 id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo">
+    update content_platform_demand_video
+    set dt = #{dt,jdbcType=VARCHAR},
+      channel_name = #{channelName,jdbcType=VARCHAR},
+      crowd_segment = #{crowdSegment,jdbcType=VARCHAR},
+      dimension = #{dimension,jdbcType=VARCHAR},
+      point_type = #{pointType,jdbcType=VARCHAR},
+      standard_element = #{standardElement,jdbcType=VARCHAR},
+      category_name = #{categoryName,jdbcType=VARCHAR},
+      visit_uv = #{visitUv,jdbcType=BIGINT},
+      total_rov = #{totalRov,jdbcType=DOUBLE},
+      video_id = #{videoId,jdbcType=BIGINT},
+      config_code = #{configCode,jdbcType=VARCHAR},
+      score = #{score,jdbcType=DOUBLE},
+      sim = #{sim,jdbcType=DOUBLE},
+      rov = #{rov,jdbcType=DOUBLE},
+      match_text = #{matchText,jdbcType=VARCHAR},
+      title = #{title,jdbcType=VARCHAR},
+      cover = #{cover,jdbcType=VARCHAR},
+      video = #{video,jdbcType=VARCHAR},
+      `status` = #{status,jdbcType=INTEGER},
+      create_timestamp = #{createTimestamp,jdbcType=BIGINT},
+      update_timestamp = #{updateTimestamp,jdbcType=BIGINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>

+ 78 - 0
api-module/src/main/resources/mapper/contentplatform/ext/ContentPlatformDemandVideoMapperExt.xml

@@ -0,0 +1,78 @@
+<?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.api.dao.mapper.contentplatform.ext.ContentPlatformDemandVideoMapperExt">
+
+    <insert id="batchInsert" parameterType="java.util.List">
+        INSERT INTO content_platform_demand_video
+        (dt, channel_name, crowd_segment, dimension, point_type, standard_element,
+         category_name, visit_uv, total_rov, video_id, config_code, score, sim, rov,
+         match_text, title, cover, video, status, create_timestamp, update_timestamp)
+        VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.dt}, #{item.channelName}, #{item.crowdSegment}, #{item.dimension}, #{item.pointType}, #{item.standardElement},
+             #{item.categoryName}, #{item.visitUv}, #{item.totalRov}, #{item.videoId}, #{item.configCode}, #{item.score}, #{item.sim}, #{item.rov},
+             #{item.matchText}, #{item.title}, #{item.cover}, #{item.video}, #{item.status}, #{item.createTimestamp}, #{item.updateTimestamp})
+        </foreach>
+    </insert>
+
+    <delete id="deleteByDt">
+        DELETE FROM content_platform_demand_video WHERE dt = #{dt}
+    </delete>
+
+    <select id="selectByCondition" resultType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo">
+        SELECT id, dt, channel_name, crowd_segment, dimension, point_type, standard_element,
+               category_name, visit_uv, total_rov, video_id, config_code, score, sim, rov,
+               match_text, title, cover, video, status, create_timestamp, update_timestamp
+        FROM content_platform_demand_video
+        WHERE dt = #{dt} AND status = 1
+        <if test="channelName != null and channelName != ''">
+            AND channel_name = #{channelName}
+        </if>
+        <if test="pointType != null and pointType != ''">
+            AND point_type = #{pointType}
+        </if>
+        <if test="title != null and title != ''">
+            AND title LIKE CONCAT('%', #{title}, '%')
+        </if>
+        <if test="crowdSegment != null and crowdSegment != ''">
+            AND crowd_segment = #{crowdSegment}
+        </if>
+        ORDER BY score DESC
+        LIMIT #{offset}, #{pageSize}
+    </select>
+
+    <select id="countByCondition" resultType="int">
+        SELECT COUNT(*) FROM content_platform_demand_video
+        WHERE dt = #{dt} AND status = 1
+        <if test="channelName != null and channelName != ''">
+            AND channel_name = #{channelName}
+        </if>
+        <if test="pointType != null and pointType != ''">
+            AND point_type = #{pointType}
+        </if>
+        <if test="title != null and title != ''">
+            AND title LIKE CONCAT('%', #{title}, '%')
+        </if>
+        <if test="crowdSegment != null and crowdSegment != ''">
+            AND crowd_segment = #{crowdSegment}
+        </if>
+    </select>
+
+    <select id="getMaxDt" resultType="java.lang.String">
+        SELECT MAX(dt) FROM content_platform_demand_video WHERE status = 1
+    </select>
+
+    <select id="selectActiveVideos" resultType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo">
+        SELECT id, video_id, dt
+        FROM content_platform_demand_video
+        WHERE dt = #{dt} AND status = 1
+        GROUP BY video_id
+    </select>
+
+    <update id="updateStatusByVideoId">
+        UPDATE content_platform_demand_video
+        SET status = #{status}, update_timestamp = #{updateTimestamp}
+        WHERE video_id = #{videoId} AND dt = #{dt} AND status = 1
+    </update>
+
+</mapper>

+ 2 - 1
api-module/src/main/resources/mybatis-api-contentPlatform-generator-config.xml

@@ -76,7 +76,8 @@
 <!--        <table tableName="content_platform_illegal_video" domainObjectName="ContentPlatformIllegalVideo" alias=""/>-->
 <!--        <table tableName="content_platform_illegal_msg" domainObjectName="ContentPlatformIllegalMsg" alias=""/>-->
 <!--        <table tableName="content_platform_pq_account_rel" domainObjectName="ContentPlatformPqAccountRel" alias=""/>-->
-        <table tableName="content_platform_upload_video" domainObjectName="ContentPlatformUploadVideo" alias=""/>
+<!--        <table tableName="content_platform_upload_video" domainObjectName="ContentPlatformUploadVideo" alias=""/>-->
+        <table tableName="content_platform_demand_video" domainObjectName="ContentPlatformDemandVideo" alias=""/>
     </context>
 
 </generatorConfiguration>