Kaynağa Gözat

自动回复链接手动生成

wangyunpeng 1 gün önce
ebeveyn
işleme
b118074cdf

+ 8 - 0
api-module/src/main/java/com/tzld/piaoquan/api/controller/CgiReplyController.java

@@ -1,7 +1,9 @@
 package com.tzld.piaoquan.api.controller;
 
 import com.tzld.piaoquan.api.model.bo.BucketDataParam;
+import com.tzld.piaoquan.api.model.bo.MsgData;
 import com.tzld.piaoquan.api.model.bo.ReplyBucketData;
+import com.tzld.piaoquan.api.model.bo.bucketDataGenerateParam;
 import com.tzld.piaoquan.api.model.vo.VideoCharacteristicVO;
 import com.tzld.piaoquan.api.service.CgiReplyService;
 import com.tzld.piaoquan.growth.common.common.base.CommonResponse;
@@ -23,6 +25,12 @@ public class CgiReplyController {
         return CommonResponse.success(replyBucketData);
     }
 
+    @PostMapping("/bucketDataGenerate")
+    public CommonResponse<MsgData> bucketDataGenerate(@RequestBody bucketDataGenerateParam param) {
+        MsgData data = cgiReplyService.bucketDataGenerate(param);
+        return CommonResponse.success(data);
+    }
+
     @GetMapping("/getVideoCharacteristic")
     public CommonResponse<VideoCharacteristicVO> getVideoCharacteristicByRootSourceId(@RequestParam String rootSourceId) {
         return CommonResponse.success(cgiReplyService.getVideoCharacteristicByRootSourceId(rootSourceId));

+ 13 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/bo/bucketDataGenerateParam.java

@@ -0,0 +1,13 @@
+package com.tzld.piaoquan.api.model.bo;
+
+import lombok.Data;
+
+@Data
+public class bucketDataGenerateParam {
+    private String ghId;
+    private Long videoId;
+    private String title;
+    private String coverUrl;
+    private String putScene;
+    private String channel;
+}

+ 4 - 0
api-module/src/main/java/com/tzld/piaoquan/api/service/CgiReplyService.java

@@ -1,7 +1,9 @@
 package com.tzld.piaoquan.api.service;
 
 import com.tzld.piaoquan.api.model.bo.BucketDataParam;
+import com.tzld.piaoquan.api.model.bo.MsgData;
 import com.tzld.piaoquan.api.model.bo.ReplyBucketData;
+import com.tzld.piaoquan.api.model.bo.bucketDataGenerateParam;
 import com.tzld.piaoquan.api.model.vo.VideoCharacteristicVO;
 import com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketData;
 
@@ -21,4 +23,6 @@ public interface CgiReplyService {
     List<CgiReplyBucketData> getCgiReplyBucketDataListByRootSourceId(String rootSourceId);
 
     VideoCharacteristicVO getVideoCharacteristicByRootSourceId(String rootSourceId);
+
+    MsgData bucketDataGenerate(bucketDataGenerateParam param);
 }

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

@@ -1,19 +1,20 @@
 package com.tzld.piaoquan.api.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.tzld.piaoquan.api.common.enums.ExceptionEnum;
 import com.tzld.piaoquan.api.common.enums.ReplyStrategyServiceEnum;
 import com.tzld.piaoquan.api.common.exception.CommonException;
+import com.tzld.piaoquan.api.component.TouLiuHttpClient;
 import com.tzld.piaoquan.api.dao.mapper.GhDetailExtMapper;
-import com.tzld.piaoquan.api.model.bo.BucketDataParam;
-import com.tzld.piaoquan.api.model.bo.MiniPageData;
-import com.tzld.piaoquan.api.model.bo.ReplyBucketData;
+import com.tzld.piaoquan.api.model.bo.*;
 import com.tzld.piaoquan.api.model.po.GhDetailExt;
 import com.tzld.piaoquan.api.model.po.GhDetailExtExample;
 import com.tzld.piaoquan.api.model.vo.VideoCharacteristicVO;
 import com.tzld.piaoquan.api.service.CgiReplyService;
 import com.tzld.piaoquan.api.service.GhDetailService;
+import com.tzld.piaoquan.api.service.VideoMultiService;
 import com.tzld.piaoquan.api.service.strategy.ReplyStrategyService;
 import com.tzld.piaoquan.growth.common.common.enums.GhTypeEnum;
 import com.tzld.piaoquan.growth.common.dao.mapper.CgiReplyBucketDataMapper;
@@ -22,18 +23,17 @@ import com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketData;
 import com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketDataExample;
 import com.tzld.piaoquan.growth.common.model.po.GhDetail;
 import com.tzld.piaoquan.growth.common.model.po.GhDetailExample;
+import com.tzld.piaoquan.growth.common.utils.MessageUtil;
 import com.tzld.piaoquan.growth.common.utils.RedisUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.ApplicationContext;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.PostConstruct;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 @Service
 public class CgiReplyServiceImpl implements CgiReplyService {
@@ -55,9 +55,21 @@ public class CgiReplyServiceImpl implements CgiReplyService {
     @Autowired
     GhDetailService ghDetailService;
 
+    @Autowired
+    private TouLiuHttpClient touLiuHttpClient;
+
+    @Autowired
+    private VideoMultiService videoMultiService;
+
     @Autowired
     private RedisUtils redisUtils;
 
+    @Value("${rootSourceConfig:{}}")
+    private String rootSourceConfig;
+    @Value("${small_page_url}")
+    private String GET_SMALL_PAGE_URL;
+    private static final String SMALL_APP_Id = "wxbdd2a2e93d9a6e25";
+
     @PostConstruct
     public void init() {
         strategyServiceMap = applicationContext.getBeansOfType(ReplyStrategyService.class);
@@ -193,4 +205,75 @@ public class CgiReplyServiceImpl implements CgiReplyService {
         redisUtils.set(redisKey, JSONObject.toJSONString(vo), 3L * 24 * 60 * 60);
         return vo;
     }
+
+    @Override
+    public MsgData bucketDataGenerate(bucketDataGenerateParam param) {
+        String putScene = param.getPutScene();
+        String channel = param.getChannel();
+        String ghId = param.getGhId();
+        JSONObject rootSourceConfigs = JSON.parseObject(rootSourceConfig);
+        JSONObject jsonObject = rootSourceConfigs.getJSONObject(ghId);
+        if (jsonObject != null) {
+            if (StringUtils.isNotEmpty(jsonObject.getString("putScene"))) {
+                putScene = jsonObject.getString("putScene");
+            }
+            if (StringUtils.isNotEmpty(jsonObject.getString("channel"))) {
+                channel = jsonObject.getString("channel");
+            }
+        }
+        // 创建投流路径
+        String response = touLiuHttpClient.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, String.valueOf(param.getVideoId()),
+                putScene, channel, "自动", "公众号", "自动回复小程序", "位置1", ghId);
+        // 获取视频详情
+        Map<Long, VideoDetail> videoDetailMap = touLiuHttpClient.getVideoDetailRequest(Collections.singletonList(param.getVideoId()));
+        JSONObject responseJSON = JSON.parseObject(response);
+        if (responseJSON.getInteger("code").equals(0)) {
+            SmallPageUrlDetail smallPageUrlDetail = responseJSON.getObject("data", SmallPageUrlDetail.class);
+            // cgi_reply_bucket_data
+            CgiReplyBucketData item = new CgiReplyBucketData();
+            item.setStrategy("manual");
+            item.setSort(1);
+            item.setGhId(ghId);
+            item.setMsgType(1);
+            item.setTitle(param.getTitle());
+            // 处理coverUrl
+            String coverUrl = spliceCoverUrl(param.getVideoId(), param.getCoverUrl(), videoDetailMap);
+            item.setCoverUrl(coverUrl);
+            item.setMiniAppId(SMALL_APP_Id);
+            String miniPagePath = smallPageUrlDetail.getUrl();
+            miniPagePath = videoMultiService.setVideoMultiTitleCoverPagePath(param.getVideoId(), miniPagePath, param.getTitle(), item.getCoverUrl());
+            item.setMiniPagePath(miniPagePath);
+            item.setMiniVideoId(param.getVideoId());
+            item.setRootSourceId(MessageUtil.getRootSourceId(item.getMiniPagePath()));
+            item.setPagePathUrlId(smallPageUrlDetail.getId());
+            item.setIsDelete(1);
+            item.setCreateTime(new Date());
+            item.setUpdateTime(new Date());
+            cgiReplyBucketDataMapper.insertSelective(item);
+            // result
+            MsgData result = new MsgData();
+            result.setMsgType(item.getMsgType());
+            result.setTitle(item.getTitle());
+            result.setCoverUrl(item.getCoverUrl());
+            result.setMiniAppId(item.getMiniAppId());
+            result.setMiniPagePath(item.getMiniPagePath());
+            result.setMiniVideoId(item.getMiniVideoId());
+            return result;
+        }
+        return null;
+    }
+
+    private String spliceCoverUrl(Long videoId, String coverUrl, Map<Long, VideoDetail> videoDetailMap) {
+        coverUrl = coverUrl.contains("?") ? coverUrl.substring(0, coverUrl.indexOf("?")) : coverUrl;
+        VideoDetail videoDetail = videoDetailMap.get(videoId);
+        String coverSuffix = videoDetail.getCover().substring(videoDetail.getCover().indexOf("?"));
+        if (coverUrl.contains("?") && coverUrl.contains("image/resize")) {
+            coverSuffix = videoDetail.getCover().substring(videoDetail.getCover().indexOf("/watermark"));
+        }
+        if (!coverUrl.contains("yishihui")) {
+            coverSuffix = "?x-oss-process=image/resize,m_fill,w_600,h_480,limit_0/format,jpg";
+        }
+        return coverUrl + coverSuffix;
+    }
+
 }

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

@@ -364,7 +364,7 @@ public class ThirdPartyPushMessageStrategyV1 implements ReplyStrategyService {
                         cgiReplyBucketData.setMiniAppId(SMALL_APP_Id);
                         result.add(cgiReplyBucketData);
                     }
-                    result = ReplyStrategyService.checkCgiReplyBucketDataDiff(result, existCgiReplyBucketDataList);
+                    //result = ReplyStrategyService.checkCgiReplyBucketDataDiff(result, existCgiReplyBucketDataList);
                 } else if (!CollectionUtils.isEmpty(bucketDataParam.getVideos())) {
                     List<CgiReplyBucketData> existCgiReplyBucketDataList = new ArrayList<>();
                     if (allCount == bucketDataParam.getVideos().size()) {