|
@@ -168,16 +168,47 @@ public class BuckStrategyV1 implements ReplyStrategyService {
|
|
|
if (CollectionUtils.isEmpty(smallDataCgiReplyList)) {
|
|
|
return smallDataCgiReplyList;
|
|
|
}
|
|
|
- for (CgiReplyBucketData cgiReplyBucketData : smallDataCgiReplyList) {
|
|
|
- String response = httpClientService.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, cgiReplyBucketData.getMiniVideoId() + "", "公众号", "自动回复小程序", "位置" + cgiReplyBucketData.getSort(), SMALL_APP_Id);
|
|
|
- JSONObject jsonObject = JSON.parseObject(response);
|
|
|
- if (jsonObject.getInteger("code").equals(0)) {
|
|
|
- SmallPageUrlDetail smallPageUrlDetail = jsonObject.getObject("data", SmallPageUrlDetail.class);
|
|
|
- cgiReplyBucketData.setPagePathUrlId(smallPageUrlDetail.getId());
|
|
|
- cgiReplyBucketData.setMiniPagePath(smallPageUrlDetail.getUrl());
|
|
|
+ Set<String> keys = smallDataCgiReplyList.stream().map(x -> x.getGhId() + "&" + x.getMiniVideoId()).collect(Collectors.toSet());
|
|
|
+ Map<String, SmallPageUrlDetail> keyPageUrl = new HashMap<>();
|
|
|
+ // gh-id + videoId 复用同一page_url及落地页id
|
|
|
+ for (String key : keys) {
|
|
|
+ String[] keyArr = key.split("&");
|
|
|
+ String ghId = keyArr[0];
|
|
|
+ String videoId = keyArr[1];
|
|
|
+ // 查询库里是否存在,如果存在即复用
|
|
|
+ CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample();
|
|
|
+ cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andMiniVideoIdEqualTo(Long.valueOf(videoId)).andGhIdEqualTo(ghId);
|
|
|
+ List<CgiReplyBucketData> cgiReplyBucketData = cgiReplyBucketDataMapper.selectByExample(cgiReplyBucketDataExample);
|
|
|
+ SmallPageUrlDetail smallPageUrlDetail = new SmallPageUrlDetail();
|
|
|
+ if (CollectionUtils.isEmpty(cgiReplyBucketData)) {
|
|
|
+ // 库里不存在,调用新生成
|
|
|
+ String response = httpClientService.sendAdFlowAddRequest(GET_SMALL_PAGE_URL, videoId, "公众号", "自动回复小程序", "位置X", SMALL_APP_Id);
|
|
|
+ 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 {
|
|
|
- return null;
|
|
|
+ // 复用
|
|
|
+ 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;
|
|
|
}
|