Explorar o código

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

# Conflicts:
#	api-module/src/main/java/com/tzld/piaoquan/api/model/vo/contentplatform/VideoContentItemVO.java
#	api-module/src/main/java/com/tzld/piaoquan/api/service/contentplatform/impl/ContentPlatformPlanServiceImpl.java
刘立冬 hai 2 días
pai
achega
1662208e59
Modificáronse 31 ficheiros con 2057 adicións e 177 borrados
  1. 6 2
      api-module/src/main/java/com/tzld/piaoquan/api/component/TouLiuHttpClient.java
  2. 3 2
      api-module/src/main/java/com/tzld/piaoquan/api/controller/AccountDetailController.java
  3. 6 0
      api-module/src/main/java/com/tzld/piaoquan/api/controller/contentplatform/ContentPlatformPlanController.java
  4. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/job/GzhReplyVideoRefreshJob.java
  5. 35 0
      api-module/src/main/java/com/tzld/piaoquan/api/job/contentplatform/ContentPlatformDemandVideoJob.java
  6. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/WeComMessageDataJob.java
  7. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/thirdpart/WeComSendMsgJob.java
  8. 3 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/contentplatform/GzhPlanVideoContentItemParam.java
  9. 3 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/contentplatform/QwPlanSaveVideoParam.java
  10. 198 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/ContentPlatformDemandVideo.java
  11. 1062 82
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/ContentPlatformDemandVideoExample.java
  12. 11 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/ContentPlatformGzhPlanVideo.java
  13. 70 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/ContentPlatformGzhPlanVideoExample.java
  14. 22 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/ContentPlatformQwPlanVideo.java
  15. 130 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/ContentPlatformQwPlanVideoExample.java
  16. 46 19
      api-module/src/main/java/com/tzld/piaoquan/api/model/vo/contentplatform/VideoContentItemVO.java
  17. 3 2
      api-module/src/main/java/com/tzld/piaoquan/api/service/GhDetailService.java
  18. 2 0
      api-module/src/main/java/com/tzld/piaoquan/api/service/contentplatform/ContentPlatformPlanService.java
  19. 41 14
      api-module/src/main/java/com/tzld/piaoquan/api/service/contentplatform/impl/ContentPlatformPlanServiceImpl.java
  20. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/impl/CgiReplyServiceImpl.java
  21. 11 9
      api-module/src/main/java/com/tzld/piaoquan/api/service/impl/GhDetailServiceImpl.java
  22. 2 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/BuckStrategyV1.java
  23. 10 5
      api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/ThirdPartyPushMessageStrategyV1.java
  24. 2 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/WeComPushMessageStrategyV1.java
  25. 296 11
      api-module/src/main/resources/mapper/contentplatform/ContentPlatformDemandVideoMapper.xml
  26. 21 6
      api-module/src/main/resources/mapper/contentplatform/ContentPlatformGzhPlanVideoMapper.xml
  27. 36 3
      api-module/src/main/resources/mapper/contentplatform/ContentPlatformQwPlanVideoMapper.xml
  28. 15 3
      api-module/src/main/resources/mapper/contentplatform/ext/ContentPlatformDemandVideoMapperExt.xml
  29. 2 2
      api-module/src/main/resources/mybatis-api-contentPlatform-generator-config.xml
  30. 14 8
      common-module/src/main/java/com/tzld/piaoquan/growth/common/service/Impl/MessageAttachmentServiceImpl.java
  31. 3 3
      common-module/src/main/java/com/tzld/piaoquan/growth/common/service/MessageAttachmentService.java

+ 6 - 2
api-module/src/main/java/com/tzld/piaoquan/api/component/TouLiuHttpClient.java

@@ -30,9 +30,12 @@ public class TouLiuHttpClient {
                                        String putTypeOne,
                                        String putTypeTwo,
                                        String putTypeThree,
-                                       String putCarrierId) {
+                                       String putCarrierId,
+                                       String testId) {
         String url = baseUrl + "/ad/put/flow/add/tencent";
         UUID uuid = UUID.randomUUID();
+        String testIdParam = (testId != null && !testId.isEmpty()) ? "&testId=" + testId : "";
+        String testIdField = (testId != null && !testId.isEmpty()) ? "\"testId\":\"" + testId + "\"," : "";
         String jsonBody = "{" +
                 "\"videoId\":\"" + videoId + "\"," +
                 "\"putScene\":\"" + putScene + "\"," +
@@ -42,9 +45,10 @@ public class TouLiuHttpClient {
                 "\"putTypeTwo\":\"" + putTypeTwo + "\"," +
                 "\"putTypeThree\":\"" + putTypeThree + "\"," +
                 "\"putCarrierId\":\"" + putCarrierId + "\"," +
+                testIdField +
                 "\"path\":\"" + "pages/category" + "\"," +
                 "\"requestParam\":{" +
-                "\"jumpPage\":\"" + "pages/user-videos?fromGzh=1&rootShareId=" + uuid + "&id=" + videoId + "&shareId=" + uuid + "&rootSourceId=[rootSourceId]" + "\"" +
+                "\"jumpPage\":\"" + "pages/user-videos?fromGzh=1&rootShareId=" + uuid + "&id=" + videoId + "&shareId=" + uuid + "&rootSourceId=[rootSourceId]" + testIdParam + "\"" +
                 "}" +
                 "}";
         try {

+ 3 - 2
api-module/src/main/java/com/tzld/piaoquan/api/controller/AccountDetailController.java

@@ -14,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -40,12 +41,12 @@ public class AccountDetailController {
 
     @PostMapping("/add")
     public CommonResponse<Void> addAccountDetail(@RequestBody GhDetailVo detailVo) {
-        return ghDetailService.addGhDetail(detailVo);
+        return ghDetailService.addGhDetail(detailVo, new HashMap<>());
     }
 
     @PostMapping("/update")
     public CommonResponse<Void> updateAccountDetail(@RequestBody GhDetailVo detailVo) {
-        return ghDetailService.updateDetail(detailVo);
+        return ghDetailService.updateDetail(detailVo, new HashMap<>());
     }
 
     @PostMapping("/delete")

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

@@ -64,6 +64,12 @@ public class ContentPlatformPlanController {
         return CommonResponse.success(planService.getVideoContentList(param));
     }
 
+    @ApiOperation(value = "向量匹配视频列表")
+    @PostMapping("/vector/videoContentList")
+    public CommonResponse<Page<VideoContentItemVO>> getVectorVideoContentList(@RequestBody VideoContentListParam param) {
+        return CommonResponse.success(planService.getVectorVideoContentList(param));
+    }
+
     @ApiOperation(value = "个人上传发布内容视频列表")
     @PostMapping("/upload/videoContentList")
     public CommonResponse<Page<VideoContentItemVO>> getUploadVideoContentList(@RequestBody VideoContentListParam param) {

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/job/GzhReplyVideoRefreshJob.java

@@ -342,7 +342,7 @@ public class GzhReplyVideoRefreshJob {
             videoDetailList.add(videoDetailVo);
         }
         ghDetailVo.setVideoList(videoDetailList);
-        ghDetailService.updateDetail(ghDetailVo);
+        ghDetailService.updateDetail(ghDetailVo, new HashMap<>());
     }
 
     private String dealTitleLength(String title) {

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

@@ -78,8 +78,25 @@ public class ContentPlatformDemandVideoJob {
                 String pointType = demandItem.getString("pointType");
                 String standardElement = demandItem.getString("standardElement");
                 String categoryName = demandItem.getString("categoryName");
+                String demandId = demandItem.getString("demandId");
+                String crowdPackage = demandItem.getString("crowdPackage");
+                String conversionTarget = demandItem.getString("conversionTarget");
+                String partner = demandItem.getString("partner");
+                String account = demandItem.getString("account");
+                String sceneValue = demandItem.getString("sceneValue");
+                String demandStrategy = demandItem.getString("demandStrategy");
+                String driveDimensionTime = demandItem.getString("driveDimensionTime");
+                String demandFilterSortStrategy = demandItem.getString("demandFilterSortStrategy");
+                String demandType = demandItem.getString("demandType");
+                String demandContentId = demandItem.getString("demandContentId");
+                String demandContentTitle = demandItem.getString("demandContentTitle");
+                String demandContentTopic = demandItem.getString("demandContentTopic");
+                Integer crowdCount = demandItem.getInteger("crowdCount");
+                Integer videoCount = demandItem.getInteger("videoCount");
                 Long visitUv = demandItem.getLong("visitUv");
+                Double uvRatio = demandItem.getDouble("uvRatio");
                 Double totalRov = demandItem.getDouble("totalRov");
+                String onlineAction = demandItem.getString("onlineAction");
 
                 JSONArray matchedVideos = demandItem.getJSONArray("matchedVideos");
                 if (matchedVideos == null || matchedVideos.isEmpty()) {
@@ -96,14 +113,32 @@ public class ContentPlatformDemandVideoJob {
                     demandVideo.setPointType(pointType != null ? pointType : "");
                     demandVideo.setStandardElement(standardElement != null ? standardElement : "");
                     demandVideo.setCategoryName(categoryName != null ? categoryName : "");
+                    demandVideo.setDemandId(demandId != null ? demandId : "");
+                    demandVideo.setCrowdPackage(crowdPackage != null ? crowdPackage : "");
+                    demandVideo.setConversionTarget(conversionTarget != null ? conversionTarget : "");
+                    demandVideo.setPartner(partner != null ? partner : "");
+                    demandVideo.setAccount(account != null ? account : "");
+                    demandVideo.setSceneValue(sceneValue != null ? sceneValue : "");
+                    demandVideo.setDemandStrategy(demandStrategy != null ? demandStrategy : "");
+                    demandVideo.setDriveDimensionTime(driveDimensionTime != null ? driveDimensionTime : "");
+                    demandVideo.setDemandFilterSortStrategy(demandFilterSortStrategy != null ? demandFilterSortStrategy : "");
+                    demandVideo.setDemandType(demandType != null ? demandType : "");
+                    demandVideo.setDemandContentId(demandContentId != null ? demandContentId : "");
+                    demandVideo.setDemandContentTitle(demandContentTitle != null ? demandContentTitle : "");
+                    demandVideo.setDemandContentTopic(demandContentTopic != null ? demandContentTopic : "");
+                    demandVideo.setCrowdCount(crowdCount);
+                    demandVideo.setVideoCount(videoCount);
                     demandVideo.setVisitUv(visitUv);
+                    demandVideo.setUvRatio(uvRatio);
                     demandVideo.setTotalRov(totalRov);
+                    demandVideo.setOnlineAction(onlineAction != null ? onlineAction : "");
                     demandVideo.setVideoId(videoItem.getLong("videoId"));
                     demandVideo.setConfigCode(videoItem.getString("configCode") != null ? videoItem.getString("configCode") : "");
                     demandVideo.setScore(videoItem.getDouble("score"));
                     demandVideo.setSim(videoItem.getDouble("sim"));
                     demandVideo.setRov(videoItem.getDouble("rov"));
                     demandVideo.setMatchText(videoItem.getString("text") != null ? videoItem.getString("text") : "");
+                    demandVideo.setMatchExperimentId(videoItem.getString("matchExperimentId"));
                     demandVideo.setStatus(1);
                     demandVideo.setCreateTimestamp(now);
                     saveList.add(demandVideo);

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/WeComMessageDataJob.java

@@ -557,7 +557,7 @@ public class WeComMessageDataJob {
                 page = pageMap.get(key);
                 page = videoMultiService.setVideoMultiTitleCoverPagePath(videoId, page, title, messageAttachment.getCover());
             } else {
-                page = messageAttachmentService.getPage("touliu", "tencentqw", staff, videoId, "企微", "日常推送");
+                page = messageAttachmentService.getPage("touliu", "tencentqw", staff, videoId, "企微", "日常推送", null);
                 page = videoMultiService.setVideoMultiTitleCoverPagePath(videoId, page, title, messageAttachment.getCover());
                 pageMap.put(key, page);
             }

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/thirdpart/WeComSendMsgJob.java

@@ -305,7 +305,7 @@ public class WeComSendMsgJob {
         staff.setRemark(thirdPartWeComStaff.getName());
         String putScene = StringUtils.isNotBlank(roomConfig.getPutScene()) ? roomConfig.getPutScene() : "touliu";
         String pageChannel = StringUtils.isNotBlank(roomConfig.getChannel()) ? roomConfig.getChannel() : "tencentqw";
-        String page = messageAttachmentService.getPageNoCache(putScene, pageChannel, staff, video.getVideoId(), "企微", "社群");
+        String page = messageAttachmentService.getPageNoCache(putScene, pageChannel, staff, video.getVideoId(), "企微", "社群", null);
         page = videoMultiService.setVideoMultiTitleCoverPagePath(video.getVideoId(), page, video.getTitle(), video.getCover());
 
         CgiReplyBucketData cgiReplyBucketData = new CgiReplyBucketData();

+ 3 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/param/contentplatform/GzhPlanVideoContentItemParam.java

@@ -29,4 +29,7 @@ public class GzhPlanVideoContentItemParam {
 
     @ApiModelProperty(value = "传播效率")
     private Double score;
+
+    @ApiModelProperty(value = "匹配实验id")
+    private String matchExperimentId;
 }

+ 3 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/param/contentplatform/QwPlanSaveVideoParam.java

@@ -21,4 +21,7 @@ public class QwPlanSaveVideoParam {
     @ApiModelProperty(value = "场景 0-群发 1-单发")
     private Integer scene;
 
+    @ApiModelProperty(value = "匹配实验id")
+    private String matchExperimentId;
+
 }

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

@@ -5,22 +5,58 @@ public class ContentPlatformDemandVideo {
 
     private String dt;
 
+    private String onlineAction;
+
     private String channelName;
 
     private String crowdSegment;
 
+    private String demandId;
+
+    private String crowdPackage;
+
+    private String conversionTarget;
+
+    private String partner;
+
+    private String account;
+
+    private String sceneValue;
+
+    private String demandStrategy;
+
+    private String driveDimensionTime;
+
     private String dimension;
 
+    private String demandFilterSortStrategy;
+
+    private String demandType;
+
+    private String demandContentId;
+
+    private String demandContentTitle;
+
+    private String demandContentTopic;
+
     private String pointType;
 
     private String standardElement;
 
     private String categoryName;
 
+    private Integer crowdCount;
+
+    private Integer videoCount;
+
     private Long visitUv;
 
+    private Double uvRatio;
+
     private Double totalRov;
 
+    private String matchExperimentId;
+
     private Long videoId;
 
     private String configCode;
@@ -61,6 +97,14 @@ public class ContentPlatformDemandVideo {
         this.dt = dt;
     }
 
+    public String getOnlineAction() {
+        return onlineAction;
+    }
+
+    public void setOnlineAction(String onlineAction) {
+        this.onlineAction = onlineAction;
+    }
+
     public String getChannelName() {
         return channelName;
     }
@@ -77,6 +121,70 @@ public class ContentPlatformDemandVideo {
         this.crowdSegment = crowdSegment;
     }
 
+    public String getDemandId() {
+        return demandId;
+    }
+
+    public void setDemandId(String demandId) {
+        this.demandId = demandId;
+    }
+
+    public String getCrowdPackage() {
+        return crowdPackage;
+    }
+
+    public void setCrowdPackage(String crowdPackage) {
+        this.crowdPackage = crowdPackage;
+    }
+
+    public String getConversionTarget() {
+        return conversionTarget;
+    }
+
+    public void setConversionTarget(String conversionTarget) {
+        this.conversionTarget = conversionTarget;
+    }
+
+    public String getPartner() {
+        return partner;
+    }
+
+    public void setPartner(String partner) {
+        this.partner = partner;
+    }
+
+    public String getAccount() {
+        return account;
+    }
+
+    public void setAccount(String account) {
+        this.account = account;
+    }
+
+    public String getSceneValue() {
+        return sceneValue;
+    }
+
+    public void setSceneValue(String sceneValue) {
+        this.sceneValue = sceneValue;
+    }
+
+    public String getDemandStrategy() {
+        return demandStrategy;
+    }
+
+    public void setDemandStrategy(String demandStrategy) {
+        this.demandStrategy = demandStrategy;
+    }
+
+    public String getDriveDimensionTime() {
+        return driveDimensionTime;
+    }
+
+    public void setDriveDimensionTime(String driveDimensionTime) {
+        this.driveDimensionTime = driveDimensionTime;
+    }
+
     public String getDimension() {
         return dimension;
     }
@@ -85,6 +193,46 @@ public class ContentPlatformDemandVideo {
         this.dimension = dimension;
     }
 
+    public String getDemandFilterSortStrategy() {
+        return demandFilterSortStrategy;
+    }
+
+    public void setDemandFilterSortStrategy(String demandFilterSortStrategy) {
+        this.demandFilterSortStrategy = demandFilterSortStrategy;
+    }
+
+    public String getDemandType() {
+        return demandType;
+    }
+
+    public void setDemandType(String demandType) {
+        this.demandType = demandType;
+    }
+
+    public String getDemandContentId() {
+        return demandContentId;
+    }
+
+    public void setDemandContentId(String demandContentId) {
+        this.demandContentId = demandContentId;
+    }
+
+    public String getDemandContentTitle() {
+        return demandContentTitle;
+    }
+
+    public void setDemandContentTitle(String demandContentTitle) {
+        this.demandContentTitle = demandContentTitle;
+    }
+
+    public String getDemandContentTopic() {
+        return demandContentTopic;
+    }
+
+    public void setDemandContentTopic(String demandContentTopic) {
+        this.demandContentTopic = demandContentTopic;
+    }
+
     public String getPointType() {
         return pointType;
     }
@@ -109,6 +257,22 @@ public class ContentPlatformDemandVideo {
         this.categoryName = categoryName;
     }
 
+    public Integer getCrowdCount() {
+        return crowdCount;
+    }
+
+    public void setCrowdCount(Integer crowdCount) {
+        this.crowdCount = crowdCount;
+    }
+
+    public Integer getVideoCount() {
+        return videoCount;
+    }
+
+    public void setVideoCount(Integer videoCount) {
+        this.videoCount = videoCount;
+    }
+
     public Long getVisitUv() {
         return visitUv;
     }
@@ -117,6 +281,14 @@ public class ContentPlatformDemandVideo {
         this.visitUv = visitUv;
     }
 
+    public Double getUvRatio() {
+        return uvRatio;
+    }
+
+    public void setUvRatio(Double uvRatio) {
+        this.uvRatio = uvRatio;
+    }
+
     public Double getTotalRov() {
         return totalRov;
     }
@@ -125,6 +297,14 @@ public class ContentPlatformDemandVideo {
         this.totalRov = totalRov;
     }
 
+    public String getMatchExperimentId() {
+        return matchExperimentId;
+    }
+
+    public void setMatchExperimentId(String matchExperimentId) {
+        this.matchExperimentId = matchExperimentId;
+    }
+
     public Long getVideoId() {
         return videoId;
     }
@@ -229,14 +409,32 @@ public class ContentPlatformDemandVideo {
         sb.append("Hash = ").append(hashCode());
         sb.append(", id=").append(id);
         sb.append(", dt=").append(dt);
+        sb.append(", onlineAction=").append(onlineAction);
         sb.append(", channelName=").append(channelName);
         sb.append(", crowdSegment=").append(crowdSegment);
+        sb.append(", demandId=").append(demandId);
+        sb.append(", crowdPackage=").append(crowdPackage);
+        sb.append(", conversionTarget=").append(conversionTarget);
+        sb.append(", partner=").append(partner);
+        sb.append(", account=").append(account);
+        sb.append(", sceneValue=").append(sceneValue);
+        sb.append(", demandStrategy=").append(demandStrategy);
+        sb.append(", driveDimensionTime=").append(driveDimensionTime);
         sb.append(", dimension=").append(dimension);
+        sb.append(", demandFilterSortStrategy=").append(demandFilterSortStrategy);
+        sb.append(", demandType=").append(demandType);
+        sb.append(", demandContentId=").append(demandContentId);
+        sb.append(", demandContentTitle=").append(demandContentTitle);
+        sb.append(", demandContentTopic=").append(demandContentTopic);
         sb.append(", pointType=").append(pointType);
         sb.append(", standardElement=").append(standardElement);
         sb.append(", categoryName=").append(categoryName);
+        sb.append(", crowdCount=").append(crowdCount);
+        sb.append(", videoCount=").append(videoCount);
         sb.append(", visitUv=").append(visitUv);
+        sb.append(", uvRatio=").append(uvRatio);
         sb.append(", totalRov=").append(totalRov);
+        sb.append(", matchExperimentId=").append(matchExperimentId);
         sb.append(", videoId=").append(videoId);
         sb.append(", configCode=").append(configCode);
         sb.append(", score=").append(score);

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1062 - 82
api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/ContentPlatformDemandVideoExample.java


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

@@ -27,6 +27,8 @@ public class ContentPlatformGzhPlanVideo {
 
     private String rootSourceId;
 
+    private String matchExperimentId;
+
     private Integer status;
 
     private Long createAccountId;
@@ -137,6 +139,14 @@ public class ContentPlatformGzhPlanVideo {
         this.rootSourceId = rootSourceId;
     }
 
+    public String getMatchExperimentId() {
+        return matchExperimentId;
+    }
+
+    public void setMatchExperimentId(String matchExperimentId) {
+        this.matchExperimentId = matchExperimentId;
+    }
+
     public Integer getStatus() {
         return status;
     }
@@ -180,6 +190,7 @@ public class ContentPlatformGzhPlanVideo {
         sb.append(", video=").append(video);
         sb.append(", pageUrl=").append(pageUrl);
         sb.append(", rootSourceId=").append(rootSourceId);
+        sb.append(", matchExperimentId=").append(matchExperimentId);
         sb.append(", status=").append(status);
         sb.append(", createAccountId=").append(createAccountId);
         sb.append(", createTimestamp=").append(createTimestamp);

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

@@ -965,6 +965,76 @@ public class ContentPlatformGzhPlanVideoExample {
             return (Criteria) this;
         }
 
+        public Criteria andMatchExperimentIdIsNull() {
+            addCriterion("match_experiment_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdIsNotNull() {
+            addCriterion("match_experiment_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdEqualTo(String value) {
+            addCriterion("match_experiment_id =", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdNotEqualTo(String value) {
+            addCriterion("match_experiment_id <>", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdGreaterThan(String value) {
+            addCriterion("match_experiment_id >", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdGreaterThanOrEqualTo(String value) {
+            addCriterion("match_experiment_id >=", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdLessThan(String value) {
+            addCriterion("match_experiment_id <", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdLessThanOrEqualTo(String value) {
+            addCriterion("match_experiment_id <=", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdLike(String value) {
+            addCriterion("match_experiment_id like", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdNotLike(String value) {
+            addCriterion("match_experiment_id not like", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdIn(List<String> values) {
+            addCriterion("match_experiment_id in", values, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdNotIn(List<String> values) {
+            addCriterion("match_experiment_id not in", values, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdBetween(String value1, String value2) {
+            addCriterion("match_experiment_id between", value1, value2, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdNotBetween(String value1, String value2) {
+            addCriterion("match_experiment_id not between", value1, value2, "matchExperimentId");
+            return (Criteria) this;
+        }
+
         public Criteria andStatusIsNull() {
             addCriterion("`status` is null");
             return (Criteria) this;

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

@@ -13,6 +13,10 @@ public class ContentPlatformQwPlanVideo {
 
     private String video;
 
+    private String matchExperimentId;
+
+    private Integer status;
+
     private Long createAccountId;
 
     private Long createTimestamp;
@@ -65,6 +69,22 @@ public class ContentPlatformQwPlanVideo {
         this.video = video;
     }
 
+    public String getMatchExperimentId() {
+        return matchExperimentId;
+    }
+
+    public void setMatchExperimentId(String matchExperimentId) {
+        this.matchExperimentId = matchExperimentId;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
     public Long getCreateAccountId() {
         return createAccountId;
     }
@@ -93,6 +113,8 @@ public class ContentPlatformQwPlanVideo {
         sb.append(", title=").append(title);
         sb.append(", cover=").append(cover);
         sb.append(", video=").append(video);
+        sb.append(", matchExperimentId=").append(matchExperimentId);
+        sb.append(", status=").append(status);
         sb.append(", createAccountId=").append(createAccountId);
         sb.append(", createTimestamp=").append(createTimestamp);
         sb.append("]");

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

@@ -505,6 +505,136 @@ public class ContentPlatformQwPlanVideoExample {
             return (Criteria) this;
         }
 
+        public Criteria andMatchExperimentIdIsNull() {
+            addCriterion("match_experiment_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdIsNotNull() {
+            addCriterion("match_experiment_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdEqualTo(String value) {
+            addCriterion("match_experiment_id =", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdNotEqualTo(String value) {
+            addCriterion("match_experiment_id <>", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdGreaterThan(String value) {
+            addCriterion("match_experiment_id >", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdGreaterThanOrEqualTo(String value) {
+            addCriterion("match_experiment_id >=", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdLessThan(String value) {
+            addCriterion("match_experiment_id <", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdLessThanOrEqualTo(String value) {
+            addCriterion("match_experiment_id <=", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdLike(String value) {
+            addCriterion("match_experiment_id like", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdNotLike(String value) {
+            addCriterion("match_experiment_id not like", value, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdIn(List<String> values) {
+            addCriterion("match_experiment_id in", values, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdNotIn(List<String> values) {
+            addCriterion("match_experiment_id not in", values, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdBetween(String value1, String value2) {
+            addCriterion("match_experiment_id between", value1, value2, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMatchExperimentIdNotBetween(String value1, String value2) {
+            addCriterion("match_experiment_id not between", value1, value2, "matchExperimentId");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIsNull() {
+            addCriterion("`status` is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIsNotNull() {
+            addCriterion("`status` is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusEqualTo(Integer value) {
+            addCriterion("`status` =", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotEqualTo(Integer value) {
+            addCriterion("`status` <>", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThan(Integer value) {
+            addCriterion("`status` >", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("`status` >=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThan(Integer value) {
+            addCriterion("`status` <", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("`status` <=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIn(List<Integer> values) {
+            addCriterion("`status` in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotIn(List<Integer> values) {
+            addCriterion("`status` not in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusBetween(Integer value1, Integer value2) {
+            addCriterion("`status` between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("`status` not between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
         public Criteria andCreateAccountIdIsNull() {
             addCriterion("create_account_id is null");
             return (Criteria) this;

+ 46 - 19
api-module/src/main/java/com/tzld/piaoquan/api/model/vo/contentplatform/VideoContentItemVO.java

@@ -30,33 +30,60 @@ public class VideoContentItemVO {
     @ApiModelProperty(value = "推荐指数")
     private Double recommendScore;
 
-    @ApiModelProperty(value = "渠道")
-    private String channelName;
-
-    @ApiModelProperty(value = "人群分段")
+    @ApiModelProperty(value = "人群分组")
     private String crowdSegment;
 
-    @ApiModelProperty(value = "点类型(灵感点/关键点/目的点)")
-    private String pointType;
+    @ApiModelProperty(value = "需求id")
+    private String demandId;
+
+    @ApiModelProperty(value = "人群包")
+    private String crowdPackage;
+
+    @ApiModelProperty(value = "转化目标")
+    private String conversionTarget;
+
+    @ApiModelProperty(value = "合作伙伴")
+    private String partner;
+
+    @ApiModelProperty(value = "账号")
+    private String account;
+
+    @ApiModelProperty(value = "场景值")
+    private String sceneValue;
+
+    @ApiModelProperty(value = "需求策略")
+    private String demandStrategy;
+
+    @ApiModelProperty(value = "驱动维度时间")
+    private String driveDimensionTime;
 
-    @ApiModelProperty(value = "维度(传播/增长 × 头部/分发)")
+    @ApiModelProperty(value = "维度")
     private String dimension;
 
-    @ApiModelProperty(value = "品类")
-    private String categoryName;
+    @ApiModelProperty(value = "需求过滤排序策略")
+    private String demandFilterSortStrategy;
 
-    @ApiModelProperty(value = "需求特征文案")
-    private String standardElement;
+    @ApiModelProperty(value = "需求类型")
+    private String demandType;
+
+    @ApiModelProperty(value = "需求内容id")
+    private String demandContentId;
+
+    @ApiModelProperty(value = "需求内容标题")
+    private String demandContentTitle;
 
-    @ApiModelProperty(value = "视频命中文案")
-    private String matchText;
+    @ApiModelProperty(value = "需求内容主题")
+    private String demandContentTopic;
 
-    @ApiModelProperty(value = "需求曝光UV")
-    private Long visitUv;
+    @ApiModelProperty(value = "点位类型")
+    private String pointType;
+
+    @ApiModelProperty(value = "标准元素")
+    private String standardElement;
 
-    @ApiModelProperty(value = "需求总ROV")
-    private Double totalRov;
+    @ApiModelProperty(value = "分类名称")
+    private String categoryName;
 
-    @ApiModelProperty(value = "相似度")
-    private Double sim;
+    @ApiModelProperty(value = "匹配实验id")
+    private String matchExperimentId;
 }

+ 3 - 2
api-module/src/main/java/com/tzld/piaoquan/api/service/GhDetailService.java

@@ -8,14 +8,15 @@ import com.tzld.piaoquan.growth.common.model.po.GhDetail;
 import com.tzld.piaoquan.growth.common.utils.page.Page;
 
 import java.util.List;
+import java.util.Map;
 
 public interface GhDetailService {
 
     CommonResponse<Page<GhDetailVo>> getGhDetailList(Integer pageNum, Integer pageSize, String accountId, String accountName, Long videoId);
 
-    CommonResponse<Void> addGhDetail(GhDetailVo ghDetailVo);
+    CommonResponse<Void> addGhDetail(GhDetailVo ghDetailVo, Map<Long, String> videoIdTestIdMap);
 
-    CommonResponse<Void> updateDetail(GhDetailVo ghDetailVo);
+    CommonResponse<Void> updateDetail(GhDetailVo ghDetailVo, Map<Long, String> videoIdTestIdMap);
 
     CommonResponse<Void> deleteDetail(Long id);
 

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

@@ -91,4 +91,6 @@ public interface ContentPlatformPlanService {
     Boolean gzhPushCheckExistRootSourceId(String rootSourceId);
 
     Page<VideoContentItemVO> getDemandVideoContentList(VideoContentListParam param);
+
+    Page<VideoContentItemVO> getVectorVideoContentList(VideoContentListParam param);
 }

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

@@ -337,7 +337,10 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
             // 更新cgi_reply_bucket_data
             updateCgiReplyBucketData(account.getGhId());
             // 更新gh_detail
-            updateGhDetail(account, param.getSelectVideoType(), videoIds);
+            Map<Long, String> videoIdTestIdMap = param.getVideoList().stream()
+                    .filter(o -> StringUtils.hasText(o.getMatchExperimentId()))
+                    .collect(Collectors.toMap(GzhPlanVideoContentItemParam::getVideoId, GzhPlanVideoContentItemParam::getMatchExperimentId));
+            updateGhDetail(account, param.getSelectVideoType(), videoIds, videoIdTestIdMap);
         }
         // 调用aigc重新拉取视频
         if (param.getType() == ContentPlatformGzhPlanTypeEnum.AUTO_REPLY.getVal()) {
@@ -383,6 +386,7 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
                 item.setCustomCoverType(vo.getCustomCoverType());
                 // 上报多标题封面
                 item.setPageUrl(setMultiTitleCoverPagePath(item));
+                item.setMatchExperimentId(vo.getMatchExperimentId());
                 if (StringUtils.hasText(item.getPageUrl())) {
                     String rootSourceId = MessageUtil.getRootSourceId(item.getPageUrl());
                     if (StringUtils.hasText(rootSourceId)) {
@@ -402,19 +406,20 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
                 item.setVideo(vo.getVideo());
                 if (param.getType() == ContentPlatformGzhPlanTypeEnum.FWH_PUSH.getVal()) {
                     String response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, String.valueOf(vo.getVideoId()), "fwhdyy",
-                            loginAccount.getChannel(), "自动", "公众号", "文章插小程序", "文字和小程序", account.getGhId());
+                            loginAccount.getChannel(), "自动", "公众号", "文章插小程序", "文字和小程序", account.getGhId(), vo.getMatchExperimentId());
                     JSONObject json = JSONObject.parseObject(response);
                     SmallPageUrlDetail smallPageUrlDetail = json.getJSONObject("data").toJavaObject(SmallPageUrlDetail.class);
                     item.setPageUrl(smallPageUrlDetail.getUrl());
                 } else if (param.getType() == ContentPlatformGzhPlanTypeEnum.GZH_PUSH.getVal()) {
                     String response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, String.valueOf(vo.getVideoId()), "longArticles_outer",
-                            loginAccount.getChannel(), "自动", "公众号", "文章插小程序", "小程序", account.getGhId());
+                            loginAccount.getChannel(), "自动", "公众号", "文章插小程序", "小程序", account.getGhId(), vo.getMatchExperimentId());
                     JSONObject json = JSONObject.parseObject(response);
                     SmallPageUrlDetail smallPageUrlDetail = json.getJSONObject("data").toJavaObject(SmallPageUrlDetail.class);
                     item.setPageUrl(smallPageUrlDetail.getUrl());
                 }
                 // 上报多标题封面
                 item.setPageUrl(setMultiTitleCoverPagePath(item));
+                item.setMatchExperimentId(vo.getMatchExperimentId());
                 if (StringUtils.hasText(item.getPageUrl())) {
                     String rootSourceId = MessageUtil.getRootSourceId(item.getPageUrl());
                     if (StringUtils.hasText(rootSourceId)) {
@@ -550,7 +555,8 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
         return gzhPlanVideoMapper.selectByExample(example);
     }
 
-    private void updateGhDetail(ContentPlatformGzhAccount account, Integer selectVideoType, List<Long> videoIds) {
+    private void updateGhDetail(ContentPlatformGzhAccount account, Integer selectVideoType, List<Long> videoIds,
+                                Map<Long, String> videoIdTestIdMap) {
         GhDetail ghDetail = ghDetailService.getGhDetailByGhIdType(account.getGhId(), GhTypeEnum.THIRD_PARTY_GH.type);
         GhDetailVo detailVo = new GhDetailVo();
         Integer strategyStatus = selectVideoType == 0 ? StrategyStatusEnum.DEFAULT.status : StrategyStatusEnum.STRATEGY.status;
@@ -565,7 +571,7 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
             detailVo.setStrategyStatus(strategyStatus);
             detailVo.setVideoIds(videoIds);
             detailVo.setAutoreplySendMinigramNum(videoIds.size());
-            ghDetailService.updateDetail(detailVo);
+            ghDetailService.updateDetail(detailVo, videoIdTestIdMap);
         } else {
             detailVo.setAccountId(account.getGhId());
             detailVo.setAccountName(account.getName());
@@ -575,7 +581,7 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
             detailVo.setStrategyStatus(strategyStatus);
             detailVo.setVideoIds(videoIds);
             detailVo.setAutoreplySendMinigramNum(videoIds.size());
-            ghDetailService.addGhDetail(detailVo);
+            ghDetailService.addGhDetail(detailVo, videoIdTestIdMap);
         }
     }
 
@@ -1020,7 +1026,7 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
             String carrierId = StringUtils.hasText(param.getSubChannel()) ? param.getSubChannel() : "wxbdd2a2e93d9a6e25";
             String pageUrl = messageAttachmentService.getPage(loginUser.getChannel(), carrierId,
                     "dyyqw", "企微", QwPlanTypeEnum.from(param.getType()).getDescription(),
-                    "位置1", videoParam.getVideoId());
+                    "位置1", videoParam.getVideoId(), videoParam.getMatchExperimentId());
             //pageUrl = videoMultiService.setVideoMultiTitleCoverPagePath(videoParam.getVideoId(), pageUrl,
             //        videoParam.getTitle(), videoParam.getCover());
             String rootSourceId = MessageUtil.getRootSourceId(pageUrl);
@@ -1044,6 +1050,7 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
         item.setTitle(videoParam.getTitle());
         item.setCover(videoParam.getCover());
         item.setVideo(videoParam.getVideo());
+        item.setMatchExperimentId(videoParam.getMatchExperimentId());
         item.setCreateAccountId(loginAccountId);
         item.setCreateTimestamp(System.currentTimeMillis());
         qwPlanVideoMapper.insertSelective(item);
@@ -1270,6 +1277,17 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
         return result;
     }
 
+    @Override
+    public Page<VideoContentItemVO> getVectorVideoContentList(VideoContentListParam param) {
+        if (StringUtils.hasText(param.getTitle())) {
+            return getVideoContentListByTitleV2(param);
+        }
+        Page<VideoContentItemVO> result = new Page<>(param.getPageNum(), param.getPageSize());
+        result.setTotalSize(0);
+        result.setObjs(new ArrayList<>());
+        return result;
+    }
+
     private List<VideoContentItemVO> buildDemandVideoContentItemVOList(List<ContentPlatformDemandVideo> videoList) {
         if (CollectionUtils.isEmpty(videoList)) {
             return new ArrayList<>();
@@ -1282,16 +1300,25 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
             item.setCover(video.getCover());
             item.setVideo(video.getVideo());
             item.setScore(video.getScore());
-            item.setChannelName(video.getChannelName());
             item.setCrowdSegment(video.getCrowdSegment());
-            item.setPointType(video.getPointType());
+            item.setDemandId(video.getDemandId());
+            item.setCrowdPackage(video.getCrowdPackage());
+            item.setConversionTarget(video.getConversionTarget());
+            item.setPartner(video.getPartner());
+            item.setAccount(video.getAccount());
+            item.setSceneValue(video.getSceneValue());
+            item.setDemandStrategy(video.getDemandStrategy());
+            item.setDriveDimensionTime(video.getDriveDimensionTime());
             item.setDimension(video.getDimension());
-            item.setCategoryName(video.getCategoryName());
+            item.setDemandFilterSortStrategy(video.getDemandFilterSortStrategy());
+            item.setDemandType(video.getDemandType());
+            item.setDemandContentId(video.getDemandContentId());
+            item.setDemandContentTitle(video.getDemandContentTitle());
+            item.setDemandContentTopic(video.getDemandContentTopic());
+            item.setPointType(video.getPointType());
             item.setStandardElement(video.getStandardElement());
-            item.setMatchText(video.getMatchText());
-            item.setVisitUv(video.getVisitUv());
-            item.setTotalRov(video.getTotalRov());
-            item.setSim(video.getSim());
+            item.setCategoryName(video.getCategoryName());
+            item.setMatchExperimentId(video.getMatchExperimentId());
             result.add(item);
         }
         return result;

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

@@ -223,7 +223,7 @@ public class CgiReplyServiceImpl implements CgiReplyService {
         }
         // 创建投流路径
         String response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, String.valueOf(param.getVideoId()),
-                putScene, channel, "自动", "公众号", "自动回复小程序", "位置1", ghId);
+                putScene, channel, "自动", "公众号", "自动回复小程序", "位置1", ghId, null);
         // 获取视频详情
         Map<Long, VideoDetail> videoDetailMap = touLiuHttpClient.getVideoDetailRequest(Collections.singletonList(param.getVideoId()));
         JSONObject responseJSON = JSON.parseObject(response);

+ 11 - 9
api-module/src/main/java/com/tzld/piaoquan/api/service/impl/GhDetailServiceImpl.java

@@ -138,7 +138,7 @@ public class GhDetailServiceImpl implements GhDetailService {
 
 
     @Override
-    public CommonResponse<Void> addGhDetail(GhDetailVo ghDetailVo) {
+    public CommonResponse<Void> addGhDetail(GhDetailVo ghDetailVo, Map<Long, String> videoIdTestIdMap) {
         if (ghDetailVo == null
                 || StringUtils.isEmpty(ghDetailVo.getAccountId())
                 || StringUtils.isEmpty(ghDetailVo.getAccountName())
@@ -171,7 +171,7 @@ public class GhDetailServiceImpl implements GhDetailService {
             }
             ghDetailMapper.insertSelective(ghDetail);
             ghDetailMapperExt.deleteOldGhDetailExt(ghDetailVo.getAccountId(), ghDetailVo.getType());
-            batchSaveGhDetailExt(ghDetailVo);
+            batchSaveGhDetailExt(ghDetailVo, videoIdTestIdMap);
             new Thread(() -> aigcApiService.refreshGzhAutoReplyMsgData(ghDetailVo.getAccountId())).start();
             return CommonResponse.success();
         } catch (Exception e) {
@@ -180,7 +180,7 @@ public class GhDetailServiceImpl implements GhDetailService {
         return CommonResponse.create(500, "插入失败");
     }
 
-    private void batchSaveGhDetailExt(GhDetailVo ghDetailVo) {
+    private void batchSaveGhDetailExt(GhDetailVo ghDetailVo, Map<Long, String> videoIdTestIdMap) {
         if (CollectionUtils.isEmpty(ghDetailVo.getVideoList())) {
             return;
         }
@@ -194,7 +194,7 @@ public class GhDetailServiceImpl implements GhDetailService {
             ghDetailExt.setGhDetailId(ghDetail.getId());
             ghDetailExt.setVideoId(videoDetail.getVideoId());
             ghDetailExt.setPage(getVideoPageUrl(videoDetail.getVideoId(), ghDetailVo.getChannel(),
-                    ghDetailVo.getAccountId(), videoDetail.getSort(), ghDetailVo.getType()));
+                    ghDetailVo.getAccountId(), videoDetail.getSort(), ghDetailVo.getType(), videoIdTestIdMap.get(videoDetail.getVideoId())));
             setCustomTitle(ghDetailExt, videoDetail);
             setCustomCover(ghDetailExt, videoDetail);
             ghDetailExt.setSort(videoDetail.getSort());
@@ -268,7 +268,7 @@ public class GhDetailServiceImpl implements GhDetailService {
         }
     }
 
-    private String getVideoPageUrl(Long videoId, String channel, String ghId, Integer sort, Integer accountType) {
+    private String getVideoPageUrl(Long videoId, String channel, String ghId, Integer sort, Integer accountType, String testId) {
         // 查询库里是否存在,如果存在即复用
         try {
             CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample();
@@ -291,9 +291,11 @@ public class GhDetailServiceImpl implements GhDetailService {
                         channel = jsonObject1.getString("channel");
                     }
                 }
-                response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, String.valueOf(videoId), putScene, channel, "自动", "公众号", "自动回复小程序", "位置" + sort, ghId);
+                response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, String.valueOf(videoId), putScene,
+                        channel, "自动", "公众号", "自动回复小程序", "位置" + sort, ghId, testId);
             } else {
-                response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, String.valueOf(videoId), "dyyjs", channel, "自动", "公众号", "自动回复小程序", "位置" + sort, ghId);
+                response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, String.valueOf(videoId), "dyyjs",
+                        channel, "自动", "公众号", "自动回复小程序", "位置" + sort, ghId, testId);
             }
             JSONObject jsonObject = JSON.parseObject(response);
             if (jsonObject != null && jsonObject.containsKey("data")) {
@@ -309,7 +311,7 @@ public class GhDetailServiceImpl implements GhDetailService {
     }
 
     @Override
-    public CommonResponse<Void> updateDetail(GhDetailVo ghDetailVo) {
+    public CommonResponse<Void> updateDetail(GhDetailVo ghDetailVo, Map<Long, String> videoIdTestIdMap) {
         if (ghDetailVo == null || ghDetailVo.getId() == null) {
             return CommonResponse.create(500, "参数错误");
         }
@@ -334,7 +336,7 @@ public class GhDetailServiceImpl implements GhDetailService {
             ghDetail.setVideoIds(JSONObject.toJSONString(ghDetailVo.getVideoIds()));
             ghDetailMapper.updateByPrimaryKeySelective(ghDetail);
             ghDetailMapperExt.deleteOldGhDetailExt(ghDetailVo.getAccountId(), ghDetailVo.getType());
-            batchSaveGhDetailExt(ghDetailVo);
+            batchSaveGhDetailExt(ghDetailVo, videoIdTestIdMap);
 
             if (StringUtils.isEmpty(ghDetail.getContentDetail()) || StringUtils.isEmpty(ghDetail.getRate())) {
                 GhDetail updateGhDetail = ghDetailMapper.selectByPrimaryKey(ghDetail.getId());

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

@@ -392,7 +392,8 @@ public class BuckStrategyV1 implements ReplyStrategyService {
             SmallPageUrlDetail smallPageUrlDetail = new SmallPageUrlDetail();
             if (CollectionUtils.isEmpty(cgiReplyBucketData)) {
                 // 库里不存在,调用新生成
-                String response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, videoId, putScene, channel, "自动", "公众号", "自动回复小程序", "位置" + sort, ghId);
+                String response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, videoId, putScene, channel,
+                        "自动", "公众号", "自动回复小程序", "位置" + sort, ghId, null);
                 JSONObject jsonObject = JSON.parseObject(response);
                 if (jsonObject.getInteger("code").equals(0)) {
                     smallPageUrlDetail = jsonObject.getObject("data", SmallPageUrlDetail.class);

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

@@ -101,9 +101,10 @@ public class ThirdPartyPushMessageStrategyV1 implements ReplyStrategyService {
             // 1 处理文章--算法引擎--排序文章数据
 //            getWenzhangData();
             // 2 处理小程序--读取离线数据表--获取策略排序小程序数据
-            List<CgiReplyBucketData> smallDataCgiReplyList = readStrategyOrderSmallData(keyedSet, bucketDataParam);
+            Map<Long, String> videoTestIdMap = new HashMap<>();
+            List<CgiReplyBucketData> smallDataCgiReplyList = readStrategyOrderSmallData(keyedSet, bucketDataParam, videoTestIdMap);
             // 2.1 获取小程序落地页地址 http调用
-            smallDataCgiReplyList = setSmallPageUrl(smallDataCgiReplyList, bucketDataParam.getChannel());
+            smallDataCgiReplyList = setSmallPageUrl(smallDataCgiReplyList, bucketDataParam.getChannel(), videoTestIdMap);
             log.info(JSON.toJSONString(smallDataCgiReplyList));
             // 3 入库读表
             insertSmallData(smallDataCgiReplyList, keyedSet, bucketDataParam);
@@ -259,7 +260,8 @@ public class ThirdPartyPushMessageStrategyV1 implements ReplyStrategyService {
         }
     }
 
-    private List<CgiReplyBucketData> setSmallPageUrl(List<CgiReplyBucketData> smallDataCgiReplyList, String channel) {
+    private List<CgiReplyBucketData> setSmallPageUrl(List<CgiReplyBucketData> smallDataCgiReplyList, String channel,
+                                                     Map<Long, String> videoTestIdMap) {
         if (CollectionUtils.isEmpty(smallDataCgiReplyList)) {
             return smallDataCgiReplyList;
         }
@@ -287,7 +289,8 @@ public class ThirdPartyPushMessageStrategyV1 implements ReplyStrategyService {
             SmallPageUrlDetail smallPageUrlDetail = new SmallPageUrlDetail();
             if (CollectionUtils.isEmpty(cgiReplyBucketData)) {
                 // 库里不存在,调用新生成
-                String response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, videoId, "dyyjs", channel, "自动", "公众号", "自动回复小程序", "位置" + sort, ghId);
+                String response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, videoId, "dyyjs", channel,
+                        "自动", "公众号", "自动回复小程序", "位置" + sort, ghId, videoTestIdMap.get(Long.valueOf(videoId)));
                 JSONObject jsonObject = JSON.parseObject(response);
                 if (jsonObject.getInteger("code").equals(0)) {
                     smallPageUrlDetail = jsonObject.getObject("data", SmallPageUrlDetail.class);
@@ -319,7 +322,8 @@ public class ThirdPartyPushMessageStrategyV1 implements ReplyStrategyService {
         return smallDataCgiReplyList;
     }
 
-    private List<CgiReplyBucketData> readStrategyOrderSmallData(Set<String> keyedSet, BucketDataParam bucketDataParam) {
+    private List<CgiReplyBucketData> readStrategyOrderSmallData(Set<String> keyedSet, BucketDataParam bucketDataParam,
+                                                                Map<Long, String> videoTestIdMap) {
         List<CgiReplyBucketData> result = new ArrayList<>();
         for (String key : keyedSet) {
             if ("base".equals(key)) {
@@ -430,6 +434,7 @@ public class ThirdPartyPushMessageStrategyV1 implements ReplyStrategyService {
                                 }
                                 cgiReplyBucketData.setCoverUrl(cover + coverSuffix);
                             }
+                            videoTestIdMap.put(gzhPlanVideo.getVideoId(), gzhPlanVideo.getMatchExperimentId());
                         } else {
                             if (videoDetail != null && StringUtils.isNotEmpty(videoDetail.getCover())) {
                                 cgiReplyBucketData.setCoverUrl(videoDetail.getCover());

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

@@ -249,7 +249,8 @@ public class WeComPushMessageStrategyV1 implements ReplyStrategyService {
             SmallPageUrlDetail smallPageUrlDetail = new SmallPageUrlDetail();
             if (CollectionUtils.isEmpty(cgiReplyBucketData)) {
                 // 库里不存在,调用新生成
-                String response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, videoId, "touliu", "tencentqw", "自动", "企微", "即时欢迎语", "位置" + sort, ghId);
+                String response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, videoId, "touliu",
+                        "tencentqw", "自动", "企微", "即时欢迎语", "位置" + sort, ghId, null);
                 JSONObject jsonObject = JSON.parseObject(response);
                 if (jsonObject.getInteger("code").equals(0)) {
                     smallPageUrlDetail = jsonObject.getObject("data", SmallPageUrlDetail.class);

+ 296 - 11
api-module/src/main/resources/mapper/contentplatform/ContentPlatformDemandVideoMapper.xml

@@ -4,14 +4,32 @@
   <resultMap id="BaseResultMap" type="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo">
     <id column="id" jdbcType="BIGINT" property="id" />
     <result column="dt" jdbcType="VARCHAR" property="dt" />
+    <result column="online_action" jdbcType="VARCHAR" property="onlineAction" />
     <result column="channel_name" jdbcType="VARCHAR" property="channelName" />
     <result column="crowd_segment" jdbcType="VARCHAR" property="crowdSegment" />
+    <result column="demand_id" jdbcType="VARCHAR" property="demandId" />
+    <result column="crowd_package" jdbcType="VARCHAR" property="crowdPackage" />
+    <result column="conversion_target" jdbcType="VARCHAR" property="conversionTarget" />
+    <result column="partner" jdbcType="VARCHAR" property="partner" />
+    <result column="account" jdbcType="VARCHAR" property="account" />
+    <result column="scene_value" jdbcType="VARCHAR" property="sceneValue" />
+    <result column="demand_strategy" jdbcType="VARCHAR" property="demandStrategy" />
+    <result column="drive_dimension_time" jdbcType="VARCHAR" property="driveDimensionTime" />
     <result column="dimension" jdbcType="VARCHAR" property="dimension" />
+    <result column="demand_filter_sort_strategy" jdbcType="VARCHAR" property="demandFilterSortStrategy" />
+    <result column="demand_type" jdbcType="VARCHAR" property="demandType" />
+    <result column="demand_content_id" jdbcType="VARCHAR" property="demandContentId" />
+    <result column="demand_content_title" jdbcType="VARCHAR" property="demandContentTitle" />
+    <result column="demand_content_topic" jdbcType="VARCHAR" property="demandContentTopic" />
     <result column="point_type" jdbcType="VARCHAR" property="pointType" />
     <result column="standard_element" jdbcType="VARCHAR" property="standardElement" />
     <result column="category_name" jdbcType="VARCHAR" property="categoryName" />
+    <result column="crowd_count" jdbcType="INTEGER" property="crowdCount" />
+    <result column="video_count" jdbcType="INTEGER" property="videoCount" />
     <result column="visit_uv" jdbcType="BIGINT" property="visitUv" />
+    <result column="uv_ratio" jdbcType="DOUBLE" property="uvRatio" />
     <result column="total_rov" jdbcType="DOUBLE" property="totalRov" />
+    <result column="match_experiment_id" jdbcType="VARCHAR" property="matchExperimentId" />
     <result column="video_id" jdbcType="BIGINT" property="videoId" />
     <result column="config_code" jdbcType="VARCHAR" property="configCode" />
     <result column="score" jdbcType="DOUBLE" property="score" />
@@ -84,9 +102,12 @@
     </where>
   </sql>
   <sql id="Base_Column_List">
-    id, dt, channel_name, crowd_segment, dimension, point_type, standard_element, category_name, 
-    visit_uv, total_rov, video_id, config_code, score, sim, rov, match_text, title, cover, 
-    video, `status`, create_timestamp, update_timestamp
+    id, dt, online_action, channel_name, crowd_segment, demand_id, crowd_package, conversion_target, 
+    partner, account, scene_value, demand_strategy, drive_dimension_time, dimension, 
+    demand_filter_sort_strategy, demand_type, demand_content_id, demand_content_title, 
+    demand_content_topic, point_type, standard_element, category_name, crowd_count, video_count, 
+    visit_uv, uv_ratio, total_rov, match_experiment_id, video_id, config_code, score, 
+    sim, rov, match_text, title, cover, video, `status`, create_timestamp, update_timestamp
   </sql>
   <select id="selectByExample" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideoExample" resultMap="BaseResultMap">
     select
@@ -122,18 +143,30 @@
     </if>
   </delete>
   <insert id="insert" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo">
-    insert into content_platform_demand_video (id, dt, channel_name, 
-      crowd_segment, dimension, point_type, 
-      standard_element, category_name, visit_uv, 
-      total_rov, video_id, config_code, 
+    insert into content_platform_demand_video (id, dt, online_action, 
+      channel_name, crowd_segment, demand_id, 
+      crowd_package, conversion_target, partner, 
+      account, scene_value, demand_strategy, 
+      drive_dimension_time, dimension, demand_filter_sort_strategy, 
+      demand_type, demand_content_id, demand_content_title, 
+      demand_content_topic, point_type, standard_element, 
+      category_name, crowd_count, video_count, 
+      visit_uv, uv_ratio, total_rov, 
+      match_experiment_id, video_id, config_code, 
       score, sim, rov, match_text, 
       title, cover, video, 
       `status`, create_timestamp, update_timestamp
       )
-    values (#{id,jdbcType=BIGINT}, #{dt,jdbcType=VARCHAR}, #{channelName,jdbcType=VARCHAR}, 
-      #{crowdSegment,jdbcType=VARCHAR}, #{dimension,jdbcType=VARCHAR}, #{pointType,jdbcType=VARCHAR}, 
-      #{standardElement,jdbcType=VARCHAR}, #{categoryName,jdbcType=VARCHAR}, #{visitUv,jdbcType=BIGINT}, 
-      #{totalRov,jdbcType=DOUBLE}, #{videoId,jdbcType=BIGINT}, #{configCode,jdbcType=VARCHAR}, 
+    values (#{id,jdbcType=BIGINT}, #{dt,jdbcType=VARCHAR}, #{onlineAction,jdbcType=VARCHAR}, 
+      #{channelName,jdbcType=VARCHAR}, #{crowdSegment,jdbcType=VARCHAR}, #{demandId,jdbcType=VARCHAR}, 
+      #{crowdPackage,jdbcType=VARCHAR}, #{conversionTarget,jdbcType=VARCHAR}, #{partner,jdbcType=VARCHAR}, 
+      #{account,jdbcType=VARCHAR}, #{sceneValue,jdbcType=VARCHAR}, #{demandStrategy,jdbcType=VARCHAR}, 
+      #{driveDimensionTime,jdbcType=VARCHAR}, #{dimension,jdbcType=VARCHAR}, #{demandFilterSortStrategy,jdbcType=VARCHAR}, 
+      #{demandType,jdbcType=VARCHAR}, #{demandContentId,jdbcType=VARCHAR}, #{demandContentTitle,jdbcType=VARCHAR}, 
+      #{demandContentTopic,jdbcType=VARCHAR}, #{pointType,jdbcType=VARCHAR}, #{standardElement,jdbcType=VARCHAR}, 
+      #{categoryName,jdbcType=VARCHAR}, #{crowdCount,jdbcType=INTEGER}, #{videoCount,jdbcType=INTEGER}, 
+      #{visitUv,jdbcType=BIGINT}, #{uvRatio,jdbcType=DOUBLE}, #{totalRov,jdbcType=DOUBLE}, 
+      #{matchExperimentId,jdbcType=VARCHAR}, #{videoId,jdbcType=BIGINT}, #{configCode,jdbcType=VARCHAR}, 
       #{score,jdbcType=DOUBLE}, #{sim,jdbcType=DOUBLE}, #{rov,jdbcType=DOUBLE}, #{matchText,jdbcType=VARCHAR}, 
       #{title,jdbcType=VARCHAR}, #{cover,jdbcType=VARCHAR}, #{video,jdbcType=VARCHAR}, 
       #{status,jdbcType=INTEGER}, #{createTimestamp,jdbcType=BIGINT}, #{updateTimestamp,jdbcType=BIGINT}
@@ -148,15 +181,57 @@
       <if test="dt != null">
         dt,
       </if>
+      <if test="onlineAction != null">
+        online_action,
+      </if>
       <if test="channelName != null">
         channel_name,
       </if>
       <if test="crowdSegment != null">
         crowd_segment,
       </if>
+      <if test="demandId != null">
+        demand_id,
+      </if>
+      <if test="crowdPackage != null">
+        crowd_package,
+      </if>
+      <if test="conversionTarget != null">
+        conversion_target,
+      </if>
+      <if test="partner != null">
+        partner,
+      </if>
+      <if test="account != null">
+        account,
+      </if>
+      <if test="sceneValue != null">
+        scene_value,
+      </if>
+      <if test="demandStrategy != null">
+        demand_strategy,
+      </if>
+      <if test="driveDimensionTime != null">
+        drive_dimension_time,
+      </if>
       <if test="dimension != null">
         dimension,
       </if>
+      <if test="demandFilterSortStrategy != null">
+        demand_filter_sort_strategy,
+      </if>
+      <if test="demandType != null">
+        demand_type,
+      </if>
+      <if test="demandContentId != null">
+        demand_content_id,
+      </if>
+      <if test="demandContentTitle != null">
+        demand_content_title,
+      </if>
+      <if test="demandContentTopic != null">
+        demand_content_topic,
+      </if>
       <if test="pointType != null">
         point_type,
       </if>
@@ -166,12 +241,24 @@
       <if test="categoryName != null">
         category_name,
       </if>
+      <if test="crowdCount != null">
+        crowd_count,
+      </if>
+      <if test="videoCount != null">
+        video_count,
+      </if>
       <if test="visitUv != null">
         visit_uv,
       </if>
+      <if test="uvRatio != null">
+        uv_ratio,
+      </if>
       <if test="totalRov != null">
         total_rov,
       </if>
+      <if test="matchExperimentId != null">
+        match_experiment_id,
+      </if>
       <if test="videoId != null">
         video_id,
       </if>
@@ -216,15 +303,57 @@
       <if test="dt != null">
         #{dt,jdbcType=VARCHAR},
       </if>
+      <if test="onlineAction != null">
+        #{onlineAction,jdbcType=VARCHAR},
+      </if>
       <if test="channelName != null">
         #{channelName,jdbcType=VARCHAR},
       </if>
       <if test="crowdSegment != null">
         #{crowdSegment,jdbcType=VARCHAR},
       </if>
+      <if test="demandId != null">
+        #{demandId,jdbcType=VARCHAR},
+      </if>
+      <if test="crowdPackage != null">
+        #{crowdPackage,jdbcType=VARCHAR},
+      </if>
+      <if test="conversionTarget != null">
+        #{conversionTarget,jdbcType=VARCHAR},
+      </if>
+      <if test="partner != null">
+        #{partner,jdbcType=VARCHAR},
+      </if>
+      <if test="account != null">
+        #{account,jdbcType=VARCHAR},
+      </if>
+      <if test="sceneValue != null">
+        #{sceneValue,jdbcType=VARCHAR},
+      </if>
+      <if test="demandStrategy != null">
+        #{demandStrategy,jdbcType=VARCHAR},
+      </if>
+      <if test="driveDimensionTime != null">
+        #{driveDimensionTime,jdbcType=VARCHAR},
+      </if>
       <if test="dimension != null">
         #{dimension,jdbcType=VARCHAR},
       </if>
+      <if test="demandFilterSortStrategy != null">
+        #{demandFilterSortStrategy,jdbcType=VARCHAR},
+      </if>
+      <if test="demandType != null">
+        #{demandType,jdbcType=VARCHAR},
+      </if>
+      <if test="demandContentId != null">
+        #{demandContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="demandContentTitle != null">
+        #{demandContentTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="demandContentTopic != null">
+        #{demandContentTopic,jdbcType=VARCHAR},
+      </if>
       <if test="pointType != null">
         #{pointType,jdbcType=VARCHAR},
       </if>
@@ -234,12 +363,24 @@
       <if test="categoryName != null">
         #{categoryName,jdbcType=VARCHAR},
       </if>
+      <if test="crowdCount != null">
+        #{crowdCount,jdbcType=INTEGER},
+      </if>
+      <if test="videoCount != null">
+        #{videoCount,jdbcType=INTEGER},
+      </if>
       <if test="visitUv != null">
         #{visitUv,jdbcType=BIGINT},
       </if>
+      <if test="uvRatio != null">
+        #{uvRatio,jdbcType=DOUBLE},
+      </if>
       <if test="totalRov != null">
         #{totalRov,jdbcType=DOUBLE},
       </if>
+      <if test="matchExperimentId != null">
+        #{matchExperimentId,jdbcType=VARCHAR},
+      </if>
       <if test="videoId != null">
         #{videoId,jdbcType=BIGINT},
       </if>
@@ -293,15 +434,57 @@
       <if test="record.dt != null">
         dt = #{record.dt,jdbcType=VARCHAR},
       </if>
+      <if test="record.onlineAction != null">
+        online_action = #{record.onlineAction,jdbcType=VARCHAR},
+      </if>
       <if test="record.channelName != null">
         channel_name = #{record.channelName,jdbcType=VARCHAR},
       </if>
       <if test="record.crowdSegment != null">
         crowd_segment = #{record.crowdSegment,jdbcType=VARCHAR},
       </if>
+      <if test="record.demandId != null">
+        demand_id = #{record.demandId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.crowdPackage != null">
+        crowd_package = #{record.crowdPackage,jdbcType=VARCHAR},
+      </if>
+      <if test="record.conversionTarget != null">
+        conversion_target = #{record.conversionTarget,jdbcType=VARCHAR},
+      </if>
+      <if test="record.partner != null">
+        partner = #{record.partner,jdbcType=VARCHAR},
+      </if>
+      <if test="record.account != null">
+        account = #{record.account,jdbcType=VARCHAR},
+      </if>
+      <if test="record.sceneValue != null">
+        scene_value = #{record.sceneValue,jdbcType=VARCHAR},
+      </if>
+      <if test="record.demandStrategy != null">
+        demand_strategy = #{record.demandStrategy,jdbcType=VARCHAR},
+      </if>
+      <if test="record.driveDimensionTime != null">
+        drive_dimension_time = #{record.driveDimensionTime,jdbcType=VARCHAR},
+      </if>
       <if test="record.dimension != null">
         dimension = #{record.dimension,jdbcType=VARCHAR},
       </if>
+      <if test="record.demandFilterSortStrategy != null">
+        demand_filter_sort_strategy = #{record.demandFilterSortStrategy,jdbcType=VARCHAR},
+      </if>
+      <if test="record.demandType != null">
+        demand_type = #{record.demandType,jdbcType=VARCHAR},
+      </if>
+      <if test="record.demandContentId != null">
+        demand_content_id = #{record.demandContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.demandContentTitle != null">
+        demand_content_title = #{record.demandContentTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="record.demandContentTopic != null">
+        demand_content_topic = #{record.demandContentTopic,jdbcType=VARCHAR},
+      </if>
       <if test="record.pointType != null">
         point_type = #{record.pointType,jdbcType=VARCHAR},
       </if>
@@ -311,12 +494,24 @@
       <if test="record.categoryName != null">
         category_name = #{record.categoryName,jdbcType=VARCHAR},
       </if>
+      <if test="record.crowdCount != null">
+        crowd_count = #{record.crowdCount,jdbcType=INTEGER},
+      </if>
+      <if test="record.videoCount != null">
+        video_count = #{record.videoCount,jdbcType=INTEGER},
+      </if>
       <if test="record.visitUv != null">
         visit_uv = #{record.visitUv,jdbcType=BIGINT},
       </if>
+      <if test="record.uvRatio != null">
+        uv_ratio = #{record.uvRatio,jdbcType=DOUBLE},
+      </if>
       <if test="record.totalRov != null">
         total_rov = #{record.totalRov,jdbcType=DOUBLE},
       </if>
+      <if test="record.matchExperimentId != null">
+        match_experiment_id = #{record.matchExperimentId,jdbcType=VARCHAR},
+      </if>
       <if test="record.videoId != null">
         video_id = #{record.videoId,jdbcType=BIGINT},
       </if>
@@ -362,14 +557,32 @@
     update content_platform_demand_video
     set id = #{record.id,jdbcType=BIGINT},
       dt = #{record.dt,jdbcType=VARCHAR},
+      online_action = #{record.onlineAction,jdbcType=VARCHAR},
       channel_name = #{record.channelName,jdbcType=VARCHAR},
       crowd_segment = #{record.crowdSegment,jdbcType=VARCHAR},
+      demand_id = #{record.demandId,jdbcType=VARCHAR},
+      crowd_package = #{record.crowdPackage,jdbcType=VARCHAR},
+      conversion_target = #{record.conversionTarget,jdbcType=VARCHAR},
+      partner = #{record.partner,jdbcType=VARCHAR},
+      account = #{record.account,jdbcType=VARCHAR},
+      scene_value = #{record.sceneValue,jdbcType=VARCHAR},
+      demand_strategy = #{record.demandStrategy,jdbcType=VARCHAR},
+      drive_dimension_time = #{record.driveDimensionTime,jdbcType=VARCHAR},
       dimension = #{record.dimension,jdbcType=VARCHAR},
+      demand_filter_sort_strategy = #{record.demandFilterSortStrategy,jdbcType=VARCHAR},
+      demand_type = #{record.demandType,jdbcType=VARCHAR},
+      demand_content_id = #{record.demandContentId,jdbcType=VARCHAR},
+      demand_content_title = #{record.demandContentTitle,jdbcType=VARCHAR},
+      demand_content_topic = #{record.demandContentTopic,jdbcType=VARCHAR},
       point_type = #{record.pointType,jdbcType=VARCHAR},
       standard_element = #{record.standardElement,jdbcType=VARCHAR},
       category_name = #{record.categoryName,jdbcType=VARCHAR},
+      crowd_count = #{record.crowdCount,jdbcType=INTEGER},
+      video_count = #{record.videoCount,jdbcType=INTEGER},
       visit_uv = #{record.visitUv,jdbcType=BIGINT},
+      uv_ratio = #{record.uvRatio,jdbcType=DOUBLE},
       total_rov = #{record.totalRov,jdbcType=DOUBLE},
+      match_experiment_id = #{record.matchExperimentId,jdbcType=VARCHAR},
       video_id = #{record.videoId,jdbcType=BIGINT},
       config_code = #{record.configCode,jdbcType=VARCHAR},
       score = #{record.score,jdbcType=DOUBLE},
@@ -392,15 +605,57 @@
       <if test="dt != null">
         dt = #{dt,jdbcType=VARCHAR},
       </if>
+      <if test="onlineAction != null">
+        online_action = #{onlineAction,jdbcType=VARCHAR},
+      </if>
       <if test="channelName != null">
         channel_name = #{channelName,jdbcType=VARCHAR},
       </if>
       <if test="crowdSegment != null">
         crowd_segment = #{crowdSegment,jdbcType=VARCHAR},
       </if>
+      <if test="demandId != null">
+        demand_id = #{demandId,jdbcType=VARCHAR},
+      </if>
+      <if test="crowdPackage != null">
+        crowd_package = #{crowdPackage,jdbcType=VARCHAR},
+      </if>
+      <if test="conversionTarget != null">
+        conversion_target = #{conversionTarget,jdbcType=VARCHAR},
+      </if>
+      <if test="partner != null">
+        partner = #{partner,jdbcType=VARCHAR},
+      </if>
+      <if test="account != null">
+        account = #{account,jdbcType=VARCHAR},
+      </if>
+      <if test="sceneValue != null">
+        scene_value = #{sceneValue,jdbcType=VARCHAR},
+      </if>
+      <if test="demandStrategy != null">
+        demand_strategy = #{demandStrategy,jdbcType=VARCHAR},
+      </if>
+      <if test="driveDimensionTime != null">
+        drive_dimension_time = #{driveDimensionTime,jdbcType=VARCHAR},
+      </if>
       <if test="dimension != null">
         dimension = #{dimension,jdbcType=VARCHAR},
       </if>
+      <if test="demandFilterSortStrategy != null">
+        demand_filter_sort_strategy = #{demandFilterSortStrategy,jdbcType=VARCHAR},
+      </if>
+      <if test="demandType != null">
+        demand_type = #{demandType,jdbcType=VARCHAR},
+      </if>
+      <if test="demandContentId != null">
+        demand_content_id = #{demandContentId,jdbcType=VARCHAR},
+      </if>
+      <if test="demandContentTitle != null">
+        demand_content_title = #{demandContentTitle,jdbcType=VARCHAR},
+      </if>
+      <if test="demandContentTopic != null">
+        demand_content_topic = #{demandContentTopic,jdbcType=VARCHAR},
+      </if>
       <if test="pointType != null">
         point_type = #{pointType,jdbcType=VARCHAR},
       </if>
@@ -410,12 +665,24 @@
       <if test="categoryName != null">
         category_name = #{categoryName,jdbcType=VARCHAR},
       </if>
+      <if test="crowdCount != null">
+        crowd_count = #{crowdCount,jdbcType=INTEGER},
+      </if>
+      <if test="videoCount != null">
+        video_count = #{videoCount,jdbcType=INTEGER},
+      </if>
       <if test="visitUv != null">
         visit_uv = #{visitUv,jdbcType=BIGINT},
       </if>
+      <if test="uvRatio != null">
+        uv_ratio = #{uvRatio,jdbcType=DOUBLE},
+      </if>
       <if test="totalRov != null">
         total_rov = #{totalRov,jdbcType=DOUBLE},
       </if>
+      <if test="matchExperimentId != null">
+        match_experiment_id = #{matchExperimentId,jdbcType=VARCHAR},
+      </if>
       <if test="videoId != null">
         video_id = #{videoId,jdbcType=BIGINT},
       </if>
@@ -458,14 +725,32 @@
   <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo">
     update content_platform_demand_video
     set dt = #{dt,jdbcType=VARCHAR},
+      online_action = #{onlineAction,jdbcType=VARCHAR},
       channel_name = #{channelName,jdbcType=VARCHAR},
       crowd_segment = #{crowdSegment,jdbcType=VARCHAR},
+      demand_id = #{demandId,jdbcType=VARCHAR},
+      crowd_package = #{crowdPackage,jdbcType=VARCHAR},
+      conversion_target = #{conversionTarget,jdbcType=VARCHAR},
+      partner = #{partner,jdbcType=VARCHAR},
+      account = #{account,jdbcType=VARCHAR},
+      scene_value = #{sceneValue,jdbcType=VARCHAR},
+      demand_strategy = #{demandStrategy,jdbcType=VARCHAR},
+      drive_dimension_time = #{driveDimensionTime,jdbcType=VARCHAR},
       dimension = #{dimension,jdbcType=VARCHAR},
+      demand_filter_sort_strategy = #{demandFilterSortStrategy,jdbcType=VARCHAR},
+      demand_type = #{demandType,jdbcType=VARCHAR},
+      demand_content_id = #{demandContentId,jdbcType=VARCHAR},
+      demand_content_title = #{demandContentTitle,jdbcType=VARCHAR},
+      demand_content_topic = #{demandContentTopic,jdbcType=VARCHAR},
       point_type = #{pointType,jdbcType=VARCHAR},
       standard_element = #{standardElement,jdbcType=VARCHAR},
       category_name = #{categoryName,jdbcType=VARCHAR},
+      crowd_count = #{crowdCount,jdbcType=INTEGER},
+      video_count = #{videoCount,jdbcType=INTEGER},
       visit_uv = #{visitUv,jdbcType=BIGINT},
+      uv_ratio = #{uvRatio,jdbcType=DOUBLE},
       total_rov = #{totalRov,jdbcType=DOUBLE},
+      match_experiment_id = #{matchExperimentId,jdbcType=VARCHAR},
       video_id = #{videoId,jdbcType=BIGINT},
       config_code = #{configCode,jdbcType=VARCHAR},
       score = #{score,jdbcType=DOUBLE},

+ 21 - 6
api-module/src/main/resources/mapper/contentplatform/ContentPlatformGzhPlanVideoMapper.xml

@@ -15,6 +15,7 @@
     <result column="video" jdbcType="VARCHAR" property="video" />
     <result column="page_url" jdbcType="VARCHAR" property="pageUrl" />
     <result column="root_source_id" jdbcType="VARCHAR" property="rootSourceId" />
+    <result column="match_experiment_id" jdbcType="VARCHAR" property="matchExperimentId" />
     <result column="status" jdbcType="INTEGER" property="status" />
     <result column="create_account_id" jdbcType="BIGINT" property="createAccountId" />
     <result column="create_timestamp" jdbcType="BIGINT" property="createTimestamp" />
@@ -79,8 +80,8 @@
   </sql>
   <sql id="Base_Column_List">
     id, plan_id, video_id, title, custom_title_id, custom_title, cover, custom_cover_id, 
-    custom_cover, custom_cover_type, video, page_url, root_source_id, `status`, create_account_id, 
-    create_timestamp
+    custom_cover, custom_cover_type, video, page_url, root_source_id, match_experiment_id, 
+    `status`, create_account_id, create_timestamp
   </sql>
   <select id="selectByExample" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformGzhPlanVideoExample" resultMap="BaseResultMap">
     select
@@ -120,14 +121,14 @@
       title, custom_title_id, custom_title, 
       cover, custom_cover_id, custom_cover, 
       custom_cover_type, video, page_url, 
-      root_source_id, `status`, create_account_id, 
-      create_timestamp)
+      root_source_id, match_experiment_id, `status`, 
+      create_account_id, create_timestamp)
     values (#{id,jdbcType=BIGINT}, #{planId,jdbcType=BIGINT}, #{videoId,jdbcType=BIGINT}, 
       #{title,jdbcType=VARCHAR}, #{customTitleId,jdbcType=BIGINT}, #{customTitle,jdbcType=VARCHAR}, 
       #{cover,jdbcType=VARCHAR}, #{customCoverId,jdbcType=BIGINT}, #{customCover,jdbcType=VARCHAR}, 
       #{customCoverType,jdbcType=INTEGER}, #{video,jdbcType=VARCHAR}, #{pageUrl,jdbcType=VARCHAR}, 
-      #{rootSourceId,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{createAccountId,jdbcType=BIGINT}, 
-      #{createTimestamp,jdbcType=BIGINT})
+      #{rootSourceId,jdbcType=VARCHAR}, #{matchExperimentId,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, 
+      #{createAccountId,jdbcType=BIGINT}, #{createTimestamp,jdbcType=BIGINT})
   </insert>
   <insert id="insertSelective" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformGzhPlanVideo">
     insert into content_platform_gzh_plan_video
@@ -171,6 +172,9 @@
       <if test="rootSourceId != null">
         root_source_id,
       </if>
+      <if test="matchExperimentId != null">
+        match_experiment_id,
+      </if>
       <if test="status != null">
         `status`,
       </if>
@@ -221,6 +225,9 @@
       <if test="rootSourceId != null">
         #{rootSourceId,jdbcType=VARCHAR},
       </if>
+      <if test="matchExperimentId != null">
+        #{matchExperimentId,jdbcType=VARCHAR},
+      </if>
       <if test="status != null">
         #{status,jdbcType=INTEGER},
       </if>
@@ -280,6 +287,9 @@
       <if test="record.rootSourceId != null">
         root_source_id = #{record.rootSourceId,jdbcType=VARCHAR},
       </if>
+      <if test="record.matchExperimentId != null">
+        match_experiment_id = #{record.matchExperimentId,jdbcType=VARCHAR},
+      </if>
       <if test="record.status != null">
         `status` = #{record.status,jdbcType=INTEGER},
       </if>
@@ -309,6 +319,7 @@
       video = #{record.video,jdbcType=VARCHAR},
       page_url = #{record.pageUrl,jdbcType=VARCHAR},
       root_source_id = #{record.rootSourceId,jdbcType=VARCHAR},
+      match_experiment_id = #{record.matchExperimentId,jdbcType=VARCHAR},
       `status` = #{record.status,jdbcType=INTEGER},
       create_account_id = #{record.createAccountId,jdbcType=BIGINT},
       create_timestamp = #{record.createTimestamp,jdbcType=BIGINT}
@@ -355,6 +366,9 @@
       <if test="rootSourceId != null">
         root_source_id = #{rootSourceId,jdbcType=VARCHAR},
       </if>
+      <if test="matchExperimentId != null">
+        match_experiment_id = #{matchExperimentId,jdbcType=VARCHAR},
+      </if>
       <if test="status != null">
         `status` = #{status,jdbcType=INTEGER},
       </if>
@@ -381,6 +395,7 @@
       video = #{video,jdbcType=VARCHAR},
       page_url = #{pageUrl,jdbcType=VARCHAR},
       root_source_id = #{rootSourceId,jdbcType=VARCHAR},
+      match_experiment_id = #{matchExperimentId,jdbcType=VARCHAR},
       `status` = #{status,jdbcType=INTEGER},
       create_account_id = #{createAccountId,jdbcType=BIGINT},
       create_timestamp = #{createTimestamp,jdbcType=BIGINT}

+ 36 - 3
api-module/src/main/resources/mapper/contentplatform/ContentPlatformQwPlanVideoMapper.xml

@@ -8,6 +8,8 @@
     <result column="title" jdbcType="VARCHAR" property="title" />
     <result column="cover" jdbcType="VARCHAR" property="cover" />
     <result column="video" jdbcType="VARCHAR" property="video" />
+    <result column="match_experiment_id" jdbcType="VARCHAR" property="matchExperimentId" />
+    <result column="status" jdbcType="INTEGER" property="status" />
     <result column="create_account_id" jdbcType="BIGINT" property="createAccountId" />
     <result column="create_timestamp" jdbcType="BIGINT" property="createTimestamp" />
   </resultMap>
@@ -70,7 +72,8 @@
     </where>
   </sql>
   <sql id="Base_Column_List">
-    id, plan_id, video_id, title, cover, video, create_account_id, create_timestamp
+    id, plan_id, video_id, title, cover, video, match_experiment_id, `status`, create_account_id, 
+    create_timestamp
   </sql>
   <select id="selectByExample" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformQwPlanVideoExample" resultMap="BaseResultMap">
     select
@@ -108,10 +111,12 @@
   <insert id="insert" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformQwPlanVideo">
     insert into content_platform_qw_plan_video (id, plan_id, video_id, 
       title, cover, video, 
-      create_account_id, create_timestamp)
+      match_experiment_id, `status`, create_account_id, 
+      create_timestamp)
     values (#{id,jdbcType=BIGINT}, #{planId,jdbcType=BIGINT}, #{videoId,jdbcType=BIGINT}, 
       #{title,jdbcType=VARCHAR}, #{cover,jdbcType=VARCHAR}, #{video,jdbcType=VARCHAR}, 
-      #{createAccountId,jdbcType=BIGINT}, #{createTimestamp,jdbcType=BIGINT})
+      #{matchExperimentId,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{createAccountId,jdbcType=BIGINT}, 
+      #{createTimestamp,jdbcType=BIGINT})
   </insert>
   <insert id="insertSelective" parameterType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformQwPlanVideo">
     insert into content_platform_qw_plan_video
@@ -134,6 +139,12 @@
       <if test="video != null">
         video,
       </if>
+      <if test="matchExperimentId != null">
+        match_experiment_id,
+      </if>
+      <if test="status != null">
+        `status`,
+      </if>
       <if test="createAccountId != null">
         create_account_id,
       </if>
@@ -160,6 +171,12 @@
       <if test="video != null">
         #{video,jdbcType=VARCHAR},
       </if>
+      <if test="matchExperimentId != null">
+        #{matchExperimentId,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        #{status,jdbcType=INTEGER},
+      </if>
       <if test="createAccountId != null">
         #{createAccountId,jdbcType=BIGINT},
       </if>
@@ -195,6 +212,12 @@
       <if test="record.video != null">
         video = #{record.video,jdbcType=VARCHAR},
       </if>
+      <if test="record.matchExperimentId != null">
+        match_experiment_id = #{record.matchExperimentId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.status != null">
+        `status` = #{record.status,jdbcType=INTEGER},
+      </if>
       <if test="record.createAccountId != null">
         create_account_id = #{record.createAccountId,jdbcType=BIGINT},
       </if>
@@ -214,6 +237,8 @@
       title = #{record.title,jdbcType=VARCHAR},
       cover = #{record.cover,jdbcType=VARCHAR},
       video = #{record.video,jdbcType=VARCHAR},
+      match_experiment_id = #{record.matchExperimentId,jdbcType=VARCHAR},
+      `status` = #{record.status,jdbcType=INTEGER},
       create_account_id = #{record.createAccountId,jdbcType=BIGINT},
       create_timestamp = #{record.createTimestamp,jdbcType=BIGINT}
     <if test="_parameter != null">
@@ -238,6 +263,12 @@
       <if test="video != null">
         video = #{video,jdbcType=VARCHAR},
       </if>
+      <if test="matchExperimentId != null">
+        match_experiment_id = #{matchExperimentId,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        `status` = #{status,jdbcType=INTEGER},
+      </if>
       <if test="createAccountId != null">
         create_account_id = #{createAccountId,jdbcType=BIGINT},
       </if>
@@ -254,6 +285,8 @@
       title = #{title,jdbcType=VARCHAR},
       cover = #{cover,jdbcType=VARCHAR},
       video = #{video,jdbcType=VARCHAR},
+      match_experiment_id = #{matchExperimentId,jdbcType=VARCHAR},
+      `status` = #{status,jdbcType=INTEGER},
       create_account_id = #{createAccountId,jdbcType=BIGINT},
       create_timestamp = #{createTimestamp,jdbcType=BIGINT}
     where id = #{id,jdbcType=BIGINT}

+ 15 - 3
api-module/src/main/resources/mapper/contentplatform/ext/ContentPlatformDemandVideoMapperExt.xml

@@ -5,12 +5,20 @@
     <insert id="batchInsert" parameterType="java.util.List">
         INSERT INTO content_platform_demand_video
         (dt, channel_name, crowd_segment, dimension, point_type, standard_element,
-         category_name, visit_uv, total_rov, video_id, config_code, score, sim, rov,
+         category_name, demand_id, crowd_package, conversion_target, partner, account, scene_value,
+         demand_strategy, drive_dimension_time, demand_filter_sort_strategy, demand_type,
+         demand_content_id, demand_content_title, demand_content_topic,
+         crowd_count, video_count, visit_uv, uv_ratio, total_rov, online_action, match_experiment_id,
+         video_id, config_code, score, sim, rov,
          match_text, title, cover, video, status, create_timestamp, update_timestamp)
         VALUES
         <foreach collection="list" item="item" separator=",">
             (#{item.dt}, #{item.channelName}, #{item.crowdSegment}, #{item.dimension}, #{item.pointType}, #{item.standardElement},
-             #{item.categoryName}, #{item.visitUv}, #{item.totalRov}, #{item.videoId}, #{item.configCode}, #{item.score}, #{item.sim}, #{item.rov},
+             #{item.categoryName}, #{item.demandId}, #{item.crowdPackage}, #{item.conversionTarget}, #{item.partner}, #{item.account}, #{item.sceneValue},
+             #{item.demandStrategy}, #{item.driveDimensionTime}, #{item.demandFilterSortStrategy}, #{item.demandType},
+             #{item.demandContentId}, #{item.demandContentTitle}, #{item.demandContentTopic},
+             #{item.crowdCount}, #{item.videoCount}, #{item.visitUv}, #{item.uvRatio}, #{item.totalRov}, #{item.onlineAction}, #{item.matchExperimentId},
+             #{item.videoId}, #{item.configCode}, #{item.score}, #{item.sim}, #{item.rov},
              #{item.matchText}, #{item.title}, #{item.cover}, #{item.video}, #{item.status}, #{item.createTimestamp}, #{item.updateTimestamp})
         </foreach>
     </insert>
@@ -21,7 +29,11 @@
 
     <select id="selectByCondition" resultType="com.tzld.piaoquan.api.model.po.contentplatform.ContentPlatformDemandVideo">
         SELECT id, dt, channel_name, crowd_segment, dimension, point_type, standard_element,
-               category_name, visit_uv, total_rov, video_id, config_code, score, sim, rov,
+               category_name, demand_id, crowd_package, conversion_target, partner, account, scene_value,
+               demand_strategy, drive_dimension_time, demand_filter_sort_strategy, demand_type,
+               demand_content_id, demand_content_title, demand_content_topic,
+               crowd_count, video_count, visit_uv, uv_ratio, total_rov, online_action, match_experiment_id,
+               video_id, config_code, score, sim, rov,
                match_text, title, cover, video, status, create_timestamp, update_timestamp
         FROM content_platform_demand_video
         WHERE dt = #{dt} AND status = 1

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

@@ -60,14 +60,14 @@
 <!--        <table tableName="content_platform_gzh_push_datastat" domainObjectName="ContentPlatformGzhPushDataStat" alias=""/>-->
 <!--        <table tableName="content_platform_gzh_push_datastat_total" domainObjectName="ContentPlatformGzhPushDataStatTotal" alias=""/>-->
 <!--        <table tableName="content_platform_gzh_plan" domainObjectName="ContentPlatformGzhPlan" alias=""/>-->
-<!--        <table tableName="content_platform_gzh_plan_video" domainObjectName="ContentPlatformGzhPlanVideo" alias=""/>-->
+        <table tableName="content_platform_gzh_plan_video" domainObjectName="ContentPlatformGzhPlanVideo" alias=""/>
 <!--        <table tableName="content_platform_gzh_plan_change_log" domainObjectName="ContentPlatformGzhPlanChangeLog" alias=""/>-->
 <!--        <table tableName="content_platform_qw_datastat" domainObjectName="ContentPlatformQwDataStat" alias=""/>-->
 <!--        <table tableName="content_platform_qw_datastat_total" domainObjectName="ContentPlatformQwDataStatTotal" alias=""/>-->
 <!--        <table tableName="content_platform_qw_datastat_reply_total" domainObjectName="ContentPlatformQwDataStatReplyTotal" alias=""/>-->
 <!--        <table tableName="content_platform_qw_datastat_sub_channel" domainObjectName="ContentPlatformQwDataStatSubChannel" alias=""/>-->
 <!--        <table tableName="content_platform_qw_plan" domainObjectName="ContentPlatformQwPlan" alias=""/>-->
-<!--        <table tableName="content_platform_qw_plan_video" domainObjectName="ContentPlatformQwPlanVideo" alias=""/>-->
+        <table tableName="content_platform_qw_plan_video" domainObjectName="ContentPlatformQwPlanVideo" alias=""/>
 <!--        <table tableName="content_platform_verify_code" domainObjectName="ContentPlatformVerifyCode" alias=""/>-->
 <!--        <table tableName="content_platform_video" domainObjectName="ContentPlatformVideo" alias=""/>-->
 <!--        <table tableName="content_platform_video_agg" domainObjectName="ContentPlatformVideoAgg" alias=""/>-->

+ 14 - 8
common-module/src/main/java/com/tzld/piaoquan/growth/common/service/Impl/MessageAttachmentServiceImpl.java

@@ -389,7 +389,7 @@ public class MessageAttachmentServiceImpl implements MessageAttachmentService {
     }
 
     @Override
-    public String getPage(String putScene, String channel, Staff staff, Long videoId, String typeOne, String typeTwo) {
+    public String getPage(String putScene, String channel, Staff staff, Long videoId, String typeOne, String typeTwo, String testId) {
         try {
             if (staff == null || staff.getCarrierId() == null) {
                 return "";
@@ -398,7 +398,7 @@ public class MessageAttachmentServiceImpl implements MessageAttachmentService {
             if (StringUtils.isNotEmpty(page)) {
                 return page;
             }
-            return insertPage(putScene, channel, staff.getCarrierId(), videoId, staff.getRemark(), typeOne, typeTwo);
+            return insertPage(putScene, channel, staff.getCarrierId(), videoId, staff.getRemark(), typeOne, typeTwo, testId);
         } catch (IOException e) {
             log.error("MessageAttachmentService getPage error", e);
         }
@@ -406,19 +406,19 @@ public class MessageAttachmentServiceImpl implements MessageAttachmentService {
     }
 
     @Override
-    public String getPageNoCache(String putScene, String channel, Staff staff, Long videoId, String typeOne, String typeTwo) {
+    public String getPageNoCache(String putScene, String channel, Staff staff, Long videoId, String typeOne, String typeTwo, String testId) {
         try {
             if (staff == null || staff.getCarrierId() == null) {
                 return "";
             }
-            return insertPage(putScene, channel, staff.getCarrierId(), videoId, staff.getRemark(), typeOne, typeTwo);
+            return insertPage(putScene, channel, staff.getCarrierId(), videoId, staff.getRemark(), typeOne, typeTwo, testId);
         } catch (IOException e) {
             log.error("MessageAttachmentService getPageNoCache error", e);
         }
         return null;
     }
 
-    private String insertPage(String putScene, String channel, String carrierId, Long videoId, String remark, String typeOne, String typeTwo) throws IOException {
+    private String insertPage(String putScene, String channel, String carrierId, Long videoId, String remark, String typeOne, String typeTwo, String testId) throws IOException {
         AdPutFlowParam param = new AdPutFlowParam();
         param.setChannel(channel);
         param.setPath("pages/category.html");
@@ -430,10 +430,13 @@ public class MessageAttachmentServiceImpl implements MessageAttachmentService {
         param.setPutTypeThree("位置X");
         param.setRemark(remark);
         param.setVideoId(videoId);
+        param.setTestId(testId);
         Map<String, String> requestParam = new HashMap<>();
+        String testIdParam = (testId != null && !testId.isEmpty()) ? "&testId=" + testId : "";
         String jumpPage = "pages/user-videos?fromGzh=1&rootShareId=${uuid}&id=${videoId}&shareId=${uuid}&rootSourceId=[rootSourceId]"
                 .replace("${videoId}", "" + videoId)
-                .replace("${uuid}", "" + UUID.randomUUID());
+                .replace("${uuid}", "" + UUID.randomUUID())
+                + testIdParam;
         requestParam.put("jumpPage", jumpPage);
         param.setRequestParam(requestParam);
         String res = httpPoolClient.post(POST_ADD_TENCENT, JSONObject.toJSONString(param));
@@ -495,7 +498,7 @@ public class MessageAttachmentServiceImpl implements MessageAttachmentService {
 
     @Override
     public String getPage(String channel, String carrierId, String scene, String putTypeOne,
-                          String putTypeTwo, String putTypeThree, Long videoId) {
+                          String putTypeTwo, String putTypeThree, Long videoId, String testId) {
         AdPutFlowParam param = new AdPutFlowParam();
         param.setChannel(channel);
         param.setPath("pages/category");
@@ -506,10 +509,13 @@ public class MessageAttachmentServiceImpl implements MessageAttachmentService {
         param.setPutTypeTwo(putTypeTwo);
         param.setPutTypeThree(putTypeThree);
         param.setVideoId(videoId);
+        param.setTestId(testId);
         Map<String, String> requestParam = new HashMap<>();
+        String testIdParam = (testId != null && !testId.isEmpty()) ? "&testId=" + testId : "";
         String jumpPage = "pages/user-videos?fromGzh=1&rootShareId=${uuid}&id=${videoId}&shareId=${uuid}&rootSourceId=[rootSourceId]"
                 .replace("${videoId}", "" + videoId)
-                .replace("${uuid}", "" + UUID.randomUUID());
+                .replace("${uuid}", "" + UUID.randomUUID())
+                + testIdParam;
         requestParam.put("jumpPage", jumpPage);
         param.setRequestParam(requestParam);
         try {

+ 3 - 3
common-module/src/main/java/com/tzld/piaoquan/growth/common/service/MessageAttachmentService.java

@@ -25,11 +25,11 @@ public interface MessageAttachmentService {
 
     String getPicMediaId(String cover, Long corpId, Long miniprogramVideoId);
 
-    String getPage(String putScene, String channel, Staff staff, Long videoId, String typeOne, String typeTwo);
+    String getPage(String putScene, String channel, Staff staff, Long videoId, String typeOne, String typeTwo, String testId);
 
-    String getPageNoCache(String putScene, String channel, Staff staff, Long videoId, String typeOne, String typeTwo);
+    String getPageNoCache(String putScene, String channel, Staff staff, Long videoId, String typeOne, String typeTwo, String testId);
 
-    String getPage(String channel, String carrierId, String scene, String putTypeOne, String putTypeTwo, String putTypeThree, Long videoId);
+    String getPage(String channel, String carrierId, String scene, String putTypeOne, String putTypeTwo, String putTypeThree, Long videoId, String testId);
 
     CommonResponse<Long> createAttachment(Integer type, MultipartFile file, String url, String picUrl, String page, String title, String desc, String appId, Integer extType);
 }

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio