yumeng 2 недель назад
Родитель
Сommit
ef723c2a2a

+ 2 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/mapper/BytedanceProjectMapper.java

@@ -32,4 +32,6 @@ public interface BytedanceProjectMapper {
     List<JSONObject> getBytedanceOcpxTypeList();
 
     String getTokenByAccountId(@Param("advertiserId") Long advertiserId);
+
+    void addLog(@Param("accountId") Long accountId, @Param("projectId") Long projectId, @Param("projectStatus") String projectStatus);
 }

+ 4 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/mapper/xml/BytedanceProjectMapper.xml

@@ -131,6 +131,10 @@
         (DATE_FORMAT(now(),'%Y%m%d-%H'))
         )
     </insert>
+    <insert id="addLog">
+        INSERT INTO `jeecg-boot`.ctop_bytedance_project_stop_log (account_id, project_id, project_status)
+        VALUES (#{accountId}, #{projectId}, #{projectStatus});
+    </insert>
 
 
     <select id="getBytedanceRefusalSend" resultType="Long">

+ 34 - 11
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/impl/BytedanceProjectServiceImpl.java

@@ -1,8 +1,5 @@
 package cn.com.ctop.common.module.service.impl;
 
-
-import cn.com.ctop.common.module.entity.BytedanceCdpProject;
-import cn.com.ctop.common.module.entity.MediaSendAlarmRecord;
 import cn.com.ctop.common.module.mapper.BytedanceProjectMapper;
 import cn.com.ctop.common.module.service.IBytedanceProjectService;
 import cn.com.ctop.common.module.utils.Check;
@@ -139,15 +136,30 @@ public class BytedanceProjectServiceImpl implements IBytedanceProjectService {
 
 
         for (JSONObject promotionJson : promotionList) {
+
             //广告项目ID
             Long projectId = promotionJson.getLong("projectId");
+            String redisKey = "warning_" + accountId + "_" + projectId;
+            Object o = redisUtil.get(redisKey);
+            if (!Check.isNull(o)) {
+                log.info("该账户:{},下的项目ID:{},在2分钟内已经执行过预警,此次预警跳过", accountId, projectId);
+                continue;
+            }
             BigDecimal cpaBid = promotionJson.getBigDecimal("cpaBid");
             BigDecimal deepCpabid = promotionJson.getBigDecimal("deepCpabid");
             JSONObject projectJson = projectInfo.get(projectId);
+            if (Check.isNull(cpaBid)) {
+                if (!Check.isNull(projectJson.getBigDecimal("cpaBid"))) {
+                    cpaBid = projectJson.getBigDecimal("cpaBid");
+                }
+            }
+            if (Check.isNull(deepCpabid)) {
+                if (!Check.isNull(projectJson.getBigDecimal("deepCpabid"))) {
+                    deepCpabid = projectJson.getBigDecimal("deepCpabid");
+                }
+            }
             //广告项目名称
             String projectName = projectJson.getString("projectName");
-
-
             //转化目标
             String ocpxActionType = projectJson.getString("externalAction");
             //深度转化目标
@@ -240,8 +252,6 @@ public class BytedanceProjectServiceImpl implements IBytedanceProjectService {
                 String text = getProjectOverBidMessage(json.getString("projectName"), accountId, projectId, projectName, null, null, msgBid.toString());
                 sendMsg(accountId, text);
             }
-
-
         }
 
     }
@@ -272,7 +282,6 @@ public class BytedanceProjectServiceImpl implements IBytedanceProjectService {
                 return returnMap;
             }
             JSONArray data = resultObject.getJSONObject("data").getJSONArray("list");
-            System.err.println(data);
             if (null == data || data.isEmpty()) {
                 log.info("checkAdvertiserProject数据为空==》accountId:{},message:{},code:{}", accountId, resultObject.getString("message"), code);
                 return returnMap;
@@ -294,6 +303,10 @@ public class BytedanceProjectServiceImpl implements IBytedanceProjectService {
                 mapJson.put("deepExternalAction", deepExternalAction);
                 //为NO_BID时,不校验出价
                 String bidType = dataObject.getJSONObject("delivery_setting").getString("bid_type");
+                String deepCpabid = dataObject.getJSONObject("delivery_setting").getString("deep_cpabid");
+                mapJson.put("deepCpabid", deepCpabid);
+                String cpaBid = dataObject.getJSONObject("delivery_setting").getString("cpa_bid");
+                mapJson.put("cpaBid", cpaBid);
                 mapJson.put("bidType", bidType);
                 returnMap.put(projectId, mapJson);
             }
@@ -306,7 +319,7 @@ public class BytedanceProjectServiceImpl implements IBytedanceProjectService {
 
 
     @Override
-    public void updProjectStatus(String token, Long accountId, Long projectId, String disable) {
+    public synchronized void updProjectStatus(String token, Long accountId, Long projectId, String disable) {
         JSONObject params = new JSONObject();
         params.put("advertiser_id", accountId);
         JSONObject data = new JSONObject();
@@ -317,6 +330,18 @@ public class BytedanceProjectServiceImpl implements IBytedanceProjectService {
         params.put("data", list);
         String url = bytedanceApiUrl + "/v3.0/project/status/update/";
         JSONObject object = HttpUtils.bytedancePostRequest(token, url, params);
+        if (!Check.isNull(object)) {
+            Integer code = object.getInteger("code");
+            if (code == 0) {
+                String redisKey = "warning_" + accountId + "_" + projectId;
+                redisUtil.set(redisKey, projectId, 3 * 60);
+                projectListMapper.addLog(accountId, projectId, "stop");
+            } else {
+                log.error("预警关停计划失败,accountId:{},projectId:{}, result:{}", accountId, projectId, object);
+            }
+        }
+
+        System.err.println(object);
     }
 
 
@@ -333,8 +358,6 @@ public class BytedanceProjectServiceImpl implements IBytedanceProjectService {
         try {
 
             //关停计划
-
-
             List<JSONObject> list = projectListMapper.getWChatIdsByAccountId(accountId);
             for (JSONObject object : list) {
                 corpWexinUtils.sendMessageByWeChatId(object, text);

+ 8 - 94
jeecg-boot-module-system/src/main/java/cn/com/ctop/toutiao/modules/report/controller/BytedancePushDataController.java

@@ -72,7 +72,8 @@ public class BytedancePushDataController {
                             public void run() {
                                 String token = bytedanceProjectService.getTokenByAccountId(advertiserId);
                                 if (!Check.isNull(token)) {
-                                  //  bytedanceProjectService.checkAdvertiserProject(advertiserId, token, ids, 1);
+                                    Map<Long, JSONObject> projectMap = new HashMap<>();
+                                    bytedanceProjectService.getPromotionList(advertiserId, token, ids, projectMap, 1);
                                 }
                             }
                         });
@@ -89,105 +90,18 @@ public class BytedancePushDataController {
     @RequestMapping(value = "/test", method = {RequestMethod.GET, RequestMethod.POST})
     @ResponseBody
     public void test(HttpServletRequest request, @RequestParam(value = "challenge", defaultValue = "0") int challenge, @RequestParam(value = "event", defaultValue = "") String event, @RequestParam(value = "appId", defaultValue = "") String appId) throws IOException {
-        String token = bytedanceProjectService.getTokenByAccountId(1805247055831242L);
+        String token = bytedanceProjectService.getTokenByAccountId(1832252227629066L);
 
         List<Long> list = new ArrayList<>();
-        list.add(7572806389833449535L);
-        list.add(7569160314464059419L);
-        list.add(7556895021170491428L);
-        list.add(7571669057411432502L);
-        list.add(7559467309200605225L);
-        list.add(7570960749583351835L);
-        list.add(7556895017076637735L);
-        list.add(7569160325375901734L);
-        list.add(7556895015571865641L);
-        list.add(7572806388642447366L);
-        list.add(7572806137041436678L);
-        list.add(7571669051129348132L);
-        list.add(7559467302028148775L);
-        list.add(7556894973666689067L);
-        list.add(7569160306657820710L);
-        list.add(7550180220675768363L);
-        list.add(7570960807799111730L);
-        list.add(7571669051858386998L);
-        list.add(7556895110821150759L);
-        list.add(7571669053866950719L);
-        list.add(7559467242313138217L);
-        list.add(7556895001595936809L);
-        list.add(7571669057097089067L);
-        list.add(7570960803349168166L);
-        list.add(7556895017936732201L);
-        list.add(7570960810269491227L);
-        list.add(7569160312566464550L);
-        list.add(7570960793375916082L);
-        list.add(7571669053007495204L);
-        list.add(7556895013579194387L);
-        list.add(7559467278870986794L);
-        list.add(7550180191458328617L);
-        list.add(7556895013646155819L);
-        list.add(7570960812109348914L);
-        list.add(7550180221792256019L);
-        list.add(7570960823242473499L);
-        list.add(7559467245513228351L);
-        list.add(7550180219673264170L);
-        list.add(7570960784059777062L);
-        list.add(7570960821817622566L);
-        list.add(7570960801814118410L);
-        list.add(7569160310533177371L);
-        list.add(7556895021778911271L);
-        list.add(7569160324232003611L);
-        list.add(7556895112569552959L);
-        list.add(7570960792435343411L);
-        list.add(7570960816651534374L);
-        list.add(7566929465458311194L);
-        list.add(7571669046182838326L);
-        list.add(7559467270671908907L);
-        list.add(7556895112220098596L);
-        list.add(7571669051745828927L);
-        list.add(7556895020760203306L);
-        list.add(7550180250090340388L);
-        list.add(7569160299489050634L);
-        list.add(7571669049180979219L);
-        list.add(7556895016692711478L);
-        list.add(7571669052529246271L);
-        list.add(7571669044082098230L);
-        list.add(7559467277261013046L);
-        list.add(7570960816651550758L);
-        list.add(7571669052154822692L);
-        list.add(7569160296445755430L);
-        list.add(7571669061642977321L);
-        list.add(7571669056056901651L);
-        list.add(7571669044835876918L);
-        list.add(7559467274865295399L);
-        list.add(7571669023990775862L);
-        list.add(7571669055598542889L);
-        list.add(7569160321891467290L);
-        list.add(7559467302757384231L);
-        list.add(7569160298743382025L);
-        list.add(7569160328905834506L);
-        list.add(7556895017432907815L);
-        list.add(7566929423863857161L);
-        list.add(7550180246878093351L);
-        list.add(7569160318128963611L);
-        list.add(7556895021648969764L);
-        list.add(7556894997926019113L);
-        list.add(7570960790376841225L);
-        list.add(7559467289721438249L);
-        list.add(7556895005371449385L);
-        list.add(7569160312840536102L);
-        list.add(7571669041846583332L);
-        list.add(7559467267710861351L);
-        list.add(7570960790087417907L);
-        list.add(7569160320361660454L);
-        list.add(7550180244373372991L);
-        list.add(7569160301957890098L);
-        list.add(7559467241433448467L);
-        list.add(7556895012971380775L);
+        list.add(7566848606024794138L);
+        list.add(7566848458911367211L);
+
+
         Map<Long, JSONObject> projectMap = new HashMap<>();
         List<List<Long>> partitions = Lists.partition(list, 20);
         for (int i = 0; i < partitions.size(); i++) {
             List<Long> ids = partitions.get(i);
-            bytedanceProjectService.getPromotionList(1805247055831242L, token, ids, projectMap, 1);
+            bytedanceProjectService.getPromotionList(1832252227629066L, token, ids, projectMap, 1);
 
         }