浏览代码

规则引擎2.0前后端交互代码

zhaoxian 3 年之前
父节点
当前提交
f2150f1ea4
共有 14 个文件被更改,包括 261 次插入2 次删除
  1. 1 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
  2. 3 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/controller/RuleIndicatorController.java
  3. 141 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/entity/AlarmRuleOperationRecord.java
  4. 12 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/entity/RuleAccountThreshold.java
  5. 4 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/entity/RuleBase.java
  6. 15 1
      jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/entity/RuleGroup.java
  7. 5 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/entity/RuleIndicator.java
  8. 15 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/mapper/AlarmRuleOperationRecordMapper.java
  9. 5 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/mapper/xml/AlarmRuleOperationRecordMapper.xml
  10. 15 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/service/IAlarmRuleOperationRecordService.java
  11. 19 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/service/impl/AlarmRuleOperationRecordServiceImpl.java
  12. 18 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleAccountThresholdServiceImpl.java
  13. 4 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleGroupServiceImpl.java
  14. 4 1
      jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleTemplateServiceImpl.java

+ 1 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java

@@ -211,6 +211,7 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/kuaishou/batch/*", "anon");
         filterChainDefinitionMap.put("/kuaishou/batch/*", "anon");
         filterChainDefinitionMap.put("/dimension/kuaiShouDimensionAccount/*", "anon");
         filterChainDefinitionMap.put("/dimension/kuaiShouDimensionAccount/*", "anon");
         filterChainDefinitionMap.put("/ai/projectCreate/*", "anon");
         filterChainDefinitionMap.put("/ai/projectCreate/*", "anon");
+        filterChainDefinitionMap.put("/ruleIndicator/**", "anon");
 
 
         // 添加自己的过滤器并且取名为jwt
         // 添加自己的过滤器并且取名为jwt
         Map<String, Filter> filterMap = new HashMap<>(1);
         Map<String, Filter> filterMap = new HashMap<>(1);

+ 3 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/controller/RuleIndicatorController.java

@@ -54,8 +54,10 @@ public class RuleIndicatorController {
     public Result<JSONArray> queryPageList(RuleIndicator ruleIndicator) {
     public Result<JSONArray> queryPageList(RuleIndicator ruleIndicator) {
         Result<JSONArray> result = new Result<>();
         Result<JSONArray> result = new Result<>();
         Integer mediaType = ruleIndicator.getMediaType();
         Integer mediaType = ruleIndicator.getMediaType();
+        Integer operation = ruleIndicator.getOperation();
         QueryWrapper<RuleIndicator> queryWrapper = new QueryWrapper();
         QueryWrapper<RuleIndicator> queryWrapper = new QueryWrapper();
         queryWrapper.eq("media_type", mediaType);
         queryWrapper.eq("media_type", mediaType);
+        queryWrapper.eq("operation", operation);
         queryWrapper.groupBy("dimension");
         queryWrapper.groupBy("dimension");
         List<RuleIndicator> list = ruleIndicatorService.list(queryWrapper);
         List<RuleIndicator> list = ruleIndicatorService.list(queryWrapper);
         JSONArray dataArr = new JSONArray();
         JSONArray dataArr = new JSONArray();
@@ -65,6 +67,7 @@ public class RuleIndicatorController {
             QueryWrapper<RuleIndicator> queryWrapperData = new QueryWrapper();
             QueryWrapper<RuleIndicator> queryWrapperData = new QueryWrapper();
             queryWrapperData.eq("media_type", mediaType);
             queryWrapperData.eq("media_type", mediaType);
             queryWrapperData.eq("dimension", dimension);
             queryWrapperData.eq("dimension", dimension);
+            queryWrapperData.eq("operation", operation);
             List<RuleIndicator> dataList = ruleIndicatorService.list(queryWrapperData);
             List<RuleIndicator> dataList = ruleIndicatorService.list(queryWrapperData);
             if (!Check.isNull(dataList)) {
             if (!Check.isNull(dataList)) {
                 dimensionJson.put("dimension", dimension);
                 dimensionJson.put("dimension", dimension);

+ 141 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/entity/AlarmRuleOperationRecord.java

@@ -0,0 +1,141 @@
+package cn.com.ctop.alarm.modules.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 预警操作记录表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-08-10
+ */
+@Data
+@TableName("ctop_alarm_rule_operation_record")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_alarm_rule_operation_record对象", description = "预警操作记录表")
+public class AlarmRuleOperationRecord {
+
+    /**
+     * 主键id
+     */
+    private Long id;
+    /**
+     * 账户ID
+     */
+    @Excel(name = "账户ID", width = 15)
+    @ApiModelProperty(value = "账户ID")
+    private Long accountId;
+    /**
+     * 计划ID
+     */
+    @Excel(name = "计划ID", width = 15)
+    @ApiModelProperty(value = "计划ID")
+    private Long planId;
+    /**
+     * 组ID
+     */
+    @Excel(name = "组ID", width = 15)
+    @ApiModelProperty(value = "组ID")
+    private Long unitId;
+    /**
+     * 规则组id
+     */
+    @Excel(name = "规则组id", width = 15)
+    @ApiModelProperty(value = "规则组id")
+    private Long groupId;
+    /**
+     * 指标code
+     */
+    @Excel(name = "指标code", width = 15)
+    @ApiModelProperty(value = "指标code")
+    private String indicatorCode;
+    /**
+     * 指标名称
+     */
+    @Excel(name = "指标名称", width = 15)
+    @ApiModelProperty(value = "指标名称")
+    private String indicatorName;
+    /**
+     * 修改前的值
+     */
+    @Excel(name = "修改前的值", width = 15)
+    @ApiModelProperty(value = "修改前的值")
+    private String beforeValue;
+    /**
+     * 操作类型:up-提高,down-降低,to-调整至
+     */
+    @Excel(name = "操作类型:up-提高,down-降低,to-调整至", width = 15)
+    @ApiModelProperty(value = "操作类型:up-提高,down-降低,to-调整至")
+    private String operationType;
+    /**
+     * 操作内容:price-金额,percent-百分数
+     */
+    @Excel(name = "操作内容:price-金额,percent-百分数", width = 15)
+    @ApiModelProperty(value = "操作内容:price-金额,percent-百分数")
+    private String operationValue;
+    /**
+     * 修改后的值
+     */
+    @Excel(name = "修改后的值", width = 15)
+    @ApiModelProperty(value = "修改后的值")
+    private String afterValue;
+    /**
+     * 操作阈值
+     */
+    @Excel(name = "操作阈值", width = 15)
+    @ApiModelProperty(value = "操作阈值")
+    private String operationThreshold;
+    /**
+     * 峰值
+     */
+    @Excel(name = "峰值", width = 15)
+    @ApiModelProperty(value = "峰值")
+    private String MaxValue;
+    /**
+     * 峰值
+     */
+    @Excel(name = "最小值", width = 15)
+    @ApiModelProperty(value = "最小值")
+    private String minValue;
+    /**
+     * 操作时间
+     */
+    @Excel(name = "操作时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "操作时间")
+    private Date valueTime;
+    /**
+     * 媒体类型
+     */
+    @Excel(name = "媒体类型", width = 15)
+    @ApiModelProperty(value = "媒体类型")
+    private String mediaType;
+    /**
+     * createTime
+     */
+    @Excel(name = "createTime", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @Excel(name = "updateTime", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 12 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/entity/RuleAccountThreshold.java

@@ -55,6 +55,18 @@ public class RuleAccountThreshold {
     @ApiModelProperty(value = "阈值")
     @ApiModelProperty(value = "阈值")
     private String threshold;
     private String threshold;
     /**
     /**
+     * 操作阈值
+     */
+    private String operationThreshold;
+    /**
+     * 峰值
+     */
+    private String maxValue;
+    /**
+     * 低值
+     */
+    private String minValue;
+    /**
      * createTime
      * createTime
      */
      */
     @ApiModelProperty(value = "createTime")
     @ApiModelProperty(value = "createTime")

+ 4 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/entity/RuleBase.java

@@ -48,6 +48,10 @@ public class RuleBase {
     @ApiModelProperty(value = "指标code")
     @ApiModelProperty(value = "指标code")
     private String indicatorCode;
     private String indicatorCode;
     /**
     /**
+     * 比较指标code
+     */
+    private String cindicatorCode;
+    /**
      * 判断条件 大于 等于 小于等
      * 判断条件 大于 等于 小于等
      */
      */
     @Excel(name = "判断条件 大于 等于 小于等", width = 15)
     @Excel(name = "判断条件 大于 等于 小于等", width = 15)

+ 15 - 1
jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/entity/RuleGroup.java

@@ -55,9 +55,23 @@ public class RuleGroup {
     @ApiModelProperty(value = "规则关系 当rule_type 为group时必填 and同时命中  or 命中一条")
     @ApiModelProperty(value = "规则关系 当rule_type 为group时必填 and同时命中  or 命中一条")
     private String ruleRelationship;
     private String ruleRelationship;
     /**
     /**
-     * 操作内容:SEND发送,PAUSE关停并发送
+     * 操作内容:SEND-发送,PAUSE-关停并发送,BUDGET-修改预算,BID-出价,TIME-投放时间
      */
      */
     private String operate;
     private String operate;
+
+    /**
+     * 是否有后续操作,0无,1有
+     */
+    private Integer operation;
+
+    /**
+     * 操作类型:up-提高,down-降低,to-调整至
+     */
+    private String operationType;
+    /**
+     * 操作内容:price-金额,percent-百分数
+     */
+    private String operationValue;
     /**
     /**
      * 预警发送方式: SMS:短信,WeChat:企业微信,EMAIL:电子邮件,TEL:电话
      * 预警发送方式: SMS:短信,WeChat:企业微信,EMAIL:电子邮件,TEL:电话
      */
      */

+ 5 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/entity/RuleIndicator.java

@@ -38,6 +38,11 @@ public class RuleIndicator {
     @Excel(name = "1:头条2:快手", width = 15)
     @Excel(name = "1:头条2:快手", width = 15)
     @ApiModelProperty(value = "1:头条2:快手")
     @ApiModelProperty(value = "1:头条2:快手")
     private Integer mediaType;
     private Integer mediaType;
+
+    /**
+     * 是否可操作指标,0否,1是
+     */
+    private Integer operation;
     /**
     /**
      * 指标名称
      * 指标名称
      */
      */

+ 15 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/mapper/AlarmRuleOperationRecordMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.alarm.modules.mapper;
+
+import cn.com.ctop.alarm.modules.entity.AlarmRuleOperationRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 预警操作记录表
+ *
+ * @author jeecg-boot
+ * 2021-08-10
+ * @version V1.0
+ */
+public interface AlarmRuleOperationRecordMapper extends BaseMapper<AlarmRuleOperationRecord> {
+
+}

+ 5 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/mapper/xml/AlarmRuleOperationRecordMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.alarm.modules.mapper.AlarmRuleOperationRecordMapper">
+
+</mapper>

+ 15 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/service/IAlarmRuleOperationRecordService.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.alarm.modules.service;
+
+import cn.com.ctop.alarm.modules.entity.AlarmRuleOperationRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 预警操作记录表
+ *
+ * @author jeecg-boot
+ * 2021-08-10
+ * @version V1.0
+ */
+public interface IAlarmRuleOperationRecordService extends IService<AlarmRuleOperationRecord> {
+
+}

+ 19 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/service/impl/AlarmRuleOperationRecordServiceImpl.java

@@ -0,0 +1,19 @@
+package cn.com.ctop.alarm.modules.service.impl;
+
+import cn.com.ctop.alarm.modules.entity.AlarmRuleOperationRecord;
+import cn.com.ctop.alarm.modules.mapper.AlarmRuleOperationRecordMapper;
+import cn.com.ctop.alarm.modules.service.IAlarmRuleOperationRecordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 预警操作记录表
+ *
+ * @author jeecg-boot
+ * 2021-08-10
+ * @version V1.0
+ */
+@Service
+public class AlarmRuleOperationRecordServiceImpl extends ServiceImpl<AlarmRuleOperationRecordMapper, AlarmRuleOperationRecord> implements IAlarmRuleOperationRecordService {
+
+}

+ 18 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleAccountThresholdServiceImpl.java

@@ -102,12 +102,30 @@ public class RuleAccountThresholdServiceImpl extends ServiceImpl<RuleAccountThre
                         continue;
                         continue;
                     }
                     }
                     String threshold = ruleJson.getString("threshold");
                     String threshold = ruleJson.getString("threshold");
+                    String operationThreshold = ruleJson.getString("operationThreshold");
+                    String maxValue = ruleJson.getString("maxValue");
+                    String minValue = ruleJson.getString("minValue");
                     RuleAccountThreshold updateThreshold = new RuleAccountThreshold();
                     RuleAccountThreshold updateThreshold = new RuleAccountThreshold();
                     if (Check.isNull(threshold)) {
                     if (Check.isNull(threshold)) {
                         updateThreshold.setThreshold("");
                         updateThreshold.setThreshold("");
                     } else {
                     } else {
                         updateThreshold.setThreshold(threshold);
                         updateThreshold.setThreshold(threshold);
                     }
                     }
+                    if (Check.isNull(operationThreshold)) {
+                        updateThreshold.setOperationThreshold("");
+                    } else {
+                        updateThreshold.setOperationThreshold(operationThreshold);
+                    }
+                    if (Check.isNull(maxValue)) {
+                        updateThreshold.setMaxValue("");
+                    } else {
+                        updateThreshold.setMaxValue(maxValue);
+                    }
+                    if (Check.isNull(minValue)) {
+                        updateThreshold.setMinValue("");
+                    } else {
+                        updateThreshold.setMinValue(minValue);
+                    }
                     QueryWrapper<RuleAccountThreshold> updateQueryWrapper = new QueryWrapper();
                     QueryWrapper<RuleAccountThreshold> updateQueryWrapper = new QueryWrapper();
                     updateQueryWrapper.eq("account_id", accountId);
                     updateQueryWrapper.eq("account_id", accountId);
                     updateQueryWrapper.eq("rule_id", ruleId);
                     updateQueryWrapper.eq("rule_id", ruleId);

+ 4 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleGroupServiceImpl.java

@@ -1045,6 +1045,7 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
                     ruleBase.setRuleDimension(ruleDetailJson.getString("ruleDimension"));
                     ruleBase.setRuleDimension(ruleDetailJson.getString("ruleDimension"));
                     ruleBase.setJudgeFormat(ruleDetailJson.getInteger("judgeFormat"));
                     ruleBase.setJudgeFormat(ruleDetailJson.getInteger("judgeFormat"));
                     ruleBase.setIsUnlimited(ruleDetailJson.getInteger("isUnlimited"));
                     ruleBase.setIsUnlimited(ruleDetailJson.getInteger("isUnlimited"));
+                    ruleBase.setCindicatorCode(Check.isNull(ruleDetailJson.getString("cindicatorCode"))?ruleDetailJson.getString("indicatorCode"):ruleDetailJson.getString("cindicatorCode"));
                     int insert = ruleBaseMapper.insert(ruleBase);    // 添加基础规则
                     int insert = ruleBaseMapper.insert(ruleBase);    // 添加基础规则
 
 
                     if (insert > 0) {
                     if (insert > 0) {
@@ -1088,6 +1089,9 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
                 ruleGroup.setIsRequired(groupJson.getInteger("isRequired"));
                 ruleGroup.setIsRequired(groupJson.getInteger("isRequired"));
                 ruleGroup.setOperate(groupJson.getString("operate"));
                 ruleGroup.setOperate(groupJson.getString("operate"));
                 ruleGroup.setSendType(groupJson.getString("sendType"));
                 ruleGroup.setSendType(groupJson.getString("sendType"));
+                ruleGroup.setOperation(groupJson.getInteger("operation"));
+                ruleGroup.setOperationType(groupJson.getString("operationType"));
+                ruleGroup.setOperationValue(groupJson.getString("operationValue"));
                 boolean save = ruleGroupService.save(ruleGroup); // 新增规则组
                 boolean save = ruleGroupService.save(ruleGroup); // 新增规则组
                 if (save) {
                 if (save) {
                     for (int j = 0; j < ruleIds.size(); j++) {
                     for (int j = 0; j < ruleIds.size(); j++) {

+ 4 - 1
jeecg-boot-module-system/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleTemplateServiceImpl.java

@@ -45,7 +45,6 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
 
 
     /**
     /**
      * 创建规则模板
      * 创建规则模板
-     *
      * @param requestJson
      * @param requestJson
      * @return
      * @return
      */
      */
@@ -88,6 +87,7 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
                                 RuleBase ruleBase = new RuleBase();
                                 RuleBase ruleBase = new RuleBase();
                                 ruleBase.setRuleName(ruleDetailJson.getString("ruleName"));
                                 ruleBase.setRuleName(ruleDetailJson.getString("ruleName"));
                                 ruleBase.setIndicatorCode(ruleDetailJson.getString("indicatorCode"));
                                 ruleBase.setIndicatorCode(ruleDetailJson.getString("indicatorCode"));
+                                ruleBase.setCindicatorCode(Check.isNull(ruleDetailJson.getString("cindicatorCode")) ? ruleDetailJson.getString("indicatorCode") : ruleDetailJson.getString("cindicatorCode"));
                                 ruleBase.setRuleCondition(ruleDetailJson.getString("ruleCondition"));
                                 ruleBase.setRuleCondition(ruleDetailJson.getString("ruleCondition"));
                                 ruleBase.setThreshold(ruleDetailJson.getString("threshold"));
                                 ruleBase.setThreshold(ruleDetailJson.getString("threshold"));
                                 ruleBase.setVariableType(ruleDetailJson.getInteger("variableType"));
                                 ruleBase.setVariableType(ruleDetailJson.getInteger("variableType"));
@@ -110,6 +110,9 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
                         ruleGroup.setIsRequired(ruleGroupJson.getInteger("isRequired"));
                         ruleGroup.setIsRequired(ruleGroupJson.getInteger("isRequired"));
                         ruleGroup.setSendType(ruleGroupJson.getString("sendType"));
                         ruleGroup.setSendType(ruleGroupJson.getString("sendType"));
                         ruleGroup.setOperate(ruleGroupJson.getString("operate"));
                         ruleGroup.setOperate(ruleGroupJson.getString("operate"));
+                        ruleGroup.setOperation(ruleGroupJson.getInteger("operation"));
+                        ruleGroup.setOperationType(ruleGroupJson.getString("operationType"));
+                        ruleGroup.setOperationValue(ruleGroupJson.getString("operationValue"));
                         boolean save = ruleGroupService.save(ruleGroup);
                         boolean save = ruleGroupService.save(ruleGroup);
                         if (save) {
                         if (save) {
                             String ruleIdsArrStr = ruleGroup.getRuleIds();
                             String ruleIdsArrStr = ruleGroup.getRuleIds();