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