|
@@ -286,7 +286,7 @@ public abstract class RankStrategyBasic implements RankStrategy {
|
|
|
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)){
|
|
|
+ if (CollectionUtils.isNotEmpty(filteredAdList)) {
|
|
|
request.setAdIdList(filteredAdList);
|
|
|
}
|
|
|
log.info("targetCrowdExcludeExp filtered request={}", JSONObject.toJSONString(request));
|
|
@@ -444,24 +444,34 @@ public abstract class RankStrategyBasic implements RankStrategy {
|
|
|
Integer viewsHour = jsonObject.getInteger("viewsHour");
|
|
|
Integer viewsDay = jsonObject.getInteger("viewsDay");
|
|
|
double realCtcvrHour = safeDouble(jsonObject.getDouble("realCtcvrHour"), minCtcvr);
|
|
|
- double pCtcvrHour = safeDouble(jsonObject.getDouble("pCtcvrHour"), minCtcvr);
|
|
|
+ double pCtcvrHour = jsonObject.getDouble("pCtcvrHour");
|
|
|
double realCtcvrDay = safeDouble(jsonObject.getDouble("realCtcvrDay"), minCtcvr);
|
|
|
- double pCtcvrDay = safeDouble(jsonObject.getDouble("pCtcvrDay"), minCtcvr);
|
|
|
+ double pCtcvrDay = jsonObject.getDouble("pCtcvrDay");
|
|
|
|
|
|
if (scoreParam.getExpCodeSet().contains(correctCpaExp2)) {
|
|
|
double alpha = isValidViews(viewsHour, correctCpaViewHour) ? correctCpaAlpha2 : 0;
|
|
|
double beta = isValidViews(viewsDay, correctCpaViewDay) ? correctCpaBeta2 : 0;
|
|
|
return (1 - alpha - beta) +
|
|
|
- (realCtcvrHour / pCtcvrHour) * alpha +
|
|
|
- (realCtcvrDay / pCtcvrDay) * beta;
|
|
|
+ safeDivision(realCtcvrHour, pCtcvrHour) * alpha +
|
|
|
+ safeDivision(realCtcvrDay, pCtcvrDay) * beta;
|
|
|
} else {
|
|
|
double alpha = isValidViews(viewsHour, correctCpaViewHour) ? correctCpaAlpha1 : 0;
|
|
|
double beta = isValidViews(viewsDay, correctCpaViewDay) ? correctCpaBeta1 : 0;
|
|
|
- return Math.pow(realCtcvrHour / pCtcvrHour, alpha) *
|
|
|
- Math.pow(realCtcvrDay / pCtcvrDay, beta);
|
|
|
+ return Math.pow(safeDivision(realCtcvrHour, pCtcvrHour), alpha) *
|
|
|
+ Math.pow(safeDivision(realCtcvrDay, pCtcvrDay), beta);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private Double safeDivision(Double realCtcvr, Double pCtcvr) {
|
|
|
+ if (pCtcvr == null || pCtcvr == 0) {
|
|
|
+ return 1.0;
|
|
|
+ }
|
|
|
+ if (realCtcvr == null || realCtcvr == 0) {
|
|
|
+ return 0.0;
|
|
|
+ }
|
|
|
+ return realCtcvr / pCtcvr;
|
|
|
+ }
|
|
|
+
|
|
|
private <T> Map<T, JSONObject> getRedisData(
|
|
|
Collection<T> ids,
|
|
|
Function<T, String> hourKeyBuilder,
|