|
@@ -168,37 +168,53 @@ public class BuckStrategyV1 implements ReplyStrategyService {
|
|
|
if (CollectionUtils.isEmpty(smallDataCgiReplyList)) {
|
|
|
return smallDataCgiReplyList;
|
|
|
}
|
|
|
- for (CgiReplyBucketData cgiReplyBucketData : smallDataCgiReplyList) {
|
|
|
+ Set<String> keys = smallDataCgiReplyList.stream().map(x -> x.getGhId() + "&" + x.getMiniVideoId() + "&" + x.getSort()).collect(Collectors.toSet());
|
|
|
+ Map<String, SmallPageUrlDetail> keyPageUrl = new HashMap<>();
|
|
|
+ // gh-id + videoId + sort 复用同一page_url及落地页id
|
|
|
+ for (String key : keys) {
|
|
|
+ String[] keyArr = key.split("&");
|
|
|
+ String ghId = keyArr[0];
|
|
|
+ String videoId = keyArr[1];
|
|
|
+ String sort = keyArr[2];
|
|
|
// 查询库里是否存在,如果存在即复用
|
|
|
CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample();
|
|
|
- cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0)
|
|
|
- .andMiniVideoIdEqualTo(cgiReplyBucketData.getMiniVideoId())
|
|
|
- .andGhIdEqualTo(cgiReplyBucketData.getGhId())
|
|
|
- .andSortEqualTo(cgiReplyBucketData.getSort());
|
|
|
- List<CgiReplyBucketData> cgiReplyBucketDataList = cgiReplyBucketDataMapper.selectByExample(cgiReplyBucketDataExample);
|
|
|
+ cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andMiniVideoIdEqualTo(Long.valueOf(videoId)).andGhIdEqualTo(ghId);
|
|
|
+ List<CgiReplyBucketData> cgiReplyBucketData = cgiReplyBucketDataMapper.selectByExample(cgiReplyBucketDataExample);
|
|
|
SmallPageUrlDetail smallPageUrlDetail = new SmallPageUrlDetail();
|
|
|
- if (CollectionUtils.isEmpty(cgiReplyBucketDataList)) {
|
|
|
+ if (CollectionUtils.isEmpty(cgiReplyBucketData)) {
|
|
|
// 库里不存在,调用新生成
|
|
|
- String response = httpClientService.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, cgiReplyBucketData.getMiniVideoId(), "touliu","tencentgzh","自动","公众号", "自动回复小程序", "位置" + cgiReplyBucketData.getSort(), cgiReplyBucketData.getGhId());
|
|
|
+ String response = httpClientService.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, videoId, "touliu","tencentgzh","自动","公众号", "自动回复小程序", "位置" + sort, ghId);
|
|
|
JSONObject jsonObject = JSON.parseObject(response);
|
|
|
if (jsonObject.getInteger("code").equals(0)) {
|
|
|
smallPageUrlDetail = jsonObject.getObject("data", SmallPageUrlDetail.class);
|
|
|
+ keyPageUrl.put(key, smallPageUrlDetail);
|
|
|
} else {
|
|
|
log.error("httpClientService get page url error,response:" + response);
|
|
|
throw new RuntimeException("httpClientService get page url error");
|
|
|
}
|
|
|
} else {
|
|
|
// 复用
|
|
|
- CgiReplyBucketData cgiReplyBucketData1 = cgiReplyBucketDataList.get(0);
|
|
|
+ CgiReplyBucketData cgiReplyBucketData1 = cgiReplyBucketData.get(0);
|
|
|
smallPageUrlDetail.setId(cgiReplyBucketData1.getPagePathUrlId());
|
|
|
smallPageUrlDetail.setUrl(cgiReplyBucketData1.getMiniPagePath());
|
|
|
}
|
|
|
+ keyPageUrl.put(key, smallPageUrlDetail);
|
|
|
+ }
|
|
|
+ // 处理数据
|
|
|
+ for (CgiReplyBucketData cgiReplyBucketData : smallDataCgiReplyList) {
|
|
|
+ String key = cgiReplyBucketData.getGhId() + "&" + cgiReplyBucketData.getMiniVideoId();
|
|
|
+ SmallPageUrlDetail smallPageUrlDetail = keyPageUrl.get(key);
|
|
|
+ if (Objects.isNull(smallPageUrlDetail)) {
|
|
|
+ log.error("setSmallPageUrl get map url is null" + JSON.toJSONString(keyPageUrl));
|
|
|
+ throw new RuntimeException("setSmallPageUrl get map url is null");
|
|
|
+ }
|
|
|
cgiReplyBucketData.setPagePathUrlId(smallPageUrlDetail.getId());
|
|
|
cgiReplyBucketData.setMiniPagePath(smallPageUrlDetail.getUrl());
|
|
|
}
|
|
|
return smallDataCgiReplyList;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
private List<CgiReplyBucketData> readStrategyOrderSmallData(Set<String> keyedSet) {
|
|
|
List<CgiReplyBucketData> result = new ArrayList<>();
|
|
|
for (String key : keyedSet) {
|