瀏覽代碼

Merge branch 'master_rule_engine' of http://git.tjyourong.com.cn/ctop/adsp-boot into master_rule_engine

zhaoxian 4 年之前
父節點
當前提交
a8a7a4dc67

+ 22 - 0
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -6,6 +6,7 @@ import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.message.handle.impl.EmailSendMsgHandle;
 import cn.com.ctop.common.module.service.*;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
+import cn.com.ctop.common.module.utils.HttpUtils;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouHistoryReportTaskService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
 import cn.com.ctop.kuaishou.modules.graphql.service.IKuaishouWebInterfaceService;
@@ -14,6 +15,7 @@ import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataServ
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceFundDailyService;
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceReportService;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
+import cn.com.ctop.toutiao.modules.report.service.IRuleByteDanceAccountService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.xxl.job.core.log.XxlJobLogger;
@@ -115,6 +117,15 @@ public class SampleTest {
     }
 
     @Test
+    public void testXxlJobDistribute(){
+        String url = "http://127.0.0.1:8090/xxl-job-admin/jobinfo/trigger?id=88&executorParam=";
+        for(int i=0;i<100;i++){
+            String result = HttpUtils.httpPostRequest(url+i,new HashMap<>(),new HashMap<>());
+            System.out.println(result);
+        }
+    }
+
+    @Test
     public void testLoadRulePlanData(){
         Date date = new Date();
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
@@ -288,4 +299,15 @@ public class SampleTest {
         }
         XxlJobLogger.log("物料数据同步完成");
     }
+
+    @Autowired
+    IRuleByteDanceAccountService ruleByteDanceAccountService;
+
+    @Test
+    public void cleanRuleDataAccount(){
+        List<CtopOauthToken> tokens = oauthTokenService.selectToutiaoToken();
+        for(CtopOauthToken oauthToken:tokens){
+            ruleByteDanceAccountService.cleanRuleDataAccount(oauthToken.getAccountId());
+        }
+    }
 }

+ 25 - 0
module-alarm/src/main/java/cn/com/ctop/alarm/modules/controller/RuleTemplateController.java

@@ -87,6 +87,31 @@ public class RuleTemplateController {
     }
 
 
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "规则模板-通过id查询")
+    @ApiOperation(value = "规则模板-通过id查询", notes = "规则模板-通过id查询")
+    @GetMapping(value = "/previewTemplate")
+    public Result<JSONObject> previewTemplate(@RequestParam(name = "id", required = true) String id) {
+        Result<JSONObject> result = new Result<>();
+        try {
+            JSONObject ruleTemplateJson = ruleTemplateService.previewTemplate(id);
+            result.setSuccess(true);
+            result.setResult(ruleTemplateJson);
+        } catch (Exception e) {
+            e.printStackTrace();
+            result.setSuccess(false);
+            result.setMessage(e.getMessage());
+        }
+
+        return result;
+    }
+
     /**
      * 根据 模板id  账户id 查询详情
      *

+ 30 - 1
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/IRuleTemplateService.java

@@ -7,14 +7,43 @@ import com.baomidou.mybatisplus.extension.service.IService;
 /**
  * @Description: 规则模板
  * @Author: jeecg-boot
- * @Date:   2020-11-15
+ * @Date: 2020-11-15
  * @Version: V1.0
  */
 public interface IRuleTemplateService extends IService<RuleTemplate> {
 
+    /**
+     * 创建规则模板
+     *
+     * @param requestJson
+     * @return
+     */
     JSONObject createTemplate(JSONObject requestJson);
 
+    /**
+     * 查询配置模板详情
+     *
+     * @param id
+     * @return
+     * @throws Exception
+     */
     JSONObject queryDetailById(String id) throws Exception;
 
+    /**
+     * 查询账户下 配置模板详情
+     *
+     * @param accountId
+     * @param templateId
+     * @return
+     * @throws Exception
+     */
     JSONObject queryDetailByAccountIdAndTemplateId(Long accountId, Long templateId) throws Exception;
+
+    /**
+     * 预览模板
+     *
+     * @param id
+     * @return
+     */
+    JSONObject previewTemplate(String id) throws Exception;
 }

+ 16 - 9
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleAccountThresholdServiceImpl.java

@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -23,6 +24,7 @@ import java.util.UUID;
  * @version V1.0
  * @date 2020-11-15
  */
+@Slf4j
 @Service
 public class RuleAccountThresholdServiceImpl extends ServiceImpl<RuleAccountThresholdMapper, RuleAccountThreshold> implements IRuleAccountThresholdService {
     @Autowired
@@ -56,17 +58,20 @@ public class RuleAccountThresholdServiceImpl extends ServiceImpl<RuleAccountThre
             }
             Long groupId = groupJson.getLong("groupId");
             Integer isCopy = groupJson.getInteger("isCopy");
-            String batchNo = UUID.randomUUID().toString().replace("-", "");
+            if (isCopy == 1) {
+                Map<String, Object> deleteMap = new HashMap<>();
+                deleteMap.put("account_id", accountId);
+                deleteMap.put("group_id", groupId);
+                ruleAccountThresholdMapper.deleteByMap(deleteMap); // 删除此账户下 此组绑定的失效阈值
+            }
+
             for (int j = 0; j < ruleDetail.size(); j++) {
                 if (isCopy == 1) { // 规则组可复制
-                    JSONArray ruleDetailArr = ruleDetail.getJSONArray(i);
+                    JSONArray ruleDetailArr = ruleDetail.getJSONArray(j);
                     if (Check.isNull(ruleDetailArr)) {
                         continue;
                     }
-                    Map<String, Object> deleteMap = new HashMap<>();
-                    deleteMap.put("account_id", accountId);
-                    deleteMap.put("group_id", groupId);
-                    ruleAccountThresholdMapper.deleteByMap(deleteMap);
+                    String batchNo = UUID.randomUUID().toString().replace("-", "");
                     for (int k = 0; k < ruleDetailArr.size(); k++) {
                         JSONObject ruleJson = ruleDetailArr.getJSONObject(k);
                         if (Check.isNull(ruleJson)) {
@@ -85,15 +90,15 @@ public class RuleAccountThresholdServiceImpl extends ServiceImpl<RuleAccountThre
                         addRuleAccountThreshold.setGroupId(groupId);
                         addRuleAccountThreshold.setThreshold(threshold);
                         addRuleAccountThreshold.setRuleId(ruleId);
-                        addRuleAccountThreshold.setBatchNo(batchNo);
+                        if (isCopy == 1) {
+                            addRuleAccountThreshold.setBatchNo(batchNo);
+                        }
                         int insert = ruleAccountThresholdMapper.insert(addRuleAccountThreshold);
                         if (insert > 0) {
                             updateCount += 1;
                         }
                     }
                 } else if (isCopy == 0) {
-
-
                     JSONObject ruleJson = ruleDetail.getJSONObject(j);
                     Long ruleId = ruleJson.getLong("ruleId");
                     if (Check.isNull(ruleId)) {
@@ -108,6 +113,7 @@ public class RuleAccountThresholdServiceImpl extends ServiceImpl<RuleAccountThre
                     QueryWrapper<RuleAccountThreshold> updateQueryWrapper = new QueryWrapper();
                     updateQueryWrapper.eq("account_id", accountId);
                     updateQueryWrapper.eq("rule_id", ruleId);
+                    updateQueryWrapper.eq("group_id", groupId);
                     int update = ruleAccountThresholdMapper.update(updateThreshold, updateQueryWrapper);
                     if (update > 0) {
                         updateCount += 1;
@@ -116,6 +122,7 @@ public class RuleAccountThresholdServiceImpl extends ServiceImpl<RuleAccountThre
             }
         }
 
+        log.info("修改账户模板阈值完成,账户id:{},修改规则条数:{}", accountId, updateCount);
         JSONObject returnJson = new JSONObject();
         returnJson.put("code", 0);
         returnJson.put("updateCount", updateCount);

+ 28 - 16
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleGroupServiceImpl.java

@@ -1,18 +1,8 @@
 package cn.com.ctop.alarm.modules.service.impl;
 
 import cn.com.ctop.alarm.modules.constant.MatchLogic;
-import cn.com.ctop.alarm.modules.entity.RuleAccountTemplate;
-import cn.com.ctop.alarm.modules.entity.RuleAccountThreshold;
-import cn.com.ctop.alarm.modules.entity.RuleBase;
-import cn.com.ctop.alarm.modules.entity.RuleGroup;
-import cn.com.ctop.alarm.modules.entity.RuleIndicator;
-import cn.com.ctop.alarm.modules.entity.RuleTemplate;
-import cn.com.ctop.alarm.modules.mapper.RuleAccountTemplateMapper;
-import cn.com.ctop.alarm.modules.mapper.RuleAccountThresholdMapper;
-import cn.com.ctop.alarm.modules.mapper.RuleBaseMapper;
-import cn.com.ctop.alarm.modules.mapper.RuleGroupMapper;
-import cn.com.ctop.alarm.modules.mapper.RuleIndicatorMapper;
-import cn.com.ctop.alarm.modules.mapper.RuleTemplateMapper;
+import cn.com.ctop.alarm.modules.entity.*;
+import cn.com.ctop.alarm.modules.mapper.*;
 import cn.com.ctop.alarm.modules.service.IRuleAccountTemplateService;
 import cn.com.ctop.alarm.modules.service.IRuleGroupService;
 import cn.com.ctop.common.module.entity.CtopOauthToken;
@@ -34,6 +24,7 @@ import org.springframework.stereotype.Service;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 /**
  * 规则组
@@ -532,7 +523,15 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
                 if (Check.isNull(ruleDetail)) {
                     throw new Exception("规则组下指标不能为空");
                 }
+
+                Integer isCopy = groupJson.getInteger("isCopy");
+                String batchId = null;
+                if (isCopy == 1) {
+                    batchId = UUID.randomUUID().toString().replace("-", "");
+
+                }
                 JSONArray ruleIds = new JSONArray();
+                JSONArray thresholdIds = new JSONArray();
                 for (int j = 0; j < ruleDetail.size(); j++) {
                     JSONObject ruleDetailJson = ruleDetail.getJSONObject(j);
                     RuleBase ruleBase = new RuleBase();
@@ -544,7 +543,8 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
                     ruleBase.setRuleDimension(ruleDetailJson.getString("ruleDimension"));
                     ruleBase.setJudgeFormat(ruleDetailJson.getInteger("judgeFormat"));
                     ruleBase.setIsUnlimited(ruleDetailJson.getInteger("isUnlimited"));
-                    int insert = ruleBaseMapper.insert(ruleBase);  // 添加基础规则
+                    int insert = ruleBaseMapper.insert(ruleBase);    // 添加基础规则
+
                     if (insert > 0) {
                         if (!Check.isNull(accountList)) {
                             for (RuleAccountTemplate accountTemplate : accountList) {
@@ -559,8 +559,14 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
                                 }
                                 RuleAccountThreshold threshold = new RuleAccountThreshold();
                                 threshold.setAccountId(accountId);
+                                if (isCopy == 1) {
+                                    threshold.setBatchNo(batchId);
+                                }
                                 threshold.setRuleId(ruleBase.getId());
-                                ruleAccountThresholdMapper.insert(threshold);  // 默认将新建的规则同步到已应用的账户下
+                                int thresholdInsert = ruleAccountThresholdMapper.insert(threshold);// 默认将新建的规则同步到已应用的账户下
+                                if (thresholdInsert > 0) {
+                                    thresholdIds.add(threshold.getId());
+                                }
                             }
                         }
                         ruleIds.add(ruleBase.getId()); // 获取基本规则集
@@ -577,15 +583,21 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
                 ruleGroup.setIsRequired(groupJson.getInteger("isRequired"));
                 boolean save = ruleGroupService.save(ruleGroup); // 新增规则组
                 if (save) {
-
                     for (int j = 0; j < ruleIds.size(); j++) {
                         Long ruleId = ruleIds.getLong(j);
                         RuleBase updateRuleBase = new RuleBase();
                         updateRuleBase.setId(ruleId);
                         updateRuleBase.setGroupId(ruleGroup.getId());
-                        ruleBaseMapper.updateById(updateRuleBase);
+                        ruleBaseMapper.updateById(updateRuleBase); // 组同步成功之后 基础规则关联到组id
                     }
+                    for (int j = 0; j < thresholdIds.size(); j++) {
+                        Long threshold = thresholdIds.getLong(j);
+                        RuleAccountThreshold updateThreshold = new RuleAccountThreshold();
+                        updateThreshold.setId(threshold);
+                        updateThreshold.setGroupId(ruleGroup.getId());
+                        ruleAccountThresholdMapper.updateById(updateThreshold); // 同步到阈值之后 阈值关联到组id
 
+                    }
                     JSONArray groupIds = JSONArray.parseArray(template.getGroupIds());
                     groupIds.add(ruleGroup.getId());
                     template.setGroupIds(groupIds.toJSONString());

+ 122 - 6
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleTemplateServiceImpl.java

@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -21,6 +22,7 @@ import java.util.List;
  * @version V1.0
  * @date 2020-11-15
  */
+@Slf4j
 @Service
 public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, RuleTemplate> implements IRuleTemplateService {
     @Autowired
@@ -140,6 +142,7 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
 
                 }
             }
+            log.info("创建规则模板成功,模板名称:{}", templateName);
             returnJson.put("code", 0);
             returnJson.put("message", "创建成功");
 
@@ -284,6 +287,7 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
             groupJson.put("isCopy", group.getIsCopy());
             groupJson.put("isRequired", group.getIsRequired());
             JSONArray ruleDetail = new JSONArray();
+
             if (group.getIsCopy() == 0) { // 规则不可复制
                 JSONArray ruleIds = JSONArray.parseArray(group.getRuleIds());
                 if (Check.isNull(ruleIds)) {
@@ -349,14 +353,12 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
                 if (Check.isNull(batchNoList)) {
                     continue;
                 }
-
-                JSONArray ruleArr = new JSONArray();
                 for (int j = 0; j < batchNoList.size(); j++) {
                     String batchNo = (String) batchNoList.get(j);
                     if (Check.isNull(batchNo)) {
                         continue;
                     }
-
+                    JSONArray ruleArr = new JSONArray();
                     QueryWrapper<RuleAccountThreshold> queryWrapper = new QueryWrapper<>();
                     queryWrapper.eq("account_id", accountId);
                     queryWrapper.eq("group_id", groupId);
@@ -365,7 +367,6 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
                     if (Check.isNull(list)) {
                         continue;
                     }
-
                     for (RuleAccountThreshold threshold : list) {
                         RuleBase ruleBase = ruleBaseService.getById(threshold.getRuleId()); // 根据阈值集合ruleId 查询基础规则信息
                         if (Check.isNull(ruleBase)) {
@@ -387,8 +388,6 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
                         } else {
                             ruleJson.put("threshold", null);
                         }
-
-
                         ruleJson.put("ruleDimension", ruleBase.getRuleDimension());
                         ruleJson.put("variableType", ruleBase.getVariableType());
                         ruleJson.put("isUnlimited", ruleBase.getIsUnlimited());
@@ -420,4 +419,121 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
         return returnJson;
     }
 
+    @Override
+    public JSONObject previewTemplate(String id) throws Exception {
+        JSONObject returnJson = new JSONObject();
+        RuleTemplate template = ruleTemplateMapper.selectById(id);
+        if (Check.isNull(ruleTemplateMapper)) {
+            throw new Exception("获取模板基本信息为空");
+        }
+        returnJson.put("templateId", template.getId());
+        returnJson.put("templateName", template.getTemplateName());
+        returnJson.put("mediaType", template.getMediaType());
+        JSONArray groupIds = JSONArray.parseArray(template.getGroupIds());
+        if (Check.isNull(groupIds)) {
+            throw new Exception("未获取规则集");
+        }
+        JSONArray ruleList = new JSONArray();
+        for (int i = 0; i < groupIds.size(); i++) {
+            Long groupId = groupIds.getLong(i);
+            RuleGroup group = ruleGroupService.getById(groupId);
+            if (Check.isNull(group)) {
+                continue;
+            }
+            JSONObject groupJson = new JSONObject();
+            groupJson.put("groupId", group.getId());
+            groupJson.put("groupName", group.getGroupName());
+            groupJson.put("ruleType", group.getRuleType());
+            groupJson.put("ruleRelationship", group.getRuleRelationship());
+            groupJson.put("remark", group.getRemark());
+            groupJson.put("operate", group.getOperate());
+            groupJson.put("sendType", group.getSendType());
+            groupJson.put("isCopy", group.getIsCopy());
+            groupJson.put("isRequired", group.getIsRequired());
+            JSONArray ruleIds = JSONArray.parseArray(group.getRuleIds());
+            if (Check.isNull(ruleIds)) {
+                continue;
+            }
+            JSONArray ruleDetail = new JSONArray();
+            if (group.getIsCopy() == 0) {
+                for (int j = 0; j < ruleIds.size(); j++) {
+                    Long ruleId = ruleIds.getLong(j);
+                    RuleBase ruleBase = ruleBaseService.getById(ruleId);
+                    if (Check.isNull(ruleBase)) {
+                        continue;
+                    }
+                    JSONObject ruleJson = new JSONObject();
+                    ruleJson.put("ruleId", ruleBase.getId());
+                    ruleJson.put("ruleName", ruleBase.getRuleName());
+                    ruleJson.put("judgeFormat", ruleBase.getJudgeFormat());
+                    ruleJson.put("indicatorCode", ruleBase.getIndicatorCode());
+                    ruleJson.put("ruleCondition", ruleBase.getRuleCondition());
+                    ruleJson.put("threshold", ruleBase.getThreshold());
+                    ruleJson.put("ruleDimension", ruleBase.getRuleDimension());
+                    ruleJson.put("variableType", ruleBase.getVariableType());
+                    ruleJson.put("isUnlimited", ruleBase.getIsUnlimited());
+                    /**
+                     * 查询指标对应信息
+                     */
+                    QueryWrapper<RuleIndicator> indicatorQueryWrapper = new QueryWrapper<>();
+                    indicatorQueryWrapper.eq("code", ruleBase.getIndicatorCode());
+                    indicatorQueryWrapper.eq("dimension", ruleBase.getRuleDimension());
+                    indicatorQueryWrapper.last("limit 1");
+                    RuleIndicator ruleIndicator = ruleIndicatorService.getOne(indicatorQueryWrapper);
+                    if (!Check.isNull(ruleIndicator)) {
+                        ruleJson.put("dataType", ruleIndicator.getDataType());
+                        ruleJson.put("dictId", ruleIndicator.getDictId());
+                        ruleJson.put("dataUnit", ruleIndicator.getDataUnit());
+                        ruleJson.put("name", ruleIndicator.getName());
+                        ruleJson.put("modelType", ruleIndicator.getModelType());
+                    }
+
+                    ruleDetail.add(ruleJson);
+                }
+                groupJson.put("ruleDetail", ruleDetail);
+            } else if (group.getIsCopy() == 1) {
+                JSONArray array = new JSONArray();
+                for (int j = 0; j < ruleIds.size(); j++) {
+                    Long ruleId = ruleIds.getLong(j);
+                    RuleBase ruleBase = ruleBaseService.getById(ruleId);
+                    if (Check.isNull(ruleBase)) {
+                        continue;
+                    }
+                    JSONObject ruleJson = new JSONObject();
+                    ruleJson.put("ruleId", ruleBase.getId());
+                    ruleJson.put("ruleName", ruleBase.getRuleName());
+                    ruleJson.put("judgeFormat", ruleBase.getJudgeFormat());
+                    ruleJson.put("indicatorCode", ruleBase.getIndicatorCode());
+                    ruleJson.put("ruleCondition", ruleBase.getRuleCondition());
+                    ruleJson.put("threshold", ruleBase.getThreshold());
+                    ruleJson.put("ruleDimension", ruleBase.getRuleDimension());
+                    ruleJson.put("variableType", ruleBase.getVariableType());
+                    ruleJson.put("isUnlimited", ruleBase.getIsUnlimited());
+                    /**
+                     * 查询指标对应信息
+                     */
+                    QueryWrapper<RuleIndicator> indicatorQueryWrapper = new QueryWrapper<>();
+                    indicatorQueryWrapper.eq("code", ruleBase.getIndicatorCode());
+                    indicatorQueryWrapper.eq("dimension", ruleBase.getRuleDimension());
+                    indicatorQueryWrapper.last("limit 1");
+                    RuleIndicator ruleIndicator = ruleIndicatorService.getOne(indicatorQueryWrapper);
+                    if (!Check.isNull(ruleIndicator)) {
+                        ruleJson.put("dataType", ruleIndicator.getDataType());
+                        ruleJson.put("dictId", ruleIndicator.getDictId());
+                        ruleJson.put("dataUnit", ruleIndicator.getDataUnit());
+                        ruleJson.put("name", ruleIndicator.getName());
+                        ruleJson.put("modelType", ruleIndicator.getModelType());
+                    }
+
+                    array.add(ruleJson);
+                }
+                ruleDetail.add(array);
+                groupJson.put("ruleDetail", ruleDetail);
+            }
+            ruleList.add(groupJson);
+        }
+        returnJson.put("ruleList", ruleList);
+        return returnJson;
+    }
+
 }

+ 1 - 8
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDancePlanRuleDataJob.java

@@ -11,9 +11,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 
 @Component
 public class ByteDancePlanRuleDataJob {
@@ -21,7 +18,6 @@ public class ByteDancePlanRuleDataJob {
     private ICtopOauthTokenService tokenService;
     @Autowired
     private IReportService reportService;
-    static ExecutorService executorService = Executors.newFixedThreadPool(10);
 
     @XxlJob("bytedancePlanLoadJob")
     public ReturnT<String> execute(String param) throws Exception {
@@ -30,11 +26,8 @@ public class ByteDancePlanRuleDataJob {
             Long accountId = Long.parseLong(param);
             CtopOauthToken token = tokenService.getTokenByAccountId(accountId);
             reportService.getAdvertiserPlanRuleData(token,date,date,CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
-        }else{
-            List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
-            tokens.forEach(token -> executorService.submit(() -> reportService.getAdvertiserPlanRuleData(token,date,date, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY)));
         }
-        XxlJobLogger.log("头条全量计划数据获取完成");
+        XxlJobLogger.log("头条计划数据清洗完成:accountId=>{}",param);
         return ReturnT.SUCCESS;
     }
 }

+ 46 - 0
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceRuleDataJobDistribute.java

@@ -0,0 +1,46 @@
+package cn.com.ctop.job.bytedance.handler;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.utils.HttpUtils;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.xxl.job.core.log.XxlJobLogger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+
+@Component
+public class BytedanceRuleDataJobDistribute {
+    @Autowired
+    private ICtopOauthTokenService tokenService;
+    @XxlJob("bytedancePlanRuleDataJobDistribute")
+    public ReturnT<String> bytedancePlanRuleDataJobDistribute(String params) throws Exception {
+        List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
+        if(null!=tokens&&!tokens.isEmpty()){
+            //TODO 指定相应的任务id
+            String planUrl = "http://139.186.29.76:8090/jobinfo/trigger?id=87&executorParam=";
+            for(CtopOauthToken token:tokens){
+                String planResult = HttpUtils.httpPostRequest(planUrl+token.getAccountId(),new HashMap<>(),new HashMap<>());
+                XxlJobLogger.log("accountId:{};message:{}",token.getAccountId(),planResult);
+            }
+        }
+        return ReturnT.SUCCESS;
+    }
+
+    @XxlJob("bytedanceAccountRuleDataJobDistribute")
+    public ReturnT<String> bytedanceAccountRuleDataJobDistribute(String params) throws Exception {
+        List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
+        if(null!=tokens&&!tokens.isEmpty()){
+            //TODO
+            String accountUrl = "http://139.186.29.76:8090/jobinfo/trigger?id=87&executorParam=";
+            for(CtopOauthToken token:tokens){
+                String accountResult = HttpUtils.httpPostRequest(accountUrl+token.getAccountId(),new HashMap<>(),new HashMap<>());
+                XxlJobLogger.log("accountId:{};message:{}",token.getAccountId(),accountResult);
+            }
+        }
+        return ReturnT.SUCCESS;
+    }
+}

+ 4 - 13
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/RuleDataAccountCleanJob.java

@@ -3,7 +3,6 @@ package cn.com.ctop.job.bytedance.handler;
 /**
  *  Created by JQ.bi on 2020.11.16
  */
-import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.toutiao.modules.report.service.IRuleByteDanceAccountService;
 import com.xxl.job.core.biz.model.ReturnT;
@@ -12,8 +11,6 @@ import com.xxl.job.core.log.XxlJobLogger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-
-import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
@@ -31,18 +28,12 @@ public class RuleDataAccountCleanJob {
     @XxlJob("ruleDataAccountCleanJob")
     public ReturnT<String> execute(String param) throws Exception {
         XxlJobLogger.log("规则预警账户维度数据开始清洗");
-        //查询所有头条账户
-        List<CtopOauthToken> tokens = oauthTokenService.selectToutiaoToken();
-        if (null == tokens || tokens.isEmpty()) {
-            XxlJobLogger.log("未获取到可用的token");
+        if (null == param || "".equals(param.trim())) {
+            XxlJobLogger.log("参数异常");
             return ReturnT.FAIL;
         }
-        tokens.forEach(token->executorPool.submit(() -> {
-            ruleByteDanceAccountService.cleanRuleDataAccount(token.getAccountId());
-        }));
-        if(!executorPool.isShutdown()){
-            executorPool.shutdown();
-        }
+        Long accountId = Long.parseLong(param);
+        ruleByteDanceAccountService.cleanRuleDataAccount(accountId);
         XxlJobLogger.log("规则预警账户维度数据清洗结束");
         return ReturnT.SUCCESS;
     }