From c17ecb23dd29d6914ff529215a633a1fc8396852 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9D=88=E3=83=BE=E9=AD=82?= <283591387@qq.com>
Date: Wed, 24 Apr 2024 08:56:14 +0000
Subject: [PATCH 1/3] update README.md.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: 靈ヾ魂 <283591387@qq.com>
---
README.md | 60 +++++++++++++++++++++++++++----------------------------
1 file changed, 30 insertions(+), 30 deletions(-)
diff --git a/README.md b/README.md
index af5d2ea5..fbf0771a 100644
--- a/README.md
+++ b/README.md
@@ -42,83 +42,83 @@ App、H5、微信小程序: [http://v2.volcore.xyz/app/guide](http://v2.volcore.
sqlsugar: [https://www.donet5.com/](https://www.donet5.com/)
## 2023.05.13增加审批流程分支、条件功能
-
-
-
+
+
+
## 框架移动端(uniapp)已发布,同样全自动生成代码,扫描小程序二维码即可查看
-
+
-
-
-
-
+
+
+
+
## 框架已支持Vue3版本
-
+
## 框架已增加低代码设计器
-
-
+
+
## 框架2.0已更新(部分新增功能截图)
增加切换皮肤功能
-
-
+
+
增加可复用的后台请求参数校验
-
+
增加树形菜单与代码生成页面使用
-
+
增加文本编辑器直接发布静态页面功能
-
+
一对一多从表显示(只需要少量代码就可完成成,其他都由代码生成器生成)
-
+
表合并显示 (只需要几行代码完成代码生成器生成的页面实现扩展)
-
+
从图上传图片 (只需要几行代码完成代码生成器生成的页面实现扩展)
-
+
一对多从表(不限从表数量)扩展
-
+
图表
-
+
## 1、只读基础表单
整个只读的基础表单的所有前后端代码,全部由代码生成器生成,代码生成器中几乎不需要配置,并支持并后端业务代码扩展,直接生成代码后,配置菜单权限即可
-
+
## 2、自动绑定下拉框数据表单
整个自动绑定下拉框数据表单的所有前后端代码,全部由代码生成器生成,并支持并后端业务代码扩展,在代码生成器中只需要指定数据源编号,页面加载时会根据编号自动加载数据源并绑定
-
+
## 3、启用图片支持、审核表单
整个启用图片支持、审核表单的所有前后端代码,全部由代码生成器生成,并支持并后端业务代码扩展,审核功能需要在菜单配置权限、代码生成器中勾选启用图片支持
-
+
## 4、高级查询
整个表单的所有前后端代码,全部由代码生成器生成,并支持并后端业务代码扩展,查询字段、类型(下拉框、日期、TextArea等)、所在行与列都由代码生成器完成,不需要写任何代码
- 
+ 
## 5、主从表新建、编辑
主从表新建、编辑所有前后端代码,全部由代码生成器生成,并支持并后端业务代码扩展,新建、编辑从表配置、字段、类型(下拉框、日期、TextArea等)、所在行与列、字段是否只读、标签显示的长度等都由代码生成器完成,不需要写任何代码
-
+
## 6、excel导入
excel导入整个页面都由代码生成器生成,导入的字段、字段是否必填,下载模板也由代码生成器上配置(自己根据实际需要决定是否采用此方法),导入时会验证是否为空与数据的合法性,逻辑校验自己实现扩展方法即可
-
+
## 7、H5开发
-
+
## 8、权限分配
目前只实现了对用户的角色的Action进行权限分配
-
+
## 9、代码生成器
代码生成器提供了20多种可配置的属性,可灵活配置显示、查询、编辑、导入、导出、主从关系等功能点击看代码生成器文档
-
+
其他功能。。。。。
--
Gitee
From 95e0f035a858e4af17a0c4fc253664880451452e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9D=88=E3=83=BE=E9=AD=82?= <283591387@qq.com>
Date: Thu, 27 Jun 2024 06:25:16 +0000
Subject: [PATCH 2/3] update README.md.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: 靈ヾ魂 <283591387@qq.com>
---
README.md | 60 +++++++++++++++++++++++++++----------------------------
1 file changed, 30 insertions(+), 30 deletions(-)
diff --git a/README.md b/README.md
index e1907c13..4f6a13d5 100644
--- a/README.md
+++ b/README.md
@@ -42,83 +42,83 @@ App、H5、微信小程序: [http://v2.volcore.xyz/app/guide](http://v2.volcore.
sqlsugar: [https://www.donet5.com/](https://www.donet5.com/)
## 2023.05.13增加审批流程分支、条件功能
-
-
-
+
+
+
## 框架移动端(uniapp)已发布,同样全自动生成代码,扫描小程序二维码即可查看
-
+
-
-
-
-
+
+
+
+
## 框架已支持Vue3版本
-
+
## 框架已增加低代码设计器
-
-
+
+
## 框架2.0已更新(部分新增功能截图)
增加切换皮肤功能
-
-
+
+
增加可复用的后台请求参数校验
-
+
增加树形菜单与代码生成页面使用
-
+
增加文本编辑器直接发布静态页面功能
-
+
一对一多从表显示(只需要少量代码就可完成成,其他都由代码生成器生成)
-
+
表合并显示 (只需要几行代码完成代码生成器生成的页面实现扩展)
-
+
从图上传图片 (只需要几行代码完成代码生成器生成的页面实现扩展)
-
+
一对多从表(不限从表数量)扩展
-
+
图表
-
+
## 1、只读基础表单
整个只读的基础表单的所有前后端代码,全部由代码生成器生成,代码生成器中几乎不需要配置,并支持并后端业务代码扩展,直接生成代码后,配置菜单权限即可
-
+
## 2、自动绑定下拉框数据表单
整个自动绑定下拉框数据表单的所有前后端代码,全部由代码生成器生成,并支持并后端业务代码扩展,在代码生成器中只需要指定数据源编号,页面加载时会根据编号自动加载数据源并绑定
-
+
## 3、启用图片支持、审核表单
整个启用图片支持、审核表单的所有前后端代码,全部由代码生成器生成,并支持并后端业务代码扩展,审核功能需要在菜单配置权限、代码生成器中勾选启用图片支持
-
+
## 4、高级查询
整个表单的所有前后端代码,全部由代码生成器生成,并支持并后端业务代码扩展,查询字段、类型(下拉框、日期、TextArea等)、所在行与列都由代码生成器完成,不需要写任何代码
- 
+ 
## 5、主从表新建、编辑
主从表新建、编辑所有前后端代码,全部由代码生成器生成,并支持并后端业务代码扩展,新建、编辑从表配置、字段、类型(下拉框、日期、TextArea等)、所在行与列、字段是否只读、标签显示的长度等都由代码生成器完成,不需要写任何代码
-
+
## 6、excel导入
excel导入整个页面都由代码生成器生成,导入的字段、字段是否必填,下载模板也由代码生成器上配置(自己根据实际需要决定是否采用此方法),导入时会验证是否为空与数据的合法性,逻辑校验自己实现扩展方法即可
-
+
## 7、H5开发
-
+
## 8、权限分配
目前只实现了对用户的角色的Action进行权限分配
-
+
## 9、代码生成器
代码生成器提供了20多种可配置的属性,可灵活配置显示、查询、编辑、导入、导出、主从关系等功能点击看代码生成器文档
-
+
其他功能。。。。。
--
Gitee
From ac7836a7f75a2712cb33c097ef37c4c0d17435c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9F=A6=E6=87=BF=E6=9D=B0?= <429257309@.com>
Date: Thu, 18 Jul 2024 11:20:43 +0800
Subject: [PATCH 3/3] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?=
=?UTF-8?q?=EF=BC=9ALogger?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../VOL.Core/Services/Logger.cs" | 60 ++++++++++++++-----
1 file changed, 45 insertions(+), 15 deletions(-)
diff --git "a/\345\274\200\345\217\221\347\211\210dev/Net6\345\274\200\345\217\221\347\211\210/VOL.Core/Services/Logger.cs" "b/\345\274\200\345\217\221\347\211\210dev/Net6\345\274\200\345\217\221\347\211\210/VOL.Core/Services/Logger.cs"
index e97da5b6..b4d95ea7 100644
--- "a/\345\274\200\345\217\221\347\211\210dev/Net6\345\274\200\345\217\221\347\211\210/VOL.Core/Services/Logger.cs"
+++ "b/\345\274\200\345\217\221\347\211\210dev/Net6\345\274\200\345\217\221\347\211\210/VOL.Core/Services/Logger.cs"
@@ -8,6 +8,7 @@ using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
+using System.Timers;
using System.Web;
using VOL.Core.Configuration;
using VOL.Core.Const;
@@ -27,24 +28,53 @@ namespace VOL.Core.Services
public static ConcurrentQueue loggerQueueData = new ConcurrentQueue();
private static DateTime lastClearFileDT = DateTime.Now.AddDays(-1);
private static string _loggerPath = AppSetting.DownLoadPath + "Logger\\Queue\\";
+ private static System.Timers.Timer _timer; // 静态构造函数,初始化定时器
+
static Logger()
{
- Task.Run(() =>
+ _timer = new System.Timers.Timer(10000); // 创建一个新的定时器,并设置其间隔为10秒
+ _timer.Elapsed += OnTimedEvent; // 当定时器达到设定的间隔时间时,触发OnTimedEvent方法
+ _timer.AutoReset = true; // 定时器在触发事件后应自动重置,以便再次触发
+ _timer.Enabled = true; // 启用定时器
+ }
+
+ // 定时器触发时执行的方法
+ private static void OnTimedEvent(Object source, ElapsedEventArgs e)
+ {
+ List list = new List(); // 创建一个新的Sys_Log列表,用于存储从队列中取出的日志
+ int dequeueCount = 0; // 初始化一个计数器,用于记录从队列中取出的日志数量
+ var beginTime = DateTime.Now; // 当前时间作为日志记录的起始时间
+
+ // 当队列不为空、取出的日志数量少于100,并且成功从队列中取出日志时,循环继续
+ while (!loggerQueueData.IsEmpty && dequeueCount < 100 && loggerQueueData.TryDequeue(out Sys_Log log))
+ {
+ list.Add(log); // 将取出的日志添加到列表中
+ dequeueCount++; // 增加取出的日志数量计数
+ }
+
+ try
+ {
+ DBServerProvider.SqlDapper.AddRange(list); // 尝试将取出的日志列表批量写入数据库
+ }
+ catch (Exception ex) // 如果在写入过程中出现异常,则捕获该异常
{
- Start();
- //if (DBType.Name != "MySql")
- //{
- // return;
- //}
- //try
- //{
- // DBServerProvider.SqlDapper.ExcuteNonQuery("set global local_infile = 'ON';", null);
- //}
- //catch (Exception ex)
- //{
- // Console.WriteLine($"日志启动调用mysql数据库异常:{ex.Message},{ex.StackTrace}");
- //}
- });
+ // 输出异常信息到控制台(在实际应用中,可能需要更复杂的异常处理逻辑)
+ Console.WriteLine($"日志批量写入数据时出错:{ex.Message}");
+
+ // 创建一个新的错误日志,记录异常信息,并将其重新加入队列中以便后续处理
+ var errlog = new Sys_Log()
+ {
+ BeginDate = beginTime, // 设置错误日志的开始时间
+ EndDate = DateTime.Now, // 设置错误日志的结束时间为当前时间
+ LogType = "System", // 设置日志类型为“System”
+ Success = (int)LoggerStatus.Error, // 设置日志状态为“Error”
+ ExceptionInfo = $"日志批量写入失败,ex:{ex},ex.Message:{ex.Message}" // 记录异常信息和异常消息
+ };
+ loggerQueueData.Enqueue(errlog); // 将错误日志加入队列中
+
+ // 也可以选择写入本地txt文件
+ // WriteText(ex.Message + ex.StackTrace + ex.Source);
+ }
}
public static void Info(string message)
--
Gitee