yaodaoseng 6 days ago
parent
commit
d17993a94b

+ 45 - 40
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/strategy/RankStrategyBasic.java

@@ -363,50 +363,55 @@ public abstract class RankStrategyBasic implements RankStrategy {
      * @return 保量权重系数
      */
     protected double calculateGuaranteeWeightWithCrowd(GuaranteeView guaranteeView, Map<String, String> reqFeature) {
-        // 空值检查:如果保量视图为空,返回默认权重
-        if (guaranteeView == null) {
-            return 1.0;
-        }
-
-        // 判断是否配置了保量人群代码
-        String guaranteeCrowdCode = guaranteeView.getGuaranteeCrowdCode();
-        if (StringUtils.isEmpty(guaranteeCrowdCode)) {
-            // 保量人群代码无值,走原有逻辑
-            return calculateGuaranteedWeight(guaranteeView);
-        }
-        // 判断是否勾选了全部人群
-        if (isFullCrowd(guaranteeCrowdCode)) {
-            // 勾选了全部人群,走原有逻辑
-            return calculateGuaranteedWeight(guaranteeView);
-        }
+        try {
+            // 空值检查:如果保量视图为空,返回默认权重
+            if (guaranteeView == null) {
+                return 1.0;
+            }
 
-        // 保量人群代码有值,进行人群匹配判断
-        String userLayer = reqFeature.getOrDefault("layer", "");
+            // 判断是否配置了保量人群代码
+            String guaranteeCrowdCode = guaranteeView.getGuaranteeCrowdCode();
+            if (StringUtils.isEmpty(guaranteeCrowdCode)) {
+                // 保量人群代码无值,走原有逻辑
+                return calculateGuaranteedWeight(guaranteeView);
+            }
+            // 判断是否勾选了全部人群
+            if (isFullCrowd(guaranteeCrowdCode)) {
+                // 勾选了全部人群,走原有逻辑
+                return calculateGuaranteedWeight(guaranteeView);
+            }
 
-        // 获取用户人群对应的CrowdLayerEnum code
-        Integer userCrowdCode = getUserCrowdCode(userLayer);
-        if (userCrowdCode == null) {
-            log.error("RankStrategyBasic calculateGuaranteeWeightWithCrowd 无法获取用户人群代码,userLayer={}", userLayer);
-            return 1.0;
-        }
+            // 保量人群代码有值,进行人群匹配判断
+            String userLayer = reqFeature.getOrDefault("layer", "");
 
-        // 判断用户人群是否在保量人群范围内
-        boolean isUserInGuaranteeCrowd = isUserInGuaranteeCrowd(guaranteeCrowdCode, userCrowdCode);
+            // 获取用户人群对应的CrowdLayerEnum code
+            Integer userCrowdCode = getUserCrowdCode(userLayer);
+            if (userCrowdCode == null) {
+                log.error("RankStrategyBasic calculateGuaranteeWeightWithCrowd 无法获取用户人群代码,userLayer={}", userLayer);
+                return 1.0;
+            }
 
-        if (isUserInGuaranteeCrowd) {
-            // 到这里,就是用户在保量人群中,且广告主勾选的不是全部人群
-            // 计算保量权重
-            double baseWeight = calculateGuaranteedWeight(guaranteeView);
-            // 额外加权
-            // 对勾选了保量人群,且不是勾选了全部的保量人群的广告进行额外加权
-            double finalWeight = baseWeight * guaranteeCrowdWeightCoefficient;
-            log.debug("RankStrategyBasic 保量人群加权: userLayer={}, guaranteeCrowdCode={}, baseWeight={}, coefficient={}, finalWeight={}",
-                     userLayer, guaranteeCrowdCode, baseWeight, guaranteeCrowdWeightCoefficient, finalWeight);
-            return finalWeight;
-        } else {
-            // 用户不在保量人群范围内,权重设为1
-            log.debug("RankStrategyBasic 用户不在保量人群范围内: userLayer={}, guaranteeCrowdCode={}", userLayer, guaranteeCrowdCode);
-            return 1.0;
+            // 判断用户人群是否在保量人群范围内
+            boolean isUserInGuaranteeCrowd = isUserInGuaranteeCrowd(guaranteeCrowdCode, userCrowdCode);
+
+            if (isUserInGuaranteeCrowd) {
+                // 到这里,就是用户在保量人群中,且广告主勾选的不是全部人群
+                // 计算保量权重
+                double baseWeight = calculateGuaranteedWeight(guaranteeView);
+                // 额外加权
+                // 对勾选了保量人群,且不是勾选了全部的保量人群的广告进行额外加权
+                double finalWeight = baseWeight * guaranteeCrowdWeightCoefficient;
+                log.debug("RankStrategyBasic 保量人群加权: userLayer={}, guaranteeCrowdCode={}, baseWeight={}, coefficient={}, finalWeight={}",
+                         userLayer, guaranteeCrowdCode, baseWeight, guaranteeCrowdWeightCoefficient, finalWeight);
+                return finalWeight;
+            } else {
+                // 用户不在保量人群范围内,权重设为1
+                log.debug("RankStrategyBasic 用户不在保量人群范围内: userLayer={}, guaranteeCrowdCode={}", userLayer, guaranteeCrowdCode);
+                return 1.0;
+            }
+        } catch (Exception e) {
+            log.error("RankStrategyBasic calculateGuaranteeWeightWithCrowd error", e);
+            return calculateGuaranteedWeight(guaranteeView);
         }
     }