Browse Source

自定义标题封面上报 更换字段

wangyunpeng 1 week ago
parent
commit
3fa39f3df5
36 changed files with 2101 additions and 188 deletions
  1. 33 0
      api-module/src/main/java/com/tzld/piaoquan/api/controller/VideoMultiController.java
  2. 3 0
      api-module/src/main/java/com/tzld/piaoquan/api/controller/wecom/ThirdPartyController.java
  3. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/controller/wecom/WeComController.java
  4. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/controller/wecom/WeComUserController.java
  5. 3 3
      api-module/src/main/java/com/tzld/piaoquan/api/dao/generator/MybatisGeneratorMain.java
  6. 30 0
      api-module/src/main/java/com/tzld/piaoquan/api/dao/mapper/contentplatform/VideoGrowthMultiCoverMapper.java
  7. 30 0
      api-module/src/main/java/com/tzld/piaoquan/api/dao/mapper/contentplatform/VideoGrowthMultiTitleMapper.java
  8. 13 0
      api-module/src/main/java/com/tzld/piaoquan/api/dao/mapper/contentplatform/ext/VideoMultiMapperExt.java
  9. 11 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/dto/PageUrlExtData.java
  10. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/AccessTokenParam.java
  11. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/CallbackParam.java
  12. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/PushMessageParam.java
  13. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/WeComPushMessageParam.java
  14. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/WeComUserNameAvatarParam.java
  15. 68 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/VideoGrowthMultiCover.java
  16. 531 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/VideoGrowthMultiCoverExample.java
  17. 68 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/VideoGrowthMultiTitle.java
  18. 531 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/VideoGrowthMultiTitleExample.java
  19. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/mq/MessageCallbackCustomer.java
  20. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/mq/MessageCallbackProducer.java
  21. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/GhAccessTokenService.java
  22. 16 71
      api-module/src/main/java/com/tzld/piaoquan/api/service/VideoMultiService.java
  23. 61 55
      api-module/src/main/java/com/tzld/piaoquan/api/service/contentplatform/impl/ContentPlatformPlanServiceImpl.java
  24. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/impl/GhAccessTokenServiceImpl.java
  25. 47 22
      api-module/src/main/java/com/tzld/piaoquan/api/service/impl/GhDetailServiceImpl.java
  26. 183 0
      api-module/src/main/java/com/tzld/piaoquan/api/service/impl/VideoMultiServiceImpl.java
  27. 2 7
      api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/BuckStrategyV1.java
  28. 4 7
      api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/ThirdPartyPushMessageStrategyV1.java
  29. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/ThirdPartyService.java
  30. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/WeComService.java
  31. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/impl/ThirdPartyServiceImpl.java
  32. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/impl/WeComServiceImpl.java
  33. 214 0
      api-module/src/main/resources/mapper/contentplatform/VideoGrowthMultiCoverMapper.xml
  34. 214 0
      api-module/src/main/resources/mapper/contentplatform/VideoGrowthMultiTitleMapper.xml
  35. 15 0
      api-module/src/main/resources/mapper/contentplatform/ext/VideoMultiMapperExt.xml
  36. 9 8
      api-module/src/main/resources/mybatis-generator-config.xml

+ 33 - 0
api-module/src/main/java/com/tzld/piaoquan/api/controller/VideoMultiController.java

@@ -0,0 +1,33 @@
+package com.tzld.piaoquan.api.controller;
+
+import com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiCover;
+import com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiTitle;
+import com.tzld.piaoquan.api.service.VideoMultiService;
+import com.tzld.piaoquan.growth.common.common.base.CommonResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/video/multi")
+@Slf4j
+public class VideoMultiController {
+
+    @Autowired
+    private VideoMultiService videoMultiService;
+
+    @GetMapping("/title/list")
+    public CommonResponse<List<VideoGrowthMultiTitle>> getMultiTitleByVideoId(@RequestParam Long videoId) {
+        return CommonResponse.success(videoMultiService.getMultiTitleByVideoId(videoId));
+    }
+
+    @GetMapping("/cover/list")
+    public CommonResponse<List<VideoGrowthMultiCover>> getMultiCoverByVideoId(@RequestParam Long videoId) {
+        return CommonResponse.success(videoMultiService.getMultiCoverByVideoId(videoId));
+    }
+}

+ 3 - 0
api-module/src/main/java/com/tzld/piaoquan/api/controller/wecom/ThirdPartyController.java

@@ -1,6 +1,9 @@
 package com.tzld.piaoquan.api.controller.wecom;
 
 
+import com.tzld.piaoquan.api.model.param.AccessTokenParam;
+import com.tzld.piaoquan.api.model.param.CallbackParam;
+import com.tzld.piaoquan.api.model.param.PushMessageParam;
 import com.tzld.piaoquan.api.model.vo.*;
 import com.tzld.piaoquan.api.mq.MessageCallbackProducer;
 import com.tzld.piaoquan.api.service.GhAccessTokenService;

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/controller/wecom/WeComController.java

@@ -1,6 +1,6 @@
 package com.tzld.piaoquan.api.controller.wecom;
 
-import com.tzld.piaoquan.api.model.vo.WeComPushMessageParam;
+import com.tzld.piaoquan.api.model.param.WeComPushMessageParam;
 import com.tzld.piaoquan.api.model.vo.WeComPushMessageVo;
 import com.tzld.piaoquan.api.service.wecom.WeComService;
 import com.tzld.piaoquan.growth.common.common.base.CommonResponse;

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/controller/wecom/WeComUserController.java

@@ -1,6 +1,6 @@
 package com.tzld.piaoquan.api.controller.wecom;
 
-import com.tzld.piaoquan.api.model.vo.WeComUserNameAvatarParam;
+import com.tzld.piaoquan.api.model.param.WeComUserNameAvatarParam;
 import com.tzld.piaoquan.growth.common.common.base.CommonResponse;
 import com.tzld.piaoquan.growth.common.model.bo.GroupSendWeComUserParam;
 import com.tzld.piaoquan.growth.common.model.vo.UserTagParam;

+ 3 - 3
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-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-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-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/VideoGrowthMultiCoverMapper.java

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

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

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

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

@@ -0,0 +1,13 @@
+package com.tzld.piaoquan.api.dao.mapper.contentplatform.ext;
+
+import com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiCover;
+import com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiTitle;
+import org.apache.ibatis.annotations.Param;
+
+public interface VideoMultiMapperExt {
+
+    void insertVideoMultiTitleReturnId(@Param("record") VideoGrowthMultiTitle multiTitle);
+
+    void insertVideoMultiCoverReturnId(@Param("record") VideoGrowthMultiCover multiCover);
+
+}

+ 11 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/dto/PageUrlExtData.java

@@ -0,0 +1,11 @@
+package com.tzld.piaoquan.api.model.dto;
+
+import lombok.Data;
+
+@Data
+public class PageUrlExtData {
+    private Long growthTitleId;
+    private String growthTitleSource;
+    private Long growthCoverId;
+    private String growthCoverSource;
+}

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/model/vo/AccessTokenParam.java → api-module/src/main/java/com/tzld/piaoquan/api/model/param/AccessTokenParam.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.api.model.vo;
+package com.tzld.piaoquan.api.model.param;
 
 import lombok.Data;
 

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/model/vo/CallbackParam.java → api-module/src/main/java/com/tzld/piaoquan/api/model/param/CallbackParam.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.api.model.vo;
+package com.tzld.piaoquan.api.model.param;
 
 import com.tzld.piaoquan.api.model.bo.ReplyInfo;
 import lombok.Data;

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/model/vo/PushMessageParam.java → api-module/src/main/java/com/tzld/piaoquan/api/model/param/PushMessageParam.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.api.model.vo;
+package com.tzld.piaoquan.api.model.param;
 
 import lombok.Data;
 import lombok.ToString;

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/model/vo/WeComPushMessageParam.java → api-module/src/main/java/com/tzld/piaoquan/api/model/param/WeComPushMessageParam.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.api.model.vo;
+package com.tzld.piaoquan.api.model.param;
 
 import lombok.Data;
 import lombok.ToString;

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/model/vo/WeComUserNameAvatarParam.java → api-module/src/main/java/com/tzld/piaoquan/api/model/param/WeComUserNameAvatarParam.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.api.model.vo;
+package com.tzld.piaoquan.api.model.param;
 
 import lombok.Data;
 import lombok.ToString;

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

@@ -0,0 +1,68 @@
+package com.tzld.piaoquan.api.model.po.contentplatform;
+
+public class VideoGrowthMultiCover {
+    private Long id;
+
+    private Long videoId;
+
+    private String source;
+
+    private String cover;
+
+    private Long createTimestamp;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getVideoId() {
+        return videoId;
+    }
+
+    public void setVideoId(Long videoId) {
+        this.videoId = videoId;
+    }
+
+    public String getSource() {
+        return source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
+    }
+
+    public String getCover() {
+        return cover;
+    }
+
+    public void setCover(String cover) {
+        this.cover = cover;
+    }
+
+    public Long getCreateTimestamp() {
+        return createTimestamp;
+    }
+
+    public void setCreateTimestamp(Long createTimestamp) {
+        this.createTimestamp = createTimestamp;
+    }
+
+    @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(", videoId=").append(videoId);
+        sb.append(", source=").append(source);
+        sb.append(", cover=").append(cover);
+        sb.append(", createTimestamp=").append(createTimestamp);
+        sb.append("]");
+        return sb.toString();
+    }
+}

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

@@ -0,0 +1,531 @@
+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 VideoGrowthMultiCoverExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    protected Page page;
+
+    public VideoGrowthMultiCoverExample() {
+        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 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 andSourceIsNull() {
+            addCriterion("`source` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceIsNotNull() {
+            addCriterion("`source` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceEqualTo(String value) {
+            addCriterion("`source` =", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceNotEqualTo(String value) {
+            addCriterion("`source` <>", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceGreaterThan(String value) {
+            addCriterion("`source` >", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceGreaterThanOrEqualTo(String value) {
+            addCriterion("`source` >=", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceLessThan(String value) {
+            addCriterion("`source` <", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceLessThanOrEqualTo(String value) {
+            addCriterion("`source` <=", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceLike(String value) {
+            addCriterion("`source` like", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceNotLike(String value) {
+            addCriterion("`source` not like", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceIn(List<String> values) {
+            addCriterion("`source` in", values, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceNotIn(List<String> values) {
+            addCriterion("`source` not in", values, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceBetween(String value1, String value2) {
+            addCriterion("`source` between", value1, value2, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceNotBetween(String value1, String value2) {
+            addCriterion("`source` not between", value1, value2, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria 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 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 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);
+        }
+    }
+}

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

@@ -0,0 +1,68 @@
+package com.tzld.piaoquan.api.model.po.contentplatform;
+
+public class VideoGrowthMultiTitle {
+    private Long id;
+
+    private Long videoId;
+
+    private String source;
+
+    private String title;
+
+    private Long createTimestamp;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getVideoId() {
+        return videoId;
+    }
+
+    public void setVideoId(Long videoId) {
+        this.videoId = videoId;
+    }
+
+    public String getSource() {
+        return source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public Long getCreateTimestamp() {
+        return createTimestamp;
+    }
+
+    public void setCreateTimestamp(Long createTimestamp) {
+        this.createTimestamp = createTimestamp;
+    }
+
+    @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(", videoId=").append(videoId);
+        sb.append(", source=").append(source);
+        sb.append(", title=").append(title);
+        sb.append(", createTimestamp=").append(createTimestamp);
+        sb.append("]");
+        return sb.toString();
+    }
+}

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

@@ -0,0 +1,531 @@
+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 VideoGrowthMultiTitleExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    protected Page page;
+
+    public VideoGrowthMultiTitleExample() {
+        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 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 andSourceIsNull() {
+            addCriterion("`source` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceIsNotNull() {
+            addCriterion("`source` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceEqualTo(String value) {
+            addCriterion("`source` =", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceNotEqualTo(String value) {
+            addCriterion("`source` <>", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceGreaterThan(String value) {
+            addCriterion("`source` >", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceGreaterThanOrEqualTo(String value) {
+            addCriterion("`source` >=", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceLessThan(String value) {
+            addCriterion("`source` <", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceLessThanOrEqualTo(String value) {
+            addCriterion("`source` <=", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceLike(String value) {
+            addCriterion("`source` like", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceNotLike(String value) {
+            addCriterion("`source` not like", value, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceIn(List<String> values) {
+            addCriterion("`source` in", values, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceNotIn(List<String> values) {
+            addCriterion("`source` not in", values, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceBetween(String value1, String value2) {
+            addCriterion("`source` between", value1, value2, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria andSourceNotBetween(String value1, String value2) {
+            addCriterion("`source` not between", value1, value2, "source");
+            return (Criteria) this;
+        }
+
+        public Criteria 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 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 static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/mq/MessageCallbackCustomer.java

@@ -8,7 +8,7 @@ import com.aliyun.openservices.ons.api.ConsumeContext;
 import com.aliyun.openservices.ons.api.Message;
 import com.aliyun.openservices.ons.api.MessageListener;
 import com.tzld.piaoquan.api.model.bo.ReplyInfo;
-import com.tzld.piaoquan.api.model.vo.CallbackParam;
+import com.tzld.piaoquan.api.model.param.CallbackParam;
 import com.tzld.piaoquan.growth.common.dao.mapper.PushMessageCallbackMapper;
 import com.tzld.piaoquan.growth.common.model.po.PushMessageCallback;
 import lombok.extern.slf4j.Slf4j;

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/mq/MessageCallbackProducer.java

@@ -5,7 +5,7 @@ import com.aliyun.openservices.ons.api.Message;
 import com.aliyun.openservices.ons.api.SendResult;
 import com.aliyun.openservices.ons.api.bean.ProducerBean;
 
-import com.tzld.piaoquan.api.model.vo.CallbackParam;
+import com.tzld.piaoquan.api.model.param.CallbackParam;
 import com.tzld.piaoquan.api.service.GhAccessTokenService;
 import com.tzld.piaoquan.growth.common.common.base.CommonResponse;
 import com.tzld.piaoquan.growth.common.common.enums.ExceptionCodeEnum;

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/service/GhAccessTokenService.java

@@ -1,7 +1,7 @@
 package com.tzld.piaoquan.api.service;
 
 import com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformAccount;
-import com.tzld.piaoquan.api.model.vo.AccessTokenParam;
+import com.tzld.piaoquan.api.model.param.AccessTokenParam;
 import com.tzld.piaoquan.api.model.vo.AccessTokenVo;
 import com.tzld.piaoquan.growth.common.common.base.CommonResponse;
 

+ 16 - 71
api-module/src/main/java/com/tzld/piaoquan/api/service/VideoMultiService.java

@@ -1,78 +1,23 @@
 package com.tzld.piaoquan.api.service;
 
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.tzld.piaoquan.api.component.ManagerApiService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
+import com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiCover;
+import com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiTitle;
 
-import java.net.URLEncoder;
-import java.util.Objects;
+import java.util.List;
 
-@Slf4j
-@Service
-public class VideoMultiService {
+public interface VideoMultiService {
 
-    @Autowired
-    private ManagerApiService managerApiService;
+    String setVideoMultiTitleCoverPagePath(Long videoId, String pageUrl, String title, String coverUrl);
+    
+    Long saveMultiTitle(Long videoId, String source, String title);
 
-    public String setVideoMultiTitleCoverPagePath(Long videoId, String pageUrl, String title, String coverUrl) {
-        JSONArray multiTitleList = managerApiService.videoMultiTitleListV2(videoId);
-        JSONArray multiCoverList = managerApiService.videoMultiCoverListV2(videoId);
-        if (!CollectionUtils.isEmpty(multiTitleList)) {
-            Integer titleId = null;
-            for (int i = 0; i < multiTitleList.size(); i++) {
-                JSONObject item = multiTitleList.getJSONObject(i);
-                if (item.getInteger("source") == 0) {
-                    titleId = item.getInteger("id");
-                    break;
-                }
-            }
-            if (Objects.isNull(titleId)) {
-                for (int i = 0; i < multiTitleList.size(); i++) {
-                    JSONObject item = multiTitleList.getJSONObject(i);
-                    if (title.equals(item.getString("title"))) {
-                        titleId = item.getInteger("id");
-                        break;
-                    }
-                }
-            }
-            try {
-                if (Objects.nonNull(titleId) && !pageUrl.contains("shareTitleId")) {
-                    pageUrl += URLEncoder.encode("&shareTitleId=" + titleId, "UTF-8");
-                }
-            } catch (Exception e) {
-                log.error("ThirdPartyPushMessageStrategyV1 insertSmallData setCustomerCoverTitleId Error,data:", e);
-            }
-        }
-        if (!CollectionUtils.isEmpty(multiCoverList)) {
-            Integer coverId = null;
-            for (int i = 0; i < multiCoverList.size(); i++) {
-                JSONObject item = multiCoverList.getJSONObject(i);
-                if (item.getInteger("source") == 0) {
-                    coverId = item.getInteger("id");
-                    break;
-                }
-            }
-            if (Objects.isNull(coverId)) {
-                for (int i = 0; i < multiCoverList.size(); i++) {
-                    JSONObject item = multiCoverList.getJSONObject(i);
-                    if (coverUrl.equals(item.getString("coverUrl"))) {
-                        coverId = item.getInteger("id");
-                        break;
-                    }
-                }
-            }
-            try {
-                if (Objects.nonNull(coverId) && !pageUrl.contains("shareImageId")) {
-                    pageUrl += URLEncoder.encode("&shareImageId=" + coverId, "UTF-8");
-                }
-            } catch (Exception e) {
-                log.error("ThirdPartyPushMessageStrategyV1 insertSmallData setCustomerCoverTitleId Error,data:", e);
-            }
-        }
-        return pageUrl;
-    }
+    List<VideoGrowthMultiTitle> getMultiTitleByVideoId(Long videoId);
+
+    Long saveMultiCover(Long videoId, String source, String cover);
+    
+    List<VideoGrowthMultiCover> getMultiCoverByVideoId(Long videoId);
+
+    List<VideoGrowthMultiTitle> getVideoGrowthMultiTitleList(List<Long> customTitleIds);
+
+    List<VideoGrowthMultiCover> getVideoGrowthMultiCoverList(List<Long> customCoverIds);
 }

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

@@ -1,5 +1,6 @@
 package com.tzld.piaoquan.api.service.contentplatform.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.google.common.collect.Lists;
 import com.tzld.piaoquan.api.common.enums.ExceptionEnum;
@@ -45,8 +46,6 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -203,22 +202,10 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
 
     private String buildCustomPageUrl(GzhPlanVideoContentItemVO videoItemVO, ContentPlatformGzhPlanVideo video) {
         String pageUrl = videoItemVO.getPageUrl();
-        try {
-            if (StringUtils.hasText(videoItemVO.getCustomTitle()) && !pageUrl.contains("shareTitleId")) {
-                if (Objects.nonNull(video.getCustomTitleId())) {
-                    pageUrl += URLEncoder.encode("&shareTitleId=" + video.getCustomTitleId(), "UTF-8");
-                }
-            }
-            if (StringUtils.hasText(videoItemVO.getCustomCover()) && !pageUrl.contains("shareImageId")) {
-                if (Objects.nonNull(video.getCustomCoverId())) {
-                    pageUrl += URLEncoder.encode("&shareImageId=" + video.getCustomCoverId(), "UTF-8");
-                }
-            }
-            return pageUrl;
-        } catch (UnsupportedEncodingException e) {
-            log.error("buildCustomPageUrl error", e);
-        }
-        return videoItemVO.getPageUrl();
+        String title = StringUtils.hasText(videoItemVO.getCustomTitle()) ? videoItemVO.getCustomTitle() : videoItemVO.getTitle();
+        String cover = StringUtils.hasText(videoItemVO.getCustomCover()) ? videoItemVO.getCustomCover() : videoItemVO.getCover();
+        pageUrl = videoMultiService.setVideoMultiTitleCoverPagePath(video.getVideoId(), pageUrl, title, cover);
+        return pageUrl;
     }
 
     @Override
@@ -421,16 +408,11 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
 
     private String setMultiTitleCoverPagePath(ContentPlatformGzhPlanVideo item) {
         String pageUrl = item.getPageUrl();
-        if(StringUtils.hasText(pageUrl)){
-            String title = item.getTitle();
-            String cover = item.getCover();
+        if (StringUtils.hasText(pageUrl)) {
+            String title = StringUtils.hasText(item.getCustomTitle()) ? item.getCustomTitle() : item.getTitle();
+            String cover = StringUtils.hasText(item.getCustomCover()) ? item.getCustomCover() : item.getCover();
             try {
-                if (Objects.nonNull(item.getCustomTitleId()) && !pageUrl.contains("shareTitleId")) {
-                    pageUrl += URLEncoder.encode("&shareTitleId=" + item.getCustomTitleId(), "UTF-8");
-                }
-                if (Objects.nonNull(item.getCustomCoverId()) && !pageUrl.contains("shareImageId")) {
-                    pageUrl += URLEncoder.encode("&shareImageId=" + item.getCustomCoverId(), "UTF-8");
-                }
+                pageUrl = videoMultiService.setVideoMultiTitleCoverPagePath(item.getVideoId(), pageUrl, title, cover);
             } catch (Exception e) {
                 log.error("设置视频多标题封面失败,videoId={}", item.getVideoId(), e);
             }
@@ -439,24 +421,36 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
         return pageUrl;
     }
 
-    private void setCustomTitle(ContentPlatformGzhPlanVideo item, GzhPlanVideoContentItemParam vo) {
-        if (StringUtils.hasText(vo.getCustomTitle())) {
-            List<ContentPlatformGzhPlanVideo> gzhPlanVideoList = gzhPlanVideoListByVideoTitle(vo.getVideoId());
-            boolean customTitleExist = false;
-            if (CollectionUtils.isNotEmpty(gzhPlanVideoList)) {
-                for (ContentPlatformGzhPlanVideo gzhPlanVideo : gzhPlanVideoList) {
-                    if (gzhPlanVideo.getCustomTitle().equals(vo.getCustomTitle())) {
-                        item.setCustomTitleId(gzhPlanVideo.getCustomTitleId());
-                        customTitleExist = true;
-                        break;
-                    }
+    private void setCustomTitle(ContentPlatformGzhPlanVideo video, GzhPlanVideoContentItemParam vo) {
+        String title = StringUtils.hasText(vo.getCustomTitle()) ? vo.getCustomTitle() : vo.getTitle();
+        if (StringUtils.hasText(title)) {
+            boolean titleExist = false;
+            List<VideoGrowthMultiTitle> list = videoMultiService.getMultiTitleByVideoId(vo.getVideoId());
+            for (VideoGrowthMultiTitle multiTitle : list) {
+                if (multiTitle.getTitle().equals(title)) {
+                    video.setCustomTitleId(multiTitle.getId());
+                    titleExist = true;
+                    break;
                 }
             }
-            if (!customTitleExist && vo.getCustomTitle().length() > 5) {
-                JSONObject multiTitle = managerApiService.videoMultiTitleSave(vo.getVideoId(), vo.getCustomTitle());
-                item.setCustomTitleId(multiTitle.getLong("id"));
+            if (!titleExist) {
+                JSONArray multiTitleList = managerApiService.videoMultiTitleListV2(vo.getVideoId());
+                String source = "自定义";
+                if (!org.springframework.util.CollectionUtils.isEmpty(multiTitleList)) {
+                    for (int i = 0; i < multiTitleList.size(); i++) {
+                        JSONObject item = multiTitleList.getJSONObject(i);
+                        if (item.getString("title").equals(title)) {
+                            if (item.getInteger("source") == 0) {
+                                source = "原始";
+                                break;
+                            }
+                        }
+                    }
+                }
+                Long titleId = videoMultiService.saveMultiTitle(vo.getVideoId(), source, title);
+                video.setCustomTitleId(titleId);
             }
-            item.setCustomTitle(vo.getCustomTitle());
+            video.setTitle(title);
         }
     }
 
@@ -466,24 +460,36 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
         return gzhPlanVideoMapper.selectByExample(example);
     }
 
-    private void setCustomCover(ContentPlatformGzhPlanVideo item, GzhPlanVideoContentItemParam vo) {
-        if (StringUtils.hasText(vo.getCustomCover())) {
-            List<ContentPlatformGzhPlanVideo> gzhPlanVideoList = gzhPlanVideoListByVideoCover(vo.getVideoId());
+    private void setCustomCover(ContentPlatformGzhPlanVideo video, GzhPlanVideoContentItemParam vo) {
+        String cover = StringUtils.hasText(vo.getCustomCover()) ? vo.getCustomCover() : vo.getCover();
+        if (StringUtils.hasText(cover)) {
             boolean customCoverExist = false;
-            if (CollectionUtils.isNotEmpty(gzhPlanVideoList)) {
-                for (ContentPlatformGzhPlanVideo gzhPlanVideo : gzhPlanVideoList) {
-                    if (gzhPlanVideo.getCustomCover().equals(vo.getCustomCover())) {
-                        item.setCustomCoverId(gzhPlanVideo.getCustomCoverId());
-                        customCoverExist = true;
-                        break;
-                    }
+            List<VideoGrowthMultiCover> list = videoMultiService.getMultiCoverByVideoId(vo.getVideoId());
+            for (VideoGrowthMultiCover multiCover : list) {
+                if (multiCover.getCover().equals(cover)) {
+                    video.setCustomCoverId(multiCover.getId());
+                    customCoverExist = true;
+                    break;
                 }
             }
             if (!customCoverExist) {
-                JSONObject multiCover = managerApiService.videoMultiCoverSave(vo.getVideoId(), vo.getCustomCover());
-                item.setCustomCoverId(multiCover.getLong("id"));
+                JSONArray multiCoverList = managerApiService.videoMultiCoverListV2(vo.getVideoId());
+                String source = "自定义";
+                if (!org.springframework.util.CollectionUtils.isEmpty(multiCoverList)) {
+                    for (int i = 0; i < multiCoverList.size(); i++) {
+                        JSONObject item = multiCoverList.getJSONObject(i);
+                        if (item.getString("coverUrl").equals(cover)) {
+                            if (item.getInteger("source") == 0) {
+                                source = "原始";
+                                break;
+                            }
+                        }
+                    }
+                }
+                Long coverId = videoMultiService.saveMultiCover(vo.getVideoId(), source, cover);
+                video.setCustomCoverId(coverId);
             }
-            item.setCustomCover(vo.getCustomCover());
+            video.setCover(cover);
         }
     }
 

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/service/impl/GhAccessTokenServiceImpl.java

@@ -3,7 +3,7 @@ package com.tzld.piaoquan.api.service.impl;
 import com.tzld.piaoquan.api.dao.mapper.contentplatform.ContentPlatformAccountMapper;
 import com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformAccount;
 import com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformAccountExample;
-import com.tzld.piaoquan.api.model.vo.AccessTokenParam;
+import com.tzld.piaoquan.api.model.param.AccessTokenParam;
 import com.tzld.piaoquan.api.model.vo.AccessTokenVo;
 import com.tzld.piaoquan.api.service.GhAccessTokenService;
 import com.tzld.piaoquan.growth.common.common.base.CommonResponse;

+ 47 - 22
api-module/src/main/java/com/tzld/piaoquan/api/service/impl/GhDetailServiceImpl.java

@@ -10,8 +10,11 @@ import com.tzld.piaoquan.api.dao.mapper.GhDetailExtMapper;
 import com.tzld.piaoquan.api.dao.mapper.GhDetailMapperExt;
 import com.tzld.piaoquan.api.model.po.GhDetailExt;
 import com.tzld.piaoquan.api.model.po.GhDetailExtExample;
+import com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiCover;
+import com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiTitle;
 import com.tzld.piaoquan.api.model.vo.GhDetailVo;
 import com.tzld.piaoquan.api.service.GhDetailService;
+import com.tzld.piaoquan.api.service.VideoMultiService;
 import com.tzld.piaoquan.growth.common.common.base.CommonResponse;
 import com.tzld.piaoquan.growth.common.common.enums.GhTypeEnum;
 import com.tzld.piaoquan.growth.common.common.enums.StrategyStatusEnum;
@@ -52,6 +55,8 @@ public class GhDetailServiceImpl implements GhDetailService {
     private CgiReplyBucketDataMapper cgiReplyBucketDataMapper;
     @Autowired
     private ManagerApiService managerApiService;
+    @Autowired
+    private VideoMultiService videoMultiService;
 
     @Value("${small_page_url}")
     private String GET_SMALL_PAGE_URL;
@@ -201,21 +206,31 @@ public class GhDetailServiceImpl implements GhDetailService {
 
     private void setCustomTitle(GhDetailExt ghDetailExt, GhDetailVo.VideoDetail videoDetail) {
         if (StringUtils.isNotEmpty(videoDetail.getTitle())) {
-            JSONArray multiTitleList = managerApiService.videoMultiTitleListV2(videoDetail.getVideoId());
             boolean titleExist = false;
-            if (!CollectionUtils.isEmpty(multiTitleList)) {
-                for (int i = 0; i < multiTitleList.size(); i++) {
-                    JSONObject item = multiTitleList.getJSONObject(i);
-                    if (item.getString("title").equals(videoDetail.getTitle())) {
-                        ghDetailExt.setTitleId(item.getLong("id"));
-                        titleExist = true;
-                        break;
-                    }
+            List<VideoGrowthMultiTitle> list = videoMultiService.getMultiTitleByVideoId(videoDetail.getVideoId());
+            for (VideoGrowthMultiTitle multiTitle : list) {
+                if (multiTitle.getTitle().equals(videoDetail.getTitle())) {
+                    ghDetailExt.setTitleId(multiTitle.getId());
+                    titleExist = true;
+                    break;
                 }
             }
             if (!titleExist) {
-                JSONObject multiTitle = managerApiService.videoMultiTitleSave(videoDetail.getVideoId(), videoDetail.getTitle());
-                ghDetailExt.setTitleId(multiTitle.getLong("id"));
+                JSONArray multiTitleList = managerApiService.videoMultiTitleListV2(videoDetail.getVideoId());
+                String source = "自定义";
+                if (!CollectionUtils.isEmpty(multiTitleList)) {
+                    for (int i = 0; i < multiTitleList.size(); i++) {
+                        JSONObject item = multiTitleList.getJSONObject(i);
+                        if (item.getString("title").equals(videoDetail.getTitle())) {
+                            if (item.getInteger("source") == 0) {
+                                source = "原始";
+                                break;
+                            }
+                        }
+                    }
+                }
+                Long titleId = videoMultiService.saveMultiTitle(videoDetail.getVideoId(), source, videoDetail.getTitle());
+                ghDetailExt.setTitleId(titleId);
             }
             ghDetailExt.setTitle(videoDetail.getTitle());
         }
@@ -223,21 +238,31 @@ public class GhDetailServiceImpl implements GhDetailService {
 
     private void setCustomCover(GhDetailExt ghDetailExt, GhDetailVo.VideoDetail videoDetail) {
         if (StringUtils.isNotEmpty(videoDetail.getCover())) {
-            JSONArray multiCoverList = managerApiService.videoMultiCoverListV2(videoDetail.getVideoId());
             boolean customCoverExist = false;
-            if (!CollectionUtils.isEmpty(multiCoverList)) {
-                for (int i = 0; i < multiCoverList.size(); i++) {
-                    JSONObject item = multiCoverList.getJSONObject(i);
-                    if (item.getString("coverUrl").equals(videoDetail.getCover())) {
-                        ghDetailExt.setCoverId(item.getLong("id"));
-                        customCoverExist = true;
-                        break;
-                    }
+            List<VideoGrowthMultiCover> list = videoMultiService.getMultiCoverByVideoId(videoDetail.getVideoId());
+            for (VideoGrowthMultiCover multiCover : list) {
+                if (multiCover.getCover().equals(videoDetail.getCover())) {
+                    ghDetailExt.setCoverId(multiCover.getId());
+                    customCoverExist = true;
+                    break;
                 }
             }
             if (!customCoverExist) {
-                JSONObject multiCover = managerApiService.videoMultiCoverSave(videoDetail.getVideoId(), videoDetail.getCover());
-                ghDetailExt.setCoverId(multiCover.getLong("id"));
+                JSONArray multiCoverList = managerApiService.videoMultiCoverListV2(videoDetail.getVideoId());
+                String source = "自定义";
+                if (!CollectionUtils.isEmpty(multiCoverList)) {
+                    for (int i = 0; i < multiCoverList.size(); i++) {
+                        JSONObject item = multiCoverList.getJSONObject(i);
+                        if (item.getString("coverUrl").equals(videoDetail.getCover())) {
+                            if (item.getInteger("source") == 0) {
+                                source = "原始";
+                                break;
+                            }
+                        }
+                    }
+                }
+                Long coverId = videoMultiService.saveMultiCover(videoDetail.getVideoId(), source, videoDetail.getCover());
+                ghDetailExt.setCoverId(coverId);
             }
             ghDetailExt.setCover(videoDetail.getCover());
         }

+ 183 - 0
api-module/src/main/java/com/tzld/piaoquan/api/service/impl/VideoMultiServiceImpl.java

@@ -0,0 +1,183 @@
+package com.tzld.piaoquan.api.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.piaoquan.api.component.ManagerApiService;
+import com.tzld.piaoquan.api.dao.mapper.contentplatform.VideoGrowthMultiCoverMapper;
+import com.tzld.piaoquan.api.dao.mapper.contentplatform.VideoGrowthMultiTitleMapper;
+import com.tzld.piaoquan.api.dao.mapper.contentplatform.ext.VideoMultiMapperExt;
+import com.tzld.piaoquan.api.model.dto.PageUrlExtData;
+import com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiCover;
+import com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiCoverExample;
+import com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiTitle;
+import com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiTitleExample;
+import com.tzld.piaoquan.api.service.VideoMultiService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.net.URLEncoder;
+import java.util.List;
+import java.util.Objects;
+
+@Slf4j
+@Service
+public class VideoMultiServiceImpl implements VideoMultiService {
+
+    @Autowired
+    private ManagerApiService managerApiService;
+    @Autowired
+    private VideoMultiMapperExt videoMultiMapperExt;
+    @Autowired
+    private VideoGrowthMultiTitleMapper titleMapper;
+    @Autowired
+    private VideoGrowthMultiCoverMapper coverMapper;
+
+    @Override
+    public String setVideoMultiTitleCoverPagePath(Long videoId, String pageUrl, String title, String coverUrl) {
+        if (pageUrl.contains("extData")) {
+            return pageUrl;
+        }
+        List<VideoGrowthMultiTitle> multiTitleList = getMultiTitleByVideoId(videoId);
+        List<VideoGrowthMultiCover> multiCoverList = getMultiCoverByVideoId(videoId);
+        PageUrlExtData extData = new PageUrlExtData();
+        if (!CollectionUtils.isEmpty(multiTitleList)) {
+            Long titleId = null;
+            String titleSource = "";
+            for (int i = 0; i < multiTitleList.size(); i++) {
+                VideoGrowthMultiTitle item = multiTitleList.get(i);
+                if (title.equals(item.getTitle())) {
+                    titleId = item.getId();
+                    titleSource = item.getSource();
+                    break;
+                }
+            }
+            try {
+                if (Objects.nonNull(titleId)) {
+                    extData.setGrowthTitleId(titleId);
+                    extData.setGrowthTitleSource(titleSource);
+                }
+            } catch (Exception e) {
+                log.error("VideoMultiService VideoMultiService Error,data:", e);
+            }
+        }
+        if (Objects.isNull(extData.getGrowthTitleId())) {
+            JSONArray managerMultiTitleList = managerApiService.videoMultiTitleListV2(videoId);
+            String source = "自定义";
+            if (!org.springframework.util.CollectionUtils.isEmpty(managerMultiTitleList)) {
+                for (int i = 0; i < managerMultiTitleList.size(); i++) {
+                    JSONObject item = managerMultiTitleList.getJSONObject(i);
+                    if (item.getString("title").equals(title)) {
+                        if (item.getInteger("source") == 0) {
+                            source = "原始";
+                            break;
+                        }
+                    }
+                }
+            }
+            Long titleId = saveMultiTitle(videoId, source, title);
+            extData.setGrowthTitleId(titleId);
+            extData.setGrowthTitleSource(source);
+        }
+        if (!CollectionUtils.isEmpty(multiCoverList)) {
+            Long coverId = null;
+            String coverSource = "";
+            String videoCover = coverUrl.split("\\?")[0];
+            for (int i = 0; i < multiCoverList.size(); i++) {
+                VideoGrowthMultiCover item = multiCoverList.get(i);
+                String itemCover = item.getCover().split("\\?")[0];
+                if (videoCover.equals(itemCover)) {
+                    coverId = item.getId();
+                    coverSource = item.getSource();
+                    break;
+                }
+            }
+            try {
+                if (Objects.nonNull(coverId)) {
+                    extData.setGrowthCoverId(coverId);
+                    extData.setGrowthCoverSource(coverSource);
+                }
+            } catch (Exception e) {
+                log.error("VideoMultiService VideoMultiService Error,data:", e);
+            }
+        }
+        if (Objects.isNull(extData.getGrowthCoverId())) {
+            JSONArray managerMultiCoverList = managerApiService.videoMultiCoverListV2(videoId);
+            String source = "自定义";
+            if (!CollectionUtils.isEmpty(managerMultiCoverList)) {
+                for (int i = 0; i < managerMultiCoverList.size(); i++) {
+                    JSONObject item = managerMultiCoverList.getJSONObject(i);
+                    if (item.getInteger("source") == 0) {
+                        if (item.getString("coverUrl").equals(coverUrl)
+                                || (coverUrl.contains("longvideo") && !coverUrl.contains("/longvideo/pic"))) {
+                            source = "原始";
+                            break;
+                        }
+                    }
+                }
+            }
+            Long coverId = saveMultiCover(videoId, source, coverUrl);
+            extData.setGrowthCoverId(coverId);
+            extData.setGrowthCoverSource(source);
+        }
+        if (Objects.nonNull(extData.getGrowthTitleId()) || Objects.nonNull(extData.getGrowthCoverId())) {
+            try {
+                pageUrl += URLEncoder.encode("&growthExtData=" + JSONObject.toJSONString(extData), "UTF-8");
+            } catch (Exception e) {
+                log.error("VideoMultiService VideoMultiService Error,data:", e);
+            }
+        }
+        return pageUrl;
+    }
+
+    @Override
+    public Long saveMultiTitle(Long videoId, String source, String title) {
+        VideoGrowthMultiTitle multiTitle = new VideoGrowthMultiTitle();
+        multiTitle.setVideoId(videoId);
+        multiTitle.setSource(source);
+        multiTitle.setTitle(title);
+        multiTitle.setCreateTimestamp(System.currentTimeMillis());
+        videoMultiMapperExt.insertVideoMultiTitleReturnId(multiTitle);
+        return multiTitle.getId();
+    }
+
+    @Override
+    public List<VideoGrowthMultiTitle> getMultiTitleByVideoId(Long videoId) {
+        VideoGrowthMultiTitleExample example = new VideoGrowthMultiTitleExample();
+        example.createCriteria().andVideoIdEqualTo(videoId);
+        return titleMapper.selectByExample(example);
+    }
+
+    @Override
+    public Long saveMultiCover(Long videoId, String source, String cover) {
+        VideoGrowthMultiCover multiCover = new VideoGrowthMultiCover();
+        multiCover.setVideoId(videoId);
+        multiCover.setSource(source);
+        multiCover.setCover(cover);
+        multiCover.setCreateTimestamp(System.currentTimeMillis());
+        videoMultiMapperExt.insertVideoMultiCoverReturnId(multiCover);
+        return multiCover.getId();
+    }
+
+    @Override
+    public List<VideoGrowthMultiCover> getMultiCoverByVideoId(Long videoId) {
+        VideoGrowthMultiCoverExample example = new VideoGrowthMultiCoverExample();
+        example.createCriteria().andVideoIdEqualTo(videoId);
+        return coverMapper.selectByExample(example);
+    }
+
+    @Override
+    public List<VideoGrowthMultiTitle> getVideoGrowthMultiTitleList(List<Long> customTitleIds) {
+        VideoGrowthMultiTitleExample example = new VideoGrowthMultiTitleExample();
+        example.createCriteria().andIdIn(customTitleIds);
+        return titleMapper.selectByExample(example);
+    }
+
+    @Override
+    public List<VideoGrowthMultiCover> getVideoGrowthMultiCoverList(List<Long> customCoverIds) {
+        VideoGrowthMultiCoverExample example = new VideoGrowthMultiCoverExample();
+        example.createCriteria().andIdIn(customCoverIds);
+        return coverMapper.selectByExample(example);
+    }
+}

+ 2 - 7
api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/BuckStrategyV1.java

@@ -31,7 +31,6 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.net.URLEncoder;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -307,12 +306,8 @@ public class BuckStrategyV1 implements ReplyStrategyService {
                     GhDetailExt ghDetailExt = ghDetailExtMap.get(cgiReplyBucketData.getMiniVideoId());
                     if (Objects.nonNull(ghDetailExt)) {
                         try {
-                            if (Objects.nonNull(ghDetailExt.getTitleId()) && !pageUrl.contains("shareTitleId")) {
-                                pageUrl += URLEncoder.encode("&shareTitleId=" + ghDetailExt.getTitleId(), "UTF-8");
-                            }
-                            if (Objects.nonNull(ghDetailExt.getCoverId()) && !pageUrl.contains("shareImageId")) {
-                                pageUrl += URLEncoder.encode("&shareImageId=" + ghDetailExt.getCoverId(), "UTF-8");
-                            }
+                            pageUrl = videoMultiService.setVideoMultiTitleCoverPagePath(cgiReplyBucketData.getMiniVideoId(),
+                                    pageUrl, ghDetailExt.getTitle(), ghDetailExt.getCover());
                         } catch (Exception e) {
                             log.error("BuckStrategyV1 insertSmallData setCoverTitleId Error,data:" + JSON.toJSONString(ghDetailExt), e);
                         }

+ 4 - 7
api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/ThirdPartyPushMessageStrategyV1.java

@@ -29,7 +29,6 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.net.URLEncoder;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -213,12 +212,10 @@ public class ThirdPartyPushMessageStrategyV1 implements ReplyStrategyService {
                     String pageUrl = cgiReplyBucketData.getMiniPagePath();
                     if (Objects.nonNull(gzhPlanVideo)) {
                         try {
-                            if (Objects.nonNull(gzhPlanVideo.getCustomTitleId()) && !pageUrl.contains("shareTitleId")) {
-                                pageUrl += URLEncoder.encode("&shareTitleId=" + gzhPlanVideo.getCustomTitleId(), "UTF-8");
-                            }
-                            if (Objects.nonNull(gzhPlanVideo.getCustomCoverId()) && !pageUrl.contains("shareImageId")) {
-                                pageUrl += URLEncoder.encode("&shareImageId=" + gzhPlanVideo.getCustomCoverId(), "UTF-8");
-                            }
+                            String title = StringUtils.isNotBlank(gzhPlanVideo.getCustomTitle()) ? gzhPlanVideo.getCustomTitle() : gzhPlanVideo.getTitle();
+                            String coverUrl = StringUtils.isNotBlank(gzhPlanVideo.getCustomCover()) ? gzhPlanVideo.getCustomCover() : gzhPlanVideo.getCover();
+                            pageUrl = videoMultiService.setVideoMultiTitleCoverPagePath(cgiReplyBucketData.getMiniVideoId(),
+                                    pageUrl, title, coverUrl);
                             cgiReplyBucketData.setMiniPagePath(pageUrl);
                         } catch (Exception e) {
                             log.error("ThirdPartyPushMessageStrategyV1 insertSmallData setCustomerCoverTitleId Error,data:" + JSON.toJSONString(gzhPlanVideo), e);

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/ThirdPartyService.java

@@ -1,7 +1,7 @@
 package com.tzld.piaoquan.api.service.wecom;
 
 
-import com.tzld.piaoquan.api.model.vo.PushMessageParam;
+import com.tzld.piaoquan.api.model.param.PushMessageParam;
 import com.tzld.piaoquan.api.model.vo.PushMessageVo;
 import com.tzld.piaoquan.api.model.vo.ReportUvVo;
 import com.tzld.piaoquan.growth.common.common.base.CommonResponse;

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/WeComService.java

@@ -2,7 +2,7 @@ package com.tzld.piaoquan.api.service.wecom;
 
 
 import com.tzld.piaoquan.api.model.po.ReplyStaff;
-import com.tzld.piaoquan.api.model.vo.WeComPushMessageParam;
+import com.tzld.piaoquan.api.model.param.WeComPushMessageParam;
 import com.tzld.piaoquan.api.model.vo.WeComPushMessageVo;
 import com.tzld.piaoquan.growth.common.common.base.CommonResponse;
 

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/impl/ThirdPartyServiceImpl.java

@@ -8,7 +8,7 @@ import com.tzld.piaoquan.api.model.bo.*;
 import com.tzld.piaoquan.api.model.po.GzhAutoreplyBehaviorUvTotal;
 import com.tzld.piaoquan.api.model.po.GzhAutoreplyBehaviorUvTotalExample;
 import com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformAccount;
-import com.tzld.piaoquan.api.model.vo.PushMessageParam;
+import com.tzld.piaoquan.api.model.param.PushMessageParam;
 import com.tzld.piaoquan.api.model.vo.PushMessageVo;
 import com.tzld.piaoquan.api.model.vo.ReportUvVo;
 import com.tzld.piaoquan.api.service.GhAccessTokenService;

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/impl/WeComServiceImpl.java

@@ -12,7 +12,7 @@ import com.tzld.piaoquan.api.model.bo.MsgData;
 import com.tzld.piaoquan.api.model.bo.ReplyBucketData;
 import com.tzld.piaoquan.api.model.po.ReplyStaff;
 import com.tzld.piaoquan.api.model.po.ReplyStaffExample;
-import com.tzld.piaoquan.api.model.vo.WeComPushMessageParam;
+import com.tzld.piaoquan.api.model.param.WeComPushMessageParam;
 import com.tzld.piaoquan.api.model.vo.WeComPushMessageVo;
 import com.tzld.piaoquan.api.service.wecom.WeComService;
 import com.tzld.piaoquan.api.service.strategy.ReplyStrategyService;

+ 214 - 0
api-module/src/main/resources/mapper/contentplatform/VideoGrowthMultiCoverMapper.xml

@@ -0,0 +1,214 @@
+<?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.VideoGrowthMultiCoverMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiCover">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="video_id" jdbcType="BIGINT" property="videoId" />
+    <result column="source" jdbcType="VARCHAR" property="source" />
+    <result column="cover" jdbcType="VARCHAR" property="cover" />
+    <result column="create_timestamp" jdbcType="BIGINT" property="createTimestamp" />
+  </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, video_id, `source`, cover, create_timestamp
+  </sql>
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiCoverExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from video_growth_multi_cover
+    <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 video_growth_multi_cover
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    delete from video_growth_multi_cover
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiCoverExample">
+    delete from video_growth_multi_cover
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiCover">
+    insert into video_growth_multi_cover (id, video_id, `source`, 
+      cover, create_timestamp)
+    values (#{id,jdbcType=BIGINT}, #{videoId,jdbcType=BIGINT}, #{source,jdbcType=VARCHAR}, 
+      #{cover,jdbcType=VARCHAR}, #{createTimestamp,jdbcType=BIGINT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiCover">
+    insert into video_growth_multi_cover
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="videoId != null">
+        video_id,
+      </if>
+      <if test="source != null">
+        `source`,
+      </if>
+      <if test="cover != null">
+        cover,
+      </if>
+      <if test="createTimestamp != null">
+        create_timestamp,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="videoId != null">
+        #{videoId,jdbcType=BIGINT},
+      </if>
+      <if test="source != null">
+        #{source,jdbcType=VARCHAR},
+      </if>
+      <if test="cover != null">
+        #{cover,jdbcType=VARCHAR},
+      </if>
+      <if test="createTimestamp != null">
+        #{createTimestamp,jdbcType=BIGINT},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiCoverExample" resultType="java.lang.Long">
+    select count(*) from video_growth_multi_cover
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update video_growth_multi_cover
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=BIGINT},
+      </if>
+      <if test="record.videoId != null">
+        video_id = #{record.videoId,jdbcType=BIGINT},
+      </if>
+      <if test="record.source != null">
+        `source` = #{record.source,jdbcType=VARCHAR},
+      </if>
+      <if test="record.cover != null">
+        cover = #{record.cover,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createTimestamp != null">
+        create_timestamp = #{record.createTimestamp,jdbcType=BIGINT},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update video_growth_multi_cover
+    set id = #{record.id,jdbcType=BIGINT},
+      video_id = #{record.videoId,jdbcType=BIGINT},
+      `source` = #{record.source,jdbcType=VARCHAR},
+      cover = #{record.cover,jdbcType=VARCHAR},
+      create_timestamp = #{record.createTimestamp,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.VideoGrowthMultiCover">
+    update video_growth_multi_cover
+    <set>
+      <if test="videoId != null">
+        video_id = #{videoId,jdbcType=BIGINT},
+      </if>
+      <if test="source != null">
+        `source` = #{source,jdbcType=VARCHAR},
+      </if>
+      <if test="cover != null">
+        cover = #{cover,jdbcType=VARCHAR},
+      </if>
+      <if test="createTimestamp != null">
+        create_timestamp = #{createTimestamp,jdbcType=BIGINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiCover">
+    update video_growth_multi_cover
+    set video_id = #{videoId,jdbcType=BIGINT},
+      `source` = #{source,jdbcType=VARCHAR},
+      cover = #{cover,jdbcType=VARCHAR},
+      create_timestamp = #{createTimestamp,jdbcType=BIGINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>

+ 214 - 0
api-module/src/main/resources/mapper/contentplatform/VideoGrowthMultiTitleMapper.xml

@@ -0,0 +1,214 @@
+<?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.VideoGrowthMultiTitleMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiTitle">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="video_id" jdbcType="BIGINT" property="videoId" />
+    <result column="source" jdbcType="VARCHAR" property="source" />
+    <result column="title" jdbcType="VARCHAR" property="title" />
+    <result column="create_timestamp" jdbcType="BIGINT" property="createTimestamp" />
+  </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, video_id, `source`, title, create_timestamp
+  </sql>
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiTitleExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from video_growth_multi_title
+    <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 video_growth_multi_title
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    delete from video_growth_multi_title
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiTitleExample">
+    delete from video_growth_multi_title
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiTitle">
+    insert into video_growth_multi_title (id, video_id, `source`, 
+      title, create_timestamp)
+    values (#{id,jdbcType=BIGINT}, #{videoId,jdbcType=BIGINT}, #{source,jdbcType=VARCHAR}, 
+      #{title,jdbcType=VARCHAR}, #{createTimestamp,jdbcType=BIGINT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiTitle">
+    insert into video_growth_multi_title
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="videoId != null">
+        video_id,
+      </if>
+      <if test="source != null">
+        `source`,
+      </if>
+      <if test="title != null">
+        title,
+      </if>
+      <if test="createTimestamp != null">
+        create_timestamp,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="videoId != null">
+        #{videoId,jdbcType=BIGINT},
+      </if>
+      <if test="source != null">
+        #{source,jdbcType=VARCHAR},
+      </if>
+      <if test="title != null">
+        #{title,jdbcType=VARCHAR},
+      </if>
+      <if test="createTimestamp != null">
+        #{createTimestamp,jdbcType=BIGINT},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiTitleExample" resultType="java.lang.Long">
+    select count(*) from video_growth_multi_title
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update video_growth_multi_title
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=BIGINT},
+      </if>
+      <if test="record.videoId != null">
+        video_id = #{record.videoId,jdbcType=BIGINT},
+      </if>
+      <if test="record.source != null">
+        `source` = #{record.source,jdbcType=VARCHAR},
+      </if>
+      <if test="record.title != null">
+        title = #{record.title,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createTimestamp != null">
+        create_timestamp = #{record.createTimestamp,jdbcType=BIGINT},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update video_growth_multi_title
+    set id = #{record.id,jdbcType=BIGINT},
+      video_id = #{record.videoId,jdbcType=BIGINT},
+      `source` = #{record.source,jdbcType=VARCHAR},
+      title = #{record.title,jdbcType=VARCHAR},
+      create_timestamp = #{record.createTimestamp,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.VideoGrowthMultiTitle">
+    update video_growth_multi_title
+    <set>
+      <if test="videoId != null">
+        video_id = #{videoId,jdbcType=BIGINT},
+      </if>
+      <if test="source != null">
+        `source` = #{source,jdbcType=VARCHAR},
+      </if>
+      <if test="title != null">
+        title = #{title,jdbcType=VARCHAR},
+      </if>
+      <if test="createTimestamp != null">
+        create_timestamp = #{createTimestamp,jdbcType=BIGINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.VideoGrowthMultiTitle">
+    update video_growth_multi_title
+    set video_id = #{videoId,jdbcType=BIGINT},
+      `source` = #{source,jdbcType=VARCHAR},
+      title = #{title,jdbcType=VARCHAR},
+      create_timestamp = #{createTimestamp,jdbcType=BIGINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>

+ 15 - 0
api-module/src/main/resources/mapper/contentplatform/ext/VideoMultiMapperExt.xml

@@ -0,0 +1,15 @@
+<?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.VideoMultiMapperExt">
+
+    <insert id="insertVideoMultiTitleReturnId" useGeneratedKeys="true" keyProperty="id">
+        insert into video_growth_multi_title (video_id, `source`, title, create_timestamp)
+        values (#{record.videoId}, #{record.source}, #{record.title}, #{record.createTimestamp})
+    </insert>
+
+    <insert id="insertVideoMultiCoverReturnId" useGeneratedKeys="true" keyProperty="id">
+        insert into video_growth_multi_cover (video_id, `source`, cover, create_timestamp)
+        values (#{record.videoId}, #{record.source}, #{record.cover}, #{record.createTimestamp})
+    </insert>
+
+</mapper>

+ 9 - 8
api-module/src/main/resources/mybatis-generator-config.xml

@@ -27,7 +27,7 @@
         </commentGenerator>
 
         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
-                        connectionURL="jdbc:mysql://rm-bp17q95335a99272b.mysql.rds.aliyuncs.com:3306/growth?useUnicode=true&amp;characterEncoding=utf-8&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false"
+                        connectionURL="jdbc:mysql://rm-bp17q95335a99272b.mysql.rds.aliyuncs.com:3306/growth-test?useUnicode=true&amp;characterEncoding=utf-8&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false"
                         userId="crawler" password="crawler123456@">
         </jdbcConnection>
 
@@ -35,18 +35,18 @@
             <property name="forceBigDecimals" value="false"/>
         </javaTypeResolver>
 
-        <javaModelGenerator targetPackage="com.tzld.piaoquan.growth.common.model.po" targetProject="/Users/shimeng/Desktop/project/growth-manager/common-module/src/main/java">
+        <javaModelGenerator targetPackage="com.tzld.piaoquan.api.model.po.contentplatform" targetProject="api-module/src/main/java">
             <property name="constructorBased" value="false"/>
             <property name="enableSubPackages" value="true"/>
             <property name="immutable" value="false"/>
         </javaModelGenerator>
 
-        <sqlMapGenerator targetPackage="mapper" targetProject="/Users/shimeng/Desktop/project/growth-manager/common-module/src/main/resources">
+        <sqlMapGenerator targetPackage="mapper.contentplatform" targetProject="api-module/src/main/resources">
             <property name="enableSubPackages" value="true"/>
         </sqlMapGenerator>
 
-        <javaClientGenerator targetPackage="com.tzld.piaoquan.growth.common.dao.mapper" type="XMLMAPPER"
-                             targetProject="/Users/shimeng/Desktop/project/growth-manager/common-module/src/main/java">
+        <javaClientGenerator targetPackage="com.tzld.piaoquan.api.dao.mapper.contentplatform" type="XMLMAPPER"
+                             targetProject="api-module/src/main/java">
             <property name="enableSubPackages" value="true"/>
         </javaClientGenerator>
 
@@ -63,9 +63,10 @@
 <!--        <table tableName="we_com_moment_send_message" domainObjectName="MomentSendMessage" alias=""/>-->
 <!--        <table tableName="we_com_staff_with_user" domainObjectName="StaffWithUser" alias=""/>-->
 <!--        <table tableName="we_com_corp_statistics_total" domainObjectName="CorpStatisticsTotal" alias=""/>-->
-        <table tableName="we_com_staff_statistics_total" domainObjectName="StaffStatisticsTotal" alias=""/>
-        <table tableName="we_com_staff_group_statistics_total" domainObjectName="StaffGroupStatisticsTotal" alias=""/>
-
+<!--        <table tableName="we_com_staff_statistics_total" domainObjectName="StaffStatisticsTotal" alias=""/>-->
+<!--        <table tableName="we_com_staff_group_statistics_total" domainObjectName="StaffGroupStatisticsTotal" alias=""/>-->
+        <table tableName="video_growth_multi_cover" domainObjectName="VideoGrowthMultiCover" alias=""/>
+        <table tableName="video_growth_multi_title" domainObjectName="VideoGrowthMultiTitle" alias=""/>
 
     </context>