Ver Fonte

增加实验Id

wangyunpeng há 2 dias atrás
pai
commit
f52cae5d1e
24 ficheiros alterados com 446 adições e 55 exclusões
  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. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/job/GzhReplyVideoRefreshJob.java
  4. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/WeComMessageDataJob.java
  5. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/thirdpart/WeComSendMsgJob.java
  6. 3 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/contentplatform/GzhPlanVideoContentItemParam.java
  7. 3 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/contentplatform/QwPlanSaveVideoParam.java
  8. 11 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/ContentPlatformGzhPlanVideo.java
  9. 70 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/ContentPlatformGzhPlanVideoExample.java
  10. 22 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/ContentPlatformQwPlanVideo.java
  11. 130 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/contentplatform/ContentPlatformQwPlanVideoExample.java
  12. 57 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/vo/contentplatform/VideoContentItemVO.java
  13. 3 2
      api-module/src/main/java/com/tzld/piaoquan/api/service/GhDetailService.java
  14. 33 7
      api-module/src/main/java/com/tzld/piaoquan/api/service/contentplatform/impl/ContentPlatformPlanServiceImpl.java
  15. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/impl/CgiReplyServiceImpl.java
  16. 11 9
      api-module/src/main/java/com/tzld/piaoquan/api/service/impl/GhDetailServiceImpl.java
  17. 2 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/BuckStrategyV1.java
  18. 10 5
      api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/ThirdPartyPushMessageStrategyV1.java
  19. 2 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/WeComPushMessageStrategyV1.java
  20. 21 6
      api-module/src/main/resources/mapper/contentplatform/ContentPlatformGzhPlanVideoMapper.xml
  21. 36 3
      api-module/src/main/resources/mapper/contentplatform/ContentPlatformQwPlanVideoMapper.xml
  22. 2 2
      api-module/src/main/resources/mybatis-api-contentPlatform-generator-config.xml
  23. 14 8
      common-module/src/main/java/com/tzld/piaoquan/growth/common/service/Impl/MessageAttachmentServiceImpl.java
  24. 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")

+ 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) {

+ 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;
+
 }

+ 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;

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

@@ -29,4 +29,61 @@ public class VideoContentItemVO {
 
     @ApiModelProperty(value = "推荐指数")
     private Double recommendScore;
+
+    @ApiModelProperty(value = "人群分组")
+    private String crowdSegment;
+
+    @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 = "维度")
+    private String dimension;
+
+    @ApiModelProperty(value = "需求过滤排序策略")
+    private String demandFilterSortStrategy;
+
+    @ApiModelProperty(value = "需求类型")
+    private String demandType;
+
+    @ApiModelProperty(value = "需求内容id")
+    private String demandContentId;
+
+    @ApiModelProperty(value = "需求内容标题")
+    private String demandContentTitle;
+
+    @ApiModelProperty(value = "需求内容主题")
+    private String demandContentTopic;
+
+    @ApiModelProperty(value = "点位类型")
+    private String pointType;
+
+    @ApiModelProperty(value = "标准元素")
+    private String standardElement;
+
+    @ApiModelProperty(value = "分类名称")
+    private String categoryName;
+
+    @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);
 

+ 33 - 7
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);
@@ -1293,6 +1300,25 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
             item.setCover(video.getCover());
             item.setVideo(video.getVideo());
             item.setScore(video.getScore());
+            item.setCrowdSegment(video.getCrowdSegment());
+            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.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.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);

+ 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}

+ 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);
 }