diff --git a/pom.xml b/pom.xml
index 46502fe42..5494bacd6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
     <url>https://github.com/YunaiV/ruoyi-vue-pro</url>
 
     <properties>
-        <revision>1.6.0-snapshot</revision>
+        <revision>1.6.1-snapshot</revision>
         <!-- Maven 相关 -->
         <java.version>1.8</java.version>
         <maven.compiler.source>${java.version}</maven.compiler.source>
diff --git a/sql/ruoyi-vue-pro.sql b/sql/ruoyi-vue-pro.sql
index 5ee1c0473..96183a703 100644
--- a/sql/ruoyi-vue-pro.sql
+++ b/sql/ruoyi-vue-pro.sql
@@ -11,7 +11,7 @@
  Target Server Version : 80026
  File Encoding         : 65001
 
- Date: 17/03/2022 00:02:25
+ Date: 20/03/2022 02:30:52
 */
 
 SET NAMES utf8mb4;
@@ -35,7 +35,7 @@ CREATE TABLE `bpm_form` (
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流的表单定义';
+) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流的表单定义';
 
 -- ----------------------------
 -- Records of bpm_form
@@ -46,6 +46,7 @@ INSERT INTO `bpm_form` VALUES (8, '啊哈哈', 0, '{\"formRef\":\"elForm\",\"for
 INSERT INTO `bpm_form` VALUES (9, '新增', 0, '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true}', '[\"{\\\"label\\\":\\\"单行文本\\\",\\\"tag\\\":\\\"el-input\\\",\\\"tagIcon\\\":\\\"input\\\",\\\"placeholder\\\":\\\"请输入单行文本\\\",\\\"span\\\":24,\\\"labelWidth\\\":null,\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"clearable\\\":true,\\\"prepend\\\":\\\"\\\",\\\"append\\\":\\\"\\\",\\\"prefix-icon\\\":\\\"\\\",\\\"suffix-icon\\\":\\\"\\\",\\\"maxlength\\\":null,\\\"show-word-limit\\\":false,\\\"readonly\\\":false,\\\"disabled\\\":false,\\\"required\\\":true,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/input\\\",\\\"formId\\\":101,\\\"renderKey\\\":1640959561705,\\\"layout\\\":\\\"colFormItem\\\",\\\"vModel\\\":\\\"field101\\\"}\",\"{\\\"label\\\":\\\"单选框组\\\",\\\"tag\\\":\\\"el-radio-group\\\",\\\"tagIcon\\\":\\\"radio\\\",\\\"span\\\":24,\\\"labelWidth\\\":null,\\\"style\\\":{},\\\"optionType\\\":\\\"default\\\",\\\"border\\\":false,\\\"size\\\":\\\"medium\\\",\\\"disabled\\\":false,\\\"required\\\":true,\\\"options\\\":[{\\\"label\\\":\\\"选项一\\\",\\\"value\\\":1},{\\\"label\\\":\\\"选项二\\\",\\\"value\\\":2}],\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/radio\\\",\\\"formId\\\":102,\\\"renderKey\\\":1640959563240,\\\"layout\\\":\\\"colFormItem\\\",\\\"vModel\\\":\\\"field102\\\"}\"]', '哈哈哈', '1', '2021-12-31 22:06:11', '1', '2022-02-19 17:27:54', b'1', 1);
 INSERT INTO `bpm_form` VALUES (10, '11333', 1, '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"left\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true}', '[\"{\\\"label\\\":\\\"多行文本\\\",\\\"tag\\\":\\\"el-input\\\",\\\"tagIcon\\\":\\\"textarea\\\",\\\"type\\\":\\\"textarea\\\",\\\"placeholder\\\":\\\"请输入多行文本多行文本多行文本\\\",\\\"span\\\":24,\\\"labelWidth\\\":null,\\\"autosize\\\":{\\\"minRows\\\":4,\\\"maxRows\\\":4},\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"maxlength\\\":null,\\\"show-word-limit\\\":false,\\\"readonly\\\":false,\\\"disabled\\\":false,\\\"required\\\":true,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/input\\\",\\\"formId\\\":101,\\\"renderKey\\\":1640959720587,\\\"layout\\\":\\\"colFormItem\\\",\\\"vModel\\\":\\\"field101\\\",\\\"defaultValue\\\":\\\"1111\\\"}\",\"{\\\"label\\\":\\\"滑块\\\",\\\"tag\\\":\\\"el-slider\\\",\\\"tagIcon\\\":\\\"slider\\\",\\\"defaultValue\\\":0,\\\"span\\\":24,\\\"labelWidth\\\":null,\\\"disabled\\\":false,\\\"required\\\":true,\\\"min\\\":0,\\\"max\\\":100,\\\"step\\\":1,\\\"show-stops\\\":false,\\\"range\\\":false,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/slider\\\",\\\"formId\\\":101,\\\"renderKey\\\":1640959732257,\\\"layout\\\":\\\"colFormItem\\\",\\\"vModel\\\":\\\"field101\\\"}\"]', '222211', '1', '2021-12-31 22:08:45', '1', '2022-02-19 17:27:52', b'1', 1);
 INSERT INTO `bpm_form` VALUES (11, 'biubiu', 0, '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true}', '[\"{\\\"__config__\\\":{\\\"label\\\":\\\"单行文本\\\",\\\"labelWidth\\\":null,\\\"showLabel\\\":true,\\\"changeTag\\\":true,\\\"tag\\\":\\\"el-input\\\",\\\"tagIcon\\\":\\\"input\\\",\\\"required\\\":true,\\\"layout\\\":\\\"colFormItem\\\",\\\"span\\\":24,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/input\\\",\\\"regList\\\":[],\\\"formId\\\":121,\\\"renderKey\\\":\\\"1211641657675668\\\"},\\\"__slot__\\\":{\\\"prepend\\\":\\\"\\\",\\\"append\\\":\\\"\\\"},\\\"placeholder\\\":\\\"请输入单行文本\\\",\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"clearable\\\":true,\\\"prefix-icon\\\":\\\"\\\",\\\"suffix-icon\\\":\\\"\\\",\\\"maxlength\\\":null,\\\"show-word-limit\\\":false,\\\"readonly\\\":false,\\\"disabled\\\":false,\\\"__vModel__\\\":\\\"field121\\\"}\",\"{\\\"__config__\\\":{\\\"label\\\":\\\"多选框组\\\",\\\"tag\\\":\\\"el-checkbox-group\\\",\\\"tagIcon\\\":\\\"checkbox\\\",\\\"defaultValue\\\":[],\\\"span\\\":24,\\\"showLabel\\\":true,\\\"labelWidth\\\":null,\\\"layout\\\":\\\"colFormItem\\\",\\\"optionType\\\":\\\"default\\\",\\\"required\\\":true,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"border\\\":false,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/checkbox\\\",\\\"formId\\\":122,\\\"renderKey\\\":\\\"1221641097529857\\\"},\\\"__slot__\\\":{\\\"options\\\":[{\\\"label\\\":\\\"选项一\\\",\\\"value\\\":1},{\\\"label\\\":\\\"选项二\\\",\\\"value\\\":2}]},\\\"style\\\":{},\\\"size\\\":\\\"medium\\\",\\\"disabled\\\":false,\\\"__vModel__\\\":\\\"field122\\\"}\"]', '嘿嘿', '1', '2022-01-02 12:25:55', '1', '2022-02-19 17:27:57', b'0', 1);
+INSERT INTO `bpm_form` VALUES (15, 'leave-form', 0, '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true}', '[\"{\\\"__config__\\\":{\\\"label\\\":\\\"开始时间\\\",\\\"tag\\\":\\\"el-date-picker\\\",\\\"tagIcon\\\":\\\"date\\\",\\\"defaultValue\\\":null,\\\"showLabel\\\":true,\\\"labelWidth\\\":null,\\\"span\\\":24,\\\"layout\\\":\\\"colFormItem\\\",\\\"required\\\":true,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/date-picker\\\",\\\"formId\\\":101,\\\"renderKey\\\":\\\"1011647692195671\\\"},\\\"placeholder\\\":\\\"请选择开始时间\\\",\\\"type\\\":\\\"date\\\",\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"disabled\\\":false,\\\"clearable\\\":true,\\\"format\\\":\\\"yyyy-MM-dd\\\",\\\"value-format\\\":\\\"yyyy-MM-dd\\\",\\\"readonly\\\":false,\\\"__vModel__\\\":\\\"field101\\\"}\",\"{\\\"__config__\\\":{\\\"label\\\":\\\"结束时间\\\",\\\"tag\\\":\\\"el-date-picker\\\",\\\"tagIcon\\\":\\\"date\\\",\\\"defaultValue\\\":null,\\\"showLabel\\\":true,\\\"labelWidth\\\":null,\\\"span\\\":24,\\\"layout\\\":\\\"colFormItem\\\",\\\"required\\\":true,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/date-picker\\\",\\\"formId\\\":102,\\\"renderKey\\\":\\\"1021647692207701\\\"},\\\"placeholder\\\":\\\"请选择结束时间\\\",\\\"type\\\":\\\"date\\\",\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"disabled\\\":false,\\\"clearable\\\":true,\\\"format\\\":\\\"yyyy-MM-dd\\\",\\\"value-format\\\":\\\"yyyy-MM-dd\\\",\\\"readonly\\\":false,\\\"__vModel__\\\":\\\"field102\\\"}\",\"{\\\"__config__\\\":{\\\"label\\\":\\\"请假类型\\\",\\\"showLabel\\\":true,\\\"labelWidth\\\":null,\\\"tag\\\":\\\"el-select\\\",\\\"tagIcon\\\":\\\"select\\\",\\\"layout\\\":\\\"colFormItem\\\",\\\"span\\\":24,\\\"required\\\":true,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/select\\\",\\\"formId\\\":103,\\\"renderKey\\\":\\\"1031647692231884\\\"},\\\"__slot__\\\":{\\\"options\\\":[{\\\"label\\\":\\\"事假\\\",\\\"value\\\":1},{\\\"label\\\":\\\"年假\\\",\\\"value\\\":2}]},\\\"placeholder\\\":\\\"请选择请假类型\\\",\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"clearable\\\":true,\\\"disabled\\\":false,\\\"filterable\\\":false,\\\"multiple\\\":false,\\\"__vModel__\\\":\\\"field103\\\"}\",\"{\\\"__config__\\\":{\\\"label\\\":\\\"原因\\\",\\\"labelWidth\\\":null,\\\"showLabel\\\":true,\\\"tag\\\":\\\"el-input\\\",\\\"tagIcon\\\":\\\"textarea\\\",\\\"required\\\":false,\\\"layout\\\":\\\"colFormItem\\\",\\\"span\\\":24,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/input\\\",\\\"formId\\\":105,\\\"renderKey\\\":\\\"1051647692319768\\\"},\\\"type\\\":\\\"textarea\\\",\\\"placeholder\\\":\\\"请输入原因\\\",\\\"autosize\\\":{\\\"minRows\\\":4,\\\"maxRows\\\":4},\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"maxlength\\\":null,\\\"show-word-limit\\\":false,\\\"readonly\\\":false,\\\"disabled\\\":false,\\\"__vModel__\\\":\\\"field105\\\"}\"]', NULL, '1', '2022-03-19 20:20:56', '1', '2022-03-19 20:20:56', b'0', 1);
 COMMIT;
 
 -- ----------------------------
@@ -122,7 +123,7 @@ CREATE TABLE `bpm_process_definition_ext` (
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Bpm 流程定义的拓展表\n';
+) ENGINE=InnoDB AUTO_INCREMENT=96 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Bpm 流程定义的拓展表\n';
 
 -- ----------------------------
 -- Records of bpm_process_definition_ext
@@ -210,6 +211,7 @@ INSERT INTO `bpm_process_definition_ext` VALUES (91, 'oa_leave:3:1fad3d93-7b75-1
 INSERT INTO `bpm_process_definition_ext` VALUES (92, 'oa_leave:4:991f2193-7b7f-11ec-a3c8-acde48001122', 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'OA 请假的示例', 20, NULL, NULL, NULL, '/bpm/oa/flow', '/oa/oa/leave', '1', '2022-01-22 20:34:10', '1', '2022-02-19 17:29:14', b'0', 1);
 INSERT INTO `bpm_process_definition_ext` VALUES (93, 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'OA 请假的示例', 20, NULL, NULL, NULL, '/bpm/oa/leave/create', '/bpm/oa/leave/detail', '1', '2022-01-22 21:48:38', '1', '2022-02-19 17:29:14', b'0', 1);
 INSERT INTO `bpm_process_definition_ext` VALUES (94, 'flowable_01:1:c0bb5b36-97ed-11ec-a2b9-862bc1a4a054', '4b4909d8-97e7-11ec-8e20-862bc1a4a054', 'ooxx', 10, 11, '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true}', '[\"{\\\"__config__\\\":{\\\"label\\\":\\\"单行文本\\\",\\\"labelWidth\\\":null,\\\"showLabel\\\":true,\\\"changeTag\\\":true,\\\"tag\\\":\\\"el-input\\\",\\\"tagIcon\\\":\\\"input\\\",\\\"required\\\":true,\\\"layout\\\":\\\"colFormItem\\\",\\\"span\\\":24,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/input\\\",\\\"regList\\\":[],\\\"formId\\\":121,\\\"renderKey\\\":\\\"1211641657675668\\\"},\\\"__slot__\\\":{\\\"prepend\\\":\\\"\\\",\\\"append\\\":\\\"\\\"},\\\"placeholder\\\":\\\"请输入单行文本\\\",\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"clearable\\\":true,\\\"prefix-icon\\\":\\\"\\\",\\\"suffix-icon\\\":\\\"\\\",\\\"maxlength\\\":null,\\\"show-word-limit\\\":false,\\\"readonly\\\":false,\\\"disabled\\\":false,\\\"__vModel__\\\":\\\"field121\\\"}\",\"{\\\"__config__\\\":{\\\"label\\\":\\\"多选框组\\\",\\\"tag\\\":\\\"el-checkbox-group\\\",\\\"tagIcon\\\":\\\"checkbox\\\",\\\"defaultValue\\\":[],\\\"span\\\":24,\\\"showLabel\\\":true,\\\"labelWidth\\\":null,\\\"layout\\\":\\\"colFormItem\\\",\\\"optionType\\\":\\\"default\\\",\\\"required\\\":true,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"border\\\":false,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/checkbox\\\",\\\"formId\\\":122,\\\"renderKey\\\":\\\"1221641097529857\\\"},\\\"__slot__\\\":{\\\"options\\\":[{\\\"label\\\":\\\"选项一\\\",\\\"value\\\":1},{\\\"label\\\":\\\"选项二\\\",\\\"value\\\":2}]},\\\"style\\\":{},\\\"size\\\":\\\"medium\\\",\\\"disabled\\\":false,\\\"__vModel__\\\":\\\"field122\\\"}\"]', NULL, NULL, '1', '2022-02-28 00:53:14', '1', '2022-02-28 00:53:14', b'0', 1);
+INSERT INTO `bpm_process_definition_ext` VALUES (95, 'common-form:1:7fdfc407-a786-11ec-96d6-8e557beca7ad', '02217e82-a77e-11ec-96d6-8e557beca7ad', '通用表单简单示例', 10, 15, '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true}', '[\"{\\\"__config__\\\":{\\\"label\\\":\\\"开始时间\\\",\\\"tag\\\":\\\"el-date-picker\\\",\\\"tagIcon\\\":\\\"date\\\",\\\"defaultValue\\\":null,\\\"showLabel\\\":true,\\\"labelWidth\\\":null,\\\"span\\\":24,\\\"layout\\\":\\\"colFormItem\\\",\\\"required\\\":true,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/date-picker\\\",\\\"formId\\\":101,\\\"renderKey\\\":\\\"1011647692195671\\\"},\\\"placeholder\\\":\\\"请选择开始时间\\\",\\\"type\\\":\\\"date\\\",\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"disabled\\\":false,\\\"clearable\\\":true,\\\"format\\\":\\\"yyyy-MM-dd\\\",\\\"value-format\\\":\\\"yyyy-MM-dd\\\",\\\"readonly\\\":false,\\\"__vModel__\\\":\\\"field101\\\"}\",\"{\\\"__config__\\\":{\\\"label\\\":\\\"结束时间\\\",\\\"tag\\\":\\\"el-date-picker\\\",\\\"tagIcon\\\":\\\"date\\\",\\\"defaultValue\\\":null,\\\"showLabel\\\":true,\\\"labelWidth\\\":null,\\\"span\\\":24,\\\"layout\\\":\\\"colFormItem\\\",\\\"required\\\":true,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/date-picker\\\",\\\"formId\\\":102,\\\"renderKey\\\":\\\"1021647692207701\\\"},\\\"placeholder\\\":\\\"请选择结束时间\\\",\\\"type\\\":\\\"date\\\",\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"disabled\\\":false,\\\"clearable\\\":true,\\\"format\\\":\\\"yyyy-MM-dd\\\",\\\"value-format\\\":\\\"yyyy-MM-dd\\\",\\\"readonly\\\":false,\\\"__vModel__\\\":\\\"field102\\\"}\",\"{\\\"__config__\\\":{\\\"label\\\":\\\"请假类型\\\",\\\"showLabel\\\":true,\\\"labelWidth\\\":null,\\\"tag\\\":\\\"el-select\\\",\\\"tagIcon\\\":\\\"select\\\",\\\"layout\\\":\\\"colFormItem\\\",\\\"span\\\":24,\\\"required\\\":true,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/select\\\",\\\"formId\\\":103,\\\"renderKey\\\":\\\"1031647692231884\\\"},\\\"__slot__\\\":{\\\"options\\\":[{\\\"label\\\":\\\"事假\\\",\\\"value\\\":1},{\\\"label\\\":\\\"年假\\\",\\\"value\\\":2}]},\\\"placeholder\\\":\\\"请选择请假类型\\\",\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"clearable\\\":true,\\\"disabled\\\":false,\\\"filterable\\\":false,\\\"multiple\\\":false,\\\"__vModel__\\\":\\\"field103\\\"}\",\"{\\\"__config__\\\":{\\\"label\\\":\\\"原因\\\",\\\"labelWidth\\\":null,\\\"showLabel\\\":true,\\\"tag\\\":\\\"el-input\\\",\\\"tagIcon\\\":\\\"textarea\\\",\\\"required\\\":false,\\\"layout\\\":\\\"colFormItem\\\",\\\"span\\\":24,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/input\\\",\\\"formId\\\":105,\\\"renderKey\\\":\\\"1051647692319768\\\"},\\\"type\\\":\\\"textarea\\\",\\\"placeholder\\\":\\\"请输入原因\\\",\\\"autosize\\\":{\\\"minRows\\\":4,\\\"maxRows\\\":4},\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"maxlength\\\":null,\\\"show-word-limit\\\":false,\\\"readonly\\\":false,\\\"disabled\\\":false,\\\"__vModel__\\\":\\\"field105\\\"}\"]', NULL, NULL, '1', '2022-03-19 21:14:26', '1', '2022-03-19 21:14:26', b'0', 1);
 COMMIT;
 
 -- ----------------------------
@@ -234,7 +236,7 @@ CREATE TABLE `bpm_process_instance_ext` (
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=199 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流的流程实例的拓展';
+) ENGINE=InnoDB AUTO_INCREMENT=200 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流的流程实例的拓展';
 
 -- ----------------------------
 -- Records of bpm_process_instance_ext
@@ -357,6 +359,7 @@ INSERT INTO `bpm_process_instance_ext` VALUES (194, 1, 'eeee', 'b243fa82-7c06-11
 INSERT INTO `bpm_process_instance_ext` VALUES (195, 1, '测试多审批人', 'ecddb286-7c07-11ec-a41d-acde48001122', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 4, '2022-01-23 12:59:40', '{\"field121\":\"AAA\",\"field122\":[1]}', '1', '2022-01-23 12:50:02', '1', '2022-02-19 17:29:20', b'0', 1);
 INSERT INTO `bpm_process_instance_ext` VALUES (197, 1, '滔博', '4f676a08-7c09-11ec-b8a1-acde48001122', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', 1, 1, NULL, '{\"field121\":\"aaa\",\"field122\":[1]}', '1', '2022-01-23 12:59:57', '1', '2022-02-19 17:29:20', b'0', 1);
 INSERT INTO `bpm_process_instance_ext` VALUES (198, 1, 'flowable测试', 'c964c377-97ed-11ec-a2b9-862bc1a4a054', 'flowable_01:1:c0bb5b36-97ed-11ec-a2b9-862bc1a4a054', '1', 2, 2, '2022-02-28 00:53:35', '{\"field121\":\"AAA\",\"field122\":[1]}', '1', '2022-02-28 00:53:28', '1', '2022-02-28 00:53:35', b'0', 1);
+INSERT INTO `bpm_process_instance_ext` VALUES (199, 1, '通用表单', '6be9f198-a787-11ec-96d6-8e557beca7ad', 'common-form:1:7fdfc407-a786-11ec-96d6-8e557beca7ad', '1', 2, 2, '2022-03-19 22:16:00', '{\"field101\":\"2022-03-16\",\"field102\":\"2022-03-18\",\"field103\":1,\"field105\":\"生病了\"}', '1', '2022-03-19 21:21:01', '114', '2022-03-19 22:16:00', b'0', 1);
 COMMIT;
 
 -- ----------------------------
@@ -377,7 +380,7 @@ CREATE TABLE `bpm_task_assign_rule` (
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=183 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Bpm 任务规则表';
+) ENGINE=InnoDB AUTO_INCREMENT=187 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Bpm 任务规则表';
 
 -- ----------------------------
 -- Records of bpm_task_assign_rule
@@ -526,6 +529,10 @@ INSERT INTO `bpm_task_assign_rule` VALUES (179, 'e4a1a1ef-7628-11ec-8477-a2380e7
 INSERT INTO `bpm_task_assign_rule` VALUES (180, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', 'task-21', 30, '[1]', '1', '2022-01-22 21:48:38', '1', '2022-02-19 17:29:26', b'0', 1);
 INSERT INTO `bpm_task_assign_rule` VALUES (181, '4b4909d8-97e7-11ec-8e20-862bc1a4a054', '', 'task01', 50, '[10]', '1', '2022-02-28 00:53:09', '1', '2022-02-28 00:53:09', b'0', 1);
 INSERT INTO `bpm_task_assign_rule` VALUES (182, '4b4909d8-97e7-11ec-8e20-862bc1a4a054', 'flowable_01:1:c0bb5b36-97ed-11ec-a2b9-862bc1a4a054', 'task01', 50, '[10]', '1', '2022-02-28 00:53:14', '1', '2022-02-28 00:53:14', b'0', 1);
+INSERT INTO `bpm_task_assign_rule` VALUES (183, '02217e82-a77e-11ec-96d6-8e557beca7ad', '', 'Activity_06rmtz9', 50, '[20]', '1', '2022-03-19 20:58:24', '1', '2022-03-19 20:58:24', b'0', 1);
+INSERT INTO `bpm_task_assign_rule` VALUES (184, '02217e82-a77e-11ec-96d6-8e557beca7ad', '', 'Activity_1hxzcyl', 22, '[3]', '1', '2022-03-19 20:59:35', '1', '2022-03-19 20:59:35', b'0', 1);
+INSERT INTO `bpm_task_assign_rule` VALUES (185, '02217e82-a77e-11ec-96d6-8e557beca7ad', 'common-form:1:7fdfc407-a786-11ec-96d6-8e557beca7ad', 'Activity_06rmtz9', 50, '[20]', '1', '2022-03-19 21:14:26', '1', '2022-03-19 21:14:26', b'0', 1);
+INSERT INTO `bpm_task_assign_rule` VALUES (186, '02217e82-a77e-11ec-96d6-8e557beca7ad', 'common-form:1:7fdfc407-a786-11ec-96d6-8e557beca7ad', 'Activity_1hxzcyl', 22, '[3]', '1', '2022-03-19 21:14:26', '1', '2022-03-19 21:14:26', b'0', 1);
 COMMIT;
 
 -- ----------------------------
@@ -549,7 +556,7 @@ CREATE TABLE `bpm_task_ext` (
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=211 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流的流程任务的拓展表';
+) ENGINE=InnoDB AUTO_INCREMENT=213 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流的流程任务的拓展表';
 
 -- ----------------------------
 -- Records of bpm_task_ext
@@ -685,6 +692,8 @@ INSERT INTO `bpm_task_ext` VALUES (206, 1, '1.2', 'ee7cbc97-7c07-11ec-a41d-acde4
 INSERT INTO `bpm_task_ext` VALUES (207, 1, '1.1', 'ee67adf1-7c07-11ec-a41d-acde48001122', 4, NULL, '2022-01-23 12:59:40', 'ecddb286-7c07-11ec-a41d-acde48001122', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-23 12:50:05', '1', '2022-02-19 17:29:32', b'0', 1);
 INSERT INTO `bpm_task_ext` VALUES (209, 1, '任务一', '4f6fce81-7c09-11ec-b8a1-acde48001122', 1, NULL, NULL, '4f676a08-7c09-11ec-b8a1-acde48001122', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', '2022-01-23 12:59:57', '1', '2022-02-19 17:29:32', b'0', 1);
 INSERT INTO `bpm_task_ext` VALUES (210, 1, 'task01', 'c97146a4-97ed-11ec-a2b9-862bc1a4a054', 2, '嗯嗯嗯', '2022-02-28 00:53:35', 'c964c377-97ed-11ec-a2b9-862bc1a4a054', 'flowable_01:1:c0bb5b36-97ed-11ec-a2b9-862bc1a4a054', '1', '2022-02-28 00:53:28', '1', '2022-02-28 00:53:35', b'0', 1);
+INSERT INTO `bpm_task_ext` VALUES (211, 104, '部门领导审批', '6bf71106-a787-11ec-96d6-8e557beca7ad', 2, '关注【芋道源码】公众号', '2022-03-19 22:00:45', '6be9f198-a787-11ec-96d6-8e557beca7ad', 'common-form:1:7fdfc407-a786-11ec-96d6-8e557beca7ad', '1', '2022-03-19 21:21:02', '104', '2022-03-19 22:00:45', b'0', 1);
+INSERT INTO `bpm_task_ext` VALUES (212, 114, 'HR 审批', 'f8beb356-a78c-11ec-bf87-8e557beca7ad', 2, '不错!', '2022-03-19 22:16:00', '6be9f198-a787-11ec-96d6-8e557beca7ad', 'common-form:1:7fdfc407-a786-11ec-96d6-8e557beca7ad', '104', '2022-03-19 22:00:45', '114', '2022-03-19 22:16:00', b'0', 1);
 COMMIT;
 
 -- ----------------------------
@@ -1175,7 +1184,7 @@ CREATE TABLE `infra_api_error_log` (
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=320 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统异常日志';
+) ENGINE=InnoDB AUTO_INCREMENT=323 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统异常日志';
 
 -- ----------------------------
 -- Records of infra_api_error_log
@@ -1271,6 +1280,9 @@ INSERT INTO `infra_api_error_log` VALUES (316, '', 1, 2, 'yudao-admin-server', '
 INSERT INTO `infra_api_error_log` VALUES (317, '', 1, 2, 'yudao-admin-server', 'GET', '/admin-api/infra/file/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', '2022-03-16 22:33:11', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \n### Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'\n### The error may exist in cn/iocoder/yudao/module/infra/dal/mysql/file/FileMapper.java (best guess)\n### The error may involve defaultParameterMap\n### The error occurred while setting parameters\n### SQL: SELECT id, config_id, path, url, `type`, size, create_time, update_time, creator, updater, deleted FROM infra_file WHERE deleted = 0 ORDER BY create_time DESC LIMIT ?\n### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'\n; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'', 'MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \n### Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'\n### The error may exist in cn/iocoder/yudao/module/infra/dal/mysql/file/FileMapper.java (best guess)\n### The error may involve defaultParameterMap\n### The error occurred while setting parameters\n### SQL: SELECT id, config_id, path, url, `type`, size, create_time, update_time, creator, updater, deleted FROM infra_file WHERE deleted = 0 ORDER BY create_time DESC LIMIT ?\n### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'\n; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:239)\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91)\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)\n	at com.sun.proxy.$Proxy136.selectList(Unknown Source)\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:121)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:85)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)\n	at com.sun.proxy.$Proxy197.selectPage(Unknown Source)\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectPage(BaseMapperX.java:25)\n	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:162)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)\n	at com.sun.proxy.$Proxy197.selectPage(Unknown Source)\n	at cn.iocoder.yudao.module.infra.dal.mysql.file.FileMapper.selectPage(FileMapper.java:19)\n	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:162)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)\n	at com.sun.proxy.$Proxy197.selectPage(Unknown Source)\n	at cn.iocoder.yudao.module.infra.service.file.FileServiceImpl.getFilePage(FileServiceImpl.java:34)\n	at cn.iocoder.yudao.module.infra.controller.admin.file.FileController.getFilePage(FileController.java:82)\n	at cn.iocoder.yudao.module.infra.controller.admin.file.FileController$$FastClassBySpringCGLIB$$2e43158f.invoke(<generated>)\n	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)\n	at cn.iocoder.yudao.framework.operatelog.core.aop.OperateLogAspect.around0(OperateLogAspect.java:96)\n	at cn.iocoder.yudao.framework.operatelog.core.aop.OperateLogAspect.around(OperateLogAspect.java:77)\n	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634)\n	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:624)\n	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:72)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:61)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)\n	at cn.iocoder.yudao.module.infra.controller.admin.file.FileController$$EnhancerBySpringCGLIB$$32fbae04.getFilePage(<generated>)\n	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\n	at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at de.codecentric.boot.admin.server.ui.web.servlet.HomepageForwardingFilter.doFilter(HomepageForwardingFilter.java:78)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:111)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.flowable.core.web.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:29)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tenant.core.security.TenantSecurityWebFilter.doFilterInternal(TenantSecurityWebFilter.java:98)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:121)\n	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:60)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)\n	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tenant.core.web.TenantContextWebFilter.doFilterInternal(TenantContextWebFilter.java:32)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\n	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)\n	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\n	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)\n	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\n	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)\n	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735)\n	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n	at java.lang.Thread.run(Thread.java:748)\nCaused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'\n	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\n	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\n	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\n	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)\n	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)\n	at com.mysql.jdbc.Util.getInstance(Util.java:408)\n	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)\n	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976)\n	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912)\n	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)\n	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)\n	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486)\n	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)\n	at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1197)\n	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3461)\n	at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)\n	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3459)\n	at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:167)\n	at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:497)\n	at sun.reflect.GeneratedMethodAccessor248.invoke(Unknown Source)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)\n	at com.sun.proxy.$Proxy158.execute(Unknown Source)\n	at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)\n	at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)\n	at sun.reflect.GeneratedMethodAccessor247.invoke(Unknown Source)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64)\n	at com.sun.proxy.$Proxy156.query(Unknown Source)\n	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)\n	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)\n	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)\n	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)\n	at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)\n	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)\n	at com.sun.proxy.$Proxy155.query(Unknown Source)\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145)\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)\n	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427)\n	... 180 more\n', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 239, 0, NULL, 0, NULL, '2022-03-16 22:33:11', NULL, '2022-03-16 22:33:11', b'0', 1);
 INSERT INTO `infra_api_error_log` VALUES (318, '', 1, 2, 'yudao-admin-server', 'GET', '/admin-api/infra/file/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', '2022-03-16 22:37:32', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \n### Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'\n### The error may exist in cn/iocoder/yudao/module/infra/dal/mysql/file/FileMapper.java (best guess)\n### The error may involve defaultParameterMap\n### The error occurred while setting parameters\n### SQL: SELECT id, config_id, path, url, `type`, size, create_time, update_time, creator, updater, deleted FROM infra_file WHERE deleted = 0 ORDER BY create_time DESC LIMIT ?\n### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'\n; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'', 'MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \n### Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'\n### The error may exist in cn/iocoder/yudao/module/infra/dal/mysql/file/FileMapper.java (best guess)\n### The error may involve defaultParameterMap\n### The error occurred while setting parameters\n### SQL: SELECT id, config_id, path, url, `type`, size, create_time, update_time, creator, updater, deleted FROM infra_file WHERE deleted = 0 ORDER BY create_time DESC LIMIT ?\n### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'\n; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:239)\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91)\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)\n	at com.sun.proxy.$Proxy136.selectList(Unknown Source)\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:121)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:85)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)\n	at com.sun.proxy.$Proxy197.selectPage(Unknown Source)\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectPage(BaseMapperX.java:25)\n	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:162)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)\n	at com.sun.proxy.$Proxy197.selectPage(Unknown Source)\n	at cn.iocoder.yudao.module.infra.dal.mysql.file.FileMapper.selectPage(FileMapper.java:19)\n	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:162)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)\n	at com.sun.proxy.$Proxy197.selectPage(Unknown Source)\n	at cn.iocoder.yudao.module.infra.service.file.FileServiceImpl.getFilePage(FileServiceImpl.java:34)\n	at cn.iocoder.yudao.module.infra.controller.admin.file.FileController.getFilePage(FileController.java:82)\n	at cn.iocoder.yudao.module.infra.controller.admin.file.FileController$$FastClassBySpringCGLIB$$2e43158f.invoke(<generated>)\n	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)\n	at cn.iocoder.yudao.framework.operatelog.core.aop.OperateLogAspect.around0(OperateLogAspect.java:96)\n	at cn.iocoder.yudao.framework.operatelog.core.aop.OperateLogAspect.around(OperateLogAspect.java:77)\n	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634)\n	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:624)\n	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:72)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:61)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)\n	at cn.iocoder.yudao.module.infra.controller.admin.file.FileController$$EnhancerBySpringCGLIB$$a7a9ae3.getFilePage(<generated>)\n	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\n	at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at de.codecentric.boot.admin.server.ui.web.servlet.HomepageForwardingFilter.doFilter(HomepageForwardingFilter.java:78)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:111)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.flowable.core.web.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:29)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tenant.core.security.TenantSecurityWebFilter.doFilterInternal(TenantSecurityWebFilter.java:98)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:121)\n	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:60)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)\n	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tenant.core.web.TenantContextWebFilter.doFilterInternal(TenantContextWebFilter.java:32)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\n	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)\n	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\n	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)\n	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\n	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)\n	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735)\n	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n	at java.lang.Thread.run(Thread.java:748)\nCaused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column \'path\' in \'field list\'\n	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\n	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\n	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\n	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)\n	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)\n	at com.mysql.jdbc.Util.getInstance(Util.java:408)\n	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)\n	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976)\n	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912)\n	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)\n	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)\n	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486)\n	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)\n	at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1197)\n	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3461)\n	at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)\n	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3459)\n	at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:167)\n	at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:497)\n	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)\n	at com.sun.proxy.$Proxy158.execute(Unknown Source)\n	at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)\n	at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)\n	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64)\n	at com.sun.proxy.$Proxy156.query(Unknown Source)\n	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)\n	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)\n	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)\n	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)\n	at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)\n	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)\n	at com.sun.proxy.$Proxy155.query(Unknown Source)\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145)\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)\n	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427)\n	... 180 more\n', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 239, 0, NULL, 0, NULL, '2022-03-16 22:37:32', NULL, '2022-03-16 22:37:32', b'0', 1);
 INSERT INTO `infra_api_error_log` VALUES (319, '', 1, 2, 'yudao-admin-server', 'GET', '/admin-api/infra/file/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', '2022-03-16 22:45:18', 'java.lang.NumberFormatException', 'NumberFormatException: For input string: \"b7de3474-3805-4e09-80e3-185f20c31a74\"', 'NumberFormatException: For input string: \"b7de3474-3805-4e09-80e3-185f20c31a74\"', 'java.lang.NumberFormatException: For input string: \"b7de3474-3805-4e09-80e3-185f20c31a74\"\n	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)\n	at java.lang.Long.parseLong(Long.java:589)\n	at java.lang.Long.parseLong(Long.java:631)\n	at cn.iocoder.yudao.module.infra.convert.file.FileConvertImpl.convert(FileConvertImpl.java:26)\n	at cn.iocoder.yudao.module.infra.convert.file.FileConvertImpl.fileDOListToFileRespVOList(FileConvertImpl.java:58)\n	at cn.iocoder.yudao.module.infra.convert.file.FileConvertImpl.convertPage(FileConvertImpl.java:45)\n	at cn.iocoder.yudao.module.infra.controller.admin.file.FileController.getFilePage(FileController.java:83)\n	at cn.iocoder.yudao.module.infra.controller.admin.file.FileController$$FastClassBySpringCGLIB$$2e43158f.invoke(<generated>)\n	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)\n	at cn.iocoder.yudao.framework.operatelog.core.aop.OperateLogAspect.around0(OperateLogAspect.java:96)\n	at cn.iocoder.yudao.framework.operatelog.core.aop.OperateLogAspect.around(OperateLogAspect.java:77)\n	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634)\n	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:624)\n	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:72)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:61)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)\n	at cn.iocoder.yudao.module.infra.controller.admin.file.FileController$$EnhancerBySpringCGLIB$$993e9b6f.getFilePage(<generated>)\n	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\n	at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at de.codecentric.boot.admin.server.ui.web.servlet.HomepageForwardingFilter.doFilter(HomepageForwardingFilter.java:78)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:111)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.flowable.core.web.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:29)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tenant.core.security.TenantSecurityWebFilter.doFilterInternal(TenantSecurityWebFilter.java:98)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:121)\n	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:60)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)\n	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tenant.core.web.TenantContextWebFilter.doFilterInternal(TenantContextWebFilter.java:32)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\n	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)\n	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\n	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)\n	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\n	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)\n	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735)\n	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n	at java.lang.Thread.run(Thread.java:748)\n', 'java.lang.NumberFormatException', 'NumberFormatException.java', 'forInputString', 65, 0, NULL, 0, NULL, '2022-03-16 22:45:18', NULL, '2022-03-16 22:45:18', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (320, '', 1, 2, 'yudao-admin-server', 'POST', '/admin-api/infra/codegen/create-list-from-db', '{\"query\":{\"tableNames\":\"system_role\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', '2022-03-18 22:25:12', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \n### Error updating database.  Cause: java.sql.SQLException: Field \'table_id\' doesn\'t have a default value\n### The error may exist in cn/iocoder/yudao/module/infra/dal/mysql/codegen/CodegenColumnMapper.java (best guess)\n### The error may involve cn.iocoder.yudao.module.infra.dal.mysql.codegen.CodegenColumnMapper.insert-Inline\n### The error occurred while setting parameters\n### SQL: INSERT INTO infra_codegen_column (column_name, column_type, column_comment, nullable, primary_key, auto_increment, ordinal_position, java_type, java_field, create_operation, update_operation, list_operation, list_operation_condition, list_operation_result, html_type, create_time, update_time, creator, updater) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n### Cause: java.sql.SQLException: Field \'table_id\' doesn\'t have a default value\n; Field \'table_id\' doesn\'t have a default value; nested exception is java.sql.SQLException: Field \'table_id\' doesn\'t have a default value', 'SQLException: Field \'table_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \n### Error updating database.  Cause: java.sql.SQLException: Field \'table_id\' doesn\'t have a default value\n### The error may exist in cn/iocoder/yudao/module/infra/dal/mysql/codegen/CodegenColumnMapper.java (best guess)\n### The error may involve cn.iocoder.yudao.module.infra.dal.mysql.codegen.CodegenColumnMapper.insert-Inline\n### The error occurred while setting parameters\n### SQL: INSERT INTO infra_codegen_column (column_name, column_type, column_comment, nullable, primary_key, auto_increment, ordinal_position, java_type, java_field, create_operation, update_operation, list_operation, list_operation_condition, list_operation_result, html_type, create_time, update_time, creator, updater) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n### Cause: java.sql.SQLException: Field \'table_id\' doesn\'t have a default value\n; Field \'table_id\' doesn\'t have a default value; nested exception is java.sql.SQLException: Field \'table_id\' doesn\'t have a default value\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:251)\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91)\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)\n	at com.sun.proxy.$Proxy136.insert(Unknown Source)\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)\n	at com.sun.proxy.$Proxy253.insert(Unknown Source)\n	at java.util.ArrayList.forEach(ArrayList.java:1249)\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.insertBatch(BaseMapperX.java:80)\n	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:162)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)\n	at com.sun.proxy.$Proxy253.insertBatch(Unknown Source)\n	at cn.iocoder.yudao.module.infra.service.codegen.CodegenServiceImpl.createCodegen0(CodegenServiceImpl.java:86)\n	at cn.iocoder.yudao.module.infra.service.codegen.CodegenServiceImpl.createCodegen(CodegenServiceImpl.java:114)\n	at cn.iocoder.yudao.module.infra.service.codegen.CodegenServiceImpl.lambda$createCodegenListFromDB$0(CodegenServiceImpl.java:122)\n	at java.util.ArrayList.forEach(ArrayList.java:1249)\n	at cn.iocoder.yudao.module.infra.service.codegen.CodegenServiceImpl.createCodegenListFromDB(CodegenServiceImpl.java:122)\n	at cn.iocoder.yudao.module.infra.service.codegen.CodegenServiceImpl$$FastClassBySpringCGLIB$$6152dfac.invoke(<generated>)\n	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388)\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)\n	at cn.iocoder.yudao.module.infra.service.codegen.CodegenServiceImpl$$EnhancerBySpringCGLIB$$f180be30.createCodegenListFromDB(<generated>)\n	at cn.iocoder.yudao.module.infra.controller.admin.codegen.CodegenController.createCodegenListFromDB(CodegenController.java:92)\n	at cn.iocoder.yudao.module.infra.controller.admin.codegen.CodegenController$$FastClassBySpringCGLIB$$8f5d07f9.invoke(<generated>)\n	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)\n	at cn.iocoder.yudao.framework.operatelog.core.aop.OperateLogAspect.around0(OperateLogAspect.java:96)\n	at cn.iocoder.yudao.framework.operatelog.core.aop.OperateLogAspect.around(OperateLogAspect.java:77)\n	at sun.reflect.GeneratedMethodAccessor313.invoke(Unknown Source)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634)\n	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:624)\n	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:72)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:61)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)\n	at cn.iocoder.yudao.module.infra.controller.admin.codegen.CodegenController$$EnhancerBySpringCGLIB$$2551b00b.createCodegenListFromDB(<generated>)\n	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n	at javax.servlet.http.HttpServlet.service(HttpServlet.java:681)\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at de.codecentric.boot.admin.server.ui.web.servlet.HomepageForwardingFilter.doFilter(HomepageForwardingFilter.java:78)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:111)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.flowable.core.web.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:29)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tenant.core.security.TenantSecurityWebFilter.doFilterInternal(TenantSecurityWebFilter.java:98)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:121)\n	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:60)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)\n	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tenant.core.web.TenantContextWebFilter.doFilterInternal(TenantContextWebFilter.java:32)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\n	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)\n	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\n	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)\n	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\n	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)\n	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735)\n	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n	at java.lang.Thread.run(Thread.java:748)\nCaused by: java.sql.SQLException: Field \'table_id\' doesn\'t have a default value\n	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)\n	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976)\n	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912)\n	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)\n	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)\n	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486)\n	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)\n	at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1197)\n	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3461)\n	at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)\n	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3459)\n	at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:167)\n	at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:497)\n	at sun.reflect.GeneratedMethodAccessor196.invoke(Unknown Source)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)\n	at com.sun.proxy.$Proxy158.execute(Unknown Source)\n	at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:47)\n	at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74)\n	at sun.reflect.GeneratedMethodAccessor379.invoke(Unknown Source)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64)\n	at com.sun.proxy.$Proxy156.update(Unknown Source)\n	at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50)\n	at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)\n	at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)\n	at sun.reflect.GeneratedMethodAccessor386.invoke(Unknown Source)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)\n	at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106)\n	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)\n	at com.sun.proxy.$Proxy155.update(Unknown Source)\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:194)\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:181)\n	at sun.reflect.GeneratedMethodAccessor418.invoke(Unknown Source)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427)\n	... 190 more\n', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 251, 0, NULL, 0, NULL, '2022-03-18 22:25:12', NULL, '2022-03-18 22:25:12', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (321, '', 1, 2, 'yudao-admin-server', 'POST', '/admin-api/infra/codegen/create-list-from-db', '{\"query\":{\"tableNames\":\"system_role\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', '2022-03-18 22:25:34', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \n### Error updating database.  Cause: java.sql.SQLException: Field \'table_id\' doesn\'t have a default value\n### The error may exist in cn/iocoder/yudao/module/infra/dal/mysql/codegen/CodegenColumnMapper.java (best guess)\n### The error may involve cn.iocoder.yudao.module.infra.dal.mysql.codegen.CodegenColumnMapper.insert-Inline\n### The error occurred while setting parameters\n### SQL: INSERT INTO infra_codegen_column (column_name, column_type, column_comment, nullable, primary_key, auto_increment, ordinal_position, java_type, java_field, create_operation, update_operation, list_operation, list_operation_condition, list_operation_result, html_type, create_time, update_time, creator, updater) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n### Cause: java.sql.SQLException: Field \'table_id\' doesn\'t have a default value\n; Field \'table_id\' doesn\'t have a default value; nested exception is java.sql.SQLException: Field \'table_id\' doesn\'t have a default value', 'SQLException: Field \'table_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \n### Error updating database.  Cause: java.sql.SQLException: Field \'table_id\' doesn\'t have a default value\n### The error may exist in cn/iocoder/yudao/module/infra/dal/mysql/codegen/CodegenColumnMapper.java (best guess)\n### The error may involve cn.iocoder.yudao.module.infra.dal.mysql.codegen.CodegenColumnMapper.insert-Inline\n### The error occurred while setting parameters\n### SQL: INSERT INTO infra_codegen_column (column_name, column_type, column_comment, nullable, primary_key, auto_increment, ordinal_position, java_type, java_field, create_operation, update_operation, list_operation, list_operation_condition, list_operation_result, html_type, create_time, update_time, creator, updater) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n### Cause: java.sql.SQLException: Field \'table_id\' doesn\'t have a default value\n; Field \'table_id\' doesn\'t have a default value; nested exception is java.sql.SQLException: Field \'table_id\' doesn\'t have a default value\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:251)\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91)\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)\n	at com.sun.proxy.$Proxy136.insert(Unknown Source)\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)\n	at com.sun.proxy.$Proxy253.insert(Unknown Source)\n	at java.util.ArrayList.forEach(ArrayList.java:1249)\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.insertBatch(BaseMapperX.java:80)\n	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:162)\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)\n	at com.sun.proxy.$Proxy253.insertBatch(Unknown Source)\n	at cn.iocoder.yudao.module.infra.service.codegen.CodegenServiceImpl.createCodegen0(CodegenServiceImpl.java:86)\n	at cn.iocoder.yudao.module.infra.service.codegen.CodegenServiceImpl.createCodegen(CodegenServiceImpl.java:114)\n	at cn.iocoder.yudao.module.infra.service.codegen.CodegenServiceImpl.lambda$createCodegenListFromDB$0(CodegenServiceImpl.java:122)\n	at java.util.ArrayList.forEach(ArrayList.java:1249)\n	at cn.iocoder.yudao.module.infra.service.codegen.CodegenServiceImpl.createCodegenListFromDB(CodegenServiceImpl.java:122)\n	at cn.iocoder.yudao.module.infra.service.codegen.CodegenServiceImpl$$FastClassBySpringCGLIB$$6152dfac.invoke(<generated>)\n	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388)\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)\n	at cn.iocoder.yudao.module.infra.service.codegen.CodegenServiceImpl$$EnhancerBySpringCGLIB$$f180be30.createCodegenListFromDB(<generated>)\n	at cn.iocoder.yudao.module.infra.controller.admin.codegen.CodegenController.createCodegenListFromDB(CodegenController.java:92)\n	at cn.iocoder.yudao.module.infra.controller.admin.codegen.CodegenController$$FastClassBySpringCGLIB$$8f5d07f9.invoke(<generated>)\n	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)\n	at cn.iocoder.yudao.framework.operatelog.core.aop.OperateLogAspect.around0(OperateLogAspect.java:96)\n	at cn.iocoder.yudao.framework.operatelog.core.aop.OperateLogAspect.around(OperateLogAspect.java:77)\n	at sun.reflect.GeneratedMethodAccessor313.invoke(Unknown Source)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634)\n	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:624)\n	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:72)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:61)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)\n	at cn.iocoder.yudao.module.infra.controller.admin.codegen.CodegenController$$EnhancerBySpringCGLIB$$2551b00b.createCodegenListFromDB(<generated>)\n	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n	at javax.servlet.http.HttpServlet.service(HttpServlet.java:681)\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at de.codecentric.boot.admin.server.ui.web.servlet.HomepageForwardingFilter.doFilter(HomepageForwardingFilter.java:78)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:111)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.flowable.core.web.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:29)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tenant.core.security.TenantSecurityWebFilter.doFilterInternal(TenantSecurityWebFilter.java:98)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:121)\n	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:60)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)\n	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tenant.core.web.TenantContextWebFilter.doFilterInternal(TenantContextWebFilter.java:32)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\n	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)\n	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\n	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)\n	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\n	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)\n	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735)\n	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n	at java.lang.Thread.run(Thread.java:748)\nCaused by: java.sql.SQLException: Field \'table_id\' doesn\'t have a default value\n	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)\n	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976)\n	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912)\n	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)\n	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)\n	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486)\n	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)\n	at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1197)\n	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3461)\n	at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)\n	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3459)\n	at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:167)\n	at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:497)\n	at sun.reflect.GeneratedMethodAccessor196.invoke(Unknown Source)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)\n	at com.sun.proxy.$Proxy158.execute(Unknown Source)\n	at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:47)\n	at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74)\n	at sun.reflect.GeneratedMethodAccessor379.invoke(Unknown Source)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64)\n	at com.sun.proxy.$Proxy156.update(Unknown Source)\n	at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50)\n	at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)\n	at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)\n	at sun.reflect.GeneratedMethodAccessor386.invoke(Unknown Source)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)\n	at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106)\n	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)\n	at com.sun.proxy.$Proxy155.update(Unknown Source)\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:194)\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:181)\n	at sun.reflect.GeneratedMethodAccessor418.invoke(Unknown Source)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427)\n	... 190 more\n', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 251, 0, NULL, 0, NULL, '2022-03-18 22:25:34', NULL, '2022-03-18 22:25:34', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (322, '', 114, 2, 'yudao-admin-server', 'PUT', '/admin-api/bpm/task/approve', '{\"query\":{},\"body\":\"{\\\"id\\\":\\\"f8beb356-a78c-11ec-bf87-8e557beca7ad\\\",\\\"comment\\\":\\\"不错!\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', '2022-03-19 22:16:19', 'org.flowable.common.engine.api.FlowableOptimisticLockingException', 'FlowableOptimisticLockingException: Execution[ id \'6bee3762-a787-11ec-96d6-8e557beca7ad\' ] - activity \'Event_0g5w7ck\' - parent \'6be9f198-a787-11ec-96d6-8e557beca7ad\' was updated by another transaction concurrently', 'FlowableOptimisticLockingException: Execution[ id \'6bee3762-a787-11ec-96d6-8e557beca7ad\' ] - activity \'Event_0g5w7ck\' - parent \'6be9f198-a787-11ec-96d6-8e557beca7ad\' was updated by another transaction concurrently', 'org.flowable.common.engine.api.FlowableOptimisticLockingException: Execution[ id \'6bee3762-a787-11ec-96d6-8e557beca7ad\' ] - activity \'Event_0g5w7ck\' - parent \'6be9f198-a787-11ec-96d6-8e557beca7ad\' was updated by another transaction concurrently\n	at org.flowable.common.engine.impl.db.DbSqlSession.flushUpdates(DbSqlSession.java:577)\n	at org.flowable.common.engine.impl.db.DbSqlSession.flush(DbSqlSession.java:364)\n	at org.flowable.common.engine.impl.interceptor.CommandContext.flushSessions(CommandContext.java:211)\n	at org.flowable.common.engine.impl.interceptor.CommandContext.close(CommandContext.java:69)\n	at org.flowable.common.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:107)\n	at org.flowable.common.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:52)\n	at org.flowable.common.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:30)\n	at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:56)\n	at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:51)\n	at org.flowable.engine.impl.TaskServiceImpl.complete(TaskServiceImpl.java:217)\n	at cn.iocoder.yudao.module.bpm.service.task.BpmTaskServiceImpl.approveTask(BpmTaskServiceImpl.java:182)\n	at cn.iocoder.yudao.module.bpm.service.task.BpmTaskServiceImpl$$FastClassBySpringCGLIB$$5c73399a.invoke(<generated>)\n	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388)\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)\n	at cn.iocoder.yudao.module.bpm.service.task.BpmTaskServiceImpl$$EnhancerBySpringCGLIB$$f5855e16.approveTask(<generated>)\n	at cn.iocoder.yudao.module.bpm.controller.admin.task.BpmTaskController.approveTask(BpmTaskController.java:60)\n	at cn.iocoder.yudao.module.bpm.controller.admin.task.BpmTaskController$$FastClassBySpringCGLIB$$5246e6e1.invoke(<generated>)\n	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)\n	at cn.iocoder.yudao.framework.operatelog.core.aop.OperateLogAspect.around0(OperateLogAspect.java:96)\n	at cn.iocoder.yudao.framework.operatelog.core.aop.OperateLogAspect.around(OperateLogAspect.java:77)\n	at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634)\n	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:624)\n	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:72)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:61)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)\n	at cn.iocoder.yudao.module.bpm.controller.admin.task.BpmTaskController$$EnhancerBySpringCGLIB$$ca26d53b.approveTask(<generated>)\n	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n	at java.lang.reflect.Method.invoke(Method.java:498)\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)\n	at javax.servlet.http.HttpServlet.service(HttpServlet.java:684)\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at de.codecentric.boot.admin.server.ui.web.servlet.HomepageForwardingFilter.doFilter(HomepageForwardingFilter.java:78)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:111)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.flowable.core.web.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:29)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tenant.core.security.TenantSecurityWebFilter.doFilterInternal(TenantSecurityWebFilter.java:98)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:121)\n	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:60)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)\n	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tenant.core.web.TenantContextWebFilter.doFilterInternal(TenantContextWebFilter.java:32)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.web.core.filter.CacheRequestBodyFilter.doFilterInternal(CacheRequestBodyFilter.java:22)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\n	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)\n	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\n	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)\n	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\n	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)\n	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735)\n	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n	at java.lang.Thread.run(Thread.java:748)\n', 'org.flowable.common.engine.impl.db.DbSqlSession', 'DbSqlSession.java', 'flushUpdates', 577, 0, NULL, 0, NULL, '2022-03-19 22:16:19', NULL, '2022-03-19 22:16:19', b'0', 1);
 COMMIT;
 
 -- ----------------------------
@@ -1303,7 +1315,7 @@ CREATE TABLE `infra_codegen_column` (
   `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=789 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代码生成表字段定义';
+) ENGINE=InnoDB AUTO_INCREMENT=804 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代码生成表字段定义';
 
 -- ----------------------------
 -- Records of infra_codegen_column
@@ -1585,6 +1597,21 @@ INSERT INTO `infra_codegen_column` VALUES (785, 64, 'create_time', 'datetime', '
 INSERT INTO `infra_codegen_column` VALUES (786, 64, 'updater', 'varchar(64)', '更新者', b'1', b'0', '0', 9, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2022-03-15 00:23:42', '1', '2022-03-15 22:51:20', b'0');
 INSERT INTO `infra_codegen_column` VALUES (787, 64, 'update_time', 'datetime', '更新时间', b'0', b'0', '0', 10, 'Date', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2022-03-15 00:23:42', '1', '2022-03-15 22:51:20', b'0');
 INSERT INTO `infra_codegen_column` VALUES (788, 64, 'deleted', 'bit(1)', '是否删除', b'0', b'0', '0', 11, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2022-03-15 00:23:42', '1', '2022-03-15 22:51:20', b'0');
+INSERT INTO `infra_codegen_column` VALUES (789, 67, 'id', 'bigint', '角色ID', b'0', b'1', '1', 1, 'Long', 'id', '', NULL, b'0', b'1', b'0', '=', b'1', 'input', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (790, 67, 'name', 'varchar(30)', '角色名称', b'0', b'0', '0', 2, 'String', 'name', '', NULL, b'1', b'1', b'1', 'LIKE', b'1', 'input', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (791, 67, 'code', 'varchar(100)', '角色权限字符串', b'0', b'0', '0', 3, 'String', 'code', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (792, 67, 'sort', 'int', '显示顺序', b'0', b'0', '0', 4, 'Integer', 'sort', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (793, 67, 'data_scope', 'tinyint', '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)', b'0', b'0', '0', 5, 'Integer', 'dataScope', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (794, 67, 'data_scope_dept_ids', 'varchar(500)', '数据范围(指定部门数组)', b'0', b'0', '0', 6, 'String', 'dataScopeDeptIds', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (795, 67, 'status', 'tinyint', '角色状态(0正常 1停用)', b'0', b'0', '0', 7, 'Integer', 'status', '', NULL, b'1', b'1', b'1', '=', b'1', 'radio', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (796, 67, 'type', 'tinyint', '角色类型', b'0', b'0', '0', 8, 'Integer', 'type', '', NULL, b'1', b'1', b'1', '=', b'1', 'select', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (797, 67, 'remark', 'varchar(500)', '备注', b'1', b'0', '0', 9, 'String', 'remark', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (798, 67, 'creator', 'varchar(64)', '创建者', b'1', b'0', '0', 10, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (799, 67, 'create_time', 'datetime', '创建时间', b'0', b'0', '0', 11, 'Date', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (800, 67, 'updater', 'varchar(64)', '更新者', b'1', b'0', '0', 12, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (801, 67, 'update_time', 'datetime', '更新时间', b'0', b'0', '0', 13, 'Date', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (802, 67, 'deleted', 'bit(1)', '是否删除', b'0', b'0', '0', 14, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
+INSERT INTO `infra_codegen_column` VALUES (803, 67, 'tenant_id', 'bigint', '租户编号', b'0', b'0', '0', 15, 'Long', 'tenantId', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2022-03-18 22:31:29', '1', '2022-03-18 22:31:29', b'0');
 COMMIT;
 
 -- ----------------------------
@@ -1611,7 +1638,7 @@ CREATE TABLE `infra_codegen_table` (
   `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代码生成表定义';
+) ENGINE=InnoDB AUTO_INCREMENT=68 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代码生成表定义';
 
 -- ----------------------------
 -- Records of infra_codegen_table
@@ -1639,6 +1666,7 @@ INSERT INTO `infra_codegen_table` VALUES (61, 1, 1, 'bpm_oa_leave', 'OA 请假
 INSERT INTO `infra_codegen_table` VALUES (62, 1, 1, 'bpm_oa_leave', 'OA 请假申请表', NULL, 'bpm', 'oaLeave', 'OaLeave', 'OA 请假申请', '芋道源码', 1, NULL, '1', '2022-03-10 15:56:15', '1', '2022-03-12 15:01:25', b'0');
 INSERT INTO `infra_codegen_table` VALUES (63, 1, 1, 'infra_file_config', '文件配置表', NULL, 'infra', 'fileConfig', 'FileConfig', '文件配置', '芋道源码', 1, NULL, '1', '2022-03-14 16:22:45', '1', '2022-03-14 16:23:33', b'1');
 INSERT INTO `infra_codegen_table` VALUES (64, 1, 1, 'infra_file_config', '文件配置表', NULL, 'infra', 'file', 'FileConfig', '文件配置', '芋道源码', 1, 1, '1', '2022-03-14 16:23:19', '1', '2022-03-15 22:51:20', b'0');
+INSERT INTO `infra_codegen_table` VALUES (67, 1, 1, 'system_role', '角色信息表', NULL, 'system', 'role', 'Role', '角色信息', '芋道源码', 1, NULL, '1', '2022-03-10 15:56:18', '1', '2022-03-18 22:31:29', b'0');
 COMMIT;
 
 -- ----------------------------
@@ -1666,8 +1694,8 @@ CREATE TABLE `infra_config` (
 -- Records of infra_config
 -- ----------------------------
 BEGIN;
-INSERT INTO `infra_config` VALUES (1, 'ui', 1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', b'0', '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow', 'admin', '2021-01-05 17:03:48', '1', '2021-12-16 07:42:36', b'0');
-INSERT INTO `infra_config` VALUES (2, 'biz', 1, '用户管理-账号初始密码', 'sys.user.init-password', '123456', b'0', '初始化密码 123456', 'admin', '2021-01-05 17:03:48', '', '2021-04-13 03:48:02', b'0');
+INSERT INTO `infra_config` VALUES (1, 'ui', 1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', b'0', '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow', 'admin', '2021-01-05 17:03:48', '1', '2022-03-20 02:25:48', b'0');
+INSERT INTO `infra_config` VALUES (2, 'biz', 1, '用户管理-账号初始密码', 'sys.user.init-password', '123456', b'0', '初始化密码 123456', 'admin', '2021-01-05 17:03:48', '1', '2022-03-20 02:25:51', b'0');
 INSERT INTO `infra_config` VALUES (3, 'ui', 1, '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', b'0', '深色主题theme-dark,浅色主题theme-light', 'admin', '2021-01-05 17:03:48', '', '2021-01-19 03:05:21', b'0');
 INSERT INTO `infra_config` VALUES (4, '1', 2, 'xxx', 'demo.test', '10', b'0', '5', '', '2021-01-19 03:10:26', '', '2021-01-20 09:25:55', b'0');
 INSERT INTO `infra_config` VALUES (5, 'xxx', 2, 'xxx', 'xxx', 'xxx', b'1', 'xxx', '', '2021-02-09 20:06:47', '', '2021-02-09 20:06:47', b'0');
@@ -1691,15 +1719,18 @@ CREATE TABLE `infra_file` (
   `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件表';
+) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件表';
 
 -- ----------------------------
 -- Records of infra_file
 -- ----------------------------
 BEGIN;
 INSERT INTO `infra_file` VALUES (1, 2, 'v2-e68697db7bc2aba0924c5b5e7e377dff_r.jpeg', 'http://test.yudao.iocoder.cn/v2-e68697db7bc2aba0924c5b5e7e377dff_r.jpeg', 'jpg', 31809, '1', '2022-03-16 22:50:11', '1', '2022-03-16 15:08:33', b'1');
-INSERT INTO `infra_file` VALUES (2, 2, '1000.jpeg', 'http://test.yudao.iocoder.cn/1000.jpeg', 'jpg', 34126, '1', '2022-03-16 23:07:27', '1', '2022-03-16 23:07:27', b'0');
-INSERT INTO `infra_file` VALUES (3, 2, 'a294ecb2-73dd-4353-bf40-296b8931d0bf', 'http://test.yudao.iocoder.cn/a294ecb2-73dd-4353-bf40-296b8931d0bf', 'jpg', 83115, '1', '2022-03-16 23:51:41', '1', '2022-03-16 23:51:41', b'0');
+INSERT INTO `infra_file` VALUES (2, 2, '1000.jpeg', 'http://test.yudao.iocoder.cn/1000.jpeg', 'jpg', 34126, '1', '2022-03-16 23:07:27', '1', '2022-03-17 11:49:48', b'1');
+INSERT INTO `infra_file` VALUES (3, 2, 'a294ecb2-73dd-4353-bf40-296b8931d0bf', 'http://test.yudao.iocoder.cn/a294ecb2-73dd-4353-bf40-296b8931d0bf', 'jpg', 83115, '1', '2022-03-16 23:51:41', '1', '2022-03-17 11:49:50', b'1');
+INSERT INTO `infra_file` VALUES (4, 2, '43301647479822_.pic.jpg', 'http://test.yudao.iocoder.cn/43301647479822_.pic.jpg', 'png', 423337, '1', '2022-03-17 09:19:11', '1', '2022-03-17 09:19:11', b'0');
+INSERT INTO `infra_file` VALUES (5, 2, '43891647495423_.pic.jpg', 'http://test.yudao.iocoder.cn/43891647495423_.pic.jpg', 'png', 17424, '1', '2022-03-17 19:51:31', '1', '2022-03-17 19:51:31', b'0');
+INSERT INTO `infra_file` VALUES (6, 2, '822aebded6e6414e912534c6091771a4.jpg', 'http://test.yudao.iocoder.cn/822aebded6e6414e912534c6091771a4.jpg', 'jpg', 18385, '1', '2022-03-17 20:48:00', '1', '2022-03-17 20:48:00', b'0');
 COMMIT;
 
 -- ----------------------------
@@ -1719,18 +1750,22 @@ CREATE TABLE `infra_file_config` (
   `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件配置表';
+) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件配置表';
 
 -- ----------------------------
 -- Records of infra_file_config
 -- ----------------------------
 BEGIN;
-INSERT INTO `infra_file_config` VALUES (2, 'S3 - 七牛云', 20, '戴佩妮真可爱', b'1', '{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"s3-cn-south-1.qiniucs.com\",\"domain\":\"http://test.yudao.iocoder.cn\",\"region\":\"oss-cn-beijing\",\"bucket\":\"ruoyi-vue-pro\",\"accessKey\":\"b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8\",\"accessSecret\":\"kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP\"}', '1', '2022-03-15 20:43:34', '1', '2022-03-16 00:21:26', b'0');
+INSERT INTO `infra_file_config` VALUES (2, 'S3 - 七牛云', 20, '戴佩妮真可爱', b'1', '{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"s3-cn-south-1.qiniucs.com\",\"domain\":\"http://test.yudao.iocoder.cn\",\"region\":\"oss-cn-beijing\",\"bucket\":\"ruoyi-vue-pro\",\"accessKey\":\"b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8\",\"accessSecret\":\"kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP\"}', '1', '2022-03-15 20:43:34', '1', '2022-03-19 09:55:12', b'1');
 INSERT INTO `infra_file_config` VALUES (3, '测试', 20, NULL, b'0', '{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"1\",\"domain\":\"\",\"region\":\"2\",\"bucket\":\"3\",\"accessKey\":\"4\",\"accessSecret\":\"5\"}', '1', '2022-03-15 23:30:58', '1', '2022-03-15 15:40:27', b'1');
-INSERT INTO `infra_file_config` VALUES (4, '数据库', 1, '我是数据库', b'0', '{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.db.DBFileClientConfig\",\"domain\":\"http://127.0.0.1:48080\"}', '1', '2022-03-15 23:56:24', '1', '2022-03-16 00:21:26', b'0');
-INSERT INTO `infra_file_config` VALUES (5, '本地磁盘', 10, '测试下本地存储', b'0', '{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.local.LocalFileClientConfig\",\"basePath\":\"/Users/yunai/file_test\",\"domain\":\"http://127.0.0.1:48080\"}', '1', '2022-03-15 23:57:00', '1', '2022-03-16 00:21:26', b'0');
+INSERT INTO `infra_file_config` VALUES (4, '数据库', 1, '我是数据库', b'0', '{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.db.DBFileClientConfig\",\"domain\":\"http://127.0.0.1:48080\"}', '1', '2022-03-15 23:56:24', '1', '2022-03-19 19:10:11', b'0');
+INSERT INTO `infra_file_config` VALUES (5, '本地磁盘', 10, '测试下本地存储', b'0', '{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.local.LocalFileClientConfig\",\"basePath\":\"/Users/yunai/file_test\",\"domain\":\"http://127.0.0.1:48080\"}', '1', '2022-03-15 23:57:00', '1', '2022-03-19 19:10:11', b'0');
 INSERT INTO `infra_file_config` VALUES (6, 'FTP 服务器', 11, '测试下 FTP', b'0', '{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.ftp.FtpFileClientConfig\",\"basePath\":\"/Users/yunai/file_test\",\"domain\":\"http://127.0.0.1:48080\",\"host\":\"127.0.0.1\",\"port\":22,\"username\":\"root\",\"password\":\"password\",\"mode\":\"Active\"}', '1', '2022-03-16 00:00:43', '1', '2022-03-16 13:23:32', b'1');
 INSERT INTO `infra_file_config` VALUES (7, 'SFTP 服务器', 12, NULL, b'0', '{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.sftp.SftpFileClientConfig\",\"basePath\":\"/Users/yunai/file_test\",\"domain\":\"http://127.0.0.1:48080\",\"host\":\"127.0.0.1\",\"port\":23,\"username\":\"root\",\"password\":\"password\"}', '1', '2022-03-16 00:02:02', '1', '2022-03-16 13:23:31', b'1');
+INSERT INTO `infra_file_config` VALUES (8, 'S3 - 测试', 20, NULL, b'0', '{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"s3-cn-south-1.qiniucs.com\",\"domain\":\"http://test.yudao.iocoder.cn\",\"region\":\"oss-cn-beijing\",\"bucket\":\"ruoyi-vue-pro\",\"accessKey\":\"b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8\",\"accessSecret\":\"kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP\"}', '1', '2022-03-17 18:46:19', '1', '2022-03-17 10:46:28', b'1');
+INSERT INTO `infra_file_config` VALUES (9, 'S3 - 测试', 20, NULL, b'0', '{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"s3-cn-south-1.qiniucs.com\",\"domain\":\"http://test.yudao.iocoder.cn\",\"region\":\"oss-cn-beijing\",\"bucket\":\"ruoyi-vue-pro\",\"accessKey\":\"b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8\",\"accessSecret\":\"kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP\"}', '1', '2022-03-17 19:40:13', '1', '2022-03-17 11:40:16', b'1');
+INSERT INTO `infra_file_config` VALUES (10, 'S3 - 测试七牛', 20, NULL, b'0', '{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"s3-cn-south-1.qiniucs.com\",\"domain\":\"http://test.yudao.iocoder.cn\",\"region\":\"oss-cn-beijing\",\"bucket\":\"ruoyi-vue-pro\",\"accessKey\":\"b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8\",\"accessSecret\":\"kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP\"}', '1', '2022-03-17 19:54:19', '1', '2022-03-17 11:57:19', b'1');
+INSERT INTO `infra_file_config` VALUES (11, 'S3 - 七牛云', 20, NULL, b'1', '{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"s3-cn-south-1.qiniucs.com\",\"domain\":\"http://test.yudao.iocoder.cn\",\"bucket\":\"ruoyi-vue-pro\",\"accessKey\":\"b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8\",\"accessSecret\":\"kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP\"}', '1', '2022-03-19 18:00:03', '1', '2022-03-19 19:10:11', b'0');
 COMMIT;
 
 -- ----------------------------
@@ -2886,7 +2921,7 @@ CREATE TABLE `system_login_log` (
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=1042 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统访问记录';
+) ENGINE=InnoDB AUTO_INCREMENT=1055 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统访问记录';
 
 -- ----------------------------
 -- Records of system_login_log
@@ -3043,6 +3078,19 @@ INSERT INTO `system_login_log` VALUES (1038, 102, '', 1, 2, 'admin', 0, '127.0.0
 INSERT INTO `system_login_log` VALUES (1039, 102, '', 1, 2, 'admin', 0, '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.13)', NULL, '2022-03-15 22:20:22', NULL, '2022-03-15 22:20:22', b'0', 1);
 INSERT INTO `system_login_log` VALUES (1040, 102, '', 1, 2, 'admin', 0, '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.13)', NULL, '2022-03-15 22:20:26', NULL, '2022-03-15 22:20:26', b'0', 1);
 INSERT INTO `system_login_log` VALUES (1041, 100, '', 1, 2, 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-16 23:46:20', NULL, '2022-03-16 23:46:20', b'0', 1);
+INSERT INTO `system_login_log` VALUES (1042, 100, '', 1, 2, 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-18 22:24:46', NULL, '2022-03-18 22:24:46', b'0', 1);
+INSERT INTO `system_login_log` VALUES (1043, 100, '', 1, 2, 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 18:27:50', NULL, '2022-03-19 18:27:50', b'0', 1);
+INSERT INTO `system_login_log` VALUES (1044, 100, '', 0, 2, 'aoteman', 10, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 18:37:33', NULL, '2022-03-19 18:37:33', b'0', 121);
+INSERT INTO `system_login_log` VALUES (1045, 100, '', 0, 2, 'aoteman', 10, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 18:37:42', NULL, '2022-03-19 18:37:42', b'0', 121);
+INSERT INTO `system_login_log` VALUES (1046, 100, '', 0, 2, 'aoteman', 10, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 18:37:56', NULL, '2022-03-19 18:37:56', b'0', 121);
+INSERT INTO `system_login_log` VALUES (1047, 100, '', 0, 2, 'aoteman', 10, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 18:38:21', NULL, '2022-03-19 18:38:21', b'0', 121);
+INSERT INTO `system_login_log` VALUES (1048, 100, '', 113, 2, 'aoteman', 10, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 18:38:40', NULL, '2022-03-19 18:38:40', b'0', 122);
+INSERT INTO `system_login_log` VALUES (1049, 100, '', 113, 2, 'aoteman', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 18:38:51', NULL, '2022-03-19 18:38:51', b'0', 122);
+INSERT INTO `system_login_log` VALUES (1050, 100, '', 104, 2, 'test', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 21:45:14', NULL, '2022-03-19 21:45:14', b'0', 1);
+INSERT INTO `system_login_log` VALUES (1051, 200, '', 104, 2, 'test', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 21:46:11', NULL, '2022-03-19 21:46:11', b'0', 1);
+INSERT INTO `system_login_log` VALUES (1052, 100, '', 104, 2, 'test', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 21:46:19', NULL, '2022-03-19 21:46:19', b'0', 1);
+INSERT INTO `system_login_log` VALUES (1053, 200, '', 104, 2, 'test', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 22:13:06', NULL, '2022-03-19 22:13:06', b'0', 1);
+INSERT INTO `system_login_log` VALUES (1054, 100, '', 114, 2, 'hrmgr', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 22:15:43', NULL, '2022-03-19 22:15:43', b'0', 1);
 COMMIT;
 
 -- ----------------------------
@@ -3374,7 +3422,7 @@ CREATE TABLE `system_operate_log` (
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=1566 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志记录';
+) ENGINE=InnoDB AUTO_INCREMENT=1619 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志记录';
 
 -- ----------------------------
 -- Records of system_operate_log
@@ -3797,6 +3845,59 @@ INSERT INTO `system_operate_log` VALUES (1562, '', 1, 2, '管理后台 - 菜单'
 INSERT INTO `system_operate_log` VALUES (1563, '', 1, 2, '管理后台 - 菜单', '修改菜单', 3, '', '', 'PUT', '/admin-api/system/menu/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.system.controller.admin.permission.MenuController.updateMenu(MenuUpdateReqVO)', '{\"reqVO\":{\"name\":\"文件配置\",\"permission\":\"\",\"type\":2,\"sort\":0,\"parentId\":1243,\"path\":\"file-config\",\"icon\":\"\",\"component\":\"infra/fileConfig/index\",\"status\":0,\"id\":1237}}', '2022-03-16 23:48:43', 40, 0, '', 'true', NULL, '2022-03-16 23:48:43', NULL, '2022-03-16 23:48:43', b'0', 1);
 INSERT INTO `system_operate_log` VALUES (1564, '', 1, 2, '管理后台 - 菜单', '修改菜单', 3, '', '', 'PUT', '/admin-api/system/menu/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.system.controller.admin.permission.MenuController.updateMenu(MenuUpdateReqVO)', '{\"reqVO\":{\"name\":\"文件配置\",\"permission\":\"\",\"type\":2,\"sort\":0,\"parentId\":1243,\"path\":\"file-config\",\"icon\":\"config\",\"component\":\"infra/fileConfig/index\",\"status\":0,\"id\":1237}}', '2022-03-16 23:49:31', 42, 0, '', 'true', NULL, '2022-03-16 23:49:31', NULL, '2022-03-16 23:49:31', b'0', 1);
 INSERT INTO `system_operate_log` VALUES (1565, '', 1, 2, '管理后台 - 用户个人中心', '上传用户个人头像', 3, '', '', 'PUT', '/admin-api/system/user/profile/update-avatar', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.system.controller.admin.user.UserProfileController.updateUserAvatar(MultipartFile)', '{\"file\":\"[ignore]\"}', '2022-03-16 23:51:41', 942, 0, '', '\"http://test.yudao.iocoder.cn/a294ecb2-73dd-4353-bf40-296b8931d0bf\"', NULL, '2022-03-16 23:51:42', NULL, '2022-03-16 23:51:42', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1566, '', 1, 2, '管理后台 - 文件存储', '上传文件', 2, '', '', 'POST', '/admin-api/infra/file/upload', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileController.uploadFile(MultipartFile,String)', '{\"path\":\"43301647479822_.pic.jpg\",\"file\":\"[ignore]\"}', '2022-03-17 09:19:10', 1129, 0, '', '\"http://test.yudao.iocoder.cn/43301647479822_.pic.jpg\"', NULL, '2022-03-17 09:19:11', NULL, '2022-03-17 09:19:11', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1567, '', 1, 2, '管理后台 - 文件配置', '创建文件配置', 2, '', '', 'POST', '/admin-api/infra/file-config/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileConfigController.createFileConfig(FileConfigCreateReqVO)', '{\"createReqVO\":{\"name\":\"S3 - 测试\",\"remark\":null,\"storage\":20,\"config\":{\"endpoint\":\"s3-cn-south-1.qiniucs.com\",\"region\":\"oss-cn-beijing\",\"bucket\":\"ruoyi-vue-pro\",\"accessKey\":\"b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8\",\"accessSecret\":\"kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP\",\"domain\":\"http://test.yudao.iocoder.cn\"}}}', '2022-03-17 18:46:19', 86, 0, '', '8', NULL, '2022-03-17 18:46:19', NULL, '2022-03-17 18:46:19', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1568, '', 1, 2, '管理后台 - 文件配置', '删除文件配置', 4, '', '', 'DELETE', '/admin-api/infra/file-config/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileConfigController.deleteFileConfig(Long)', '{\"id\":8}', '2022-03-17 18:46:28', 32, 0, '', 'true', NULL, '2022-03-17 18:46:28', NULL, '2022-03-17 18:46:28', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1569, '', 1, 2, '管理后台 - 文件配置', '创建文件配置', 2, '', '', 'POST', '/admin-api/infra/file-config/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileConfigController.createFileConfig(FileConfigCreateReqVO)', '{\"createReqVO\":{\"name\":\"S3 - 测试\",\"remark\":null,\"storage\":20,\"config\":{\"endpoint\":\"s3-cn-south-1.qiniucs.com\",\"region\":\"oss-cn-beijing\",\"bucket\":\"ruoyi-vue-pro\",\"accessKey\":\"b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8\",\"accessSecret\":\"kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP\",\"domain\":\"http://test.yudao.iocoder.cn\"}}}', '2022-03-17 19:40:13', 21, 0, '', '9', NULL, '2022-03-17 19:40:13', NULL, '2022-03-17 19:40:13', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1570, '', 1, 2, '管理后台 - 文件配置', '删除文件配置', 4, '', '', 'DELETE', '/admin-api/infra/file-config/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileConfigController.deleteFileConfig(Long)', '{\"id\":9}', '2022-03-17 19:40:16', 26, 0, '', 'true', NULL, '2022-03-17 19:40:16', NULL, '2022-03-17 19:40:16', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1571, '', 1, 2, '管理后台 - 文件配置', '更新文件配置', 3, '', '', 'PUT', '/admin-api/infra/file-config/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileConfigController.updateFileConfig(FileConfigUpdateReqVO)', '{\"updateReqVO\":{\"name\":\"S3 - 七牛云\",\"remark\":\"戴佩妮真可爱\",\"id\":2,\"config\":{\"@class\":\"cn.iocoder.yudao.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"s3-cn-south-1.qiniucs.com\",\"domain\":\"http://test.yudao.iocoder.cn\",\"region\":\"oss-cn-beijing\",\"bucket\":\"ruoyi-vue-pro\",\"accessKey\":\"b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8\",\"accessSecret\":\"kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP\"}}}', '2022-03-17 19:43:46', 29, 0, '', 'true', NULL, '2022-03-17 19:43:46', NULL, '2022-03-17 19:43:46', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1572, '', 1, 2, '管理后台 - 文件存储', '删除文件', 4, '', '', 'DELETE', '/admin-api/infra/file/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileController.deleteFile(Long)', '{\"id\":2}', '2022-03-17 19:49:48', 326, 0, '', 'true', NULL, '2022-03-17 19:49:48', NULL, '2022-03-17 19:49:48', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1573, '', 1, 2, '管理后台 - 文件存储', '删除文件', 4, '', '', 'DELETE', '/admin-api/infra/file/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileController.deleteFile(Long)', '{\"id\":3}', '2022-03-17 19:49:50', 82, 0, '', 'true', NULL, '2022-03-17 19:49:50', NULL, '2022-03-17 19:49:50', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1574, '', 1, 2, '管理后台 - 文件存储', '上传文件', 2, '', '', 'POST', '/admin-api/infra/file/upload', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileController.uploadFile(MultipartFile,String)', '{\"path\":\"43891647495423_.pic.jpg\",\"file\":\"[ignore]\"}', '2022-03-17 19:51:30', 317, 0, '', '\"http://test.yudao.iocoder.cn/43891647495423_.pic.jpg\"', NULL, '2022-03-17 19:51:31', NULL, '2022-03-17 19:51:31', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1575, '', 1, 2, '管理后台 - 文件配置', '创建文件配置', 2, '', '', 'POST', '/admin-api/infra/file-config/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileConfigController.createFileConfig(FileConfigCreateReqVO)', '{\"createReqVO\":{\"name\":\"S3 - 测试七牛\",\"remark\":null,\"storage\":20,\"config\":{\"endpoint\":\"s3-cn-south-1.qiniucs.com\",\"region\":\"oss-cn-beijing\",\"bucket\":\"ruoyi-vue-pro\",\"accessKey\":\"b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8\",\"accessSecret\":\"kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP\",\"domain\":\"http://test.yudao.iocoder.cn\"}}}', '2022-03-17 19:54:19', 16, 0, '', '10', NULL, '2022-03-17 19:54:19', NULL, '2022-03-17 19:54:19', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1576, '', 1, 2, '管理后台 - 文件配置', '更新文件配置为 Master', 3, '', '', 'PUT', '/admin-api/infra/file-config/update-master', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileConfigController.updateFileConfigMaster(Long)', '{\"id\":10}', '2022-03-17 19:57:15', 43, 0, '', 'true', NULL, '2022-03-17 19:57:15', NULL, '2022-03-17 19:57:15', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1577, '', 1, 2, '管理后台 - 文件配置', '更新文件配置为 Master', 3, '', '', 'PUT', '/admin-api/infra/file-config/update-master', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileConfigController.updateFileConfigMaster(Long)', '{\"id\":2}', '2022-03-17 19:57:18', 32, 0, '', 'true', NULL, '2022-03-17 19:57:18', NULL, '2022-03-17 19:57:18', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1578, '', 1, 2, '管理后台 - 文件配置', '删除文件配置', 4, '', '', 'DELETE', '/admin-api/infra/file-config/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileConfigController.deleteFileConfig(Long)', '{\"id\":10}', '2022-03-17 19:57:19', 20, 0, '', 'true', NULL, '2022-03-17 19:57:19', NULL, '2022-03-17 19:57:19', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1579, '', 1, 2, '管理后台 - 文件存储', '上传文件', 2, '', '', 'POST', '/admin-api/infra/file/upload', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileController.uploadFile(MultipartFile,String)', '{\"path\":\"822aebded6e6414e912534c6091771a4.jpg\",\"file\":\"[ignore]\"}', '2022-03-17 20:48:00', 385, 0, '', '\"http://test.yudao.iocoder.cn/822aebded6e6414e912534c6091771a4.jpg\"', NULL, '2022-03-17 20:48:00', NULL, '2022-03-17 20:48:00', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1580, '', 1, 2, '管理后台 - 代码生成器', '基于数据库的表结构,创建代码生成器的表和字段定义', 2, '', '', 'POST', '/admin-api/infra/codegen/create-list-from-db', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.codegen.CodegenController.createCodegenListFromDB(List)', '{\"tableNames\":[\"system_role\"]}', '2022-03-18 22:25:12', 270, 500, 'SQLException: Field \'table_id\' doesn\'t have a default value', 'null', NULL, '2022-03-18 22:25:12', NULL, '2022-03-18 22:25:12', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1581, '', 1, 2, '管理后台 - 代码生成器', '基于数据库的表结构,创建代码生成器的表和字段定义', 2, '', '', 'POST', '/admin-api/infra/codegen/create-list-from-db', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.codegen.CodegenController.createCodegenListFromDB(List)', '{\"tableNames\":[\"system_role\"]}', '2022-03-18 22:25:34', 96, 500, 'SQLException: Field \'table_id\' doesn\'t have a default value', 'null', NULL, '2022-03-18 22:25:34', NULL, '2022-03-18 22:25:34', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1582, '', 1, 2, '管理后台 - 代码生成器', '基于数据库的表结构,创建代码生成器的表和字段定义', 2, '', '', 'POST', '/admin-api/infra/codegen/create-list-from-db', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.codegen.CodegenController.createCodegenListFromDB(List)', '{\"tableNames\":[\"system_role\"]}', '2022-03-18 22:31:25', 4060, 0, '', '[67]', NULL, '2022-03-18 22:31:29', NULL, '2022-03-18 22:31:29', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1583, '', 1, 2, '管理后台 - 文件配置', '创建文件配置', 2, '', '', 'POST', '/admin-api/infra/file-config/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileConfigController.createFileConfig(FileConfigCreateReqVO)', '{\"createReqVO\":{\"name\":\"S3 - 七牛云\",\"remark\":null,\"storage\":20,\"config\":{\"endpoint\":\"s3-cn-south-1.qiniucs.com\",\"accessKey\":\"b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8\",\"accessSecret\":\"kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP\",\"bucket\":\"ruoyi-vue-pro\",\"domain\":\"http://test.yudao.iocoder.cn\"}}}', '2022-03-19 18:00:03', 73, 0, '', '11', NULL, '2022-03-19 18:00:03', NULL, '2022-03-19 18:00:03', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1584, '', 1, 2, '管理后台 - 租户', '更新租户', 3, '', '', 'PUT', '/admin-api/system/tenant/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.system.controller.admin.tenant.TenantController.updateTenant(TenantUpdateReqVO)', '{\"updateReqVO\":{\"name\":\"小租户\",\"contactName\":\"小王2\",\"contactMobile\":\"15601691300\",\"status\":0,\"domain\":\"http://www.iocoder.cn\",\"packageId\":111,\"expireTime\":1710086400000,\"accountCount\":20,\"id\":121}}', '2022-03-19 18:37:20', 44, 0, '', 'true', NULL, '2022-03-19 18:37:20', NULL, '2022-03-19 18:37:20', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1585, '', 1, 2, '管理后台 - 租户套餐', '更新租户套餐', 3, '', '', 'PUT', '/admin-api/system/tenant-package/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.system.controller.admin.tenant.TenantPackageController.updateTenantPackage(TenantPackageUpdateReqVO)', '{\"updateReqVO\":{\"name\":\"普通套餐\",\"status\":0,\"remark\":\"小功能\",\"menuIds\":[1024,1025,1,103,104,1017,1018,1019,1020,1021,1022,1023],\"id\":111}}', '2022-03-19 18:39:06', 138, 0, '', 'true', NULL, '2022-03-19 18:39:06', NULL, '2022-03-19 18:39:06', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1586, '', 1, 2, '管理后台 - 租户套餐', '更新租户套餐', 3, '', '', 'PUT', '/admin-api/system/tenant-package/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.system.controller.admin.tenant.TenantPackageController.updateTenantPackage(TenantPackageUpdateReqVO)', '{\"updateReqVO\":{\"name\":\"普通套餐\",\"status\":0,\"remark\":\"小功能\",\"menuIds\":[1024,1025,1,102,103,104,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023],\"id\":111}}', '2022-03-19 18:39:13', 147, 0, '', 'true', NULL, '2022-03-19 18:39:13', NULL, '2022-03-19 18:39:13', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1587, '', 1, 2, '管理后台 - 文件配置', '更新文件配置为 Master', 3, '', '', 'PUT', '/admin-api/infra/file-config/update-master', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.file.FileConfigController.updateFileConfigMaster(Long)', '{\"id\":11}', '2022-03-19 19:10:11', 45, 0, '', 'true', NULL, '2022-03-19 19:10:11', NULL, '2022-03-19 19:10:11', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1588, '', 1, 2, '管理后台 - 流程模型', '新建模型', 2, '', '', 'POST', '/admin-api/bpm/model/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.definition.BpmModelController.createModel(BpmModelCreateReqVO)', '{\"createRetVO\":{\"key\":\"common-form\",\"name\":\"通用表单\",\"description\":\"通用表单简单示例\"}}', '2022-03-19 20:13:38', 56, 0, '', '\"02217e82-a77e-11ec-96d6-8e557beca7ad\"', NULL, '2022-03-19 20:13:39', NULL, '2022-03-19 20:13:39', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1589, '', 1, 2, '管理后台 - 动态表单', '创建动态表单', 2, '', '', 'POST', '/admin-api/bpm/form/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.definition.BpmFormController.createForm(BpmFormCreateReqVO)', '{\"createReqVO\":{\"name\":\"leave-form\",\"status\":0,\"remark\":null,\"conf\":\"{\\\"formRef\\\":\\\"elForm\\\",\\\"formModel\\\":\\\"formData\\\",\\\"size\\\":\\\"medium\\\",\\\"labelPosition\\\":\\\"right\\\",\\\"labelWidth\\\":100,\\\"formRules\\\":\\\"rules\\\",\\\"gutter\\\":15,\\\"disabled\\\":false,\\\"span\\\":24,\\\"formBtns\\\":true}\",\"fields\":[\"{\\\"__config__\\\":{\\\"label\\\":\\\"开始时间\\\",\\\"tag\\\":\\\"el-date-picker\\\",\\\"tagIcon\\\":\\\"date\\\",\\\"defaultValue\\\":null,\\\"showLabel\\\":true,\\\"labelWidth\\\":null,\\\"span\\\":24,\\\"layout\\\":\\\"colFormItem\\\",\\\"required\\\":true,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/date-picker\\\",\\\"formId\\\":101,\\\"renderKey\\\":\\\"1011647692195671\\\"},\\\"placeholder\\\":\\\"请选择开始时间\\\",\\\"type\\\":\\\"date\\\",\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"disabled\\\":false,\\\"clearable\\\":true,\\\"format\\\":\\\"yyyy-MM-dd\\\",\\\"value-format\\\":\\\"yyyy-MM-dd\\\",\\\"readonly\\\":false,\\\"__vModel__\\\":\\\"field101\\\"}\",\"{\\\"__config__\\\":{\\\"label\\\":\\\"结束时间\\\",\\\"tag\\\":\\\"el-date-picker\\\",\\\"tagIcon\\\":\\\"date\\\",\\\"defaultValue\\\":null,\\\"showLabel\\\":true,\\\"labelWidth\\\":null,\\\"span\\\":24,\\\"layout\\\":\\\"colFormItem\\\",\\\"required\\\":true,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/date-picker\\\",\\\"formId\\\":102,\\\"renderKey\\\":\\\"1021647692207701\\\"},\\\"placeholder\\\":\\\"请选择结束时间\\\",\\\"type\\\":\\\"date\\\",\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"disabled\\\":false,\\\"clearable\\\":true,\\\"format\\\":\\\"yyyy-MM-dd\\\",\\\"value-format\\\":\\\"yyyy-MM-dd\\\",\\\"readonly\\\":false,\\\"__vModel__\\\":\\\"field102\\\"}\",\"{\\\"__config__\\\":{\\\"label\\\":\\\"请假类型\\\",\\\"showLabel\\\":true,\\\"labelWidth\\\":null,\\\"tag\\\":\\\"el-select\\\",\\\"tagIcon\\\":\\\"select\\\",\\\"layout\\\":\\\"colFormItem\\\",\\\"span\\\":24,\\\"required\\\":true,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/select\\\",\\\"formId\\\":103,\\\"renderKey\\\":\\\"1031647692231884\\\"},\\\"__slot__\\\":{\\\"options\\\":[{\\\"label\\\":\\\"事假\\\",\\\"value\\\":1},{\\\"label\\\":\\\"年假\\\",\\\"value\\\":2}]},\\\"placeholder\\\":\\\"请选择请假类型\\\",\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"clearable\\\":true,\\\"disabled\\\":false,\\\"filterable\\\":false,\\\"multiple\\\":false,\\\"__vModel__\\\":\\\"field103\\\"}\",\"{\\\"__config__\\\":{\\\"label\\\":\\\"原因\\\",\\\"labelWidth\\\":null,\\\"showLabel\\\":true,\\\"tag\\\":\\\"el-input\\\",\\\"tagIcon\\\":\\\"textarea\\\",\\\"required\\\":false,\\\"layout\\\":\\\"colFormItem\\\",\\\"span\\\":24,\\\"regList\\\":[],\\\"changeTag\\\":true,\\\"document\\\":\\\"https://element.eleme.cn/#/zh-CN/component/input\\\",\\\"formId\\\":105,\\\"renderKey\\\":\\\"1051647692319768\\\"},\\\"type\\\":\\\"textarea\\\",\\\"placeholder\\\":\\\"请输入原因\\\",\\\"autosize\\\":{\\\"minRows\\\":4,\\\"maxRows\\\":4},\\\"style\\\":{\\\"width\\\":\\\"100%\\\"},\\\"maxlength\\\":null,\\\"show-word-limit\\\":false,\\\"readonly\\\":false,\\\"disabled\\\":false,\\\"__vModel__\\\":\\\"field105\\\"}\"]}}', '2022-03-19 20:20:56', 23, 0, '', '15', NULL, '2022-03-19 20:20:56', NULL, '2022-03-19 20:20:56', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1590, '', 1, 2, '管理后台 - 流程模型', '修改模型', 3, '', '', 'PUT', '/admin-api/bpm/model/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.definition.BpmModelController.updateModel(BpmModelUpdateReqVO)', '{\"modelVO\":{\"id\":\"02217e82-a77e-11ec-96d6-8e557beca7ad\",\"name\":\"通用表单\",\"description\":\"通用表单简单示例\",\"category\":null,\"bpmnXml\":\"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<bpmn2:definitions xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns:bpmn2=\\\"http://www.omg.org/spec/BPMN/20100524/MODEL\\\" xmlns:bpmndi=\\\"http://www.omg.org/spec/BPMN/20100524/DI\\\" xmlns:dc=\\\"http://www.omg.org/spec/DD/20100524/DC\\\" xmlns:di=\\\"http://www.omg.org/spec/DD/20100524/DI\\\" id=\\\"diagram_Process_1647692811932\\\" targetNamespace=\\\"http://activiti.org/bpmn\\\"><bpmn2:process id=\\\"common-form\\\" name=\\\"通用表单\\\" isExecutable=\\\"true\\\"><bpmn2:startEvent id=\\\"Event_1ygq2tq\\\"><bpmn2:outgoing>Flow_0119zx3</bpmn2:outgoing></bpmn2:startEvent><bpmn2:userTask id=\\\"Activity_06rmtz9\\\" name=\\\"部门领导审批\\\"><bpmn2:incoming>Flow_0119zx3</bpmn2:incoming><bpmn2:outgoing>Flow_0dvfklr</bpmn2:outgoing></bpmn2:userTask><bpmn2:sequenceFlow id=\\\"Flow_0119zx3\\\" sourceRef=\\\"Event_1ygq2tq\\\" targetRef=\\\"Activity_06rmtz9\\\" /><bpmn2:userTask id=\\\"Activity_1hxzcyl\\\" name=\\\"HR 审批\\\"><bpmn2:incoming>Flow_0dvfklr</bpmn2:incoming><bpmn2:outgoing>Flow_1q9hzx4</bpmn2:outgoing></bpmn2:userTask><bpmn2:sequenceFlow id=\\\"Flow_0dvfklr\\\" sourceRef=\\\"Activity_06rmtz9\\\" targetRef=\\\"Activity_1hxzcyl\\\" /><bpmn2:endEvent id=\\\"Event_0g5w7ck\\\"><bpmn2:incoming>Flow_1q9hzx4</bpmn2:incoming></bpmn2:endEvent><bpmn2:sequenceFlow id=\\\"Flow_1q9hzx4\\\" sourceRef=\\\"Activity_1hxzcyl\\\" targetRef=\\\"Event_0g5w7ck\\\" /></bpmn2:process><bpmndi:BPMNDiagram id=\\\"BPMNDiagram_1\\\"><bpmndi:BPMNPlane id=\\\"common-form_di\\\" bpmnElement=\\\"common-form\\\"><bpmndi:BPMNEdge id=\\\"Flow_1q9hzx4_di\\\" bpmnElement=\\\"Flow_1q9hzx4\\\"><di:waypoint x=\\\"520\\\" y=\\\"300\\\" /><di:waypoint x=\\\"592\\\" y=\\\"300\\\" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id=\\\"Flow_0dvfklr_di\\\" bpmnElement=\\\"Flow_0dvfklr\\\"><di:waypoint x=\\\"350\\\" y=\\\"300\\\" /><di:waypoint x=\\\"420\\\" y=\\\"300\\\" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id=\\\"Flow_0119zx3_di\\\" bpmnElement=\\\"Flow_0119zx3\\\"><di:waypoint x=\\\"188\\\" y=\\\"300\\\" /><di:waypoint x=\\\"250\\\" y=\\\"300\\\" /></bpmndi:BPMNEdge><bpmndi:BPMNShape id=\\\"Event_1ygq2tq_di\\\" bpmnElement=\\\"Event_1ygq2tq\\\"><dc:Bounds x=\\\"152\\\" y=\\\"282\\\" width=\\\"36\\\" height=\\\"36\\\" /></bpmndi:BPMNShape><bpmndi:BPMNShape id=\\\"Activity_06rmtz9_di\\\" bpmnElement=\\\"Activity_06rmtz9\\\"><dc:Bounds x=\\\"250\\\" y=\\\"260\\\" width=\\\"100\\\" height=\\\"80\\\" /></bpmndi:BPMNShape><bpmndi:BPMNShape id=\\\"Activity_1hxzcyl_di\\\" bpmnElement=\\\"Activity_1hxzcyl\\\"><dc:Bounds x=\\\"420\\\" y=\\\"260\\\" width=\\\"100\\\" height=\\\"80\\\" /></bpmndi:BPMNShape><bpmndi:BPMNShape id=\\\"Event_0g5w7ck_di\\\" bpmnElement=\\\"Event_0g5w7ck\\\"><dc:Bounds x=\\\"592\\\" y=\\\"282\\\" width=\\\"36\\\" height=\\\"36\\\" /></bpmndi:BPMNShape></bpmndi:BPMNPlane></bpmndi:BPMNDiagram></bpmn2:definitions>\",\"formType\":null,\"formId\":null,\"formCustomCreatePath\":null,\"formCustomViewPath\":null}}', '2022-03-19 20:40:45', 53, 0, '', 'true', NULL, '2022-03-19 20:40:45', NULL, '2022-03-19 20:40:45', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1591, '', 1, 2, '管理后台 - 流程模型', '修改模型', 3, '', '', 'PUT', '/admin-api/bpm/model/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.definition.BpmModelController.updateModel(BpmModelUpdateReqVO)', '{\"modelVO\":{\"id\":\"02217e82-a77e-11ec-96d6-8e557beca7ad\",\"name\":\"通用表单\",\"description\":\"通用表单简单示例\",\"category\":\"1\",\"bpmnXml\":null,\"formType\":10,\"formId\":15,\"formCustomCreatePath\":null,\"formCustomViewPath\":null}}', '2022-03-19 20:40:57', 19, 0, '', 'true', NULL, '2022-03-19 20:40:57', NULL, '2022-03-19 20:40:57', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1592, '', 1, 2, '管理后台 - 任务分配规则', '创建任务分配规则', 2, '', '', 'POST', '/admin-api/bpm/task-assign-rule/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.definition.BpmTaskAssignRuleController.createTaskAssignRule(BpmTaskAssignRuleCreateReqVO)', '{\"reqVO\":{\"type\":50,\"options\":[20],\"modelId\":\"02217e82-a77e-11ec-96d6-8e557beca7ad\",\"taskDefinitionKey\":\"Activity_06rmtz9\"}}', '2022-03-19 20:58:24', 32, 0, '', '183', NULL, '2022-03-19 20:58:24', NULL, '2022-03-19 20:58:24', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1593, '', 1, 2, '管理后台 - 任务分配规则', '创建任务分配规则', 2, '', '', 'POST', '/admin-api/bpm/task-assign-rule/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.definition.BpmTaskAssignRuleController.createTaskAssignRule(BpmTaskAssignRuleCreateReqVO)', '{\"reqVO\":{\"type\":22,\"options\":[3],\"modelId\":\"02217e82-a77e-11ec-96d6-8e557beca7ad\",\"taskDefinitionKey\":\"Activity_1hxzcyl\"}}', '2022-03-19 20:59:35', 33, 0, '', '184', NULL, '2022-03-19 20:59:35', NULL, '2022-03-19 20:59:35', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1594, '', 1, 2, '管理后台 - 流程模型', '部署模型', 2, '', '', 'POST', '/admin-api/bpm/model/deploy', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.definition.BpmModelController.deployModel(String)', '{\"id\":\"02217e82-a77e-11ec-96d6-8e557beca7ad\"}', '2022-03-19 21:14:25', 602, 0, '', 'true', NULL, '2022-03-19 21:14:26', NULL, '2022-03-19 21:14:26', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1595, '', 1, 2, '管理后台 - 流程实例', '新建流程实例', 2, '', '', 'POST', '/admin-api/bpm/process-instance/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.task.BpmProcessInstanceController.createProcessInstance(BpmProcessInstanceCreateReqVO)', '{\"createReqVO\":{\"processDefinitionId\":\"common-form:1:7fdfc407-a786-11ec-96d6-8e557beca7ad\",\"variables\":{\"field101\":\"2022-03-16\",\"field102\":\"2022-03-18\",\"field103\":1,\"field105\":\"生病了\"}}}', '2022-03-19 21:21:01', 718, 0, '', '\"6be9f198-a787-11ec-96d6-8e557beca7ad\"', NULL, '2022-03-19 21:21:02', NULL, '2022-03-19 21:21:02', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1596, '', 1, 2, '管理后台 - 用户', '重置用户密码', 3, '', '', 'PUT', '/admin-api/system/user/update-password', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.system.controller.admin.user.UserController.updateUserPassword(UserUpdatePasswordReqVO)', '{\"reqVO\":{\"id\":104,\"password\":\"test\"}}', '2022-03-19 21:43:41', 131, 0, '', 'true', NULL, '2022-03-19 21:43:41', NULL, '2022-03-19 21:43:41', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1597, '', 1, 2, '管理后台 - 用户', '重置用户密码', 3, '', '', 'PUT', '/admin-api/system/user/update-password', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.system.controller.admin.user.UserController.updateUserPassword(UserUpdatePasswordReqVO)', '{\"reqVO\":{\"id\":104,\"password\":\"test123\"}}', '2022-03-19 21:44:04', 133, 0, '', 'true', NULL, '2022-03-19 21:44:04', NULL, '2022-03-19 21:44:04', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1598, '', 1, 2, '管理后台 - 权限', '赋予角色菜单', 2, '', '', 'POST', '/admin-api/system/permission/assign-role-menu', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.system.controller.admin.permission.PermissionController.assignRoleMenu(PermissionAssignRoleMenuReqVO)', '{\"reqVO\":{\"roleId\":101,\"menuIds\":[1216,1217,1218,1219,1220,1221,5,1222,1118,1119,1120,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1207,1208,1209,1210,1211,1212,1213,1215]}}', '2022-03-19 21:45:52', 257, 0, '', 'true', NULL, '2022-03-19 21:45:52', NULL, '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1599, '', 1, 2, '管理后台 - 用户', '新增用户', 2, '', '', 'POST', '/admin-api/system/user/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.system.controller.admin.user.UserController.createUser(UserCreateReqVO)', '{\"reqVO\":{\"username\":\"hrmgr\",\"nickname\":\"hr 小姐姐\",\"remark\":null,\"deptId\":null,\"postIds\":[3],\"email\":null,\"mobile\":null,\"sex\":null,\"avatar\":null,\"password\":\"hr123\"}}', '2022-03-19 21:50:58', 152, 0, '', '114', NULL, '2022-03-19 21:50:58', NULL, '2022-03-19 21:50:58', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1600, '', 1, 2, '管理后台 - 权限', '赋予用户角色', 2, '', '', 'POST', '/admin-api/system/permission/assign-user-role', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.system.controller.admin.permission.PermissionController.assignUserRole(PermissionAssignUserRoleReqVO)', '{\"reqVO\":{\"userId\":114,\"roleIds\":[101]}}', '2022-03-19 21:51:13', 20, 0, '', 'true', NULL, '2022-03-19 21:51:13', NULL, '2022-03-19 21:51:13', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1601, '', 104, 2, '管理后台 - 流程任务实例', '通过任务', 3, '', '', 'PUT', '/admin-api/bpm/task/approve', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.task.BpmTaskController.approveTask(BpmTaskApproveReqVO)', '{\"reqVO\":{\"id\":\"6bf71106-a787-11ec-96d6-8e557beca7ad\",\"comment\":\"关注【芋道源码】公众号\"}}', '2022-03-19 21:54:07', 97, 500, 'ServiceException: 操作失败,原因:找不到任务的审批人!', 'null', NULL, '2022-03-19 21:54:08', NULL, '2022-03-19 21:54:08', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1602, '', 104, 2, '管理后台 - 流程任务实例', '通过任务', 3, '', '', 'PUT', '/admin-api/bpm/task/approve', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.task.BpmTaskController.approveTask(BpmTaskApproveReqVO)', '{\"reqVO\":{\"id\":\"6bf71106-a787-11ec-96d6-8e557beca7ad\",\"comment\":\"关注【芋道源码】公众号\"}}', '2022-03-19 21:54:13', 68, 500, 'ServiceException: 操作失败,原因:找不到任务的审批人!', 'null', NULL, '2022-03-19 21:54:13', NULL, '2022-03-19 21:54:13', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1603, '', 104, 2, '管理后台 - 流程任务实例', '通过任务', 3, '', '', 'PUT', '/admin-api/bpm/task/approve', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.task.BpmTaskController.approveTask(BpmTaskApproveReqVO)', '{\"reqVO\":{\"id\":\"6bf71106-a787-11ec-96d6-8e557beca7ad\",\"comment\":\"关注【芋道源码】公众号\"}}', '2022-03-19 21:54:28', 64, 500, 'ServiceException: 操作失败,原因:找不到任务的审批人!', 'null', NULL, '2022-03-19 21:54:28', NULL, '2022-03-19 21:54:28', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1604, '', 104, 2, '管理后台 - 流程任务实例', '通过任务', 3, '', '', 'PUT', '/admin-api/bpm/task/approve', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.task.BpmTaskController.approveTask(BpmTaskApproveReqVO)', '{\"reqVO\":{\"id\":\"6bf71106-a787-11ec-96d6-8e557beca7ad\",\"comment\":\"关注【芋道源码】公众号\"}}', '2022-03-19 21:54:41', 71, 500, 'ServiceException: 操作失败,原因:找不到任务的审批人!', 'null', NULL, '2022-03-19 21:54:41', NULL, '2022-03-19 21:54:41', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1605, '', 104, 2, '管理后台 - 流程任务实例', '通过任务', 3, '', '', 'PUT', '/admin-api/bpm/task/approve', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.task.BpmTaskController.approveTask(BpmTaskApproveReqVO)', '{\"reqVO\":{\"id\":\"6bf71106-a787-11ec-96d6-8e557beca7ad\",\"comment\":\"关注【芋道源码】公众号\"}}', '2022-03-19 21:55:36', 52349, 500, 'ServiceException: 操作失败,原因:找不到任务的审批人!', 'null', NULL, '2022-03-19 21:56:29', NULL, '2022-03-19 21:56:29', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1606, '', 104, 2, '管理后台 - 流程任务实例', '通过任务', 3, '', '', 'PUT', '/admin-api/bpm/task/approve', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.task.BpmTaskController.approveTask(BpmTaskApproveReqVO)', '{\"reqVO\":{\"id\":\"6bf71106-a787-11ec-96d6-8e557beca7ad\",\"comment\":\"关注【芋道源码】公众号\"}}', '2022-03-19 21:58:22', 22929, 500, 'ServiceException: 操作失败,原因:找不到任务的审批人!', 'null', NULL, '2022-03-19 21:58:45', NULL, '2022-03-19 21:58:45', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1607, '', 1, 2, '管理后台 - 权限', '赋予角色数据权限', 2, '', '', 'POST', '/admin-api/system/permission/assign-role-data-scope', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.system.controller.admin.permission.PermissionController.assignRoleDataScope(PermissionAssignRoleDataScopeReqVO)', '{\"reqVO\":{\"roleId\":101,\"dataScope\":1,\"dataScopeDeptIds\":[]}}', '2022-03-19 22:00:41', 32, 0, '', 'true', NULL, '2022-03-19 22:00:41', NULL, '2022-03-19 22:00:41', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1608, '', 104, 2, '管理后台 - 流程任务实例', '通过任务', 3, '', '', 'PUT', '/admin-api/bpm/task/approve', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.task.BpmTaskController.approveTask(BpmTaskApproveReqVO)', '{\"reqVO\":{\"id\":\"6bf71106-a787-11ec-96d6-8e557beca7ad\",\"comment\":\"关注【芋道源码】公众号\"}}', '2022-03-19 22:00:45', 305, 0, '', 'true', NULL, '2022-03-19 22:00:45', NULL, '2022-03-19 22:00:45', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1609, '', 114, 2, '管理后台 - 流程任务实例', '通过任务', 3, '', '', 'PUT', '/admin-api/bpm/task/approve', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.task.BpmTaskController.approveTask(BpmTaskApproveReqVO)', '{\"reqVO\":{\"id\":\"f8beb356-a78c-11ec-bf87-8e557beca7ad\",\"comment\":\"不错!\"}}', '2022-03-19 22:16:00', 287, 0, '', 'true', NULL, '2022-03-19 22:16:00', NULL, '2022-03-19 22:16:00', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1610, '', 114, 2, '管理后台 - 流程任务实例', '通过任务', 3, '', '', 'PUT', '/admin-api/bpm/task/approve', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.task.BpmTaskController.approveTask(BpmTaskApproveReqVO)', '{\"reqVO\":{\"id\":\"f8beb356-a78c-11ec-bf87-8e557beca7ad\",\"comment\":\"不错!\"}}', '2022-03-19 22:15:59', 18922, 500, 'FlowableOptimisticLockingException: Execution[ id \'6bee3762-a787-11ec-96d6-8e557beca7ad\' ] - activity \'Event_0g5w7ck\' - parent \'6be9f198-a787-11ec-96d6-8e557beca7ad\' was updated by another transaction concurrently', 'null', NULL, '2022-03-19 22:16:18', NULL, '2022-03-19 22:16:18', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1611, '', 1, 2, '管理后台 - 流程模型', '新建模型', 2, '', '', 'POST', '/admin-api/bpm/model/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.definition.BpmModelController.createModel(BpmModelCreateReqVO)', '{\"createRetVO\":{\"key\":\"oa_leave\",\"name\":\"OA 请假\",\"description\":null}}', '2022-03-19 23:33:24', 24, 0, '', '\"e9e29c4f-a799-11ec-bf87-8e557beca7ad\"', NULL, '2022-03-19 23:33:24', NULL, '2022-03-19 23:33:24', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1612, '', 1, 2, '管理后台 - 流程模型', '删除模型', 4, '', '', 'DELETE', '/admin-api/bpm/model/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.definition.BpmModelController.deleteModel(String)', '{\"id\":\"e9e29c4f-a799-11ec-bf87-8e557beca7ad\"}', '2022-03-19 23:33:30', 27, 0, '', 'true', NULL, '2022-03-19 23:33:30', NULL, '2022-03-19 23:33:30', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1613, '', 1, 2, '管理后台 - 流程模型', '新建模型', 2, '', '', 'POST', '/admin-api/bpm/model/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.definition.BpmModelController.createModel(BpmModelCreateReqVO)', '{\"createRetVO\":{\"key\":\"oa_leave\",\"name\":\"OA 请假\",\"description\":null}}', '2022-03-19 23:34:41', 21, 0, '', '\"18348550-a79a-11ec-bf87-8e557beca7ad\"', NULL, '2022-03-19 23:34:41', NULL, '2022-03-19 23:34:41', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1614, '', 1, 2, '管理后台 - 流程模型', '修改模型', 3, '', '', 'PUT', '/admin-api/bpm/model/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.definition.BpmModelController.updateModel(BpmModelUpdateReqVO)', '{\"modelVO\":{\"id\":\"18348550-a79a-11ec-bf87-8e557beca7ad\",\"name\":\"OA 请假\",\"description\":null,\"category\":null,\"bpmnXml\":\"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<definitions xmlns=\\\"http://www.omg.org/spec/BPMN/20100524/MODEL\\\" xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns:bpmndi=\\\"http://www.omg.org/spec/BPMN/20100524/DI\\\" xmlns:omgdc=\\\"http://www.omg.org/spec/DD/20100524/DC\\\" xmlns:omgdi=\\\"http://www.omg.org/spec/DD/20100524/DI\\\" xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\" targetNamespace=\\\"http://www.activiti.org/processdef\\\"><process id=\\\"oa_leave\\\" name=\\\"OA 请假\\\" isExecutable=\\\"true\\\"><startEvent id=\\\"sid-590598C4-B0C6-4DCE-8C65-1B4C473964D2\\\" /><userTask id=\\\"task-01\\\" name=\\\"领导审批\\\" /><sequenceFlow id=\\\"sid-C49DB46C-17B9-469E-934C-015637BA86FC\\\" sourceRef=\\\"sid-590598C4-B0C6-4DCE-8C65-1B4C473964D2\\\" targetRef=\\\"task-01\\\" /><exclusiveGateway id=\\\"sid-DF236505-2B41-497B-BB12-D5B36A65A489\\\" default=\\\"sid-59046FB9-ABD0-43B6-9FA0-916D6972573A\\\" /><sequenceFlow id=\\\"sid-D013FF31-68E1-4326-9A6D-520D9F03F11B\\\" sourceRef=\\\"task-01\\\" targetRef=\\\"sid-DF236505-2B41-497B-BB12-D5B36A65A489\\\" /><userTask id=\\\"task-21\\\" name=\\\"HR 审批\\\" /><endEvent id=\\\"sid-A0912D5A-0AEF-47E6-A798-A29CE1FAD7FF\\\"><incoming>sid-59046FB9-ABD0-43B6-9FA0-916D6972573A</incoming></endEvent><sequenceFlow id=\\\"sid-A57EA9A3-6926-415A-92E1-73B7F7D8BA13\\\" sourceRef=\\\"task-21\\\" targetRef=\\\"sid-A0912D5A-0AEF-47E6-A798-A29CE1FAD7FF\\\" /><sequenceFlow id=\\\"sid-59046FB9-ABD0-43B6-9FA0-916D6972573A\\\" name=\\\"请假小于等于 1 天\\\" sourceRef=\\\"sid-DF236505-2B41-497B-BB12-D5B36A65A489\\\" targetRef=\\\"sid-A0912D5A-0AEF-47E6-A798-A29CE1FAD7FF\\\" /><sequenceFlow id=\\\"sid-0CAF1537-A2F7-46D2-9807-77F81C8143A7\\\" name=\\\"请假大于 3 天\\\" sourceRef=\\\"sid-DF236505-2B41-497B-BB12-D5B36A65A489\\\" targetRef=\\\"task-21\\\"><conditionExpression xsi:type=\\\"tFormalExpression\\\">${day &gt; 3}</conditionExpression></sequenceFlow></process><bpmndi:BPMNDiagram id=\\\"BPMNDiagram_leave2\\\"><bpmndi:BPMNPlane id=\\\"oa_leave_di\\\" bpmnElement=\\\"oa_leave\\\"><bpmndi:BPMNEdge id=\\\"BPMNEdge_sid-0CAF1537-A2F7-46D2-9807-77F81C8143A7\\\" bpmnElement=\\\"sid-0CAF1537-A2F7-46D2-9807-77F81C8143A7\\\"><omgdi:waypoint x=\\\"443.58097165991904\\\" y=\\\"203.08097165991902\\\" /><omgdi:waypoint x=\\\"444\\\" y=\\\"100\\\" /><omgdi:waypoint x=\\\"525\\\" y=\\\"100\\\" /><bpmndi:BPMNLabel><omgdc:Bounds x=\\\"411\\\" y=\\\"127\\\" width=\\\"68\\\" height=\\\"14\\\" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id=\\\"BPMNEdge_sid-59046FB9-ABD0-43B6-9FA0-916D6972573A\\\" bpmnElement=\\\"sid-59046FB9-ABD0-43B6-9FA0-916D6972573A\\\"><omgdi:waypoint x=\\\"464\\\" y=\\\"223\\\" /><omgdi:waypoint x=\\\"750\\\" y=\\\"223\\\" /><bpmndi:BPMNLabel><omgdc:Bounds x=\\\"464\\\" y=\\\"198\\\" width=\\\"90\\\" height=\\\"14\\\" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id=\\\"BPMNEdge_sid-A57EA9A3-6926-415A-92E1-73B7F7D8BA13\\\" bpmnElement=\\\"sid-A57EA9A3-6926-415A-92E1-73B7F7D8BA13\\\"><omgdi:waypoint x=\\\"625\\\" y=\\\"132.53968253968253\\\" /><omgdi:waypoint x=\\\"752.2660465436063\\\" y=\\\"215.36361759187076\\\" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id=\\\"BPMNEdge_sid-D013FF31-68E1-4326-9A6D-520D9F03F11B\\\" bpmnElement=\\\"sid-D013FF31-68E1-4326-9A6D-520D9F03F11B\\\"><omgdi:waypoint x=\\\"385\\\" y=\\\"223\\\" /><omgdi:waypoint x=\\\"423.5\\\" y=\\\"223\\\" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id=\\\"BPMNEdge_sid-C49DB46C-17B9-469E-934C-015637BA86FC\\\" bpmnElement=\\\"sid-C49DB46C-17B9-469E-934C-015637BA86FC\\\"><omgdi:waypoint x=\\\"233.5\\\" y=\\\"223\\\" /><omgdi:waypoint x=\\\"285\\\" y=\\\"223\\\" /></bpmndi:BPMNEdge><bpmndi:BPMNShape id=\\\"BPMNShape_sid-590598C4-B0C6-4DCE-8C65-1B4C473964D2\\\" bpmnElement=\\\"sid-590598C4-B0C6-4DCE-8C65-1B4C473964D2\\\"><omgdc:Bounds x=\\\"203.5\\\" y=\\\"208\\\" width=\\\"30\\\" height=\\\"30\\\" /></bpmndi:BPMNShape><bpmndi:BPMNShape id=\\\"task-01_di\\\" bpmnElement=\\\"task-01\\\"><omgdc:Bounds x=\\\"285\\\" y=\\\"183\\\" width=\\\"100\\\" height=\\\"80\\\" /></bpmndi:BPMNShape><bpmndi:BPMNShape id=\\\"BPMNShape_sid-DF236505-2B41-497B-BB12-D5B36A65A489\\\" bpmnElement=\\\"sid-DF236505-2B41-497B-BB12-D5B36A65A489\\\" isMarkerVisible=\\\"true\\\"><omgdc:Bounds x=\\\"423.5\\\" y=\\\"203\\\" width=\\\"40\\\" height=\\\"40\\\" /></bpmndi:BPMNShape><bpmndi:BPMNShape id=\\\"task-21_di\\\" bpmnElement=\\\"task-21\\\"><omgdc:Bounds x=\\\"525\\\" y=\\\"60\\\" width=\\\"100\\\" height=\\\"80\\\" /></bpmndi:BPMNShape><bpmndi:BPMNShape id=\\\"BPMNShape_sid-A0912D5A-0AEF-47E6-A798-A29CE1FAD7FF\\\" bpmnElement=\\\"sid-A0912D5A-0AEF-47E6-A798-A29CE1FAD7FF\\\"><omgdc:Bounds x=\\\"750\\\" y=\\\"209\\\" width=\\\"28\\\" height=\\\"28\\\" /></bpmndi:BPMNShape></bpmndi:BPMNPlane></bpmndi:BPMNDiagram></definitions>\",\"formType\":null,\"formId\":null,\"formCustomCreatePath\":null,\"formCustomViewPath\":null}}', '2022-03-19 23:45:02', 43, 0, '', 'true', NULL, '2022-03-19 23:45:02', NULL, '2022-03-19 23:45:02', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1615, '', 1, 2, '管理后台 - 流程模型', '修改模型', 3, '', '', 'PUT', '/admin-api/bpm/model/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.definition.BpmModelController.updateModel(BpmModelUpdateReqVO)', '{\"modelVO\":{\"id\":\"18348550-a79a-11ec-bf87-8e557beca7ad\",\"name\":\"OA 请假\",\"description\":null,\"category\":null,\"bpmnXml\":\"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<definitions xmlns=\\\"http://www.omg.org/spec/BPMN/20100524/MODEL\\\" xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns:bpmndi=\\\"http://www.omg.org/spec/BPMN/20100524/DI\\\" xmlns:omgdc=\\\"http://www.omg.org/spec/DD/20100524/DC\\\" xmlns:omgdi=\\\"http://www.omg.org/spec/DD/20100524/DI\\\" xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\" targetNamespace=\\\"http://www.activiti.org/processdef\\\"><process id=\\\"oa_leave\\\" name=\\\"OA 请假\\\" isExecutable=\\\"true\\\"><startEvent id=\\\"sid-590598C4-B0C6-4DCE-8C65-1B4C473964D2\\\" /><userTask id=\\\"task-01\\\" name=\\\"领导审批\\\" /><sequenceFlow id=\\\"sid-C49DB46C-17B9-469E-934C-015637BA86FC\\\" sourceRef=\\\"sid-590598C4-B0C6-4DCE-8C65-1B4C473964D2\\\" targetRef=\\\"task-01\\\" /><exclusiveGateway id=\\\"sid-DF236505-2B41-497B-BB12-D5B36A65A489\\\" default=\\\"sid-59046FB9-ABD0-43B6-9FA0-916D6972573A\\\" /><sequenceFlow id=\\\"sid-D013FF31-68E1-4326-9A6D-520D9F03F11B\\\" sourceRef=\\\"task-01\\\" targetRef=\\\"sid-DF236505-2B41-497B-BB12-D5B36A65A489\\\" /><userTask id=\\\"task-21\\\" name=\\\"HR 审批\\\" /><endEvent id=\\\"sid-A0912D5A-0AEF-47E6-A798-A29CE1FAD7FF\\\"><incoming>sid-59046FB9-ABD0-43B6-9FA0-916D6972573A</incoming></endEvent><sequenceFlow id=\\\"sid-A57EA9A3-6926-415A-92E1-73B7F7D8BA13\\\" sourceRef=\\\"task-21\\\" targetRef=\\\"sid-A0912D5A-0AEF-47E6-A798-A29CE1FAD7FF\\\" /><sequenceFlow id=\\\"sid-59046FB9-ABD0-43B6-9FA0-916D6972573A\\\" name=\\\"请假小于等于 1 天\\\" sourceRef=\\\"sid-DF236505-2B41-497B-BB12-D5B36A65A489\\\" targetRef=\\\"sid-A0912D5A-0AEF-47E6-A798-A29CE1FAD7FF\\\" /><sequenceFlow id=\\\"sid-0CAF1537-A2F7-46D2-9807-77F81C8143A7\\\" name=\\\"请假大于 3 天\\\" sourceRef=\\\"sid-DF236505-2B41-497B-BB12-D5B36A65A489\\\" targetRef=\\\"task-21\\\"><conditionExpression xsi:type=\\\"tFormalExpression\\\">${day &gt; 3}</conditionExpression></sequenceFlow></process><bpmndi:BPMNDiagram id=\\\"BPMNDiagram_leave2\\\"><bpmndi:BPMNPlane id=\\\"oa_leave_di\\\" bpmnElement=\\\"oa_leave\\\"><bpmndi:BPMNEdge id=\\\"BPMNEdge_sid-0CAF1537-A2F7-46D2-9807-77F81C8143A7\\\" bpmnElement=\\\"sid-0CAF1537-A2F7-46D2-9807-77F81C8143A7\\\"><omgdi:waypoint x=\\\"443.58097165991904\\\" y=\\\"203.08097165991902\\\" /><omgdi:waypoint x=\\\"444\\\" y=\\\"100\\\" /><omgdi:waypoint x=\\\"525\\\" y=\\\"100\\\" /><bpmndi:BPMNLabel><omgdc:Bounds x=\\\"411\\\" y=\\\"127\\\" width=\\\"68\\\" height=\\\"14\\\" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id=\\\"BPMNEdge_sid-59046FB9-ABD0-43B6-9FA0-916D6972573A\\\" bpmnElement=\\\"sid-59046FB9-ABD0-43B6-9FA0-916D6972573A\\\"><omgdi:waypoint x=\\\"464\\\" y=\\\"223\\\" /><omgdi:waypoint x=\\\"750\\\" y=\\\"223\\\" /><bpmndi:BPMNLabel><omgdc:Bounds x=\\\"464\\\" y=\\\"198\\\" width=\\\"90\\\" height=\\\"14\\\" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id=\\\"BPMNEdge_sid-A57EA9A3-6926-415A-92E1-73B7F7D8BA13\\\" bpmnElement=\\\"sid-A57EA9A3-6926-415A-92E1-73B7F7D8BA13\\\"><omgdi:waypoint x=\\\"625\\\" y=\\\"132.53968253968253\\\" /><omgdi:waypoint x=\\\"752.2660465436063\\\" y=\\\"215.36361759187076\\\" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id=\\\"BPMNEdge_sid-D013FF31-68E1-4326-9A6D-520D9F03F11B\\\" bpmnElement=\\\"sid-D013FF31-68E1-4326-9A6D-520D9F03F11B\\\"><omgdi:waypoint x=\\\"385\\\" y=\\\"223\\\" /><omgdi:waypoint x=\\\"423.5\\\" y=\\\"223\\\" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id=\\\"BPMNEdge_sid-C49DB46C-17B9-469E-934C-015637BA86FC\\\" bpmnElement=\\\"sid-C49DB46C-17B9-469E-934C-015637BA86FC\\\"><omgdi:waypoint x=\\\"233.5\\\" y=\\\"223\\\" /><omgdi:waypoint x=\\\"285\\\" y=\\\"223\\\" /></bpmndi:BPMNEdge><bpmndi:BPMNShape id=\\\"BPMNShape_sid-590598C4-B0C6-4DCE-8C65-1B4C473964D2\\\" bpmnElement=\\\"sid-590598C4-B0C6-4DCE-8C65-1B4C473964D2\\\"><omgdc:Bounds x=\\\"203.5\\\" y=\\\"208\\\" width=\\\"30\\\" height=\\\"30\\\" /></bpmndi:BPMNShape><bpmndi:BPMNShape id=\\\"task-01_di\\\" bpmnElement=\\\"task-01\\\"><omgdc:Bounds x=\\\"285\\\" y=\\\"183\\\" width=\\\"100\\\" height=\\\"80\\\" /></bpmndi:BPMNShape><bpmndi:BPMNShape id=\\\"BPMNShape_sid-DF236505-2B41-497B-BB12-D5B36A65A489\\\" bpmnElement=\\\"sid-DF236505-2B41-497B-BB12-D5B36A65A489\\\" isMarkerVisible=\\\"true\\\"><omgdc:Bounds x=\\\"423.5\\\" y=\\\"203\\\" width=\\\"40\\\" height=\\\"40\\\" /></bpmndi:BPMNShape><bpmndi:BPMNShape id=\\\"task-21_di\\\" bpmnElement=\\\"task-21\\\"><omgdc:Bounds x=\\\"525\\\" y=\\\"60\\\" width=\\\"100\\\" height=\\\"80\\\" /></bpmndi:BPMNShape><bpmndi:BPMNShape id=\\\"BPMNShape_sid-A0912D5A-0AEF-47E6-A798-A29CE1FAD7FF\\\" bpmnElement=\\\"sid-A0912D5A-0AEF-47E6-A798-A29CE1FAD7FF\\\"><omgdc:Bounds x=\\\"750\\\" y=\\\"209\\\" width=\\\"28\\\" height=\\\"28\\\" /></bpmndi:BPMNShape></bpmndi:BPMNPlane></bpmndi:BPMNDiagram></definitions>\",\"formType\":null,\"formId\":null,\"formCustomCreatePath\":null,\"formCustomViewPath\":null}}', '2022-03-20 00:17:27', 23, 0, '', 'true', NULL, '2022-03-20 00:17:27', NULL, '2022-03-20 00:17:27', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1616, '', 1, 2, '管理后台 - 流程模型', '部署模型', 2, '', '', 'POST', '/admin-api/bpm/model/deploy', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.bpm.controller.admin.definition.BpmModelController.deployModel(String)', '{\"id\":\"18348550-a79a-11ec-bf87-8e557beca7ad\"}', '2022-03-20 00:17:30', 16, 500, 'ServiceException: 部署流程失败,原因:流程表单未配置,请点击【修改流程】按钮进行配置', 'null', NULL, '2022-03-20 00:17:30', NULL, '2022-03-20 00:17:30', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1617, '', 1, 2, '管理后台 - 参数配置', '修改参数配置', 3, '', '', 'PUT', '/admin-api/infra/config/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.config.ConfigController.updateConfig(ConfigUpdateReqVO)', '{\"reqVO\":{\"group\":\"ui\",\"name\":\"主框架页-默认皮肤样式名称\",\"value\":\"skin-blue\",\"sensitive\":false,\"remark\":\"蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow\",\"id\":1}}', '2022-03-20 02:25:48', 46, 0, '', 'true', NULL, '2022-03-20 02:25:49', NULL, '2022-03-20 02:25:49', b'0', 1);
+INSERT INTO `system_operate_log` VALUES (1618, '', 1, 2, '管理后台 - 参数配置', '修改参数配置', 3, '', '', 'PUT', '/admin-api/infra/config/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'CommonResult cn.iocoder.yudao.module.infra.controller.admin.config.ConfigController.updateConfig(ConfigUpdateReqVO)', '{\"reqVO\":{\"group\":\"biz\",\"name\":\"用户管理-账号初始密码\",\"value\":\"123456\",\"sensitive\":false,\"remark\":\"初始化密码 123456\",\"id\":2}}', '2022-03-20 02:25:51', 36, 0, '', 'true', NULL, '2022-03-20 02:25:51', NULL, '2022-03-20 02:25:51', b'0', 1);
 COMMIT;
 
 -- ----------------------------
@@ -3859,7 +3960,7 @@ CREATE TABLE `system_role` (
 BEGIN;
 INSERT INTO `system_role` VALUES (1, '超级管理员', 'super_admin', 1, 1, '', 0, 1, '超级管理员', 'admin', '2021-01-05 17:03:48', '', '2022-02-22 05:08:21', b'0', 1);
 INSERT INTO `system_role` VALUES (2, '普通角色', 'common', 2, 2, '', 0, 1, '普通角色', 'admin', '2021-01-05 17:03:48', '', '2022-02-22 05:08:20', b'0', 1);
-INSERT INTO `system_role` VALUES (101, '测试账号', 'test', 0, 5, '[]', 0, 2, '132', '', '2021-01-06 13:49:35', '1', '2022-02-27 10:53:20', b'0', 1);
+INSERT INTO `system_role` VALUES (101, '测试账号', 'test', 0, 1, '[]', 0, 2, '132', '', '2021-01-06 13:49:35', '1', '2022-03-19 22:00:41', b'0', 1);
 INSERT INTO `system_role` VALUES (109, '租户管理员', 'tenant_admin', 0, 1, '', 0, 1, '系统自动生成', '1', '2022-02-22 00:56:14', '1', '2022-02-22 00:56:14', b'0', 121);
 INSERT INTO `system_role` VALUES (110, '测试角色', 'test', 0, 1, '[]', 0, 2, '嘿嘿', '110', '2022-02-23 00:14:34', '110', '2022-02-23 13:14:58', b'0', 121);
 INSERT INTO `system_role` VALUES (111, '租户管理员', 'tenant_admin', 0, 1, '', 0, 1, '系统自动生成', '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
@@ -3880,7 +3981,7 @@ CREATE TABLE `system_role_menu` (
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=1594 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色和菜单关联表';
+) ENGINE=InnoDB AUTO_INCREMENT=1641 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色和菜单关联表';
 
 -- ----------------------------
 -- Records of system_role_menu
@@ -4180,7 +4281,7 @@ INSERT INTO `system_role_menu` VALUES (551, 2, 1021, '1', '2022-02-22 13:09:12',
 INSERT INTO `system_role_menu` VALUES (552, 2, 1022, '1', '2022-02-22 13:09:12', '1', '2022-02-23 12:03:57', b'1', 1);
 INSERT INTO `system_role_menu` VALUES (553, 2, 1023, '1', '2022-02-22 13:09:12', '1', '2022-02-23 12:03:57', b'1', 1);
 INSERT INTO `system_role_menu` VALUES (554, 101, 1024, '1', '2022-02-22 13:09:55', '1', '2022-02-23 12:03:57', b'1', 1);
-INSERT INTO `system_role_menu` VALUES (555, 101, 1, '1', '2022-02-22 13:09:55', '1', '2022-02-22 13:09:55', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (555, 101, 1, '1', '2022-02-22 13:09:55', '1', '2022-03-19 13:45:52', b'1', 1);
 INSERT INTO `system_role_menu` VALUES (556, 101, 1025, '1', '2022-02-22 13:09:55', '1', '2022-02-23 12:03:57', b'1', 1);
 INSERT INTO `system_role_menu` VALUES (557, 101, 1026, '1', '2022-02-22 13:09:55', '1', '2022-02-23 12:03:57', b'1', 1);
 INSERT INTO `system_role_menu` VALUES (558, 101, 1027, '1', '2022-02-22 13:09:55', '1', '2022-02-23 12:03:57', b'1', 1);
@@ -5113,7 +5214,7 @@ INSERT INTO `system_role_menu` VALUES (1484, 110, 1022, '110', '2022-02-23 00:23
 INSERT INTO `system_role_menu` VALUES (1485, 110, 1023, '110', '2022-02-23 00:23:56', '110', '2022-02-22 16:24:13', b'1', 121);
 INSERT INTO `system_role_menu` VALUES (1486, 109, 103, '1', '2022-02-23 19:32:14', '1', '2022-02-23 19:32:14', b'0', 121);
 INSERT INTO `system_role_menu` VALUES (1487, 109, 104, '1', '2022-02-23 19:32:14', '1', '2022-02-23 19:32:14', b'0', 121);
-INSERT INTO `system_role_menu` VALUES (1488, 109, 105, '1', '2022-02-23 19:43:22', '1', '2022-02-23 19:43:22', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1488, 109, 105, '1', '2022-02-23 19:43:22', '1', '2022-03-19 10:39:06', b'1', 121);
 INSERT INTO `system_role_menu` VALUES (1489, 1, 1, '1', '2022-02-23 20:03:57', '1', '2022-02-23 20:03:57', b'0', 1);
 INSERT INTO `system_role_menu` VALUES (1490, 1, 2, '1', '2022-02-23 20:03:57', '1', '2022-02-23 20:03:57', b'0', 1);
 INSERT INTO `system_role_menu` VALUES (1491, 1, 3, '1', '2022-02-23 20:03:57', '1', '2022-02-23 12:04:07', b'1', 1);
@@ -5156,11 +5257,11 @@ INSERT INTO `system_role_menu` VALUES (1527, 1, 500, '1', '2022-02-23 20:03:57',
 INSERT INTO `system_role_menu` VALUES (1528, 1, 501, '1', '2022-02-23 20:03:57', '1', '2022-02-23 20:03:57', b'0', 1);
 INSERT INTO `system_role_menu` VALUES (1529, 109, 1024, '1', '2022-02-23 20:30:14', '1', '2022-02-23 20:30:14', b'0', 121);
 INSERT INTO `system_role_menu` VALUES (1530, 109, 1025, '1', '2022-02-23 20:30:14', '1', '2022-02-23 20:30:14', b'0', 121);
-INSERT INTO `system_role_menu` VALUES (1531, 109, 1026, '1', '2022-02-23 20:30:14', '1', '2022-02-23 20:30:14', b'0', 121);
-INSERT INTO `system_role_menu` VALUES (1532, 109, 1027, '1', '2022-02-23 20:30:14', '1', '2022-02-23 20:30:14', b'0', 121);
-INSERT INTO `system_role_menu` VALUES (1533, 109, 1028, '1', '2022-02-23 20:30:14', '1', '2022-02-23 20:30:14', b'0', 121);
-INSERT INTO `system_role_menu` VALUES (1534, 109, 1029, '1', '2022-02-23 20:30:14', '1', '2022-02-23 20:30:14', b'0', 121);
-INSERT INTO `system_role_menu` VALUES (1535, 109, 1030, '1', '2022-02-23 20:30:14', '1', '2022-02-23 20:30:14', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1531, 109, 1026, '1', '2022-02-23 20:30:14', '1', '2022-03-19 10:39:06', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (1532, 109, 1027, '1', '2022-02-23 20:30:14', '1', '2022-03-19 10:39:06', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (1533, 109, 1028, '1', '2022-02-23 20:30:14', '1', '2022-03-19 10:39:06', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (1534, 109, 1029, '1', '2022-02-23 20:30:14', '1', '2022-03-19 10:39:06', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (1535, 109, 1030, '1', '2022-02-23 20:30:14', '1', '2022-03-19 10:39:06', b'1', 121);
 INSERT INTO `system_role_menu` VALUES (1536, 109, 1017, '1', '2022-02-23 20:30:14', '1', '2022-02-23 20:30:14', b'0', 121);
 INSERT INTO `system_role_menu` VALUES (1537, 109, 1018, '1', '2022-02-23 20:30:14', '1', '2022-02-23 20:30:14', b'0', 121);
 INSERT INTO `system_role_menu` VALUES (1538, 109, 1019, '1', '2022-02-23 20:30:14', '1', '2022-02-23 20:30:14', b'0', 121);
@@ -5196,22 +5297,22 @@ INSERT INTO `system_role_menu` VALUES (1567, 101, 1004, '1', '2022-02-27 12:08:3
 INSERT INTO `system_role_menu` VALUES (1568, 101, 1005, '1', '2022-02-27 12:08:37', '1', '2022-02-27 04:11:38', b'1', 1);
 INSERT INTO `system_role_menu` VALUES (1569, 101, 1006, '1', '2022-02-27 12:08:38', '1', '2022-02-27 04:11:38', b'1', 1);
 INSERT INTO `system_role_menu` VALUES (1570, 101, 1007, '1', '2022-02-27 12:08:38', '1', '2022-02-27 04:11:38', b'1', 1);
-INSERT INTO `system_role_menu` VALUES (1571, 101, 103, '1', '2022-02-27 12:11:39', '1', '2022-02-27 12:11:39', b'0', 1);
-INSERT INTO `system_role_menu` VALUES (1572, 101, 1017, '1', '2022-02-27 12:11:39', '1', '2022-02-27 12:11:39', b'0', 1);
-INSERT INTO `system_role_menu` VALUES (1573, 101, 1018, '1', '2022-02-27 12:11:39', '1', '2022-02-27 12:11:39', b'0', 1);
-INSERT INTO `system_role_menu` VALUES (1574, 101, 1019, '1', '2022-02-27 12:11:39', '1', '2022-02-27 12:11:39', b'0', 1);
-INSERT INTO `system_role_menu` VALUES (1575, 101, 1020, '1', '2022-02-27 12:11:39', '1', '2022-02-27 12:11:39', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1571, 101, 103, '1', '2022-02-27 12:11:39', '1', '2022-03-19 13:45:52', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (1572, 101, 1017, '1', '2022-02-27 12:11:39', '1', '2022-03-19 13:45:52', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (1573, 101, 1018, '1', '2022-02-27 12:11:39', '1', '2022-03-19 13:45:52', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (1574, 101, 1019, '1', '2022-02-27 12:11:39', '1', '2022-03-19 13:45:52', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (1575, 101, 1020, '1', '2022-02-27 12:11:39', '1', '2022-03-19 13:45:52', b'1', 1);
 INSERT INTO `system_role_menu` VALUES (1576, 111, 1024, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
 INSERT INTO `system_role_menu` VALUES (1577, 111, 1025, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
 INSERT INTO `system_role_menu` VALUES (1578, 111, 1, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
-INSERT INTO `system_role_menu` VALUES (1579, 111, 1026, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
-INSERT INTO `system_role_menu` VALUES (1580, 111, 1027, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
-INSERT INTO `system_role_menu` VALUES (1581, 111, 1028, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
-INSERT INTO `system_role_menu` VALUES (1582, 111, 1029, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
-INSERT INTO `system_role_menu` VALUES (1583, 111, 1030, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (1579, 111, 1026, '1', '2022-03-07 21:37:58', '1', '2022-03-19 10:39:06', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (1580, 111, 1027, '1', '2022-03-07 21:37:58', '1', '2022-03-19 10:39:06', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (1581, 111, 1028, '1', '2022-03-07 21:37:58', '1', '2022-03-19 10:39:06', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (1582, 111, 1029, '1', '2022-03-07 21:37:58', '1', '2022-03-19 10:39:06', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (1583, 111, 1030, '1', '2022-03-07 21:37:58', '1', '2022-03-19 10:39:06', b'1', 122);
 INSERT INTO `system_role_menu` VALUES (1584, 111, 103, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
 INSERT INTO `system_role_menu` VALUES (1585, 111, 104, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
-INSERT INTO `system_role_menu` VALUES (1586, 111, 105, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (1586, 111, 105, '1', '2022-03-07 21:37:58', '1', '2022-03-19 10:39:06', b'1', 122);
 INSERT INTO `system_role_menu` VALUES (1587, 111, 1017, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
 INSERT INTO `system_role_menu` VALUES (1588, 111, 1018, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
 INSERT INTO `system_role_menu` VALUES (1589, 111, 1019, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
@@ -5219,6 +5320,53 @@ INSERT INTO `system_role_menu` VALUES (1590, 111, 1020, '1', '2022-03-07 21:37:5
 INSERT INTO `system_role_menu` VALUES (1591, 111, 1021, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
 INSERT INTO `system_role_menu` VALUES (1592, 111, 1022, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
 INSERT INTO `system_role_menu` VALUES (1593, 111, 1023, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (1594, 109, 102, '1', '2022-03-19 18:39:13', '1', '2022-03-19 18:39:13', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1595, 109, 1013, '1', '2022-03-19 18:39:13', '1', '2022-03-19 18:39:13', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1596, 109, 1014, '1', '2022-03-19 18:39:13', '1', '2022-03-19 18:39:13', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1597, 109, 1015, '1', '2022-03-19 18:39:13', '1', '2022-03-19 18:39:13', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1598, 109, 1016, '1', '2022-03-19 18:39:13', '1', '2022-03-19 18:39:13', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1599, 111, 102, '1', '2022-03-19 18:39:13', '1', '2022-03-19 18:39:13', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (1600, 111, 1013, '1', '2022-03-19 18:39:13', '1', '2022-03-19 18:39:13', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (1601, 111, 1014, '1', '2022-03-19 18:39:13', '1', '2022-03-19 18:39:13', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (1602, 111, 1015, '1', '2022-03-19 18:39:13', '1', '2022-03-19 18:39:13', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (1603, 111, 1016, '1', '2022-03-19 18:39:13', '1', '2022-03-19 18:39:13', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (1604, 101, 1216, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1605, 101, 1217, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1606, 101, 1218, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1607, 101, 1219, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1608, 101, 1220, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1609, 101, 1221, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1610, 101, 5, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1611, 101, 1222, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1612, 101, 1118, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1613, 101, 1119, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1614, 101, 1120, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1615, 101, 1185, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1616, 101, 1186, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1617, 101, 1187, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1618, 101, 1188, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1619, 101, 1189, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1620, 101, 1190, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1621, 101, 1191, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1622, 101, 1192, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1623, 101, 1193, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1624, 101, 1194, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1625, 101, 1195, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1626, 101, 1196, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1627, 101, 1197, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1628, 101, 1198, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1629, 101, 1199, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1630, 101, 1200, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1631, 101, 1201, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1632, 101, 1202, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1633, 101, 1207, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1634, 101, 1208, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1635, 101, 1209, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1636, 101, 1210, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1637, 101, 1211, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1638, 101, 1212, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1639, 101, 1213, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1640, 101, 1215, '1', '2022-03-19 21:45:52', '1', '2022-03-19 21:45:52', b'0', 1);
 COMMIT;
 
 -- ----------------------------
@@ -5317,7 +5465,7 @@ CREATE TABLE `system_sms_log` (
   `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=130 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='短信日志';
+) ENGINE=InnoDB AUTO_INCREMENT=134 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='短信日志';
 
 -- ----------------------------
 -- Records of system_sms_log
@@ -5326,6 +5474,9 @@ BEGIN;
 INSERT INTO `system_sms_log` VALUES (127, 1, 'YUN_PIAN', 2, 'test_01', 1, '正在进行登录操作x,您的验证码是1024', '{\"operation\":\"x\",\"code\":\"1024\"}', '4383920', '15601691399', NULL, 2, 10, '2022-02-24 00:51:19', 0, '成功', '0', '发送成功', NULL, '70937649332', 10, '2022-02-24 00:51:23', 'DELIVRD', 'DELIVRD', '1', '2022-02-24 00:51:19', NULL, '2022-02-24 00:51:25', b'0');
 INSERT INTO `system_sms_log` VALUES (128, 4, 'DEBUG_DING_TALK', 9, 'bpm_task_assigned', 2, '您收到了一条新的待办任务:flowable测试-task01,申请人:芋道源码,处理链接:http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=c964c377-97ed-11ec-a2b9-862bc1a4a054', '{\"startUserNickname\":\"芋道源码\",\"taskName\":\"task01\",\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=c964c377-97ed-11ec-a2b9-862bc1a4a054\",\"processInstanceName\":\"flowable测试\"}', 'suibian', '15612345678', 1, 2, 10, '2022-02-28 00:53:30', 0, '成功', '0', NULL, NULL, 'd7923606-fe81-4196-8ce9-148c0b355496', 0, NULL, NULL, NULL, '1', '2022-02-28 00:53:29', NULL, '2022-02-28 00:53:30', b'0');
 INSERT INTO `system_sms_log` VALUES (129, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '您的流程被审批通过:flowable测试,查看链接:http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=c964c377-97ed-11ec-a2b9-862bc1a4a054', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=c964c377-97ed-11ec-a2b9-862bc1a4a054\",\"processInstanceName\":\"flowable测试\"}', 'suibian', '15612345678', 1, 2, 10, '2022-02-28 00:53:35', 0, '成功', '0', NULL, NULL, '6519bf56-b6c2-45ad-b81b-d89e84f95359', 0, NULL, NULL, NULL, '1', '2022-02-28 00:53:35', NULL, '2022-02-28 00:53:35', b'0');
+INSERT INTO `system_sms_log` VALUES (130, 4, 'DEBUG_DING_TALK', 9, 'bpm_task_assigned', 2, '您收到了一条新的待办任务:通用表单-部门领导审批,申请人:芋道源码,处理链接:http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=6be9f198-a787-11ec-96d6-8e557beca7ad', '{\"startUserNickname\":\"芋道源码\",\"taskName\":\"部门领导审批\",\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=6be9f198-a787-11ec-96d6-8e557beca7ad\",\"processInstanceName\":\"通用表单\"}', 'suibian', '15612345678', 1, 2, 10, '2022-03-19 21:21:03', 0, '成功', '0', NULL, NULL, '93d3803d-6a95-4d6f-91a1-89416764b34d', 0, NULL, NULL, NULL, '1', '2022-03-19 21:21:02', NULL, '2022-03-19 21:21:03', b'0');
+INSERT INTO `system_sms_log` VALUES (131, 4, 'DEBUG_DING_TALK', 9, 'bpm_task_assigned', 2, '您收到了一条新的待办任务:通用表单-HR 审批,申请人:芋道源码,处理链接:http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=6be9f198-a787-11ec-96d6-8e557beca7ad', '{\"startUserNickname\":\"芋道源码\",\"taskName\":\"HR 审批\",\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=6be9f198-a787-11ec-96d6-8e557beca7ad\",\"processInstanceName\":\"通用表单\"}', 'suibian', '15612345678', 1, 2, 10, '2022-03-19 22:00:46', 0, '成功', '0', NULL, NULL, '97635216-89f0-4a97-9459-33f60473a6bb', 0, NULL, NULL, NULL, '104', '2022-03-19 22:00:45', NULL, '2022-03-19 22:00:46', b'0');
+INSERT INTO `system_sms_log` VALUES (132, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '您的流程被审批通过:通用表单,查看链接:http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=6be9f198-a787-11ec-96d6-8e557beca7ad', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=6be9f198-a787-11ec-96d6-8e557beca7ad\",\"processInstanceName\":\"通用表单\"}', 'suibian', '15612345678', 1, 2, 10, '2022-03-19 22:16:00', 0, '成功', '0', NULL, NULL, '1fbb5236-85bc-472a-b6a3-37dee594c162', 0, NULL, NULL, NULL, '114', '2022-03-19 22:16:00', NULL, '2022-03-19 22:16:00', b'0');
 COMMIT;
 
 -- ----------------------------
@@ -5427,7 +5578,7 @@ CREATE TABLE `system_tenant` (
 -- ----------------------------
 BEGIN;
 INSERT INTO `system_tenant` VALUES (1, '芋道源码', NULL, '芋艿', '17321315478', 0, 'https://www.iocoder.cn', 0, '2099-02-19 17:14:16', 9999, '1', '2021-01-05 17:03:47', '1', '2022-02-23 12:15:11', b'0');
-INSERT INTO `system_tenant` VALUES (121, '小租户', 110, '小王2', '15601691300', 0, 'http://www.iocoder.cn', 111, '2022-02-28 00:00:00', 20, '1', '2022-02-22 00:56:14', '1', '2022-02-23 00:08:45', b'0');
+INSERT INTO `system_tenant` VALUES (121, '小租户', 110, '小王2', '15601691300', 0, 'http://www.iocoder.cn', 111, '2024-03-11 00:00:00', 20, '1', '2022-02-22 00:56:14', '1', '2022-03-19 18:37:20', b'0');
 INSERT INTO `system_tenant` VALUES (122, '测试租户', 113, '芋道', '15601691300', 0, 'https://www.iocoder.cn', 111, '2022-04-30 00:00:00', 50, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0');
 COMMIT;
 
@@ -5453,7 +5604,7 @@ CREATE TABLE `system_tenant_package` (
 -- Records of system_tenant_package
 -- ----------------------------
 BEGIN;
-INSERT INTO `system_tenant_package` VALUES (111, '普通套餐', 0, '小功能', '[1024,1025,1,1026,1027,1028,1029,1030,103,104,105,1017,1018,1019,1020,1021,1022,1023]', '1', '2022-02-22 00:54:00', '1', '2022-02-23 20:30:14', b'0');
+INSERT INTO `system_tenant_package` VALUES (111, '普通套餐', 0, '小功能', '[1024,1025,1,102,103,104,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023]', '1', '2022-02-22 00:54:00', '1', '2022-03-19 18:39:13', b'0');
 COMMIT;
 
 -- ----------------------------
@@ -5482,23 +5633,24 @@ CREATE TABLE `system_user` (
   `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
   `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=114 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户信息表';
+) ENGINE=InnoDB AUTO_INCREMENT=115 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户信息表';
 
 -- ----------------------------
 -- Records of system_user
 -- ----------------------------
 BEGIN;
-INSERT INTO `system_user` VALUES (1, 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道源码', '管理员', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://test.yudao.iocoder.cn/a294ecb2-73dd-4353-bf40-296b8931d0bf', 0, '127.0.0.1', '2022-03-16 23:46:20', 'admin', '2021-01-05 17:03:47', '1', '2022-03-16 23:51:41', b'0', 1);
+INSERT INTO `system_user` VALUES (1, 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道源码', '管理员', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://test.yudao.iocoder.cn/a294ecb2-73dd-4353-bf40-296b8931d0bf', 0, '127.0.0.1', '2022-03-19 18:27:50', 'admin', '2021-01-05 17:03:47', NULL, '2022-03-19 18:27:50', b'0', 1);
 INSERT INTO `system_user` VALUES (100, 'yudao', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋道', '不要吓我', 104, '[1]', 'yudao@iocoder.cn', '15601691300', 1, '', 1, '', NULL, '', '2021-01-07 09:07:17', '104', '2021-12-16 09:26:10', b'0', 1);
 INSERT INTO `system_user` VALUES (103, 'yuanma', '$2a$10$wWoPT7sqriM2O1YXRL.je.GiL538OR6ZTN8aQZr9JAGdnpCH2tpYe', '源码', NULL, 106, NULL, 'yuanma@iocoder.cn', '15601701300', 0, '', 0, '127.0.0.1', '2022-01-18 00:33:40', '', '2021-01-13 23:50:35', NULL, '2022-01-18 00:33:40', b'0', 1);
-INSERT INTO `system_user` VALUES (104, 'test', '$2a$10$801Pys6Ez5jDiAOD6xI4iOyU92WmqgJRsTrYkxmxzqFtFBOog.JZK', '测试号', NULL, 107, '[]', '111@qq.com', '15601691200', 1, '', 0, '127.0.0.1', '2022-03-12 17:55:44', '', '2021-01-21 02:13:53', '104', '2022-03-12 18:01:28', b'0', 1);
+INSERT INTO `system_user` VALUES (104, 'test', '$2a$10$e5RpuDCC0GYSt0Hvd2.CjujIXwgGct4SnXi6dVGxdgFsnqgEryk5a', '测试号', NULL, 107, '[]', '111@qq.com', '15601691200', 1, '', 0, '127.0.0.1', '2022-03-19 21:46:19', '', '2021-01-21 02:13:53', NULL, '2022-03-19 21:46:19', b'0', 1);
 INSERT INTO `system_user` VALUES (107, 'admin107', '$2a$10$dYOOBKMO93v/.ReCqzyFg.o67Tqk.bbc2bhrpyBGkIw9aypCtr2pm', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 22:59:33', '1', '2022-02-27 08:26:51', b'0', 118);
 INSERT INTO `system_user` VALUES (108, 'admin108', '$2a$10$y6mfvKoNYL1GXWak8nYwVOH.kCWqjactkzdoIDgiKl93WN3Ejg.Lu', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 23:00:50', '1', '2022-02-27 08:26:53', b'0', 119);
 INSERT INTO `system_user` VALUES (109, 'admin109', '$2a$10$JAqvH0tEc0I7dfDVBI7zyuB4E3j.uH6daIjV53.vUS6PknFkDJkuK', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 23:11:50', '1', '2022-02-27 08:26:56', b'0', 120);
 INSERT INTO `system_user` VALUES (110, 'admin110', '$2a$10$qYxoXs0ogPHgYllyEneYde9xcCW5hZgukrxeXZ9lmLhKse8TK6IwW', '小王', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-02-23 19:36:28', '1', '2022-02-22 00:56:14', NULL, '2022-02-27 08:26:59', b'0', 121);
 INSERT INTO `system_user` VALUES (111, 'test', '$2a$10$mExveopHUx9Q4QiLtAzhDeH3n4/QlNLzEsM4AqgxKrU.ciUZDXZCy', '测试用户', NULL, NULL, '[]', '', '', 0, '', 0, '', NULL, '110', '2022-02-23 13:14:33', '110', '2022-02-23 13:14:33', b'0', 121);
 INSERT INTO `system_user` VALUES (112, 'newobject', '$2a$10$jh5MsR.ud/gKe3mVeUp5t.nEXGDSmHyv5OYjWQwHO8wlGmMSI9Twy', '新对象', NULL, NULL, '[]', '', '', 0, '', 0, '', NULL, '1', '2022-02-23 19:08:03', '1', '2022-02-23 19:08:03', b'0', 1);
-INSERT INTO `system_user` VALUES (113, 'aoteman', '$2a$10$lAEsjpPIIsC3DFzsoX9.L.yKydbPGkVyeaOcH.J2SqSGoQvB6GZmy', '芋道', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-03-07 21:43:59', '1', '2022-03-07 21:37:58', NULL, '2022-03-07 21:43:59', b'0', 122);
+INSERT INTO `system_user` VALUES (113, 'aoteman', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-03-19 18:38:51', '1', '2022-03-07 21:37:58', NULL, '2022-03-19 18:38:51', b'0', 122);
+INSERT INTO `system_user` VALUES (114, 'hrmgr', '$2a$10$TR4eybBioGRhBmDBWkqWLO6NIh3mzYa8KBKDDB5woiGYFVlRAi.fu', 'hr 小姐姐', NULL, NULL, '[3]', '', '', 0, '', 0, '127.0.0.1', '2022-03-19 22:15:43', '1', '2022-03-19 21:50:58', NULL, '2022-03-19 22:15:43', b'0', 1);
 COMMIT;
 
 -- ----------------------------
@@ -5516,7 +5668,7 @@ CREATE TABLE `system_user_role` (
   `deleted` bit(1) DEFAULT b'0' COMMENT '是否删除',
   `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户和角色关联表';
+) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户和角色关联表';
 
 -- ----------------------------
 -- Records of system_user_role
@@ -5537,6 +5689,7 @@ INSERT INTO `system_user_role` VALUES (13, 109, 108, '1', '2022-02-20 23:11:50',
 INSERT INTO `system_user_role` VALUES (14, 110, 109, '1', '2022-02-22 00:56:14', '1', '2022-02-22 00:56:14', b'0', 121);
 INSERT INTO `system_user_role` VALUES (15, 111, 110, '110', '2022-02-23 13:14:38', '110', '2022-02-23 13:14:38', b'0', 121);
 INSERT INTO `system_user_role` VALUES (16, 113, 111, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
+INSERT INTO `system_user_role` VALUES (17, 114, 101, '1', '2022-03-19 21:51:13', '1', '2022-03-19 21:51:13', b'0', 1);
 COMMIT;
 
 -- ----------------------------
@@ -5567,21 +5720,27 @@ BEGIN;
 INSERT INTO `system_user_session` VALUES ('084a5a2a737b42e3bb13604a2ff6d4fe', 1, 2, '2022-03-13 18:01:54', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-12 18:01:54', NULL, '2022-03-12 18:01:54', b'0', 1);
 INSERT INTO `system_user_session` VALUES ('0d7a900b4a5e4089a48a54a71bca83e6', 1, 2, '2022-02-28 11:56:22', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36', NULL, '2022-02-27 11:56:22', NULL, '2022-02-27 08:25:28', b'1', 1);
 INSERT INTO `system_user_session` VALUES ('101dc01ff37b4ceaa60a63e1c1005bbf', 1, 2, '2022-03-08 21:47:01', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-07 21:47:01', NULL, '2022-03-07 21:47:01', b'0', 1);
+INSERT INTO `system_user_session` VALUES ('116ed46314c64d528cadcdc4e5a74710', 1, 2, '2022-03-20 18:27:50', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 18:27:50', NULL, '2022-03-19 18:27:50', b'0', 1);
 INSERT INTO `system_user_session` VALUES ('2759180f76414d3d9807c47026b6f5a5', 1, 2, '2022-03-17 21:27:25', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-15 00:19:03', NULL, '2022-03-16 21:27:25', b'0', 1);
 INSERT INTO `system_user_session` VALUES ('2935322c671b43fbbe7eb5532800bbcf', 110, 2, '2022-02-24 19:36:28', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36', NULL, '2022-02-23 19:36:28', NULL, '2022-02-23 19:36:28', b'0', 121);
 INSERT INTO `system_user_session` VALUES ('34fafe141291443ab0da27e1bc12a011', 1, 2, '2022-03-13 16:25:02', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-12 16:25:02', NULL, '2022-03-12 09:55:31', b'1', 1);
 INSERT INTO `system_user_session` VALUES ('3bb5bae78cc24cb5a1c1df9c479b50ad', 1, 2, '2022-02-21 23:57:11', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36', NULL, '2022-02-20 23:57:11', NULL, '2022-02-20 23:57:11', b'0', 1);
+INSERT INTO `system_user_session` VALUES ('3bc770291bc44fcfad0bf91e5bfded0e', 104, 2, '2022-03-20 21:46:19', 'test', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 21:46:19', NULL, '2022-03-19 14:13:05', b'1', 1);
 INSERT INTO `system_user_session` VALUES ('4a97fd8f3721416ebe6c682ca9d70743', 1, 2, '2022-03-12 00:24:08', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-11 00:24:08', NULL, '2022-03-11 00:24:08', b'0', 1);
+INSERT INTO `system_user_session` VALUES ('7b0c15457686444bb17fb810807859f0', 114, 2, '2022-03-20 22:15:43', 'hrmgr', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 22:15:43', NULL, '2022-03-19 22:15:43', b'0', 1);
 INSERT INTO `system_user_session` VALUES ('8951e01e18774a92b0382a76dfa5aab9', 1, 2, '2022-03-13 14:30:59', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-11 00:16:29', NULL, '2022-03-12 14:30:59', b'0', 1);
 INSERT INTO `system_user_session` VALUES ('95e6336e75794bffbd5b6b7617d24c52', 1, 2, '2022-03-08 21:36:53', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-07 21:36:53', NULL, '2022-03-07 13:42:52', b'1', 1);
 INSERT INTO `system_user_session` VALUES ('9c93fd1cd23a43e3854451b781420aed', 1, 2, '2022-02-28 16:27:05', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36', NULL, '2022-02-27 16:27:05', NULL, '2022-02-27 16:27:05', b'0', 0);
 INSERT INTO `system_user_session` VALUES ('a0cd3f0adcaa4bb3951b24969990f235', 1, 2, '2022-03-08 21:08:36', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-07 21:08:36', NULL, '2022-03-07 21:08:36', b'0', 1);
 INSERT INTO `system_user_session` VALUES ('b1bd95d813024acab14dd171ca887a94', 1, 2, '2022-02-28 10:52:17', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36', NULL, '2022-02-27 10:52:17', NULL, '2022-02-27 10:52:17', b'0', 1);
 INSERT INTO `system_user_session` VALUES ('cb97d665c2bd4525b2fbfe9a399f5926', 104, 2, '2022-03-13 17:55:44', 'test', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-12 17:55:44', NULL, '2022-03-12 10:01:46', b'1', 1);
-INSERT INTO `system_user_session` VALUES ('daadfe0f94f34d60b1f83088612cf3e9', 1, 2, '2022-03-17 23:46:20', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-16 23:46:20', NULL, '2022-03-16 23:46:20', b'0', 1);
+INSERT INTO `system_user_session` VALUES ('daadfe0f94f34d60b1f83088612cf3e9', 1, 2, '2022-03-18 18:36:04', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-16 23:46:20', NULL, '2022-03-17 18:36:04', b'0', 1);
+INSERT INTO `system_user_session` VALUES ('db48c609bd2840bca7499bddb43eeabe', 113, 2, '2022-03-20 18:38:51', 'aoteman', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 18:38:51', NULL, '2022-03-19 18:38:51', b'0', 122);
 INSERT INTO `system_user_session` VALUES ('db777da72b0b4a528915d80c7b272141', 113, 2, '2022-03-08 21:43:59', 'aoteman', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-07 21:43:59', NULL, '2022-03-07 13:45:02', b'1', 122);
+INSERT INTO `system_user_session` VALUES ('df7083510c63407489688a800a55d97b', 1, 2, '2022-03-21 02:25:33', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-18 22:24:46', NULL, '2022-03-20 02:25:33', b'0', 1);
 INSERT INTO `system_user_session` VALUES ('e769a8511c4043a886f68d1d6c39bddd', 104, 2, '2022-02-28 11:10:07', 'test', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36', NULL, '2022-02-27 11:10:07', NULL, '2022-02-27 11:10:07', b'0', 1);
 INSERT INTO `system_user_session` VALUES ('ec60e16dfd2546e1a118eef7a42c07ef', 1, 2, '2022-02-24 22:33:28', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36', NULL, '2022-02-22 00:44:08', NULL, '2022-02-23 22:33:28', b'0', 1);
+INSERT INTO `system_user_session` VALUES ('f088b33f48e640a293b2353a07f67371', 104, 2, '2022-03-20 21:45:14', 'test', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36', NULL, '2022-03-19 21:45:14', NULL, '2022-03-19 13:46:11', b'1', 1);
 COMMIT;
 
 SET FOREIGN_KEY_CHECKS = 1;
diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml
index ada5d4ddf..686b9f633 100644
--- a/yudao-dependencies/pom.xml
+++ b/yudao-dependencies/pom.xml
@@ -14,7 +14,7 @@
     <url>https://github.com/YunaiV/ruoyi-vue-pro</url>
 
     <properties>
-        <revision>1.6.0-snapshot</revision>
+        <revision>1.6.1-snapshot</revision>
         <!-- 统一依赖管理 -->
         <spring.boot.version>2.5.10</spring.boot.version>
         <!-- Web 相关 -->
@@ -28,7 +28,7 @@
         <dynamic-datasource.version>3.5.0</dynamic-datasource.version>
         <redisson.version>3.16.6</redisson.version>
         <!-- Config 配置中心相关 -->
-        <apollo.version>1.7.0</apollo.version>
+        <apollo.version>1.9.2</apollo.version>
         <!-- Job 定时任务相关 -->
         <!-- 服务保障相关 -->
         <lock4j.version>2.2.0</lock4j.version>
@@ -52,11 +52,12 @@
         <velocity.version>2.2</velocity.version>
         <screw.version>1.0.5</screw.version>
         <guava.version>30.1.1-jre</guava.version>
+        <guice.version>5.1.0</guice.version>
         <transmittable-thread-local.version>2.12.2</transmittable-thread-local.version>
         <commons-net.version>3.8.0</commons-net.version>
         <jsch.version>0.1.55</jsch.version>
         <!-- 三方云服务相关 -->
-        <s3.version>2.17.147</s3.version>
+        <minio.version>8.2.2</minio.version>
         <aliyun-java-sdk-core.version>4.5.25</aliyun-java-sdk-core.version>
         <aliyun-java-sdk-dysmsapi.version>2.1.0</aliyun-java-sdk-dysmsapi.version>
         <yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version>
@@ -490,6 +491,12 @@
                 <version>${guava.version}</version>
             </dependency>
 
+            <dependency>
+                <groupId>com.google.inject</groupId>
+                <artifactId>guice</artifactId>
+                <version>${guice.version}</version>
+            </dependency>
+
             <dependency>
                 <groupId>com.alibaba</groupId>
                 <artifactId>transmittable-thread-local</artifactId> <!-- 解决 ThreadLocal 父子线程的传值问题 -->
@@ -514,9 +521,9 @@
                 <version>${revision}</version>
             </dependency>
             <dependency>
-                <groupId>software.amazon.awssdk</groupId>
-                <artifactId>s3</artifactId>
-                <version>${s3.version}</version>
+                <groupId>io.minio</groupId>
+                <artifactId>minio</artifactId>
+                <version>${minio.version}</version>
             </dependency>
 
             <!-- SMS SDK begin -->
diff --git a/yudao-framework/yudao-spring-boot-starter-file/pom.xml b/yudao-framework/yudao-spring-boot-starter-file/pom.xml
index 09758bec0..72eafba58 100644
--- a/yudao-framework/yudao-spring-boot-starter-file/pom.xml
+++ b/yudao-framework/yudao-spring-boot-starter-file/pom.xml
@@ -63,8 +63,8 @@
 
         <!-- 三方云服务相关 -->
         <dependency>
-            <groupId>software.amazon.awssdk</groupId>
-            <artifactId>s3</artifactId>
+            <groupId>io.minio</groupId>
+            <artifactId>minio</artifactId>
         </dependency>
 
         <!-- Test 测试相关 -->
diff --git a/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/FileClient.java b/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/FileClient.java
index 60e0fc51b..178c27d4c 100644
--- a/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/FileClient.java
+++ b/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/FileClient.java
@@ -20,15 +20,17 @@ public interface FileClient {
      * @param content 文件流
      * @param path 相对路径
      * @return 完整路径,即 HTTP 访问地址
+     * @throws Exception 上传文件时,抛出 Exception 异常
      */
-    String upload(byte[] content, String path);
+    String upload(byte[] content, String path) throws  Exception;
 
     /**
      * 删除文件
      *
      * @param path 相对路径
+     * @throws Exception 删除文件时,抛出 Exception 异常
      */
-    void delete(String path);
+    void delete(String path) throws Exception;
 
     /**
      * 获得文件的内容
@@ -36,6 +38,6 @@ public interface FileClient {
      * @param path 相对路径
      * @return 文件的内容
      */
-    byte[] getContent(String path);
+    byte[] getContent(String path) throws Exception;
 
 }
diff --git a/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClient.java b/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClient.java
index 4fcc674d5..8de178bfc 100644
--- a/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClient.java
+++ b/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClient.java
@@ -1,19 +1,14 @@
 package cn.iocoder.yudao.framework.file.core.client.s3;
 
+import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpUtil;
 import cn.iocoder.yudao.framework.file.core.client.AbstractFileClient;
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
-import software.amazon.awssdk.core.sync.RequestBody;
-import software.amazon.awssdk.regions.Region;
-import software.amazon.awssdk.services.s3.S3Client;
-import software.amazon.awssdk.services.s3.model.DeleteObjectRequest;
-import software.amazon.awssdk.services.s3.model.GetObjectRequest;
-import software.amazon.awssdk.services.s3.model.PutObjectRequest;
+import io.minio.*;
 
-import java.net.URI;
+import java.io.ByteArrayInputStream;
 
-import static cn.iocoder.yudao.framework.file.core.client.s3.S3FileClientConfig.ENDPOINT_QINIU;
+import static cn.iocoder.yudao.framework.file.core.client.s3.S3FileClientConfig.ENDPOINT_ALIYUN;
 
 /**
  * 基于 S3 协议的文件客户端,实现 MinIO、阿里云、腾讯云、七牛云、华为云等云服务
@@ -24,7 +19,7 @@ import static cn.iocoder.yudao.framework.file.core.client.s3.S3FileClientConfig.
  */
 public class S3FileClient extends AbstractFileClient<S3FileClientConfig> {
 
-    private S3Client client;
+    private MinioClient client;
 
     public S3FileClient(Long id, S3FileClientConfig config) {
         super(id, config);
@@ -34,34 +29,27 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> {
     protected void doInit() {
         // 补全 domain
         if (StrUtil.isEmpty(config.getDomain())) {
-            config.setDomain(createDomain());
+            config.setDomain(buildDomain());
         }
         // 初始化客户端
-        client = S3Client.builder()
-                .serviceConfiguration(sb -> sb.pathStyleAccessEnabled(false) // 关闭路径风格
-                .chunkedEncodingEnabled(false)) // 禁用 chunk
-                .endpointOverride(createURI()) // 上传地址
-                .region(Region.of(config.getRegion())) // Region
-                .credentialsProvider(StaticCredentialsProvider.create( // 认证密钥
-                        AwsBasicCredentials.create(config.getAccessKey(), config.getAccessSecret())))
-                .overrideConfiguration(cb -> cb.addExecutionInterceptor(new S3ModifyPathInterceptor(config.getBucket())))
+        client = MinioClient.builder()
+                .endpoint(buildEndpointURL()) // Endpoint URL
+                .region(buildRegion()) // Region
+                .credentials(config.getAccessKey(), config.getAccessSecret()) // 认证密钥
                 .build();
     }
 
     /**
-     * 基于 endpoint 构建调用云服务的 URI 地址
+     * 基于 endpoint 构建调用云服务的 URL 地址
      *
      * @return URI 地址
      */
-    private URI createURI() {
-        String uri;
-        // 如果是七牛,无需拼接 bucket
-        if (config.getEndpoint().contains(ENDPOINT_QINIU)) {
-            uri = StrUtil.format("https://{}", config.getEndpoint());
-        } else {
-            uri = StrUtil.format("https://{}.{}", config.getBucket(), config.getEndpoint());
+    private String buildEndpointURL() {
+        // 如果已经是 http 或者 https,则不进行拼接.主要适配 MinIO
+        if (HttpUtil.isHttp(config.getEndpoint()) || HttpUtil.isHttps(config.getEndpoint())) {
+            return config.getEndpoint();
         }
-        return URI.create(uri);
+        return StrUtil.format("https://{}", config.getEndpoint());
     }
 
     /**
@@ -69,35 +57,56 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> {
      *
      * @return Domain 地址
      */
-    private String createDomain() {
+    private String buildDomain() {
+        // 如果已经是 http 或者 https,则不进行拼接.主要适配 MinIO
+        if (HttpUtil.isHttp(config.getEndpoint()) || HttpUtil.isHttps(config.getEndpoint())) {
+            return StrUtil.format("{}/{}", config.getEndpoint(), config.getBucket());
+        }
+        // 阿里云、腾讯云、华为云都适合。七牛云比较特殊,必须有自定义域名
         return StrUtil.format("https://{}.{}", config.getBucket(), config.getEndpoint());
     }
 
+    /**
+     * 基于 bucket 构建 region 地区
+     *
+     * @return region 地区
+     */
+    private String buildRegion() {
+        // 阿里云必须有 region,否则会报错
+        if (config.getEndpoint().contains(ENDPOINT_ALIYUN)) {
+            return StrUtil.subBefore(config.getEndpoint(), '.', false)
+                    .replaceAll("-internal", ""); // 去除内网 Endpoint 的后缀
+        }
+        return null;
+    }
+
     @Override
-    public String upload(byte[] content, String path) {
+    public String upload(byte[] content, String path) throws Exception {
         // 执行上传
-        PutObjectRequest.Builder request = PutObjectRequest.builder()
+        client.putObject(PutObjectArgs.builder()
                 .bucket(config.getBucket()) // bucket 必须传递
-                .key(path); // 相对路径作为 key
-        client.putObject(request.build(), RequestBody.fromBytes(content));
+                .object(path) // 相对路径作为 key
+                .stream(new ByteArrayInputStream(content), content.length, -1) // 文件内容
+                .build());
         // 拼接返回路径
         return config.getDomain() + "/" + path;
     }
 
     @Override
-    public void delete(String path) {
-        DeleteObjectRequest.Builder request = DeleteObjectRequest.builder()
+    public void delete(String path) throws Exception {
+        client.removeObject(RemoveObjectArgs.builder()
                 .bucket(config.getBucket()) // bucket 必须传递
-                .key(path); // 相对路径作为 key
-        client.deleteObject(request.build());
+                .object(path) // 相对路径作为 key
+                .build());
     }
 
     @Override
-    public byte[] getContent(String path) {
-        GetObjectRequest.Builder request = GetObjectRequest.builder()
+    public byte[] getContent(String path) throws Exception {
+        GetObjectResponse response = client.getObject(GetObjectArgs.builder()
                 .bucket(config.getBucket()) // bucket 必须传递
-                .key(path); // 相对路径作为 key
-        return client.getObjectAsBytes(request.build()).asByteArray();
+                .object(path) // 相对路径作为 key
+                .build());
+        return IoUtil.readBytes(response);
     }
 
 }
diff --git a/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClientConfig.java b/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClientConfig.java
index e35e38cef..151159f5e 100644
--- a/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClientConfig.java
+++ b/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClientConfig.java
@@ -18,37 +18,28 @@ import javax.validation.constraints.NotNull;
 public class S3FileClientConfig implements FileClientConfig {
 
     public static final String ENDPOINT_QINIU = "qiniucs.com";
+    public static final String ENDPOINT_ALIYUN = "aliyuncs.com";
 
     /**
      * 节点地址
-     * 1. MinIO:
+     * 1. MinIO:https://www.iocoder.cn/Spring-Boot/MinIO 。例如说,http://127.0.0.1:9000
      * 2. 阿里云:https://help.aliyun.com/document_detail/31837.html
-     * 3. 腾讯云:
+     * 3. 腾讯云:https://cloud.tencent.com/document/product/436/6224
      * 4. 七牛云:https://developer.qiniu.com/kodo/4088/s3-access-domainname
-     * 5. 华为云:
+     * 5. 华为云:https://developer.huaweicloud.com/endpoint?OBS
      */
     @NotNull(message = "endpoint 不能为空")
     private String endpoint;
     /**
      * 自定义域名
-     * 1. MinIO:
+     * 1. MinIO:通过 Nginx 配置
      * 2. 阿里云:https://help.aliyun.com/document_detail/31836.html
      * 3. 腾讯云:https://cloud.tencent.com/document/product/436/11142
      * 4. 七牛云:https://developer.qiniu.com/kodo/8556/set-the-custom-source-domain-name
-     * 5. 华为云:
+     * 5. 华为云:https://support.huaweicloud.com/usermanual-obs/obs_03_0032.html
      */
     @URL(message = "domain 必须是 URL 格式")
     private String domain;
-    /**
-     * 区域
-     * 1. MinIO:
-     * 2. 阿里云:https://help.aliyun.com/document_detail/31837.html
-     * 3. 腾讯云:
-     * 4. 七牛云:https://developer.qiniu.com/kodo/4088/s3-access-domainname
-     * 5. 华为云:
-     */
-    @NotNull(message = "region 不能为空")
-    private String region;
     /**
      * 存储 Bucket
      */
@@ -57,11 +48,11 @@ public class S3FileClientConfig implements FileClientConfig {
 
     /**
      * 访问 Key
-     * 1. MinIO:
-     * 2. 阿里云:
+     * 1. MinIO:https://www.iocoder.cn/Spring-Boot/MinIO
+     * 2. 阿里云:https://ram.console.aliyun.com/manage/ak
      * 3. 腾讯云:https://console.cloud.tencent.com/cam/capi
      * 4. 七牛云:https://portal.qiniu.com/user/key
-     * 5. 华为云:
+     * 5. 华为云:https://support.huaweicloud.com/qs-obs/obs_qs_0005.html
      */
     @NotNull(message = "accessKey 不能为空")
     private String accessKey;
diff --git a/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/s3/S3ModifyPathInterceptor.java b/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/s3/S3ModifyPathInterceptor.java
deleted file mode 100644
index 1b7550dd7..000000000
--- a/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/s3/S3ModifyPathInterceptor.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package cn.iocoder.yudao.framework.file.core.client.s3;
-
-import software.amazon.awssdk.core.interceptor.Context;
-import software.amazon.awssdk.core.interceptor.ExecutionAttributes;
-import software.amazon.awssdk.core.interceptor.ExecutionInterceptor;
-import software.amazon.awssdk.http.SdkHttpRequest;
-
-/**
- * S3 修改路径的拦截器,移除多余的 Bucket 前缀。
- * 如果不使用该拦截器,希望上传的路径是 /tudou.jpg 时,会被添加成 /bucket/tudou.jpg
- *
- * @author 芋道源码
- */
-public class S3ModifyPathInterceptor implements ExecutionInterceptor {
-
-	private final String bucket;
-
-	public S3ModifyPathInterceptor(String bucket) {
-		this.bucket = "/" + bucket;
-	}
-
-	@Override
-	public SdkHttpRequest modifyHttpRequest(Context.ModifyHttpRequest context, ExecutionAttributes executionAttributes) {
-		SdkHttpRequest request = context.httpRequest();
-		SdkHttpRequest.Builder rb = SdkHttpRequest.builder().protocol(request.protocol()).host(request.host()).port(request.port())
-				.method(request.method()).headers(request.headers()).rawQueryParameters(request.rawQueryParameters());
-		// 移除 path 前的 bucket 路径
-		if (request.encodedPath().startsWith(bucket)) {
-			rb.encodedPath(request.encodedPath().substring(bucket.length()));
-		} else {
-			rb.encodedPath(request.encodedPath());
-		}
-		return rb.build();
-	}
-
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/ftp/FtpFileClientTest.java b/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/ftp/FtpFileClientTest.java
index ee0d74078..00a3a268e 100644
--- a/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/ftp/FtpFileClientTest.java
+++ b/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/ftp/FtpFileClientTest.java
@@ -3,11 +3,13 @@ package cn.iocoder.yudao.framework.file.core.client.ftp;
 import cn.hutool.core.io.resource.ResourceUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.extra.ftp.FtpMode;
+import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 public class FtpFileClientTest {
 
     @Test
+    @Disabled
     public void test() {
         // 创建客户端
         FtpFileClientConfig config = new FtpFileClientConfig();
diff --git a/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/local/LocalFileClientTest.java b/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/local/LocalFileClientTest.java
index 60f781b01..2062d63d7 100644
--- a/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/local/LocalFileClientTest.java
+++ b/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/local/LocalFileClientTest.java
@@ -2,11 +2,13 @@ package cn.iocoder.yudao.framework.file.core.client.local;
 
 import cn.hutool.core.io.resource.ResourceUtil;
 import cn.hutool.core.util.IdUtil;
+import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 public class LocalFileClientTest {
 
     @Test
+    @Disabled
     public void test() {
         // 创建客户端
         LocalFileClientConfig config = new LocalFileClientConfig();
diff --git a/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClientTest.java b/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClientTest.java
index 47c5e76e4..de77477cd 100644
--- a/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClientTest.java
+++ b/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClientTest.java
@@ -2,7 +2,6 @@ package cn.iocoder.yudao.framework.file.core.client.s3;
 
 import cn.hutool.core.io.resource.ResourceUtil;
 import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
@@ -11,9 +10,25 @@ import javax.validation.Validation;
 
 public class S3FileClientTest {
 
+    @Test
+    @Disabled // MinIO,如果要集成测试,可以注释本行
+    public void testMinIO() throws Exception {
+        S3FileClientConfig config = new S3FileClientConfig();
+        // 配置成你自己的
+        config.setAccessKey("admin");
+        config.setAccessSecret("password");
+        config.setBucket("yudaoyuanma");
+        config.setDomain(null);
+        // 默认 9000 endpoint
+        config.setEndpoint("http://127.0.0.1:9000");
+
+        // 执行上传
+        testExecuteUpload(config);
+    }
+
     @Test
     @Disabled // 阿里云 OSS,如果要集成测试,可以注释本行
-    public void testAliyun() {
+    public void testAliyun() throws Exception {
         S3FileClientConfig config = new S3FileClientConfig();
         // 配置成你自己的
         config.setAccessKey(System.getenv("ALIYUN_ACCESS_KEY"));
@@ -29,7 +44,7 @@ public class S3FileClientTest {
 
     @Test
     @Disabled // 腾讯云 COS,如果要集成测试,可以注释本行
-    public void testQCloud() {
+    public void testQCloud() throws Exception {
         S3FileClientConfig config = new S3FileClientConfig();
         // 配置成你自己的
         config.setAccessKey(System.getenv("QCLOUD_ACCESS_KEY"));
@@ -38,7 +53,6 @@ public class S3FileClientTest {
         config.setDomain(null); // 如果有自定义域名,则可以设置。http://tengxun-oss.iocoder.cn
         // 默认上海的 endpoint
         config.setEndpoint("cos.ap-shanghai.myqcloud.com");
-        config.setRegion("ap-shanghai");
 
         // 执行上传
         testExecuteUpload(config);
@@ -46,7 +60,7 @@ public class S3FileClientTest {
 
     @Test
     @Disabled // 七牛云存储,如果要集成测试,可以注释本行
-    public void testQiniu() {
+    public void testQiniu() throws Exception {
         S3FileClientConfig config = new S3FileClientConfig();
         // 配置成你自己的
 //        config.setAccessKey(System.getenv("QINIU_ACCESS_KEY"));
@@ -62,11 +76,24 @@ public class S3FileClientTest {
         testExecuteUpload(config);
     }
 
-    private void testExecuteUpload(S3FileClientConfig config) {
-        // 补全配置
-        if (config.getRegion() == null) {
-            config.setRegion(StrUtil.subBefore(config.getEndpoint(), '.', false));
-        }
+    @Test
+    @Disabled // 华为云存储,如果要集成测试,可以注释本行
+    public void testHuaweiCloud() throws Exception {
+        S3FileClientConfig config = new S3FileClientConfig();
+        // 配置成你自己的
+//        config.setAccessKey(System.getenv("HUAWEI_CLOUD_ACCESS_KEY"));
+//        config.setAccessSecret(System.getenv("HUAWEI_CLOUD_SECRET_KEY"));
+        config.setBucket("yudao");
+        config.setDomain(null); // 如果有自定义域名,则可以设置。
+        // 默认上海的 endpoint
+        config.setEndpoint("obs.cn-east-3.myhuaweicloud.com");
+
+        // 执行上传
+        testExecuteUpload(config);
+    }
+
+    private void testExecuteUpload(S3FileClientConfig config) throws Exception {
+        // 校验配置
         ValidationUtils.validate(Validation.buildDefaultValidatorFactory().getValidator(), config);
         // 创建 Client
         S3FileClient client = new S3FileClient(0L, config);
@@ -77,9 +104,9 @@ public class S3FileClientTest {
         String fullPath = client.upload(content, path);
         System.out.println("访问地址:" + fullPath);
         // 读取文件
-        if (false) {
+        if (true) {
             byte[] bytes = client.getContent(path);
-            System.out.println("文件内容:" + bytes);
+            System.out.println("文件内容:" + bytes.length);
         }
         // 删除文件
         if (false) {
diff --git a/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/sftp/SftpFileClientTest.java b/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/sftp/SftpFileClientTest.java
index cc8e59ede..412df1ea8 100644
--- a/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/sftp/SftpFileClientTest.java
+++ b/yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/sftp/SftpFileClientTest.java
@@ -2,11 +2,13 @@ package cn.iocoder.yudao.framework.file.core.client.sftp;
 
 import cn.hutool.core.io.resource.ResourceUtil;
 import cn.hutool.core.util.IdUtil;
+import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 public class SftpFileClientTest {
 
     @Test
+    @Disabled
     public void test() {
         // 创建客户端
         SftpFileClientConfig config = new SftpFileClientConfig();
diff --git a/yudao-module-bpm/yudao-module-bpm-base/src/main/java/cn/iocoder/yudao/module/bpm/service/message/BpmMessageService.java b/yudao-module-bpm/yudao-module-bpm-base/src/main/java/cn/iocoder/yudao/module/bpm/service/message/BpmMessageService.java
index 8905893b4..ff51ae306 100644
--- a/yudao-module-bpm/yudao-module-bpm-base/src/main/java/cn/iocoder/yudao/module/bpm/service/message/BpmMessageService.java
+++ b/yudao-module-bpm/yudao-module-bpm-base/src/main/java/cn/iocoder/yudao/module/bpm/service/message/BpmMessageService.java
@@ -22,7 +22,6 @@ public interface BpmMessageService {
      */
     void sendMessageWhenProcessInstanceApprove(@Valid BpmMessageSendWhenProcessInstanceApproveReqDTO reqDTO);
 
-
     /**
      * 发送流程实例被不通过的消息
      *
diff --git a/yudao-module-bpm/yudao-module-bpm-impl-flowable/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/BpmUserTaskActivityBehavior.java b/yudao-module-bpm/yudao-module-bpm-impl-flowable/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/BpmUserTaskActivityBehavior.java
index fb2551cbc..d4ab5b67a 100644
--- a/yudao-module-bpm/yudao-module-bpm-impl-flowable/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/BpmUserTaskActivityBehavior.java
+++ b/yudao-module-bpm/yudao-module-bpm-impl-flowable/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/BpmUserTaskActivityBehavior.java
@@ -5,7 +5,6 @@ import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
-import cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRule;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmTaskAssignRuleDO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmUserGroupDO;
 import cn.iocoder.yudao.module.bpm.enums.definition.BpmTaskAssignRuleTypeEnum;
@@ -69,11 +68,13 @@ public class BpmUserTaskActivityBehavior extends UserTaskActivityBehavior {
     public BpmUserTaskActivityBehavior(UserTask userTask) {
         super(userTask);
     }
+
     public void setScripts(List<BpmTaskAssignScript> scripts) {
         this.scriptMap = convertMap(scripts, script -> script.getEnum().getId());
     }
 
     @Override
+    @DataPermission(enable = false) // 不需要处理数据权限, 不然会有问题,查询不到数据
     protected void handleAssignments(TaskService taskService, String assignee, String owner, List<String> candidateUsers, List<String> candidateGroups, TaskEntity task, ExpressionManager expressionManager, DelegateExecution execution, ProcessEngineConfigurationImpl processEngineConfiguration) {
         // 第一步,获得任务的规则
         BpmTaskAssignRuleDO rule = getTaskRule(task);
@@ -98,7 +99,6 @@ public class BpmUserTaskActivityBehavior extends UserTaskActivityBehavior {
         return taskRules.get(0);
     }
 
-    @VisibleForTesting
     Set<Long> calculateTaskCandidateUsers(TaskEntity task, BpmTaskAssignRuleDO rule) {
         Set<Long> assigneeUserIds = null;
         if (Objects.equals(BpmTaskAssignRuleTypeEnum.ROLE.getType(), rule.getType())) {
diff --git a/yudao-module-bpm/yudao-module-bpm-impl-flowable/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX2Script.java b/yudao-module-bpm/yudao-module-bpm-impl-flowable/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX2Script.java
index 59c0732dc..9ead7a6f3 100644
--- a/yudao-module-bpm/yudao-module-bpm-impl-flowable/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX2Script.java
+++ b/yudao-module-bpm/yudao-module-bpm-impl-flowable/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX2Script.java
@@ -15,7 +15,6 @@ import java.util.Set;
 @Component
 public class BpmTaskAssignLeaderX2Script extends BpmTaskAssignLeaderAbstractScript {
 
-
     @Override
     @DataPermission(enable = false) // 不需要处理数据权限, 不然会有问题,查询不到数据
     public Set<Long> calculateTaskCandidateUsers(TaskEntity task) {
diff --git a/yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/file/FileApi.java b/yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/file/FileApi.java
index 5d55c5731..fa3ec5c6e 100644
--- a/yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/file/FileApi.java
+++ b/yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/file/FileApi.java
@@ -15,7 +15,7 @@ public interface FileApi {
      * @param content 文件内容
      * @return 文件路径
      */
-   default String createFile(byte[] content) {
+   default String createFile(byte[] content) throws Exception {
        return createFile(IdUtil.fastUUID(), content);
    }
 
@@ -26,6 +26,6 @@ public interface FileApi {
      * @param content 文件内容
      * @return 文件路径
      */
-    String createFile(String path, byte[] content);
+    String createFile(String path, byte[] content) throws Exception;
 
 }
diff --git a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/api/file/FileApiImpl.java b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/api/file/FileApiImpl.java
index c5ce8db19..d43eac1d5 100644
--- a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/api/file/FileApiImpl.java
+++ b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/api/file/FileApiImpl.java
@@ -1,6 +1,5 @@
 package cn.iocoder.yudao.module.infra.api.file;
 
-import cn.iocoder.yudao.module.infra.api.file.FileApi;
 import cn.iocoder.yudao.module.infra.service.file.FileService;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
@@ -20,7 +19,7 @@ public class FileApiImpl implements FileApi {
     private FileService fileService;
 
     @Override
-    public String createFile(String path, byte[] content) {
+    public String createFile(String path, byte[] content) throws Exception {
         return fileService.createFile(path, content);
     }
 
diff --git a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileConfigController.java b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileConfigController.java
index 92ecd2bb9..8c355d627 100755
--- a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileConfigController.java
+++ b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileConfigController.java
@@ -82,7 +82,7 @@ public class FileConfigController {
     @GetMapping("/test")
     @ApiOperation("测试文件配置是否正确")
     @PreAuthorize("@ss.hasPermission('infra:file-config:query')")
-    public CommonResult<String> testFileConfig(@RequestParam("id") Long id) {
+    public CommonResult<String> testFileConfig(@RequestParam("id") Long id) throws Exception {
         String url = fileConfigService.testFileConfig(id);
         return success(url);
     }
diff --git a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java
index e1cc6d076..e3d810dec 100644
--- a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java
+++ b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java
@@ -23,7 +23,6 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
-import java.io.IOException;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
@@ -44,7 +43,7 @@ public class FileController {
             @ApiImplicitParam(name = "path", value = "文件路径", example = "yudaoyuanma.png", dataTypeClass = String.class)
     })
     public CommonResult<String> uploadFile(@RequestParam("file") MultipartFile file,
-                                           @RequestParam("path") String path) throws IOException {
+                                           @RequestParam("path") String path) throws Exception {
         return success(fileService.createFile(path, IoUtil.readBytes(file.getInputStream())));
     }
 
@@ -52,7 +51,7 @@ public class FileController {
     @ApiOperation("删除文件")
     @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)
     @PreAuthorize("@ss.hasPermission('infra:file:delete')")
-    public CommonResult<Boolean> deleteFile(@RequestParam("id") Long id) {
+    public CommonResult<Boolean> deleteFile(@RequestParam("id") Long id) throws Exception {
         fileService.deleteFile(id);
         return success(true);
     }
@@ -65,7 +64,7 @@ public class FileController {
     })
     public void getFileContent(HttpServletResponse response,
                                @PathVariable("configId") Long configId,
-                               @PathVariable("path") String path) throws IOException {
+                               @PathVariable("path") String path) throws Exception {
         byte[] content = fileService.getFileContent(configId, path);
         if (content == null) {
             log.warn("[getFileContent][configId({}) path({}) 文件不存在]", configId, path);
diff --git a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java
index 31db3d572..cdf5d3dc7 100644
--- a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java
+++ b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java
@@ -82,7 +82,7 @@ public class CodegenServiceImpl implements CodegenService {
         table.setAuthor(userApi.getUser(userId).getNickname());
         codegenTableMapper.insert(table);
         // 构建 CodegenColumnDO 数组,插入到 DB 中
-        List<CodegenColumnDO> columns = codegenBuilder.buildColumns(schemaColumns);
+        List<CodegenColumnDO> columns = codegenBuilder.buildColumns(table.getId(), schemaColumns);
         codegenColumnMapper.insertBatch(columns);
         return table.getId();
     }
@@ -196,7 +196,7 @@ public class CodegenServiceImpl implements CodegenService {
         }
 
         // 插入新增的字段
-        List<CodegenColumnDO> columns = codegenBuilder.buildColumns(schemaColumns);
+        List<CodegenColumnDO> columns = codegenBuilder.buildColumns(tableId, schemaColumns);
         codegenColumnMapper.insertBatch(columns);
         // 删除不存在的字段
         if (CollUtil.isNotEmpty(deleteColumnIds)) {
diff --git a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenBuilder.java b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenBuilder.java
index 4c7ba479f..2a4281e50 100644
--- a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenBuilder.java
+++ b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenBuilder.java
@@ -133,9 +133,12 @@ public class CodegenBuilder {
         table.setTemplateType(CodegenTemplateTypeEnum.CRUD.getType());
     }
 
-    public List<CodegenColumnDO> buildColumns(List<SchemaColumnDO> schemaColumns) {
+    public List<CodegenColumnDO> buildColumns(Long tableId, List<SchemaColumnDO> schemaColumns) {
         List<CodegenColumnDO> columns = CodegenConvert.INSTANCE.convertList(schemaColumns);
-        columns.forEach(this::initColumnDefault);
+        for (CodegenColumnDO column : columns) {
+            column.setTableId(tableId);
+            initColumnDefault(column);
+        }
         return columns;
     }
 
diff --git a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigService.java b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigService.java
index 326052688..02197b98e 100755
--- a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigService.java
+++ b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigService.java
@@ -82,7 +82,7 @@ public interface FileConfigService {
      * @param id 编号
      * @return 文件 URL
      */
-    String testFileConfig(Long id);
+    String testFileConfig(Long id) throws Exception;
 
     /**
      * 获得指定编号的文件客户端
diff --git a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImpl.java b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImpl.java
index 3d79bdeef..bd0ced564 100755
--- a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImpl.java
+++ b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImpl.java
@@ -225,7 +225,7 @@ public class FileConfigServiceImpl implements FileConfigService {
     }
 
     @Override
-    public String testFileConfig(Long id) {
+    public String testFileConfig(Long id) throws Exception {
         // 校验存在
         this.validateFileConfigExists(id);
         // 上传文件
diff --git a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileService.java b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileService.java
index ea5f31390..2d893c082 100644
--- a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileService.java
+++ b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileService.java
@@ -26,14 +26,14 @@ public interface FileService {
      * @param content 文件内容
      * @return 文件路径
      */
-    String createFile(String path, byte[] content);
+    String createFile(String path, byte[] content) throws Exception;
 
     /**
      * 删除文件
      *
      * @param id 编号
      */
-    void deleteFile(Long id);
+    void deleteFile(Long id) throws Exception;
 
     /**
      * 获得文件内容
@@ -42,6 +42,6 @@ public interface FileService {
      * @param path 文件路径
      * @return 文件内容
      */
-    byte[] getFileContent(Long configId, String path);
+    byte[] getFileContent(Long configId, String path) throws Exception;
 
 }
diff --git a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java
index 3a3c3c010..66af402e0 100644
--- a/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java
+++ b/yudao-module-infra/yudao-module-infra-impl/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java
@@ -35,7 +35,7 @@ public class FileServiceImpl implements FileService {
     }
 
     @Override
-    public String createFile(String path, byte[] content) {
+    public String createFile(String path, byte[] content) throws Exception {
         // 上传到文件存储器
         FileClient client = fileConfigService.getMasterFileClient();
         Assert.notNull(client, "客户端(master) 不能为空");
@@ -53,7 +53,7 @@ public class FileServiceImpl implements FileService {
     }
 
     @Override
-    public void deleteFile(Long id) {
+    public void deleteFile(Long id) throws Exception {
         // 校验存在
         FileDO file = this.validateFileExists(id);
 
@@ -75,7 +75,7 @@ public class FileServiceImpl implements FileService {
     }
 
     @Override
-    public byte[] getFileContent(Long configId, String path) {
+    public byte[] getFileContent(Long configId, String path) throws Exception {
         FileClient client = fileConfigService.getFileClient(configId);
         Assert.notNull(client, "客户端({}) 不能为空", configId);
         return client.getContent(path);
diff --git a/yudao-module-infra/yudao-module-infra-impl/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImplTest.java b/yudao-module-infra/yudao-module-infra-impl/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImplTest.java
index 457c0682a..33e85f03b 100755
--- a/yudao-module-infra/yudao-module-infra-impl/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImplTest.java
+++ b/yudao-module-infra/yudao-module-infra-impl/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImplTest.java
@@ -228,7 +228,7 @@ public class FileConfigServiceImplTest extends BaseDbUnitTest {
     }
 
     @Test
-    public void testFileConfig() {
+    public void testFileConfig() throws Exception {
         // mock 数据
         FileConfigDO dbFileConfig = randomFileConfigDO().setMaster(false);
         fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据
diff --git a/yudao-module-infra/yudao-module-infra-impl/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileServiceTest.java b/yudao-module-infra/yudao-module-infra-impl/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileServiceTest.java
index 6ff74a21f..4682bfbd9 100644
--- a/yudao-module-infra/yudao-module-infra-impl/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileServiceTest.java
+++ b/yudao-module-infra/yudao-module-infra-impl/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileServiceTest.java
@@ -70,7 +70,7 @@ public class FileServiceTest extends BaseDbUnitTest {
     }
 
     @Test
-    public void testCreateFile_success() {
+    public void testCreateFile_success() throws Exception {
         // 准备参数
         String path = randomString();
         byte[] content = ResourceUtil.readBytes("file/erweima.jpg");
@@ -95,7 +95,7 @@ public class FileServiceTest extends BaseDbUnitTest {
     }
 
     @Test
-    public void testDeleteFile_success() {
+    public void testDeleteFile_success() throws Exception {
         // mock 数据
         FileDO dbFile = randomPojo(FileDO.class, o -> o.setConfigId(10L).setPath("tudou.jpg"));
         fileMapper.insert(dbFile);// @Sql: 先插入出一条存在的数据
@@ -123,7 +123,7 @@ public class FileServiceTest extends BaseDbUnitTest {
     }
 
     @Test
-    public void testGetFileContent() {
+    public void testGetFileContent() throws Exception {
         // 准备参数
         Long configId = 10L;
         String path = "tudou.jpg";
diff --git a/yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserController.java b/yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserController.java
index 33505ea3a..edefcdba0 100644
--- a/yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserController.java
+++ b/yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserController.java
@@ -16,9 +16,8 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
-import java.io.IOException;
 
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.*;
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.FILE_IS_EMPTY;
@@ -44,7 +43,7 @@ public class AppUserController {
     @PutMapping("/update-avatar")
     @ApiOperation("修改用户头像")
     @PreAuthenticated
-    public CommonResult<String> updateUserAvatar(@RequestParam("avatarFile") MultipartFile file) throws IOException {
+    public CommonResult<String> updateUserAvatar(@RequestParam("avatarFile") MultipartFile file) throws Exception {
         if (file.isEmpty()) {
             throw exception(FILE_IS_EMPTY);
         }
diff --git a/yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java b/yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java
index 1a38e61af..3c0e62de8 100644
--- a/yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java
+++ b/yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java
@@ -60,7 +60,7 @@ public interface MemberUserService {
      * @param inputStream 头像文件
      * @return 头像url
      */
-    String updateUserAvatar(Long userId, InputStream inputStream);
+    String updateUserAvatar(Long userId, InputStream inputStream) throws Exception;
 
     /**
      * 修改手机
diff --git a/yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java b/yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java
index fcfe3ae51..0522e8eda 100644
--- a/yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java
+++ b/yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java
@@ -100,7 +100,7 @@ public class MemberUserServiceImpl implements MemberUserService {
     }
 
     @Override
-    public String updateUserAvatar(Long userId, InputStream avatarFile) {
+    public String updateUserAvatar(Long userId, InputStream avatarFile) throws Exception {
         this.checkUserExists(userId);
         // 创建文件
         String avatar = fileApi.createFile(IoUtil.readBytes(avatarFile));
diff --git a/yudao-module-member/yudao-module-member-impl/src/test/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImplTest.java b/yudao-module-member/yudao-module-member-impl/src/test/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImplTest.java
index 46d72091c..dc642f9b4 100644
--- a/yudao-module-member/yudao-module-member-impl/src/test/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImplTest.java
+++ b/yudao-module-member/yudao-module-member-impl/src/test/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImplTest.java
@@ -74,7 +74,7 @@ public class MemberUserServiceImplTest extends BaseDbAndRedisUnitTest {
     }
 
     @Test
-    public void testUpdateAvatar_success(){
+    public void testUpdateAvatar_success() throws Exception {
         // mock 数据
         MemberUserDO dbUser = randomUserDO();
         userMapper.insert(dbUser);
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java
index d68fa96cc..9c6c24092 100644
--- a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java
@@ -29,7 +29,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
-import java.io.IOException;
 import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -99,7 +98,7 @@ public class UserProfileController {
 
     @PutMapping("/update-avatar")
     @ApiOperation("上传用户个人头像")
-    public CommonResult<String> updateUserAvatar(@RequestParam("avatarFile") MultipartFile file) throws IOException {
+    public CommonResult<String> updateUserAvatar(@RequestParam("avatarFile") MultipartFile file) throws Exception {
         if (file.isEmpty()) {
             throw ServiceExceptionUtil.exception(FILE_IS_EMPTY);
         }
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/MenuMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/MenuMapper.java
index fc2718122..7a9fbfc1e 100644
--- a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/MenuMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/MenuMapper.java
@@ -1,12 +1,12 @@
 package cn.iocoder.yudao.module.system.dal.mysql.permission;
 
-import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.system.controller.admin.permission.vo.menu.MenuListReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.Date;
 import java.util.List;
@@ -28,9 +28,7 @@ public interface MenuMapper extends BaseMapperX<MenuDO> {
                 .eqIfPresent(MenuDO::getStatus, reqVO.getStatus()));
     }
 
-    default boolean selectExistsByUpdateTimeAfter(Date maxUpdateTime) {
-        return selectOne(new LambdaQueryWrapper<MenuDO>().select(MenuDO::getId)
-                .gt(MenuDO::getUpdateTime, maxUpdateTime).last(SqlConstants.LIMIT1)) != null;
-    }
+    @Select("SELECT id FROM system_menu WHERE update_time > #{maxUpdateTime} LIMIT 1")
+    MenuDO selectExistsByUpdateTimeAfter(Date maxUpdateTime);
 
 }
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMapper.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMapper.java
index 1de536caf..c10cfa09b 100644
--- a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMapper.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMapper.java
@@ -7,9 +7,8 @@ import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
 import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleExportReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
-import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 import org.springframework.lang.Nullable;
 
 import java.util.Collection;
@@ -45,10 +44,7 @@ public interface RoleMapper extends BaseMapperX<RoleDO> {
         return selectList(new LambdaQueryWrapperX<RoleDO>().inIfPresent(RoleDO::getStatus, statuses));
     }
 
-    @InterceptorIgnore(tenantLine = "true") // 该方法忽略多租户。原因:该方法被异步 task 调用,此时获取不到租户编号
-    default boolean selectExistsByUpdateTimeAfter(Date maxUpdateTime) {
-        return selectOne(new QueryWrapper<RoleDO>().select("id")
-                .gt("update_time", maxUpdateTime).last("LIMIT 1")) != null;
-    }
+    @Select("SELECT id FROM system_role WHERE update_time > #{maxUpdateTime} LIMIT 1")
+    RoleDO selectExistsByUpdateTimeAfter(Date maxUpdateTime);
 
 }
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuServiceImpl.java
index c54a490a6..149f6c7b4 100644
--- a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuServiceImpl.java
@@ -120,7 +120,7 @@ public class MenuServiceImpl implements MenuService {
         if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
             log.info("[loadMenuIfUpdate][首次加载全量菜单]");
         } else { // 判断数据库中是否有更新的菜单
-            if (!menuMapper.selectExistsByUpdateTimeAfter(maxUpdateTime)) {
+            if (menuMapper.selectExistsByUpdateTimeAfter(maxUpdateTime) == null) {
                 return null;
             }
             log.info("[loadMenuIfUpdate][增量加载全量菜单]");
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java
index 16e584964..713b7e4db 100644
--- a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java
@@ -116,7 +116,7 @@ public class RoleServiceImpl implements RoleService {
         if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
             log.info("[loadRoleIfUpdate][首次加载全量角色]");
         } else { // 判断数据库中是否有更新的角色
-            if (!roleMapper.selectExistsByUpdateTimeAfter(maxUpdateTime)) {
+            if (roleMapper.selectExistsByUpdateTimeAfter(maxUpdateTime) == null) {
                 return null;
             }
             log.info("[loadRoleIfUpdate][增量加载全量角色]");
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
index e9a6fdc96..78d6a88a9 100644
--- a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
@@ -64,7 +64,7 @@ public interface AdminUserService {
      * @param id         用户 id
      * @param avatarFile 头像文件
      */
-    String updateUserAvatar(Long id, InputStream avatarFile);
+    String updateUserAvatar(Long id, InputStream avatarFile) throws Exception;
 
     /**
      * 修改密码
diff --git a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
index 279be9d57..32f0a8e8c 100644
--- a/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
@@ -63,6 +63,7 @@ public class AdminUserServiceImpl implements AdminUserService {
     private FileApi fileApi;
 
     @Override
+
     public Long createUser(UserCreateReqVO reqVO) {
         // 校验账户配合
         tenantService.handleTenantInfo(tenant -> {
@@ -118,7 +119,7 @@ public class AdminUserServiceImpl implements AdminUserService {
     }
 
     @Override
-    public String updateUserAvatar(Long id, InputStream avatarFile) {
+    public String updateUserAvatar(Long id, InputStream avatarFile) throws Exception {
         this.checkUserExists(id);
         // 存储文件
         String avatar = fileApi.createFile(IoUtil.readBytes(avatarFile));
diff --git a/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/user/UserServiceImplTest.java b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/user/UserServiceImplTest.java
index 49d18dc06..5197d422b 100644
--- a/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/user/UserServiceImplTest.java
+++ b/yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/user/UserServiceImplTest.java
@@ -196,7 +196,7 @@ public class UserServiceImplTest extends BaseDbUnitTest {
     }
 
     @Test
-    public void testUpdateUserAvatar_success() {
+    public void testUpdateUserAvatar_success() throws Exception {
         // mock 数据
         AdminUserDO dbUser = randomAdminUserDO();
         userMapper.insert(dbUser);
diff --git a/yudao-ui-admin/.env.demo1024 b/yudao-ui-admin/.env.demo1024
index d2897f1ea..21f48d031 100644
--- a/yudao-ui-admin/.env.demo1024
+++ b/yudao-ui-admin/.env.demo1024
@@ -13,3 +13,9 @@ VUE_APP_BASE_API = 'http://127.0.0.1:48080'
 PUBLIC_PATH = '/admin-ui/'
 # 二级部署路径
 VUE_APP_APP_NAME ='/admin-ui/'
+
+# 多租户的开关
+VUE_APP_TENANT_ENABLE = true
+
+# 文档的开关
+VUE_APP_DOC_ENABLE = true
diff --git a/yudao-ui-admin/.env.development b/yudao-ui-admin/.env.development
index 7f6246a9e..e7841a631 100644
--- a/yudao-ui-admin/.env.development
+++ b/yudao-ui-admin/.env.development
@@ -13,3 +13,6 @@ VUE_CLI_BABEL_TRANSPILE_MODULES = true
 
 # 多租户的开关
 VUE_APP_TENANT_ENABLE = true
+
+# 文档的开关
+VUE_APP_DOC_ENABLE = true
diff --git a/yudao-ui-admin/.env.production b/yudao-ui-admin/.env.production
index 535990c4a..377f92f1b 100644
--- a/yudao-ui-admin/.env.production
+++ b/yudao-ui-admin/.env.production
@@ -12,3 +12,8 @@ PUBLIC_PATH = 'http://my-pi.com:8888/yudao-admin/'
 # 二级部署路径
 VUE_APP_APP_NAME ='yudao-admin'
 
+# 多租户的开关
+VUE_APP_TENANT_ENABLE = true
+
+# 文档的开关
+VUE_APP_DOC_ENABLE = false
diff --git a/yudao-ui-admin/.env.staging b/yudao-ui-admin/.env.staging
index 7cb5fb84d..cb7b007b1 100644
--- a/yudao-ui-admin/.env.staging
+++ b/yudao-ui-admin/.env.staging
@@ -11,3 +11,9 @@ VUE_APP_BASE_API = 'http://api-dashboard.yudao.iocoder.cn'
 
 # 静态资源地址
 PUBLIC_PATH = 'http://static.yudao.iocoder.cn/'
+
+# 多租户的开关
+VUE_APP_TENANT_ENABLE = true
+
+# 文档的开关
+VUE_APP_DOC_ENABLE = false
diff --git a/yudao-ui-admin/package.json b/yudao-ui-admin/package.json
index 776f550af..8a0440d06 100644
--- a/yudao-ui-admin/package.json
+++ b/yudao-ui-admin/package.json
@@ -1,6 +1,6 @@
 {
   "name": "yudao-ui-admin",
-  "version": "1.6.0-snapshot",
+  "version": "1.6.1-snapshot",
   "description": "芋道管理系统",
   "author": "芋道",
   "license": "MIT",
diff --git a/yudao-ui-admin/src/components/DocAlert/index.vue b/yudao-ui-admin/src/components/DocAlert/index.vue
new file mode 100644
index 000000000..541b8ed20
--- /dev/null
+++ b/yudao-ui-admin/src/components/DocAlert/index.vue
@@ -0,0 +1,25 @@
+<template>
+  <el-alert v-if="enable()" :title="'【' + title + '】文档地址:' + url" type="success" show-icon />
+</template>
+
+<script>
+import {getDocEnable} from "@/utils/ruoyi";
+
+export default {
+  name: "DocAlert",
+  props: {
+    title: String,
+    url: String,
+  },
+  methods: {
+    enable: function () {
+      return getDocEnable();
+    }
+  }
+};
+</script>
+<style scoped>
+.el-alert--success.is-light {
+  margin-bottom: 10px;
+}
+</style>
diff --git a/yudao-ui-admin/src/main.js b/yudao-ui-admin/src/main.js
index a572d937c..8252a97b2 100644
--- a/yudao-ui-admin/src/main.js
+++ b/yudao-ui-admin/src/main.js
@@ -41,10 +41,12 @@ Vue.prototype.handleTree = handleTree
 
 // 全局组件挂载
 Vue.component('DictTag', DictTag)
+Vue.component('DocAlert', DocAlert)
 Vue.component('Pagination', Pagination)
 Vue.component('RightToolbar', RightToolbar)
 // 字典标签组件
 import DictTag from '@/components/DictTag'
+import DocAlert from '@/components/DocAlert'
 // 头部标签插件
 import VueMeta from 'vue-meta'
 
diff --git a/yudao-ui-admin/src/utils/ruoyi.js b/yudao-ui-admin/src/utils/ruoyi.js
index 3dd996cee..dd7dcd19f 100644
--- a/yudao-ui-admin/src/utils/ruoyi.js
+++ b/yudao-ui-admin/src/utils/ruoyi.js
@@ -175,7 +175,7 @@ export function getNowDateTime(timeStr) {
  * 获得租户功能是否开启
  */
 export function getTenantEnable() {
-  console.log("enable: " + process.env.VUE_APP_TENANT_ENABLE)
+  // console.log("enable: " + process.env.VUE_APP_TENANT_ENABLE)
   if (process.env.VUE_APP_TENANT_ENABLE === "true") {
     return true;
   }
@@ -184,3 +184,16 @@ export function getTenantEnable() {
   }
   return process.env.VUE_APP_TENANT_ENABLE || true;
 }
+
+/**
+ * 获得文档是否开启
+ */
+export function getDocEnable() {
+  if (process.env.VUE_APP_DOC_ENABLE === "true") {
+    return true;
+  }
+  if (process.env.VUE_APP_DOC_ENABLE === "false") {
+    return false;
+  }
+  return process.env.VUE_APP_DOC_ENABLE || false;
+}
diff --git a/yudao-ui-admin/src/views/bpm/definition/index.vue b/yudao-ui-admin/src/views/bpm/definition/index.vue
index 277047ee4..43f194234 100644
--- a/yudao-ui-admin/src/views/bpm/definition/index.vue
+++ b/yudao-ui-admin/src/views/bpm/definition/index.vue
@@ -1,5 +1,7 @@
 <template>
   <div class="app-container">
+    <doc-alert title="工作流" url="https://doc.iocoder.cn/bpm" />
+
     <!-- 列表 -->
     <el-table v-loading="loading" :data="list">
       <el-table-column label="定义编号" align="center" prop="id" width="400" />
diff --git a/yudao-ui-admin/src/views/bpm/form/index.vue b/yudao-ui-admin/src/views/bpm/form/index.vue
index eef300908..e4cb90568 100644
--- a/yudao-ui-admin/src/views/bpm/form/index.vue
+++ b/yudao-ui-admin/src/views/bpm/form/index.vue
@@ -1,5 +1,6 @@
 <template>
   <div class="app-container">
+    <doc-alert title="工作流" url="https://doc.iocoder.cn/bpm" />
 
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
diff --git a/yudao-ui-admin/src/views/bpm/group/index.vue b/yudao-ui-admin/src/views/bpm/group/index.vue
index cf41aa8bd..b13241cf8 100644
--- a/yudao-ui-admin/src/views/bpm/group/index.vue
+++ b/yudao-ui-admin/src/views/bpm/group/index.vue
@@ -1,5 +1,6 @@
 <template>
   <div class="app-container">
+    <doc-alert title="工作流" url="https://doc.iocoder.cn/bpm" />
 
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
diff --git a/yudao-ui-admin/src/views/bpm/model/index.vue b/yudao-ui-admin/src/views/bpm/model/index.vue
index 029ad9f60..35ae26f35 100644
--- a/yudao-ui-admin/src/views/bpm/model/index.vue
+++ b/yudao-ui-admin/src/views/bpm/model/index.vue
@@ -1,5 +1,6 @@
 <template>
   <div class="app-container">
+    <doc-alert title="工作流" url="https://doc.iocoder.cn/bpm" />
 
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
diff --git a/yudao-ui-admin/src/views/bpm/oa/leave/index.vue b/yudao-ui-admin/src/views/bpm/oa/leave/index.vue
index 9dc99762e..83b3f786e 100644
--- a/yudao-ui-admin/src/views/bpm/oa/leave/index.vue
+++ b/yudao-ui-admin/src/views/bpm/oa/leave/index.vue
@@ -1,5 +1,6 @@
 <template>
   <div class="app-container">
+    <doc-alert title="工作流" url="https://doc.iocoder.cn/bpm" />
 
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
diff --git a/yudao-ui-admin/src/views/bpm/processInstance/index.vue b/yudao-ui-admin/src/views/bpm/processInstance/index.vue
index 3cb4e2cbc..fa1250760 100644
--- a/yudao-ui-admin/src/views/bpm/processInstance/index.vue
+++ b/yudao-ui-admin/src/views/bpm/processInstance/index.vue
@@ -1,5 +1,6 @@
 <template>
   <div class="app-container">
+    <doc-alert title="工作流" url="https://doc.iocoder.cn/bpm" />
 
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
diff --git a/yudao-ui-admin/src/views/bpm/task/done.vue b/yudao-ui-admin/src/views/bpm/task/done.vue
index 926260b2f..bc1a8dd03 100644
--- a/yudao-ui-admin/src/views/bpm/task/done.vue
+++ b/yudao-ui-admin/src/views/bpm/task/done.vue
@@ -1,5 +1,6 @@
 <template>
   <div class="app-container">
+    <doc-alert title="工作流" url="https://doc.iocoder.cn/bpm" />
 
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
@@ -24,7 +25,7 @@
       <el-table-column label="流程发起人" align="center" prop="processInstance.startUserNickname" width="120" />
       <el-table-column label="结果" align="center" prop="result">
         <template slot-scope="scope">
-          <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.result"/>
+          <dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value="scope.row.result"/>
         </template>
       </el-table-column>
       <el-table-column label="审批意见" align="center" prop="comment" width="200" />
diff --git a/yudao-ui-admin/src/views/bpm/task/todo.vue b/yudao-ui-admin/src/views/bpm/task/todo.vue
index f5d82b35b..db3324dd8 100644
--- a/yudao-ui-admin/src/views/bpm/task/todo.vue
+++ b/yudao-ui-admin/src/views/bpm/task/todo.vue
@@ -1,5 +1,6 @@
 <template>
   <div class="app-container">
+    <doc-alert title="工作流" url="https://doc.iocoder.cn/bpm" />
 
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
diff --git a/yudao-ui-admin/src/views/infra/build/index.vue b/yudao-ui-admin/src/views/infra/build/index.vue
index 067e3f7ea..f3995396a 100644
--- a/yudao-ui-admin/src/views/infra/build/index.vue
+++ b/yudao-ui-admin/src/views/infra/build/index.vue
@@ -44,9 +44,9 @@
 
     <div class="center-board">
       <div class="action-bar">
-        <el-button icon="el-icon-video-play" type="text" @click="run">
-          运行
-        </el-button>
+<!--        <el-button icon="el-icon-video-play" type="text" @click="run">-->
+<!--          运行-->
+<!--        </el-button>-->
         <el-button icon="el-icon-view" type="text" @click="showJson">
           查看json
         </el-button>
diff --git a/yudao-ui-admin/src/views/infra/codegen/index.vue b/yudao-ui-admin/src/views/infra/codegen/index.vue
index 292f3bc84..7ecc88349 100644
--- a/yudao-ui-admin/src/views/infra/codegen/index.vue
+++ b/yudao-ui-admin/src/views/infra/codegen/index.vue
@@ -1,5 +1,6 @@
 <template>
   <div class="app-container">
+    <doc-alert title="代码生成" url="https://doc.iocoder.cn/new-feature/" />
     <!-- 操作工作栏 -->
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="表名称" prop="tableName">
diff --git a/yudao-ui-admin/src/views/infra/file/index.vue b/yudao-ui-admin/src/views/infra/file/index.vue
index 4b41401d9..0ce63df69 100644
--- a/yudao-ui-admin/src/views/infra/file/index.vue
+++ b/yudao-ui-admin/src/views/infra/file/index.vue
@@ -1,16 +1,11 @@
 <template>
   <div class="app-container">
-
+    <doc-alert title="上传下载" url="https://doc.iocoder.cn/file/" />
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="文件路径" prop="path">
         <el-input v-model="queryParams.path" placeholder="请输入文件路径" clearable size="small" @keyup.enter.native="handleQuery"/>
       </el-form-item>
-      <el-form-item label="文件类型" prop="type">
-        <el-select v-model="queryParams.type" placeholder="请选择文件类型" clearable size="small">
-          <el-option label="请选择字典生成" value="" />
-        </el-select>
-      </el-form-item>
       <el-form-item label="创建时间">
         <el-date-picker v-model="dateRangeCreateTime" size="small" style="width: 240px" value-format="yyyy-MM-dd"
                         type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
diff --git a/yudao-ui-admin/src/views/infra/fileConfig/index.vue b/yudao-ui-admin/src/views/infra/fileConfig/index.vue
index 1643dd638..92af468dc 100755
--- a/yudao-ui-admin/src/views/infra/fileConfig/index.vue
+++ b/yudao-ui-admin/src/views/infra/fileConfig/index.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-
+    <doc-alert title="上传下载" url="https://doc.iocoder.cn/file/" />
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="配置名" prop="name">
@@ -51,7 +51,7 @@
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="240">
         <template slot-scope="scope">
           <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
                      v-hasPermi="['infra:file-config:update']">修改</el-button>
@@ -109,9 +109,6 @@
         <el-form-item v-if="form.storage === 20" label="节点地址" prop="config.endpoint">
           <el-input v-model="form.config.endpoint" placeholder="请输入节点地址" />
         </el-form-item>
-        <el-form-item v-if="form.storage === 20" label="区域" prop="config.region">
-          <el-input v-model="form.config.region" placeholder="请输入区域" />
-        </el-form-item>
         <el-form-item v-if="form.storage === 20" label="存储 bucket" prop="config.bucket">
           <el-input v-model="form.config.bucket" placeholder="请输入 bucket" />
         </el-form-item>
@@ -190,7 +187,6 @@ export default {
           password: [{ required: true, message: "密码不能为空", trigger: "blur" }],
           mode: [{ required: true, message: "连接模式不能为空", trigger: "change" }],
           endpoint: [{ required: true, message: "节点地址不能为空", trigger: "blur" }],
-          region: [{ required: true, message: "区域名不能为空", trigger: "blur" }],
           bucket: [{ required: true, message: "存储 bucket 不能为空", trigger: "blur" }],
           accessKey: [{ required: true, message: "accessKey 不能为空", trigger: "blur" }],
           accessSecret: [{ required: true, message: "accessSecret 不能为空", trigger: "blur" }],
diff --git a/yudao-ui-admin/src/views/login.vue b/yudao-ui-admin/src/views/login.vue
index 1031d9dc3..5c892ce0e 100644
--- a/yudao-ui-admin/src/views/login.vue
+++ b/yudao-ui-admin/src/views/login.vue
@@ -87,7 +87,7 @@ export default {
               // debugger
               getTenantIdByName(value).then(res => {
                 const tenantId = res.data;
-                if (tenantId >= 0) {
+                if (tenantId && tenantId >= 0) {
                   // 设置租户
                   Cookies.set("tenantId", tenantId);
                   callback();
diff --git a/yudao-ui-admin/src/views/system/menu/index.vue b/yudao-ui-admin/src/views/system/menu/index.vue
index db5a9184d..460a5df18 100644
--- a/yudao-ui-admin/src/views/system/menu/index.vue
+++ b/yudao-ui-admin/src/views/system/menu/index.vue
@@ -1,5 +1,6 @@
 <template>
   <div class="app-container">
+    <doc-alert title="功能权限" url="https://doc.iocoder.cn/resource-permission" />
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch">
       <el-form-item label="菜单名称" prop="name">
         <el-input v-model="queryParams.name" placeholder="请输入菜单名称" clearable size="small" @keyup.enter.native="handleQuery"/>
diff --git a/yudao-ui-admin/src/views/system/role/index.vue b/yudao-ui-admin/src/views/system/role/index.vue
index 57adc1d01..a56349d3b 100644
--- a/yudao-ui-admin/src/views/system/role/index.vue
+++ b/yudao-ui-admin/src/views/system/role/index.vue
@@ -1,5 +1,7 @@
 <template>
   <div class="app-container">
+    <doc-alert title="功能权限" url="https://doc.iocoder.cn/resource-permission" />
+    <doc-alert title="数据权限" url="https://doc.iocoder.cn/data-permission" />
     <el-form :model="queryParams" ref="queryForm" v-show="showSearch" :inline="true">
       <el-form-item label="角色名称" prop="name">
         <el-input v-model="queryParams.name" placeholder="请输入角色名称" clearable size="small" style="width: 240px"
diff --git a/yudao-ui-admin/src/views/system/tenant/index.vue b/yudao-ui-admin/src/views/system/tenant/index.vue
index 71c8492d7..453e7bf03 100755
--- a/yudao-ui-admin/src/views/system/tenant/index.vue
+++ b/yudao-ui-admin/src/views/system/tenant/index.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-
+    <doc-alert title="SaaS 多租户" url="https://doc.iocoder.cn/saas-tenant/" />
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="租户名" prop="name">
diff --git a/yudao-ui-admin/src/views/system/tenantPackage/index.vue b/yudao-ui-admin/src/views/system/tenantPackage/index.vue
index f697d461b..eecc52e1c 100755
--- a/yudao-ui-admin/src/views/system/tenantPackage/index.vue
+++ b/yudao-ui-admin/src/views/system/tenantPackage/index.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-
+    <doc-alert title="SaaS 多租户" url="https://doc.iocoder.cn/saas-tenant/" />
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="套餐名" prop="name">