From aa1fdf5e9e535bc8c3b9c55f549e5b2e58e4603c Mon Sep 17 00:00:00 2001
From: wkc <978997012@qq.com>
Date: Thu, 26 Feb 2026 09:23:34 +0800
Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=A8=A1?=
=?UTF-8?q?=E5=9E=8B=E5=8F=82=E6=95=B0=E9=85=8D=E7=BD=AE=E5=8A=9F=E8=83=BD?=
=?UTF-8?q?=20-=20=E6=95=B0=E6=8D=AE=E5=BA=93=E8=AE=BE=E8=AE=A1=E4=B8=8E?=
=?UTF-8?q?=E5=90=8E=E7=AB=AF=E5=AE=9E=E4=BD=93=E7=B1=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
1. 创建ccdi-project Maven模块
- 新建模块并配置pom.xml依赖
- 添加到根pom.xml的modules列表
- 在ruoyi-admin中添加模块依赖
2. 创建数据库表和初始化数据
- 建表语句: ccdi_model_param表
- 3个风险监测模型共15条参数配置
- 资产异常变动模型(5个参数)
- 廉政风险评分模型(5个参数)
- 关联交易监测模型(5个参数)
3. 创建后端实体类和DTO/VO
- 实体类: CcdiModelParam.java
- 查询DTO: ModelParamQueryDTO.java
- 保存DTO: ModelParamSaveDTO.java (含验证注解)
- 参数VO: ModelParamVO.java
- 模型列表VO: ModelListVO.java
技术要点:
- 使用@Data注解简化代码
- 不继承BaseEntity,独立定义审计字段
- DTO添加@NotBlank/@NotNull验证注解
- 包名遵循规范: com.ruoyi.ccdi.project
- 项目编译通过: mvn clean compile
---
ccdi-project/pom.xml | 35 ++++++
.../ccdi/project/domain/CcdiModelParam.java | 113 ++++++++++++++++++
.../domain/dto/ModelParamQueryDTO.java | 46 +++++++
.../project/domain/dto/ModelParamSaveDTO.java | 96 +++++++++++++++
.../ccdi/project/domain/vo/ModelListVO.java | 31 +++++
.../ccdi/project/domain/vo/ModelParamVO.java | 108 +++++++++++++++++
pom.xml | 8 ++
ruoyi-admin/pom.xml | 6 +
sql/ccdi_model_param.sql | 54 +++++++++
9 files changed, 497 insertions(+)
create mode 100644 ccdi-project/pom.xml
create mode 100644 ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/CcdiModelParam.java
create mode 100644 ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamQueryDTO.java
create mode 100644 ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamSaveDTO.java
create mode 100644 ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelListVO.java
create mode 100644 ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelParamVO.java
create mode 100644 sql/ccdi_model_param.sql
diff --git a/ccdi-project/pom.xml b/ccdi-project/pom.xml
new file mode 100644
index 0000000..8a94029
--- /dev/null
+++ b/ccdi-project/pom.xml
@@ -0,0 +1,35 @@
+
+
+
+ ruoyi
+ com.ruoyi
+ 3.9.1
+
+ 4.0.0
+
+ ccdi-project
+
+
+ 纪检初核项目业务模块
+
+
+
+
+
+
+ com.ruoyi
+ ruoyi-common
+
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+
+
+
diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/CcdiModelParam.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/CcdiModelParam.java
new file mode 100644
index 0000000..cd2254b
--- /dev/null
+++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/CcdiModelParam.java
@@ -0,0 +1,113 @@
+package com.ruoyi.ccdi.project.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 模型参数配置实体类
+ *
+ * @author ruoyi
+ */
+@Data
+@TableName("ccdi_model_param")
+public class CcdiModelParam implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 模型代码
+ */
+ private String modelCode;
+
+ /**
+ * 模型名称
+ */
+ private String modelName;
+
+ /**
+ * 参数代码
+ */
+ private String paramCode;
+
+ /**
+ * 参数名称
+ */
+ private String paramName;
+
+ /**
+ * 参数值
+ */
+ private String paramValue;
+
+ /**
+ * 参数单位
+ */
+ private String paramUnit;
+
+ /**
+ * 参数类型(number-数值,string-字符串,boolean-布尔)
+ */
+ private String paramType;
+
+ /**
+ * 最小值(数值类型)
+ */
+ private BigDecimal minValue;
+
+ /**
+ * 最大值(数值类型)
+ */
+ private BigDecimal maxValue;
+
+ /**
+ * 参数描述
+ */
+ private String description;
+
+ /**
+ * 排序号
+ */
+ private Integer sortOrder;
+
+ /**
+ * 状态(0-正常,1-停用)
+ */
+ private String status;
+
+ /**
+ * 创建者
+ */
+ private String createBy;
+
+ /**
+ * 创建时间
+ */
+ private Date createTime;
+
+ /**
+ * 更新者
+ */
+ private String updateBy;
+
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+ /**
+ * 备注
+ */
+ private String remark;
+}
diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamQueryDTO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamQueryDTO.java
new file mode 100644
index 0000000..dc8b1db
--- /dev/null
+++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamQueryDTO.java
@@ -0,0 +1,46 @@
+package com.ruoyi.ccdi.project.domain.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 模型参数查询DTO
+ *
+ * @author ruoyi
+ */
+@Data
+public class ModelParamQueryDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 模型代码
+ */
+ private String modelCode;
+
+ /**
+ * 模型名称
+ */
+ private String modelName;
+
+ /**
+ * 参数代码
+ */
+ private String paramCode;
+
+ /**
+ * 参数名称
+ */
+ private String paramName;
+
+ /**
+ * 参数类型(number-数值,string-字符串,boolean-布尔)
+ */
+ private String paramType;
+
+ /**
+ * 状态(0-正常,1-停用)
+ */
+ private String status;
+}
diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamSaveDTO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamSaveDTO.java
new file mode 100644
index 0000000..5fc8f9f
--- /dev/null
+++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamSaveDTO.java
@@ -0,0 +1,96 @@
+package com.ruoyi.ccdi.project.domain.dto;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 模型参数保存DTO
+ *
+ * @author ruoyi
+ */
+@Data
+public class ModelParamSaveDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID(更新时必填)
+ */
+ private Long id;
+
+ /**
+ * 模型代码
+ */
+ @NotBlank(message = "模型代码不能为空")
+ private String modelCode;
+
+ /**
+ * 模型名称
+ */
+ @NotBlank(message = "模型名称不能为空")
+ private String modelName;
+
+ /**
+ * 参数代码
+ */
+ @NotBlank(message = "参数代码不能为空")
+ private String paramCode;
+
+ /**
+ * 参数名称
+ */
+ @NotBlank(message = "参数名称不能为空")
+ private String paramName;
+
+ /**
+ * 参数值
+ */
+ @NotBlank(message = "参数值不能为空")
+ private String paramValue;
+
+ /**
+ * 参数单位
+ */
+ private String paramUnit;
+
+ /**
+ * 参数类型(number-数值,string-字符串,boolean-布尔)
+ */
+ @NotBlank(message = "参数类型不能为空")
+ private String paramType;
+
+ /**
+ * 最小值(数值类型)
+ */
+ private BigDecimal minValue;
+
+ /**
+ * 最大值(数值类型)
+ */
+ private BigDecimal maxValue;
+
+ /**
+ * 参数描述
+ */
+ private String description;
+
+ /**
+ * 排序号
+ */
+ @NotNull(message = "排序号不能为空")
+ private Integer sortOrder;
+
+ /**
+ * 状态(0-正常,1-停用)
+ */
+ private String status;
+
+ /**
+ * 备注
+ */
+ private String remark;
+}
diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelListVO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelListVO.java
new file mode 100644
index 0000000..075551c
--- /dev/null
+++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelListVO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.ccdi.project.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 模型列表VO
+ *
+ * @author ruoyi
+ */
+@Data
+public class ModelListVO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 模型代码
+ */
+ private String modelCode;
+
+ /**
+ * 模型名称
+ */
+ private String modelName;
+
+ /**
+ * 参数数量
+ */
+ private Integer paramCount;
+}
diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelParamVO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelParamVO.java
new file mode 100644
index 0000000..c8cdbbf
--- /dev/null
+++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelParamVO.java
@@ -0,0 +1,108 @@
+package com.ruoyi.ccdi.project.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 模型参数VO
+ *
+ * @author ruoyi
+ */
+@Data
+public class ModelParamVO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ private Long id;
+
+ /**
+ * 模型代码
+ */
+ private String modelCode;
+
+ /**
+ * 模型名称
+ */
+ private String modelName;
+
+ /**
+ * 参数代码
+ */
+ private String paramCode;
+
+ /**
+ * 参数名称
+ */
+ private String paramName;
+
+ /**
+ * 参数值
+ */
+ private String paramValue;
+
+ /**
+ * 参数单位
+ */
+ private String paramUnit;
+
+ /**
+ * 参数类型(number-数值,string-字符串,boolean-布尔)
+ */
+ private String paramType;
+
+ /**
+ * 最小值(数值类型)
+ */
+ private BigDecimal minValue;
+
+ /**
+ * 最大值(数值类型)
+ */
+ private BigDecimal maxValue;
+
+ /**
+ * 参数描述
+ */
+ private String description;
+
+ /**
+ * 排序号
+ */
+ private Integer sortOrder;
+
+ /**
+ * 状态(0-正常,1-停用)
+ */
+ private String status;
+
+ /**
+ * 创建者
+ */
+ private String createBy;
+
+ /**
+ * 创建时间
+ */
+ private Date createTime;
+
+ /**
+ * 更新者
+ */
+ private String updateBy;
+
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+ /**
+ * 备注
+ */
+ private String remark;
+}
diff --git a/pom.xml b/pom.xml
index 2c66e2e..9111a6b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -208,6 +208,13 @@
${ruoyi.version}
+
+
+ com.ruoyi
+ ccdi-project
+ ${ruoyi.version}
+
+
@@ -219,6 +226,7 @@
ruoyi-generator
ruoyi-common
ruoyi-info-collection
+ ccdi-project
pom
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 47de15d..76eb2e1 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -60,6 +60,12 @@
ruoyi-info-collection
+
+
+ com.ruoyi
+ ccdi-project
+
+
diff --git a/sql/ccdi_model_param.sql b/sql/ccdi_model_param.sql
new file mode 100644
index 0000000..fe92fb7
--- /dev/null
+++ b/sql/ccdi_model_param.sql
@@ -0,0 +1,54 @@
+-- ----------------------------
+-- 模型参数配置表
+-- ----------------------------
+DROP TABLE IF EXISTS `ccdi_model_param`;
+CREATE TABLE `ccdi_model_param` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
+ `model_code` varchar(50) NOT NULL COMMENT '模型代码',
+ `model_name` varchar(100) NOT NULL COMMENT '模型名称',
+ `param_code` varchar(50) NOT NULL COMMENT '参数代码',
+ `param_name` varchar(100) NOT NULL COMMENT '参数名称',
+ `param_value` varchar(500) NOT NULL COMMENT '参数值',
+ `param_unit` varchar(20) DEFAULT NULL COMMENT '参数单位',
+ `param_type` varchar(20) NOT NULL COMMENT '参数类型(number-数值,string-字符串,boolean-布尔)',
+ `min_value` decimal(20,4) DEFAULT NULL COMMENT '最小值(数值类型)',
+ `max_value` decimal(20,4) DEFAULT NULL COMMENT '最大值(数值类型)',
+ `description` varchar(500) DEFAULT NULL COMMENT '参数描述',
+ `sort_order` int DEFAULT 0 COMMENT '排序号',
+ `status` char(1) DEFAULT '0' COMMENT '状态(0-正常,1-停用)',
+ `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `remark` varchar(500) DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_model_param` (`model_code`, `param_code`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='模型参数配置表';
+
+-- ----------------------------
+-- 初始化模型参数数据
+-- ----------------------------
+
+-- 1. 资产异常变动模型参数 (5个参数)
+INSERT INTO `ccdi_model_param` (`model_code`, `model_name`, `param_code`, `param_name`, `param_value`, `param_unit`, `param_type`, `min_value`, `max_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `remark`) VALUES
+('ASSET_CHANGE', '资产异常变动模型', 'ASSET_THRESHOLD', '资产变动阈值', '50', '%', 'number', 0, 100, '资产变动百分比阈值,超过此值触发预警', 1, '0', 'admin', NOW(), NULL),
+('ASSET_CHANGE', '资产异常变动模型', 'MONITOR_PERIOD', '监控周期', '30', '天', 'number', 1, 365, '资产监控的统计周期', 2, '0', 'admin', NOW(), NULL),
+('ASSET_CHANGE', '资产异常变动模型', 'ALERT_FREQUENCY', '预警频率限制', '7', '天', 'number', 1, 30, '同一人员预警的最小间隔天数', 3, '0', 'admin', NOW(), NULL),
+('ASSET_CHANGE', '资产异常变动模型', 'MIN_AMOUNT', '最小监控金额', '10000', '元', 'number', 0, 999999999, '低于此金额的变动不监控', 4, '0', 'admin', NOW(), NULL),
+('ASSET_CHANGE', '资产异常变动模型', 'ENABLE_FAMILY', '是否监控家属', 'true', NULL, 'boolean', NULL, NULL, '是否同时监控员工家属资产变动', 5, '0', 'admin', NOW(), NULL);
+
+-- 2. 廉政风险评分模型参数 (5个参数)
+INSERT INTO `ccdi_model_param` (`model_code`, `model_name`, `param_code`, `param_name`, `param_value`, `param_unit`, `param_type`, `min_value`, `max_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `remark`) VALUES
+('RISK_SCORE', '廉政风险评分模型', 'HIGH_RISK_THRESHOLD', '高风险阈值', '80', '分', 'number', 0, 100, '风险评分超过此值为高风险', 1, '0', 'admin', NOW(), NULL),
+('RISK_SCORE', '廉政风险评分模型', 'MEDIUM_RISK_THRESHOLD', '中风险阈值', '60', '分', 'number', 0, 100, '风险评分超过此值为中风险', 2, '0', 'admin', NOW(), NULL),
+('RISK_SCORE', '廉政风险评分模型', 'SCORE_VALIDITY', '评分有效期', '90', '天', 'number', 1, 365, '风险评分的有效期,过期需重新评估', 3, '0', 'admin', NOW(), NULL),
+('RISK_SCORE', '廉政风险评分模型', 'WEIGHT_BEHAVIOR', '行为异常权重', '0.4', NULL, 'number', 0, 1, '行为异常指标在总评分中的权重', 4, '0', 'admin', NOW(), NULL),
+('RISK_SCORE', '廉政风险评分模型', 'WEIGHT_RELATION', '关系异常权重', '0.3', NULL, 'number', 0, 1, '关系异常指标在总评分中的权重', 5, '0', 'admin', NOW(), NULL);
+
+-- 3. 关联交易监测模型参数 (5个参数)
+INSERT INTO `ccdi_model_param` (`model_code`, `model_name`, `param_code`, `param_name`, `param_value`, `param_unit`, `param_type`, `min_value`, `max_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `remark`) VALUES
+('RELATED_TRANSACTION', '关联交易监测模型', 'TRANSACTION_THRESHOLD', '交易金额阈值', '50000', '元', 'number', 0, 999999999, '单笔交易金额超过此值触发监测', 1, '0', 'admin', NOW(), NULL),
+('RELATED_TRANSACTION', '关联交易监测模型', 'FREQUENCY_THRESHOLD', '交易频次阈值', '5', '次/月', 'number', 1, 100, '月交易频次超过此值触发监测', 2, '0', 'admin', NOW(), NULL),
+('RELATED_TRANSACTION', '关联交易监测模型', 'STATISTICS_WINDOW', '统计时间窗口', '180', '天', 'number', 30, 365, '交易统计的时间窗口', 3, '0', 'admin', NOW(), NULL),
+('RELATED_TRANSACTION', '关联交易监测模型', 'ENABLE_INTERMEDIARY', '监测中介关联', 'true', NULL, 'boolean', NULL, NULL, '是否监测通过中介的关联交易', 4, '0', 'admin', NOW(), NULL),
+('RELATED_TRANSACTION', '关联交易监测模型', 'BLACKLIST_CHECK', '黑名单校验开关', 'true', NULL, 'boolean', NULL, NULL, '是否对交易对方进行黑名单校验', 5, '0', 'admin', NOW(), NULL);
From 555bf95abe8a38ebcbe3be40622047a3bbde9810 Mon Sep 17 00:00:00 2001
From: wkc <978997012@qq.com>
Date: Thu, 26 Feb 2026 09:31:44 +0800
Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E4=BB=BB=E5=8A=A1?=
=?UTF-8?q?1=20-=20=E4=B8=A5=E6=A0=BC=E6=8C=89=E7=85=A7=E8=A7=84=E6=A0=BC?=
=?UTF-8?q?=E6=96=87=E6=A1=A3=E9=87=8D=E6=96=B0=E5=AE=9E=E6=96=BD=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E5=BA=93=E8=AE=BE=E8=AE=A1=E4=B8=8E=E5=AE=9E=E4=BD=93?=
=?UTF-8?q?=E7=B1=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## 修正内容
### 1. 数据库表结构修正
- 添加字段: project_id, param_desc
- 删除字段: param_type, min_value, max_value, description, status
- 修正唯一索引: uk_project_model_param (project_id, model_code, param_code)
- 添加普通索引: idx_project_id, idx_model_code
### 2. 初始化数据修正
- 删除错误模型: ASSET_CHANGE, RISK_SCORE, RELATED_TRANSACTION
- 添加正确模型:
* 大额交易模型 (LARGE_TRANSACTION) - 6个参数
* 可疑兼职模型 (SUSPICIOUS_PART_TIME) - 3个参数
* 可疑外汇交易模型 (SUSPICIOUS_FOREIGN_EXCHANGE) - 6个参数
- 共15条参数配置,project_id=0(系统默认参数)
### 3. Entity类修正 (CcdiModelParam.java)
- 添加: projectId, paramDesc
- 删除: paramType, minValue, maxValue, description, status
- 删除: Serializable接口,serialVersionUID
- 简化注释风格
### 4. DTO类修正
**ModelParamQueryDTO:**
- 只保留: projectId, modelCode
- 添加@NotBlank验证
**ModelParamSaveDTO:**
- 改为批量保存结构
- 包含: projectId, modelCode, modelName, params(List)
- 内部类ParamItem包含参数明细
- 只允许修改paramValue字段
### 5. VO类修正
**ModelParamVO:**
- 只保留核心展示字段: id, modelCode, modelName, paramCode, paramName, paramDesc, paramValue, paramUnit, sortOrder
- 删除审计字段
**ModelListVO:**
- 只保留: modelCode, modelName
- 删除paramCount字段
## 验证结果
✅ 数据库表创建成功
✅ 15条初始化数据插入成功
✅ 项目编译通过 (mvn clean compile)
✅ 严格符合规格文档要求
---
.../ccdi/project/domain/CcdiModelParam.java | 93 ++++------------
.../domain/dto/ModelParamQueryDTO.java | 40 ++-----
.../project/domain/dto/ModelParamSaveDTO.java | 100 +++++-------------
.../ccdi/project/domain/vo/ModelListVO.java | 21 +---
.../ccdi/project/domain/vo/ModelParamVO.java | 95 +++--------------
sql/ccdi_model_param.sql | 75 ++++++-------
6 files changed, 108 insertions(+), 316 deletions(-)
diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/CcdiModelParam.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/CcdiModelParam.java
index cd2254b..a236302 100644
--- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/CcdiModelParam.java
+++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/CcdiModelParam.java
@@ -5,109 +5,58 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
-import java.io.Serializable;
-import java.math.BigDecimal;
import java.util.Date;
/**
- * 模型参数配置实体类
- *
- * @author ruoyi
+ * 模型参数配置 ccdi_model_param
*/
@Data
@TableName("ccdi_model_param")
-public class CcdiModelParam implements Serializable {
+public class CcdiModelParam {
- private static final long serialVersionUID = 1L;
-
- /**
- * 主键ID
- */
+ /** 主键ID */
@TableId(type = IdType.AUTO)
private Long id;
- /**
- * 模型代码
- */
+ /** 项目ID(0表示默认参数) */
+ private Long projectId;
+
+ /** 模型编码 */
private String modelCode;
- /**
- * 模型名称
- */
+ /** 模型名称 */
private String modelName;
- /**
- * 参数代码
- */
+ /** 参数编码 */
private String paramCode;
- /**
- * 参数名称
- */
+ /** 监测项名称 */
private String paramName;
- /**
- * 参数值
- */
+ /** 参数描述 */
+ private String paramDesc;
+
+ /** 参数值 */
private String paramValue;
- /**
- * 参数单位
- */
+ /** 参数单位 */
private String paramUnit;
- /**
- * 参数类型(number-数值,string-字符串,boolean-布尔)
- */
- private String paramType;
-
- /**
- * 最小值(数值类型)
- */
- private BigDecimal minValue;
-
- /**
- * 最大值(数值类型)
- */
- private BigDecimal maxValue;
-
- /**
- * 参数描述
- */
- private String description;
-
- /**
- * 排序号
- */
+ /** 排序号 */
private Integer sortOrder;
- /**
- * 状态(0-正常,1-停用)
- */
- private String status;
-
- /**
- * 创建者
- */
+ /** 创建者 */
private String createBy;
- /**
- * 创建时间
- */
+ /** 创建时间 */
private Date createTime;
- /**
- * 更新者
- */
+ /** 更新者 */
private String updateBy;
- /**
- * 更新时间
- */
+ /** 更新时间 */
private Date updateTime;
- /**
- * 备注
- */
+ /** 备注 */
private String remark;
}
diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamQueryDTO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamQueryDTO.java
index dc8b1db..db724eb 100644
--- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamQueryDTO.java
+++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamQueryDTO.java
@@ -1,46 +1,18 @@
package com.ruoyi.ccdi.project.domain.dto;
import lombok.Data;
-
-import java.io.Serializable;
+import jakarta.validation.constraints.NotBlank;
/**
* 模型参数查询DTO
- *
- * @author ruoyi
*/
@Data
-public class ModelParamQueryDTO implements Serializable {
+public class ModelParamQueryDTO {
- private static final long serialVersionUID = 1L;
+ /** 项目ID */
+ private Long projectId;
- /**
- * 模型代码
- */
+ /** 模型编码 */
+ @NotBlank(message = "模型编码不能为空")
private String modelCode;
-
- /**
- * 模型名称
- */
- private String modelName;
-
- /**
- * 参数代码
- */
- private String paramCode;
-
- /**
- * 参数名称
- */
- private String paramName;
-
- /**
- * 参数类型(number-数值,string-字符串,boolean-布尔)
- */
- private String paramType;
-
- /**
- * 状态(0-正常,1-停用)
- */
- private String status;
}
diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamSaveDTO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamSaveDTO.java
index 5fc8f9f..227d449 100644
--- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamSaveDTO.java
+++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamSaveDTO.java
@@ -1,96 +1,52 @@
package com.ruoyi.ccdi.project.domain.dto;
+import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
+import java.util.List;
/**
* 模型参数保存DTO
- *
- * @author ruoyi
*/
@Data
-public class ModelParamSaveDTO implements Serializable {
+public class ModelParamSaveDTO {
- private static final long serialVersionUID = 1L;
+ /** 项目ID */
+ private Long projectId;
- /**
- * 主键ID(更新时必填)
- */
- private Long id;
-
- /**
- * 模型代码
- */
- @NotBlank(message = "模型代码不能为空")
+ /** 模型编码 */
+ @NotBlank(message = "模型编码不能为空")
private String modelCode;
- /**
- * 模型名称
- */
+ /** 模型名称 */
@NotBlank(message = "模型名称不能为空")
private String modelName;
- /**
- * 参数代码
- */
- @NotBlank(message = "参数代码不能为空")
- private String paramCode;
+ /** 参数列表 */
+ @NotNull(message = "参数列表不能为空")
+ private List params;
- /**
- * 参数名称
- */
- @NotBlank(message = "参数名称不能为空")
- private String paramName;
+ @Data
+ public static class ParamItem {
- /**
- * 参数值
- */
- @NotBlank(message = "参数值不能为空")
- private String paramValue;
+ /** 参数编码 */
+ @NotBlank(message = "参数编码不能为空")
+ private String paramCode;
- /**
- * 参数单位
- */
- private String paramUnit;
+ /** 监测项名称 */
+ private String paramName;
- /**
- * 参数类型(number-数值,string-字符串,boolean-布尔)
- */
- @NotBlank(message = "参数类型不能为空")
- private String paramType;
+ /** 参数描述 */
+ private String paramDesc;
- /**
- * 最小值(数值类型)
- */
- private BigDecimal minValue;
+ /** 参数值 - 唯一可修改字段 */
+ @NotBlank(message = "参数值不能为空")
+ private String paramValue;
- /**
- * 最大值(数值类型)
- */
- private BigDecimal maxValue;
+ /** 参数单位 */
+ private String paramUnit;
- /**
- * 参数描述
- */
- private String description;
-
- /**
- * 排序号
- */
- @NotNull(message = "排序号不能为空")
- private Integer sortOrder;
-
- /**
- * 状态(0-正常,1-停用)
- */
- private String status;
-
- /**
- * 备注
- */
- private String remark;
+ /** 排序号 */
+ private Integer sortOrder;
+ }
}
diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelListVO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelListVO.java
index 075551c..db1e2fd 100644
--- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelListVO.java
+++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelListVO.java
@@ -2,30 +2,15 @@ package com.ruoyi.ccdi.project.domain.vo;
import lombok.Data;
-import java.io.Serializable;
-
/**
* 模型列表VO
- *
- * @author ruoyi
*/
@Data
-public class ModelListVO implements Serializable {
+public class ModelListVO {
- private static final long serialVersionUID = 1L;
-
- /**
- * 模型代码
- */
+ /** 模型编码 */
private String modelCode;
- /**
- * 模型名称
- */
+ /** 模型名称 */
private String modelName;
-
- /**
- * 参数数量
- */
- private Integer paramCount;
}
diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelParamVO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelParamVO.java
index c8cdbbf..a983919 100644
--- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelParamVO.java
+++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/ModelParamVO.java
@@ -2,107 +2,36 @@ package com.ruoyi.ccdi.project.domain.vo;
import lombok.Data;
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
-
/**
* 模型参数VO
- *
- * @author ruoyi
*/
@Data
-public class ModelParamVO implements Serializable {
+public class ModelParamVO {
- private static final long serialVersionUID = 1L;
-
- /**
- * 主键ID
- */
+ /** 主键ID */
private Long id;
- /**
- * 模型代码
- */
+ /** 模型编码 */
private String modelCode;
- /**
- * 模型名称
- */
+ /** 模型名称 */
private String modelName;
- /**
- * 参数代码
- */
+ /** 参数编码 */
private String paramCode;
- /**
- * 参数名称
- */
+ /** 监测项名称 */
private String paramName;
- /**
- * 参数值
- */
+ /** 参数描述 */
+ private String paramDesc;
+
+ /** 参数值 */
private String paramValue;
- /**
- * 参数单位
- */
+ /** 参数单位 */
private String paramUnit;
- /**
- * 参数类型(number-数值,string-字符串,boolean-布尔)
- */
- private String paramType;
-
- /**
- * 最小值(数值类型)
- */
- private BigDecimal minValue;
-
- /**
- * 最大值(数值类型)
- */
- private BigDecimal maxValue;
-
- /**
- * 参数描述
- */
- private String description;
-
- /**
- * 排序号
- */
+ /** 排序号 */
private Integer sortOrder;
-
- /**
- * 状态(0-正常,1-停用)
- */
- private String status;
-
- /**
- * 创建者
- */
- private String createBy;
-
- /**
- * 创建时间
- */
- private Date createTime;
-
- /**
- * 更新者
- */
- private String updateBy;
-
- /**
- * 更新时间
- */
- private Date updateTime;
-
- /**
- * 备注
- */
- private String remark;
}
diff --git a/sql/ccdi_model_param.sql b/sql/ccdi_model_param.sql
index fe92fb7..5490eb5 100644
--- a/sql/ccdi_model_param.sql
+++ b/sql/ccdi_model_param.sql
@@ -4,51 +4,52 @@
DROP TABLE IF EXISTS `ccdi_model_param`;
CREATE TABLE `ccdi_model_param` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
- `model_code` varchar(50) NOT NULL COMMENT '模型代码',
+ `project_id` bigint DEFAULT 0 COMMENT '项目ID(0表示默认参数,其他值为具体项目ID)',
+ `model_code` varchar(100) NOT NULL COMMENT '模型编码',
`model_name` varchar(100) NOT NULL COMMENT '模型名称',
- `param_code` varchar(50) NOT NULL COMMENT '参数代码',
- `param_name` varchar(100) NOT NULL COMMENT '参数名称',
- `param_value` varchar(500) NOT NULL COMMENT '参数值',
- `param_unit` varchar(20) DEFAULT NULL COMMENT '参数单位',
- `param_type` varchar(20) NOT NULL COMMENT '参数类型(number-数值,string-字符串,boolean-布尔)',
- `min_value` decimal(20,4) DEFAULT NULL COMMENT '最小值(数值类型)',
- `max_value` decimal(20,4) DEFAULT NULL COMMENT '最大值(数值类型)',
- `description` varchar(500) DEFAULT NULL COMMENT '参数描述',
- `sort_order` int DEFAULT 0 COMMENT '排序号',
- `status` char(1) DEFAULT '0' COMMENT '状态(0-正常,1-停用)',
+ `param_code` varchar(100) NOT NULL COMMENT '参数编码',
+ `param_name` varchar(100) NOT NULL COMMENT '监测项名称',
+ `param_desc` varchar(500) DEFAULT NULL COMMENT '参数描述',
+ `param_value` varchar(200) NOT NULL COMMENT '参数值',
+ `param_unit` varchar(50) DEFAULT NULL COMMENT '参数单位',
+ `sort_order` int DEFAULT 0 COMMENT '排序号(参数展示顺序)',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
- `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
- `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
- UNIQUE KEY `uk_model_param` (`model_code`, `param_code`)
+ UNIQUE KEY `uk_project_model_param` (`project_id`, `model_code`, `param_code`),
+ KEY `idx_project_id` (`project_id`),
+ KEY `idx_model_code` (`model_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='模型参数配置表';
-- ----------------------------
--- 初始化模型参数数据
+-- 2. 初始化大额交易模型参数
-- ----------------------------
+INSERT INTO ccdi_model_param (project_id, model_code, model_name, param_code, param_name, param_desc, param_value, param_unit, sort_order, create_by, remark) VALUES
+(0, 'LARGE_TRANSACTION', '大额交易模型', 'SINGLE_TRANSACTION_AMOUNT', '单笔交易额', '单笔超过该金额视为大额交易', '50000', '元', 1, 'admin', '系统默认参数'),
+(0, 'LARGE_TRANSACTION', '大额交易模型', 'CUMULATIVE_TRANSACTION_AMOUNT', '累计交易额', '年累计交易额超过该金额', '5000000', '元', 2, 'admin', '系统默认参数'),
+(0, 'LARGE_TRANSACTION', '大额交易模型', 'LARGE_CASH_DEPOSIT', '大额存现', '单笔存现金额超过', '200000', '元', 3, 'admin', '系统默认参数'),
+(0, 'LARGE_TRANSACTION', '大额交易模型', 'FREQUENT_CASH_DEPOSIT', '短时多次存现', '24小时内累计存现超过', '100000', '元/4小时', 4, 'admin', '系统默认参数'),
+(0, 'LARGE_TRANSACTION', '大额交易模型', 'FREQUENT_TRANSFER', '频繁转账', '单日转账次数超过', '10', '次/日', 5, 'admin', '系统默认参数'),
+(0, 'LARGE_TRANSACTION', '大额交易模型', 'TRANSFER_FREQUENCY', '转账频率', '单日累计转账金额超过', '1000000', '元/日', 6, 'admin', '系统默认参数');
--- 1. 资产异常变动模型参数 (5个参数)
-INSERT INTO `ccdi_model_param` (`model_code`, `model_name`, `param_code`, `param_name`, `param_value`, `param_unit`, `param_type`, `min_value`, `max_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `remark`) VALUES
-('ASSET_CHANGE', '资产异常变动模型', 'ASSET_THRESHOLD', '资产变动阈值', '50', '%', 'number', 0, 100, '资产变动百分比阈值,超过此值触发预警', 1, '0', 'admin', NOW(), NULL),
-('ASSET_CHANGE', '资产异常变动模型', 'MONITOR_PERIOD', '监控周期', '30', '天', 'number', 1, 365, '资产监控的统计周期', 2, '0', 'admin', NOW(), NULL),
-('ASSET_CHANGE', '资产异常变动模型', 'ALERT_FREQUENCY', '预警频率限制', '7', '天', 'number', 1, 30, '同一人员预警的最小间隔天数', 3, '0', 'admin', NOW(), NULL),
-('ASSET_CHANGE', '资产异常变动模型', 'MIN_AMOUNT', '最小监控金额', '10000', '元', 'number', 0, 999999999, '低于此金额的变动不监控', 4, '0', 'admin', NOW(), NULL),
-('ASSET_CHANGE', '资产异常变动模型', 'ENABLE_FAMILY', '是否监控家属', 'true', NULL, 'boolean', NULL, NULL, '是否同时监控员工家属资产变动', 5, '0', 'admin', NOW(), NULL);
+-- ----------------------------
+-- 3. 初始化可疑兼职模型参数
+-- ----------------------------
+INSERT INTO ccdi_model_param (project_id, model_code, model_name, param_code, param_name, param_desc, param_value, param_unit, sort_order, create_by, remark) VALUES
+(0, 'SUSPICIOUS_PART_TIME', '可疑兼职模型', 'MONTHLY_FIXED_INCOME', '月度固定收入', '除本行工资外,每月固定收入超过', '5000', '元/月', 1, 'admin', '系统默认参数'),
+(0, 'SUSPICIOUS_PART_TIME', '可疑兼职模型', 'FIXED_COUNTERPARTY_TRANSFER', '固定对手转入', '每季从固定交易对手转入金额', '15000', '元/季', 2, 'admin', '系统默认参数'),
+(0, 'SUSPICIOUS_PART_TIME', '可疑兼职模型', 'SUSPICIOUS_TIME_TRANSACTION', '非工作时间交易', '非工作时间(22:00-06:00)交易次数', '20', '次/月', 3, 'admin', '系统默认参数');
--- 2. 廉政风险评分模型参数 (5个参数)
-INSERT INTO `ccdi_model_param` (`model_code`, `model_name`, `param_code`, `param_name`, `param_value`, `param_unit`, `param_type`, `min_value`, `max_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `remark`) VALUES
-('RISK_SCORE', '廉政风险评分模型', 'HIGH_RISK_THRESHOLD', '高风险阈值', '80', '分', 'number', 0, 100, '风险评分超过此值为高风险', 1, '0', 'admin', NOW(), NULL),
-('RISK_SCORE', '廉政风险评分模型', 'MEDIUM_RISK_THRESHOLD', '中风险阈值', '60', '分', 'number', 0, 100, '风险评分超过此值为中风险', 2, '0', 'admin', NOW(), NULL),
-('RISK_SCORE', '廉政风险评分模型', 'SCORE_VALIDITY', '评分有效期', '90', '天', 'number', 1, 365, '风险评分的有效期,过期需重新评估', 3, '0', 'admin', NOW(), NULL),
-('RISK_SCORE', '廉政风险评分模型', 'WEIGHT_BEHAVIOR', '行为异常权重', '0.4', NULL, 'number', 0, 1, '行为异常指标在总评分中的权重', 4, '0', 'admin', NOW(), NULL),
-('RISK_SCORE', '廉政风险评分模型', 'WEIGHT_RELATION', '关系异常权重', '0.3', NULL, 'number', 0, 1, '关系异常指标在总评分中的权重', 5, '0', 'admin', NOW(), NULL);
-
--- 3. 关联交易监测模型参数 (5个参数)
-INSERT INTO `ccdi_model_param` (`model_code`, `model_name`, `param_code`, `param_name`, `param_value`, `param_unit`, `param_type`, `min_value`, `max_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `remark`) VALUES
-('RELATED_TRANSACTION', '关联交易监测模型', 'TRANSACTION_THRESHOLD', '交易金额阈值', '50000', '元', 'number', 0, 999999999, '单笔交易金额超过此值触发监测', 1, '0', 'admin', NOW(), NULL),
-('RELATED_TRANSACTION', '关联交易监测模型', 'FREQUENCY_THRESHOLD', '交易频次阈值', '5', '次/月', 'number', 1, 100, '月交易频次超过此值触发监测', 2, '0', 'admin', NOW(), NULL),
-('RELATED_TRANSACTION', '关联交易监测模型', 'STATISTICS_WINDOW', '统计时间窗口', '180', '天', 'number', 30, 365, '交易统计的时间窗口', 3, '0', 'admin', NOW(), NULL),
-('RELATED_TRANSACTION', '关联交易监测模型', 'ENABLE_INTERMEDIARY', '监测中介关联', 'true', NULL, 'boolean', NULL, NULL, '是否监测通过中介的关联交易', 4, '0', 'admin', NOW(), NULL),
-('RELATED_TRANSACTION', '关联交易监测模型', 'BLACKLIST_CHECK', '黑名单校验开关', 'true', NULL, 'boolean', NULL, NULL, '是否对交易对方进行黑名单校验', 5, '0', 'admin', NOW(), NULL);
+-- ----------------------------
+-- 4. 初始化可疑外汇交易模型参数
+-- ----------------------------
+INSERT INTO ccdi_model_param (project_id, model_code, model_name, param_code, param_name, param_desc, param_value, param_unit, sort_order, create_by, remark) VALUES
+(0, 'SUSPICIOUS_FOREIGN_EXCHANGE', '可疑外汇交易模型', 'SINGLE_PURCHASE_AMOUNT', '单笔购汇金额', '单笔购汇超过该金额', '50000', '美元/笔', 1, 'admin', '系统默认参数'),
+(0, 'SUSPICIOUS_FOREIGN_EXCHANGE', '可疑外汇交易模型', 'SINGLE_SETTLEMENT_AMOUNT', '单笔结汇金额', '单笔结汇超过该金额', '50000', '美元/笔', 2, 'admin', '系统默认参数'),
+(0, 'SUSPICIOUS_FOREIGN_EXCHANGE', '可疑外汇交易模型', 'CROSS_BORDER_REMITTANCE', '跨境汇款金额', '跨境汇款金额超过', '200000', '美元/笔', 3, 'admin', '系统默认参数'),
+(0, 'SUSPICIOUS_FOREIGN_EXCHANGE', '可疑外汇交易模型', 'MONTHLY_PURCHASE_TOTAL', '月度购汇总额', '月度购汇总额超过', '100000', '美元/月', 4, 'admin', '系统默认参数'),
+(0, 'SUSPICIOUS_FOREIGN_EXCHANGE', '可疑外汇交易模型', 'MONTHLY_SETTLEMENT_TOTAL', '月度结汇总额', '月度结汇总额超过', '100000', '美元/月', 5, 'admin', '系统默认参数'),
+(0, 'SUSPICIOUS_FOREIGN_EXCHANGE', '可疑外汇交易模型', 'FREQUENT_FOREX_TRADE', '频繁外汇交易', '单日外汇交易次数超过', '5', '次/日', 6, 'admin', '系统默认参数');
From 367a3da5cb7aaac125dfd32331998af43581f234 Mon Sep 17 00:00:00 2001
From: wkc <978997012@qq.com>
Date: Thu, 26 Feb 2026 10:21:17 +0800
Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=A8=A1?=
=?UTF-8?q?=E5=9E=8B=E5=8F=82=E6=95=B0=E9=85=8D=E7=BD=AE=E8=8F=9C=E5=8D=95?=
=?UTF-8?q?SQL=E8=84=9A=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 添加模型参数配置主菜单(菜单ID: 2082)
- 添加模型参数查询按钮权限(菜单ID: 2083)
- 添加模型参数保存按钮权限(菜单ID: 2084)
- 父菜单: 信息维护(菜单ID: 2000)
---
sql/ccdi_model_param_menu.sql | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
create mode 100644 sql/ccdi_model_param_menu.sql
diff --git a/sql/ccdi_model_param_menu.sql b/sql/ccdi_model_param_menu.sql
new file mode 100644
index 0000000..1613ac2
--- /dev/null
+++ b/sql/ccdi_model_param_menu.sql
@@ -0,0 +1,31 @@
+-- 模型参数配置菜单权限
+-- 创建时间: 2026-02-26
+
+-- 添加模型参数配置菜单(父菜单为信息维护)
+INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
+VALUES (
+ '模型参数配置',
+ 2000,
+ 10,
+ 'modelParam',
+ 'ccdi/modelParam/index',
+ 1,
+ 0,
+ 'C',
+ '0',
+ '0',
+ 'ccdi:modelParam:list',
+ 'edit',
+ 'admin',
+ NOW(),
+ '模型参数配置菜单'
+);
+
+-- 获取刚插入的菜单ID
+SET @model_param_menu_id = LAST_INSERT_ID();
+
+-- 添加按钮权限
+INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
+VALUES
+ ('模型参数查询', @model_param_menu_id, 1, '#', '', 1, 0, 'F', '0', '0', 'ccdi:modelParam:query', '#', 'admin', NOW(), ''),
+ ('模型参数保存', @model_param_menu_id, 2, '#', '', 1, 0, 'F', '0', '0', 'ccdi:modelParam:save', '#', 'admin', NOW(), '');