|
@@ -1,11 +1,13 @@
|
|
|
package com.tzld.piaoquan.ad.engine.service.score.strategy;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.alibaba.fastjson.TypeReference;
|
|
|
import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
|
|
|
import com.tzld.piaoquan.ad.engine.commons.dto.AdPlatformCreativeDTO;
|
|
|
import com.tzld.piaoquan.ad.engine.commons.enums.CrowdLayerEnum;
|
|
|
+import com.tzld.piaoquan.ad.engine.commons.enums.FilterTypeEnum;
|
|
|
import com.tzld.piaoquan.ad.engine.commons.enums.RedisPrefixEnum;
|
|
|
import com.tzld.piaoquan.ad.engine.commons.param.RankRecommendRequestParam;
|
|
|
import com.tzld.piaoquan.ad.engine.commons.redis.AdRedisHelper;
|
|
@@ -13,10 +15,7 @@ import com.tzld.piaoquan.ad.engine.commons.redis.AlgorithmRedisHelper;
|
|
|
import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
|
|
|
import com.tzld.piaoquan.ad.engine.commons.util.DateUtils;
|
|
|
import com.tzld.piaoquan.ad.engine.commons.util.ObjUtil;
|
|
|
-import com.tzld.piaoquan.ad.engine.service.entity.CalibrationModelCtcvrData;
|
|
|
-import com.tzld.piaoquan.ad.engine.service.entity.CorrectCpaParam;
|
|
|
-import com.tzld.piaoquan.ad.engine.service.entity.CorrectCtcvrScoreParam;
|
|
|
-import com.tzld.piaoquan.ad.engine.service.entity.GuaranteeView;
|
|
|
+import com.tzld.piaoquan.ad.engine.service.entity.*;
|
|
|
import com.tzld.piaoquan.ad.engine.service.feature.Feature;
|
|
|
import com.tzld.piaoquan.ad.engine.service.feature.FeatureService;
|
|
|
import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
|
|
@@ -111,6 +110,9 @@ public abstract class RankStrategyBasic implements RankStrategy {
|
|
|
@Value("${checkout.layer:false}")
|
|
|
protected Boolean checkoutLayer;
|
|
|
|
|
|
+ @Value("${filter.config.value:[]}")
|
|
|
+ protected String filterConfigValue;
|
|
|
+
|
|
|
@Autowired
|
|
|
private FeatureService featureService;
|
|
|
@Autowired
|
|
@@ -307,25 +309,51 @@ public abstract class RankStrategyBasic implements RankStrategy {
|
|
|
log.info("excludeExp filtered request={}", JSONObject.toJSONString(request));
|
|
|
}
|
|
|
|
|
|
- if (!checkoutLayer) {
|
|
|
- // 有曝光无转化-其他 过滤德瑞骅客户 客户id 26
|
|
|
- if (Objects.equals(layer, "有曝光无转化") && Objects.equals(clazz, "其他") && scoreParam.getExpCodeSet().contains(targetCrowdExcludeExp)) {
|
|
|
- List<AdPlatformCreativeDTO> adIdList = request.getAdIdList();
|
|
|
- List<AdPlatformCreativeDTO> filteredAdList = adIdList.stream().filter(e -> e.getCustomerId() == null || e.getCustomerId() != 26L).collect(Collectors.toList());
|
|
|
- if (CollectionUtils.isNotEmpty(filteredAdList)) {
|
|
|
- request.setAdIdList(filteredAdList);
|
|
|
+ List<FilterConfig> filterConfigs = JSONArray.parseArray(filterConfigValue).toJavaList(FilterConfig.class);
|
|
|
+ if (!CollectionUtils.isEmpty(filterConfigs)) {
|
|
|
+ for (FilterConfig filterConfig : filterConfigs) {
|
|
|
+ if (filterConfig.getExpId() == null || !scoreParam.getExpCodeSet().contains(filterConfig.getExpId())) {
|
|
|
+ continue;
|
|
|
}
|
|
|
- log.info("targetCrowdExcludeExp filtered request={}", JSONObject.toJSONString(request));
|
|
|
- }
|
|
|
- } else {
|
|
|
- // 有曝光无点击-其他 过滤德瑞骅客户 客户id 26
|
|
|
- if (Objects.equals(layer, "有曝光无点击") && Objects.equals(clazz, "其他") && scoreParam.getExpCodeSet().contains(targetCrowdExcludeExp)) {
|
|
|
- List<AdPlatformCreativeDTO> adIdList = request.getAdIdList();
|
|
|
- List<AdPlatformCreativeDTO> filteredAdList = adIdList.stream().filter(e -> e.getCustomerId() == null || e.getCustomerId() != 26L).collect(Collectors.toList());
|
|
|
- if (CollectionUtils.isNotEmpty(filteredAdList)) {
|
|
|
- request.setAdIdList(filteredAdList);
|
|
|
+ if (!Objects.equals(layer, filterConfig.getLayer()) || !Objects.equals(clazz, filterConfig.getClazz())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (Objects.equals(FilterTypeEnum.CREATIVE.getCode(), filterConfig.getType())) {
|
|
|
+ List<AdPlatformCreativeDTO> adIdList = request.getAdIdList();
|
|
|
+ List<AdPlatformCreativeDTO> filteredAdList = adIdList.stream().filter(e -> e.getCreativeId() == null || !e.getCreativeId().equals(Long.valueOf(filterConfig.getValue()))).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(filteredAdList)) {
|
|
|
+ request.setAdIdList(filteredAdList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (Objects.equals(FilterTypeEnum.AD.getCode(), filterConfig.getType())) {
|
|
|
+ List<AdPlatformCreativeDTO> adIdList = request.getAdIdList();
|
|
|
+ List<AdPlatformCreativeDTO> filteredAdList = adIdList.stream().filter(e -> e.getAdId() == null || !e.getAdId().equals(Long.valueOf(filterConfig.getValue()))).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(filteredAdList)) {
|
|
|
+ request.setAdIdList(filteredAdList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (Objects.equals(FilterTypeEnum.ADVERTISER.getCode(), filterConfig.getType())) {
|
|
|
+ List<AdPlatformCreativeDTO> adIdList = request.getAdIdList();
|
|
|
+ List<AdPlatformCreativeDTO> filteredAdList = adIdList.stream().filter(e -> e.getAdVerId() == null || !e.getAdVerId().equals(filterConfig.getValue())).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(filteredAdList)) {
|
|
|
+ request.setAdIdList(filteredAdList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (Objects.equals(FilterTypeEnum.PROFESSION.getCode(), filterConfig.getType())) {
|
|
|
+ List<AdPlatformCreativeDTO> adIdList = request.getAdIdList();
|
|
|
+ List<AdPlatformCreativeDTO> filteredAdList = adIdList.stream().filter(e -> e.getProfession() == null || !e.getProfession().equals(filterConfig.getValue())).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(filteredAdList)) {
|
|
|
+ request.setAdIdList(filteredAdList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (Objects.equals(FilterTypeEnum.CUSTOMER.getCode(), filterConfig.getType())) {
|
|
|
+ List<AdPlatformCreativeDTO> adIdList = request.getAdIdList();
|
|
|
+ List<AdPlatformCreativeDTO> filteredAdList = adIdList.stream().filter(e -> e.getCustomerId() == null || !e.getCustomerId().equals(Long.valueOf(filterConfig.getValue()))).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(filteredAdList)) {
|
|
|
+ request.setAdIdList(filteredAdList);
|
|
|
+ }
|
|
|
}
|
|
|
- log.info("targetCrowdExcludeExp filtered request={}", JSONObject.toJSONString(request));
|
|
|
+ log.info("targetCrowdExcludeExp filtered filterConfig={} request={}", filterConfig, JSONObject.toJSONString(request));
|
|
|
}
|
|
|
}
|
|
|
}
|