|
@@ -17,6 +17,7 @@ import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -62,12 +63,12 @@ public class PushMessageStrategyV1 implements ReplyStrategyService {
|
|
|
// 1 处理文章--算法引擎--排序文章数据
|
|
|
// getWenzhangData();
|
|
|
// 2 处理小程序--读取离线数据表--获取策略排序小程序数据
|
|
|
- List<CgiReplyBucketData> smallDataCgiReplyList = readStrategyOrderSmallData(keyedSet);
|
|
|
+ List<CgiReplyBucketData> smallDataCgiReplyList = readStrategyOrderSmallData(keyedSet, bucketDataParam);
|
|
|
// 2.1 获取小程序落地页地址 http调用
|
|
|
smallDataCgiReplyList = setSmallPageUrl(smallDataCgiReplyList);
|
|
|
log.info(JSON.toJSONString(smallDataCgiReplyList));
|
|
|
// 3 入库读表
|
|
|
- insertSmallData(smallDataCgiReplyList, keyedSet);
|
|
|
+ insertSmallData(smallDataCgiReplyList, keyedSet, bucketDataParam);
|
|
|
// 4 组装分桶数据
|
|
|
return getReplyBucketData(bucketStrategyConfigJsonObject, keyedSet, bucketDataParam.getGhId());
|
|
|
}
|
|
@@ -116,7 +117,7 @@ public class PushMessageStrategyV1 implements ReplyStrategyService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- private void insertSmallData(List<CgiReplyBucketData> smallDataCgiReplyList, Set<String> keyedSet) {
|
|
|
+ private void insertSmallData(List<CgiReplyBucketData> smallDataCgiReplyList, Set<String> keyedSet, BucketDataParam bucketDataParam) {
|
|
|
if (CollectionUtils.isEmpty(smallDataCgiReplyList)) {
|
|
|
return;
|
|
|
}
|
|
@@ -124,14 +125,17 @@ public class PushMessageStrategyV1 implements ReplyStrategyService {
|
|
|
if ("base".equals(key)) {
|
|
|
continue;
|
|
|
}
|
|
|
- List<CgiReplyBucketData> collect = smallDataCgiReplyList.stream().filter(x -> x.getStrategy().equals(key)).collect(Collectors.toList());
|
|
|
+ List<CgiReplyBucketData> collect = smallDataCgiReplyList.stream()
|
|
|
+ .filter(x -> x.getStrategy().equals(key))
|
|
|
+ .filter(x -> x.getGhId().equals(bucketDataParam.getGhId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
if (CollectionUtils.isEmpty(collect)) {
|
|
|
- log.error("insertSmallData 算法排序数据异常,data:" + JSON.toJSONString(smallDataCgiReplyList));
|
|
|
+ log.error("PushMessageStrategyV1 insertSmallData 算法排序数据异常,data:" + JSON.toJSONString(smallDataCgiReplyList));
|
|
|
continue;
|
|
|
}
|
|
|
// 清上个版本的策略数据
|
|
|
CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample();
|
|
|
- cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andMsgTypeEqualTo(1).andStrategyEqualTo(key);
|
|
|
+ cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andMsgTypeEqualTo(1).andStrategyEqualTo(key).andGhIdEqualTo(bucketDataParam.getGhId());
|
|
|
List<CgiReplyBucketData> cgiReplyBucketData1 = cgiReplyBucketDataMapper.selectByExample(cgiReplyBucketDataExample);
|
|
|
for (CgiReplyBucketData cgiReplyBucketData : cgiReplyBucketData1) {
|
|
|
cgiReplyBucketData.setIsDelete(1);
|
|
@@ -193,26 +197,29 @@ public class PushMessageStrategyV1 implements ReplyStrategyService {
|
|
|
return smallDataCgiReplyList;
|
|
|
}
|
|
|
|
|
|
- private List<CgiReplyBucketData> readStrategyOrderSmallData(Set<String> keyedSet) {
|
|
|
+ private List<CgiReplyBucketData> readStrategyOrderSmallData(Set<String> keyedSet, BucketDataParam bucketDataParam) {
|
|
|
List<CgiReplyBucketData> result = new ArrayList<>();
|
|
|
- // TODO: 只更新对应公众号的数据
|
|
|
for (String key : keyedSet) {
|
|
|
if ("base".equals(key)) {
|
|
|
// base作为人工控制
|
|
|
continue;
|
|
|
}
|
|
|
// 获取最新dt的策略
|
|
|
- String dtVersion = algGhAutoreplyVideoRankDataMapper.selectLatestDtVersionByStrategyKey(key);
|
|
|
+ String dtVersion = algGhAutoreplyVideoRankDataMapper.selectLatestDtVersionByStrategyKeyAndGhId(key, bucketDataParam.getGhId());
|
|
|
+ if (StringUtils.isEmpty(dtVersion)) {
|
|
|
+ bucketDataParam.setGhId("default");
|
|
|
+ dtVersion = algGhAutoreplyVideoRankDataMapper.selectLatestDtVersionByStrategyKeyAndGhId(key, bucketDataParam.getGhId());
|
|
|
+ }
|
|
|
// 判断当前的dtVersion是否已经处理过了
|
|
|
CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample();
|
|
|
- cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andStrategyDtEqualTo(dtVersion).andStrategyEqualTo(key);
|
|
|
+ cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andStrategyDtEqualTo(dtVersion).andStrategyEqualTo(key).andGhIdEqualTo(bucketDataParam.getGhId());
|
|
|
long count = cgiReplyBucketDataMapper.countByExample(cgiReplyBucketDataExample);
|
|
|
if (count != 0) {
|
|
|
// 说明已处理过该dtVersion数据
|
|
|
continue;
|
|
|
}
|
|
|
// 获取最新dt数据
|
|
|
- List<AlgGhAutoreplyVideoRankData> dtVserSionStrategyData = getDtVersionStrategyData(key, dtVersion);
|
|
|
+ List<AlgGhAutoreplyVideoRankData> dtVserSionStrategyData = getDtVersionStrategyData(key, dtVersion, bucketDataParam.getGhId());
|
|
|
result.addAll(dtVserSionStrategyData.stream().map(x -> {
|
|
|
CgiReplyBucketData cgiReplyBucketData = new CgiReplyBucketData();
|
|
|
cgiReplyBucketData.setStrategy(key);
|
|
@@ -231,9 +238,9 @@ public class PushMessageStrategyV1 implements ReplyStrategyService {
|
|
|
return CollectionUtils.isEmpty(result) ? null : result;
|
|
|
}
|
|
|
|
|
|
- private List<AlgGhAutoreplyVideoRankData> getDtVersionStrategyData(String key, String dtVersion) {
|
|
|
+ private List<AlgGhAutoreplyVideoRankData> getDtVersionStrategyData(String key, String dtVersion, String ghId) {
|
|
|
AlgGhAutoreplyVideoRankDataExample algGhAutoreplyVideoRankDataExample = new AlgGhAutoreplyVideoRankDataExample();
|
|
|
- algGhAutoreplyVideoRankDataExample.createCriteria().andIsDeleteEqualTo(0).andDtVersionEqualTo(dtVersion).andStrategyKeyEqualTo(key);
|
|
|
+ algGhAutoreplyVideoRankDataExample.createCriteria().andIsDeleteEqualTo(0).andDtVersionEqualTo(dtVersion).andStrategyKeyEqualTo(key).andGhIdEqualTo(ghId);
|
|
|
return algGhAutoreplyVideoRankDataMapper.selectByExample(algGhAutoreplyVideoRankDataExample);
|
|
|
}
|
|
|
|