Explorar el Código

Merge branch 'dev-xym-cold-log' of algorithm/ad-engine into master

xueyiming hace 9 horas
padre
commit
f4c9970093

+ 39 - 0
ad-engine-server/src/main/java/com/tzld/piaoquan/ad/engine/server/controller/LogUploadController.java

@@ -0,0 +1,39 @@
+package com.tzld.piaoquan.ad.engine.server.controller;
+
+import com.tzld.piaoquan.ad.engine.commons.param.RankRecommendRequestParam;
+import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
+import com.tzld.piaoquan.ad.engine.service.log.LogHubService;
+import com.tzld.piaoquan.ad.engine.service.score.convert.RequestConvert;
+import com.tzld.piaoquan.ad.engine.service.score.strategy.FeaturePrinterStrategy;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/log")
+public class LogUploadController {
+
+    @Autowired
+    private FeaturePrinterStrategy featurePrinterStrategy;
+
+    @Autowired
+    private LogHubService logHubService;
+
+    @RequestMapping("/printFeatureOnly")
+    public Map<String, Object> printFeatureOnly(@RequestBody RankRecommendRequestParam request) {
+        ScoreParam scoreParam = RequestConvert.requestConvert(request);
+        List<AdRankItem> adRankItems = featurePrinterStrategy.adItemRank(request, scoreParam);
+        logHubService.scoreLogUpload(scoreParam, request.getAdIdList(), adRankItems, request, scoreParam.getExpCode());
+        return new HashMap<String, Object>() {{
+            put("result", "success");
+        }};
+    }
+
+
+}

+ 53 - 0
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/strategy/FeaturePrinterStrategy.java

@@ -0,0 +1,53 @@
+package com.tzld.piaoquan.ad.engine.service.score.strategy;
+
+import com.tzld.piaoquan.ad.engine.commons.dto.AdPlatformCreativeDTO;
+import com.tzld.piaoquan.ad.engine.commons.param.RankRecommendRequestParam;
+import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
+import com.tzld.piaoquan.ad.engine.commons.util.ObjUtil;
+import com.tzld.piaoquan.ad.engine.service.feature.Feature;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+@Component
+public class FeaturePrinterStrategy extends RankStrategyBasic {
+    @Override
+    public List<AdRankItem> adItemRank(RankRecommendRequestParam request, ScoreParam scoreParam) {
+        Set<String> noApiAdVerIds = getNoApiAdVerIds();
+        long ts = System.currentTimeMillis() / 1000;
+
+        String brand = scoreParam.getRequestContext().getMachineinfoBrand();
+        if (StringUtils.isNotEmpty(brand)) {
+            scoreParam.getRequestContext().setMachineinfoBrand(brand + "-n");
+        }
+
+        Feature feature = this.getFeature(scoreParam, request);
+        Map<String, String> reqFeature = this.getReqFeature(scoreParam, request);
+        Map<String, String> sceneFeatureMap = this.handleSceneFeature(ts);
+
+        AdPlatformCreativeDTO dto = request.getAdIdList().get(0);
+        AdRankItem adRankItem = new AdRankItem();
+        adRankItem.setAdId(dto.getCreativeId());
+        adRankItem.setCreativeCode(dto.getCreativeCode());
+        adRankItem.setAdVerId(dto.getAdVerId());
+        adRankItem.setVideoId(request.getVideoId());
+        adRankItem.setCpa(dto.getCpa());
+        adRankItem.setId(dto.getAdId());
+        adRankItem.setCampaignId(dto.getCampaignId());
+        adRankItem.setCpm(ObjUtil.nullOrDefault(dto.getCpm(), 90).doubleValue());
+        adRankItem.setSkuId(dto.getSkuId());
+        if (noApiAdVerIds.contains(dto.getAdVerId())) {
+            adRankItem.getExt().put("isApi", "0");
+        } else {
+            adRankItem.getExt().put("isApi", "1");
+        }
+        adRankItem.getExt().put("recallsources", dto.getRecallSources());
+        putMetaFeature(adRankItem, feature, reqFeature, sceneFeatureMap, request);
+        return Collections.singletonList(adRankItem);
+    }
+}