diff --git a/Lib/Tiobon.Core.Base.dll b/Lib/Tiobon.Core.Base.dll
index be7cc576..f7365b8d 100644
Binary files a/Lib/Tiobon.Core.Base.dll and b/Lib/Tiobon.Core.Base.dll differ
diff --git a/Lib/Tiobon.Core.dll b/Lib/Tiobon.Core.dll
index 8f8f1a7a..e9bb827c 100644
Binary files a/Lib/Tiobon.Core.dll and b/Lib/Tiobon.Core.dll differ
diff --git a/Lib/Tiobon.Core.xml b/Lib/Tiobon.Core.xml
index bc2c1a4e..9d386926 100644
--- a/Lib/Tiobon.Core.xml
+++ b/Lib/Tiobon.Core.xml
@@ -204,6 +204,235 @@
+
+
+ 取后缀名
+
+ 文件名
+ .gif|.html格式
+
+
+
+ 根据文件大小获取指定前缀的可用文件名
+
+ 文件夹
+ 文件前缀
+ 文件大小(1m)
+ 文件后缀(.log)
+ 可用文件名
+
+
+
+ 写文件
+
+ 文件路径
+ 文件内容
+
+
+
+ 写文件
+
+ 文件路径
+ 文件内容
+
+
+
+ 写文件
+
+ 文件路径
+ 文件内容
+ 编码格式
+
+
+
+ 读文件
+
+ 文件路径
+
+
+
+
+ 读文件
+
+ 文件路径
+ 编码格式
+
+
+
+
+ 追加文件
+
+ 文件路径
+ 内容
+
+
+
+ 拷贝文件
+
+ 原始文件
+ 新文件路径
+
+
+
+ 删除文件
+
+ 路径
+
+
+
+ 移动文件
+
+ 原始路径
+ 新路径
+
+
+
+ 在当前目录下创建目录
+
+ 当前目录
+ 新目录
+
+
+
+ 递归删除文件夹目录及文件
+
+
+
+
+
+
+ 指定文件夹下面的所有内容copy到目标文件夹下面
+
+ 原始路径
+ 目标文件夹
+
+
+
+ 获取文件根目录
+
+
+
+
+
+ 创建文件夹
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 去除后面多余的零
+
+
+
+
+
+
+ 去除后面多余的零
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 获取当前时间的时间戳
+
+
+
+
表主键
diff --git a/Tiobon.Core.Common/Helper/FileHelper.cs b/Tiobon.Core.Common/Helper/FileHelper.cs
deleted file mode 100644
index 77d6cf65..00000000
--- a/Tiobon.Core.Common/Helper/FileHelper.cs
+++ /dev/null
@@ -1,429 +0,0 @@
-using System.Text;
-
-namespace Tiobon.Core.Common.Helper;
-
-public class FileHelper : IDisposable
-{
-
- private bool _alreadyDispose = false;
-
- #region 构造函数
- public FileHelper()
- {
- //
- // TODO: 在此处添加构造函数逻辑
- //
- }
- ~FileHelper()
- {
- Dispose(); ;
- }
-
- protected virtual void Dispose(bool isDisposing)
- {
- if (_alreadyDispose) return;
- _alreadyDispose = true;
- }
- #endregion
-
- #region IDisposable 成员
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- #endregion
-
- #region 取得文件后缀名
- /****************************************
- * 函数名称:GetPostfixStr
- * 功能说明:取得文件后缀名
- * 参 数:filename:文件名称
- * 调用示列:
- * string filename = "aaa.aspx";
- * string s = EC.FileObj.GetPostfixStr(filename);
- *****************************************/
- ///
- /// 取后缀名
- ///
- /// 文件名
- /// .gif|.html格式
- public static string GetPostfixStr(string filename)
- {
- int start = filename.LastIndexOf(".");
- int length = filename.Length;
- string postfix = filename.Substring(start, length - start);
- return postfix;
- }
- #endregion
-
- #region 根据文件大小获取指定前缀的可用文件名
- ///
- /// 根据文件大小获取指定前缀的可用文件名
- ///
- /// 文件夹
- /// 文件前缀
- /// 文件大小(1m)
- /// 文件后缀(.log)
- /// 可用文件名
- public static string GetAvailableFileWithPrefixOrderSize(string folderPath, string prefix, int size = 1 * 1024 * 1024, string ext = ".log")
- {
- //var allFiles = new DirectoryInfo(folderPath);
- //var selectFiles = allFiles.GetFiles().Where(fi => fi.Name.ToLower().Contains(prefix.ToLower()) && fi.Extension.ToLower() == ext.ToLower() && fi.Length < size).OrderByDescending(d => d.Name).ToList();
-
- //if (selectFiles.Count > 0)
- //{
- // return selectFiles.FirstOrDefault().FullName;
- //}
- return Path.Combine(folderPath, $@"{prefix}.log");
- }
- public static string GetAvailableFileNameWithPrefixOrderSize(string _contentRoot, string prefix, int size = 1 * 1024 * 1024, string ext = ".log")
- {
- var folderPath = Path.Combine(_contentRoot, "Log");
- if (!Directory.Exists(folderPath))
- {
- Directory.CreateDirectory(folderPath);
- }
-
- var allFiles = new DirectoryInfo(folderPath);
- var selectFiles = allFiles.GetFiles().Where(fi => fi.Name.ToLower().Contains(prefix.ToLower()) && fi.Extension.ToLower() == ext.ToLower() && fi.Length < size).OrderByDescending(d => d.Name).ToList();
-
- if (selectFiles.Count > 0)
- {
- return selectFiles.FirstOrDefault().Name.Replace(".log", "");
- }
-
- return $@"{prefix}_{DateTime.Now.DateToTimeStamp()}";
- }
- #endregion
-
- #region 写文件
- /****************************************
- * 函数名称:WriteFile
- * 功能说明:写文件,会覆盖掉以前的内容
- * 参 数:Path:文件路径,Strings:文本内容
- * 调用示列:
- * string Path = Server.MapPath("Default2.aspx");
- * string Strings = "这是我写的内容啊";
- * EC.FileObj.WriteFile(Path,Strings);
- *****************************************/
- ///
- /// 写文件
- ///
- /// 文件路径
- /// 文件内容
- public static void WriteFile(string Path, string Strings)
- {
- if (!File.Exists(Path))
- {
- FileStream f = File.Create(Path);
- f.Close();
- }
- StreamWriter f2 = new StreamWriter(Path, false, System.Text.Encoding.GetEncoding("gb2312"));
- f2.Write(Strings);
- f2.Close();
- f2.Dispose();
- }
- ///
- /// 写文件
- ///
- /// 文件路径
- /// 文件内容
- public static void WriteFile(string Path, byte[] buf)
- {
- if (!File.Exists(Path))
- {
- FileStream f = File.Create(Path);
- f.Close();
- }
- FileStream f2 = new FileStream(Path, FileMode.Create, FileAccess.Write);
- f2.Write(buf, 0, buf.Length);
- f2.Close();
- f2.Dispose();
- }
-
- ///
- /// 写文件
- ///
- /// 文件路径
- /// 文件内容
- /// 编码格式
- public static void WriteFile(string Path, string Strings, Encoding encode)
- {
- if (!File.Exists(Path))
- {
- FileStream f = File.Create(Path);
- f.Close();
- }
- StreamWriter f2 = new StreamWriter(Path, false, encode);
- f2.Write(Strings);
- f2.Close();
- f2.Dispose();
- }
- #endregion
-
- #region 读文件
- /****************************************
- * 函数名称:ReadFile
- * 功能说明:读取文本内容
- * 参 数:Path:文件路径
- * 调用示列:
- * string Path = Server.MapPath("Default2.aspx");
- * string s = EC.FileObj.ReadFile(Path);
- *****************************************/
- ///
- /// 读文件
- ///
- /// 文件路径
- ///
- public static string ReadFile(string Path)
- {
- string s = "";
- if (!File.Exists(Path))
- s = "不存在相应的目录";
- else
- {
- StreamReader f2 = new StreamReader(Path, System.Text.Encoding.GetEncoding("gb2312"));
- s = f2.ReadToEnd();
- f2.Close();
- f2.Dispose();
- }
-
- return s;
- }
-
- ///
- /// 读文件
- ///
- /// 文件路径
- /// 编码格式
- ///
- public static string ReadFile(string Path, Encoding encode)
- {
- string s = "";
- if (!File.Exists(Path))
- s = "不存在相应的目录";
- else
- {
- StreamReader f2 = new StreamReader(Path, encode);
- s = f2.ReadToEnd();
- f2.Close();
- f2.Dispose();
- }
-
- return s;
- }
- #endregion
-
- #region 追加文件
- /****************************************
- * 函数名称:FileAdd
- * 功能说明:追加文件内容
- * 参 数:Path:文件路径,strings:内容
- * 调用示列:
- * string Path = Server.MapPath("Default2.aspx");
- * string Strings = "新追加内容";
- * EC.FileObj.FileAdd(Path, Strings);
- *****************************************/
- ///
- /// 追加文件
- ///
- /// 文件路径
- /// 内容
- public static void FileAdd(string Path, string strings)
- {
- StreamWriter sw = File.AppendText(Path);
- sw.Write(strings);
- sw.Flush();
- sw.Close();
- }
- #endregion
-
- #region 拷贝文件
- /****************************************
- * 函数名称:FileCoppy
- * 功能说明:拷贝文件
- * 参 数:OrignFile:原始文件,NewFile:新文件路径
- * 调用示列:
- * string orignFile = Server.MapPath("Default2.aspx");
- * string NewFile = Server.MapPath("Default3.aspx");
- * EC.FileObj.FileCoppy(OrignFile, NewFile);
- *****************************************/
- ///
- /// 拷贝文件
- ///
- /// 原始文件
- /// 新文件路径
- public static void FileCoppy(string orignFile, string NewFile)
- {
- File.Copy(orignFile, NewFile, true);
- }
-
- #endregion
-
- #region 删除文件
- /****************************************
- * 函数名称:FileDel
- * 功能说明:删除文件
- * 参 数:Path:文件路径
- * 调用示列:
- * string Path = Server.MapPath("Default3.aspx");
- * EC.FileObj.FileDel(Path);
- *****************************************/
- ///
- /// 删除文件
- ///
- /// 路径
- public static void FileDel(string Path)
- {
- File.Delete(Path);
- }
- #endregion
-
- #region 移动文件
- /****************************************
- * 函数名称:FileMove
- * 功能说明:移动文件
- * 参 数:OrignFile:原始路径,NewFile:新文件路径
- * 调用示列:
- * string orignFile = Server.MapPath("../说明.txt");
- * string NewFile = Server.MapPath("http://www.cnTiobons.com/说明.txt");
- * EC.FileObj.FileMove(OrignFile, NewFile);
- *****************************************/
- ///
- /// 移动文件
- ///
- /// 原始路径
- /// 新路径
- public static void FileMove(string orignFile, string NewFile)
- {
- File.Move(orignFile, NewFile);
- }
- #endregion
-
- #region 在当前目录下创建目录
- /****************************************
- * 函数名称:FolderCreate
- * 功能说明:在当前目录下创建目录
- * 参 数:OrignFolder:当前目录,NewFloder:新目录
- * 调用示列:
- * string orignFolder = Server.MapPath("test/");
- * string NewFloder = "new";
- * EC.FileObj.FolderCreate(OrignFolder, NewFloder);
- *****************************************/
- ///
- /// 在当前目录下创建目录
- ///
- /// 当前目录
- /// 新目录
- public static void FolderCreate(string orignFolder, string NewFloder)
- {
- Directory.SetCurrentDirectory(orignFolder);
- Directory.CreateDirectory(NewFloder);
- }
- #endregion
-
- #region 递归删除文件夹目录及文件
- /****************************************
- * 函数名称:DeleteFolder
- * 功能说明:递归删除文件夹目录及文件
- * 参 数:dir:文件夹路径
- * 调用示列:
- * string dir = Server.MapPath("test/");
- * EC.FileObj.DeleteFolder(dir);
- *****************************************/
- ///
- /// 递归删除文件夹目录及文件
- ///
- ///
- ///
- public static void DeleteFolder(string dir)
- {
- if (Directory.Exists(dir)) //如果存在这个文件夹删除之
- {
- foreach (string d in Directory.GetFileSystemEntries(dir))
- {
- if (File.Exists(d))
- File.Delete(d); //直接删除其中的文件
- else
- DeleteFolder(d); //递归删除子文件夹
- }
- Directory.Delete(dir); //删除已空文件夹
- }
-
- }
- #endregion
-
- #region 将指定文件夹下面的所有内容copy到目标文件夹下面 果目标文件夹为只读属性就会报错。
- /****************************************
- * 函数名称:CopyDir
- * 功能说明:将指定文件夹下面的所有内容copy到目标文件夹下面 果目标文件夹为只读属性就会报错。
- * 参 数:srcPath:原始路径,aimPath:目标文件夹
- * 调用示列:
- * string srcPath = Server.MapPath("test/");
- * string aimPath = Server.MapPath("test1/");
- * EC.FileObj.CopyDir(srcPath,aimPath);
- *****************************************/
- ///
- /// 指定文件夹下面的所有内容copy到目标文件夹下面
- ///
- /// 原始路径
- /// 目标文件夹
- public static void CopyDir(string srcPath, string aimPath)
- {
- try
- {
- // 检查目标目录是否以目录分割字符结束如果不是则添加之
- if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)
- aimPath += Path.DirectorySeparatorChar;
- // 判断目标目录是否存在如果不存在则新建之
- if (!Directory.Exists(aimPath))
- Directory.CreateDirectory(aimPath);
- // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
- //如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法
- //string[] fileList = Directory.GetFiles(srcPath);
- string[] fileList = Directory.GetFileSystemEntries(srcPath);
- //遍历所有的文件和目录
- foreach (string file in fileList)
- {
- //先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
-
- if (Directory.Exists(file))
- CopyDir(file, aimPath + Path.GetFileName(file));
- //否则直接Copy文件
- else
- File.Copy(file, aimPath + Path.GetFileName(file), true);
- }
-
- }
- catch (Exception ee)
- {
- throw new Exception(ee.ToString());
- }
- }
- #endregion
-
- #region 获取文件根目录
- ///
- /// 获取文件根目录
- ///
- ///
- public static string GetPhysicsPath() => $"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}wwwroot";
-
- #endregion
-
- #region 创建文件夹
- ///
- /// 创建文件夹
- ///
- ///
- public static void CreateDirectory(string path)
- {
- var physicsPath = GetPhysicsPath();
- if (!Directory.Exists(physicsPath + path))
- Directory.CreateDirectory(physicsPath + path);
- }
- #endregion
-}
diff --git a/Tiobon.Core.Common/Helper/UtilHelper.cs b/Tiobon.Core.Common/Helper/UtilHelper.cs
deleted file mode 100644
index ffd47b47..00000000
--- a/Tiobon.Core.Common/Helper/UtilHelper.cs
+++ /dev/null
@@ -1,431 +0,0 @@
-using Newtonsoft.Json;
-using SqlSugar;
-
-namespace Tiobon.Core;
-
-///
-///
-///
-public static class UtilHelper
-{
- ///
- ///
- ///
- ///
- ///
- public static int ObjToInt(this object thisValue)
- {
- int reval = 0;
- if (thisValue == null) return 0;
- if (thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
- {
- return reval;
- }
-
- return reval;
- }
-
- ///
- ///
- ///
- ///
- ///
- ///
- public static int ObjToInt(this object thisValue, int errorValue)
- {
- int reval = 0;
- if (thisValue != null && thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
- {
- return reval;
- }
-
- return errorValue;
- }
-
- public static long ObjToLong(this object thisValue)
- {
- long reval = 0;
- if (thisValue == null) return 0;
- if (thisValue != DBNull.Value && long.TryParse(thisValue.ToString(), out reval))
- {
- return reval;
- }
-
- return reval;
- }
-
- ///
- ///
- ///
- ///
- ///
- public static double ObjToMoney(this object thisValue)
- {
- double reval = 0;
- if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
- {
- return reval;
- }
-
- return 0;
- }
-
- ///
- ///
- ///
- ///
- ///
- ///
- public static double ObjToMoney(this object thisValue, double errorValue)
- {
- double reval = 0;
- if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
- {
- return reval;
- }
-
- return errorValue;
- }
-
- ///
- ///
- ///
- ///
- ///
- public static string ObjToString(this object thisValue)
- {
- if (thisValue != null) return thisValue.ToString().Trim();
- return "";
- }
-
- ///
- ///
- ///
- ///
- ///
- public static bool IsNotEmptyOrNull(this object thisValue)
- {
- return ObjToString(thisValue) != "" && ObjToString(thisValue) != "undefined" &&
- ObjToString(thisValue) != "null";
- }
-
- ///
- ///
- ///
- ///
- ///
- ///
- public static string ObjToString(this object thisValue, string errorValue)
- {
- if (thisValue != null) return thisValue.ToString().Trim();
- return errorValue;
- }
-
- public static bool IsNullOrEmpty(this object thisValue) => thisValue == null || thisValue == DBNull.Value ||
- string.IsNullOrWhiteSpace(thisValue.ToString());
-
- ///
- ///
- ///
- ///
- ///
- public static Decimal ObjToDecimal(this object thisValue)
- {
- Decimal reval = 0;
- if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
- {
- return reval;
- }
-
- return 0;
- }
-
- ///
- ///
- ///
- ///
- ///
- ///
- public static Decimal ObjToDecimal(this object thisValue, decimal errorValue)
- {
- Decimal reval = 0;
- if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
- {
- return reval;
- }
-
- return errorValue;
- }
-
-
-
- #region 去除后面多余的零
- ///
- /// 去除后面多余的零
- ///
- ///
- ///
- public static string RemoveZero(this decimal? dValue)
- {
- if (dValue.IsNullOrEmpty())
- return null;
- return RemoveZero(dValue.Value);
- }
- /////
- ///// 去除后面多余的零
- /////
- /////
- /////
- //public static string RemoveZero(decimal? dValue)
- //{
- // if (dValue.IsNullOrEmpty())
- // return null;
- // return RemoveZero(dValue.Value);
- //}
- ///
- /// 去除后面多余的零
- ///
- ///
- ///
- public static string RemoveZero(decimal dValue)
- {
- string sResult = dValue.ToString();
- if (sResult.IndexOf(".") < 0)
- return sResult;
- int iIndex = sResult.Length - 1;
- for (int i = sResult.Length - 1; i >= 0; i--)
- {
- if (sResult.Substring(i, 1) != "0")
- {
- iIndex = i;
- break;
- }
- }
- sResult = sResult.Substring(0, iIndex + 1);
- if (sResult.EndsWith("."))
- sResult = sResult.Substring(0, sResult.Length - 1);
- return sResult;
- }
-
- public static string TrimDecimalString(this decimal? value1, int reservedDigit)
- {
- try
- {
- var value = value1.RemoveZero();
- string result = string.Empty;
- if (!string.IsNullOrEmpty(value))
- {
- Decimal tmp = Decimal.Parse(value);
- if (reservedDigit == -1)
- result = string.Format("{0:#0.##########}", tmp);
- else
- {
- result = String.Format("{0:N" + reservedDigit.ToString() + "}", tmp);
- result = result.Replace(",", "");
- }
- }
- return result;
- }
- catch (Exception) { return null; }
- }
- public static decimal? TrimDecimal(this decimal? value1, int reservedDigit)
- {
- try
- {
- var value = value1.TrimDecimalString(reservedDigit);
- string result = string.Empty;
- if (!string.IsNullOrEmpty(value))
- {
- Decimal tmp = Decimal.Parse(value);
- if (reservedDigit == -1)
- result = string.Format("{0:#0.##########}", tmp);
- else
- {
- result = String.Format("{0:N" + reservedDigit.ToString() + "}", tmp);
- result = result.Replace(",", "");
- }
- }
- return Convert.ToDecimal(result);
- }
- catch (Exception) { return null; }
- }
- #endregion
-
- ///
- ///
- ///
- ///
- ///
- public static DateTime ObjToDate(this object thisValue)
- {
- DateTime reval = DateTime.MinValue;
- if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
- {
- reval = Convert.ToDateTime(thisValue);
- }
- else
- {
- //时间戳转为时间
- var seconds = ObjToLong(thisValue);
- if (seconds > 0)
- {
- var startTime = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1), TimeZoneInfo.Local);
- reval = startTime.AddSeconds(Convert.ToDouble(thisValue));
- }
- }
-
- return reval;
- }
-
- ///
- ///
- ///
- ///
- ///
- ///
- public static DateTime ObjToDate(this object thisValue, DateTime errorValue)
- {
- DateTime reval = DateTime.MinValue;
- if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
- {
- return reval;
- }
-
- return errorValue;
- }
-
- ///
- ///
- ///
- ///
- ///
- public static bool ObjToBool(this object thisValue)
- {
- bool reval = false;
- if (thisValue != null && thisValue != DBNull.Value && bool.TryParse(thisValue.ToString(), out reval))
- {
- return reval;
- }
-
- return reval;
- }
-
-
- ///
- /// 获取当前时间的时间戳
- ///
- ///
- ///
- public static string DateToTimeStamp(this DateTime thisValue)
- {
- TimeSpan ts = thisValue - new DateTime(1970, 1, 1, 0, 0, 0, 0);
- return Convert.ToInt64(ts.TotalSeconds).ToString();
- }
-
- public static object ChangeType(this object value, Type type)
- {
- if (value == null && type.IsGenericType) return Activator.CreateInstance(type);
- if (value == null) return null;
- if (type == value.GetType()) return value;
- if (type.IsEnum)
- {
- if (value is string)
- return Enum.Parse(type, value as string);
- else
- return Enum.ToObject(type, value);
- }
-
- if (!type.IsInterface && type.IsGenericType)
- {
- Type innerType = type.GetGenericArguments()[0];
- object innerValue = ChangeType(value, innerType);
- return Activator.CreateInstance(type, new object[] { innerValue });
- }
-
- if (value is string && type == typeof(Guid)) return new Guid(value as string);
- if (value is string && type == typeof(Version)) return new Version(value as string);
- if (!(value is IConvertible)) return value;
- return Convert.ChangeType(value, type);
- }
-
- public static object ChangeTypeList(this object value, Type type)
- {
- if (value == null) return default;
-
- var gt = typeof(List<>).MakeGenericType(type);
- dynamic lis = Activator.CreateInstance(gt);
-
- var addMethod = gt.GetMethod("Add");
- string values = value.ToString();
- if (values != null && values.StartsWith("(") && values.EndsWith(")"))
- {
- string[] splits;
- if (values.Contains("\",\""))
- {
- splits = values.Remove(values.Length - 2, 2)
- .Remove(0, 2)
- .Split("\",\"");
- }
- else
- {
- splits = values.Remove(0, 1)
- .Remove(values.Length - 2, 1)
- .Split(",");
- }
-
- foreach (var split in splits)
- {
- var str = split;
- if (split.StartsWith("\"") && split.EndsWith("\""))
- {
- str = split.Remove(0, 1)
- .Remove(split.Length - 2, 1);
- }
-
- addMethod.Invoke(lis, new object[] { ChangeType(str, type) });
- }
- }
-
- return lis;
- }
-
- public static string ToJson(this object value)
- {
- return JsonConvert.SerializeObject(value);
- }
-
- public static bool AnyNoException(this ICollection source)
- {
- if (source == null) return false;
-
- return source.Any() && source.All(s => s != null);
- }
-
- public static bool IsNull(this long? thisValue)
- {
- return thisValue is null;
- }
- public static bool IsNull(this int? thisValue)
- {
- return thisValue is null;
- }
- public static bool IsNull(this decimal? thisValue)
- {
- return thisValue is null;
- }
- public static bool IsNull(this string thisValue)
- {
- return string.IsNullOrWhiteSpace(thisValue);
- }
- public static bool IsNull(this DateTime? thisValue)
- {
- return thisValue is null;
- }
- public static bool IsNull(this T entity) where T : class
- {
- return entity == null;
- }
-
- public static long GetSysId() => SnowFlakeSingle.instance.getID();
-
-}
\ No newline at end of file
diff --git a/Tiobon.Core.Common/Https/HttpPolly/HttpPollyHelper.cs b/Tiobon.Core.Common/Https/HttpPolly/HttpPollyHelper.cs
index 552db3bb..00f6edeb 100644
--- a/Tiobon.Core.Common/Https/HttpPolly/HttpPollyHelper.cs
+++ b/Tiobon.Core.Common/Https/HttpPolly/HttpPollyHelper.cs
@@ -1,6 +1,7 @@
using Newtonsoft.Json;
using System.Text;
using Tiobon.Core.Common.Helper;
+using Tiobon.Core.Helper;
using Tiobon.Core.Model;
namespace Tiobon.Core.Common.Https.HttpPolly;
diff --git a/Tiobon.Core.Common/LogHelper/LogLock.cs b/Tiobon.Core.Common/LogHelper/LogLock.cs
index 36d4b2a9..128436c7 100644
--- a/Tiobon.Core.Common/LogHelper/LogLock.cs
+++ b/Tiobon.Core.Common/LogHelper/LogLock.cs
@@ -4,6 +4,7 @@ using Serilog;
using Tiobon.Core.Common.Helper;
using Tiobon.Core.Model;
using Tiobon.Core.Common.DB.Dapper;
+using Tiobon.Core.Helper;
namespace Tiobon.Core.Common.LogHelper;
diff --git a/Tiobon.Core.Common/Seed/DBSeed.cs b/Tiobon.Core.Common/Seed/DBSeed.cs
index 49c3668f..c6cc06d3 100644
--- a/Tiobon.Core.Common/Seed/DBSeed.cs
+++ b/Tiobon.Core.Common/Seed/DBSeed.cs
@@ -9,6 +9,7 @@ using System.Diagnostics;
using System.Reflection;
using System.Text;
using Tiobon.Core.Common.Const;
+using Tiobon.Core.Helper;
namespace Tiobon.Core.Common.Seed;
diff --git a/Tiobon.Core.DataAccess/ReportHelper.cs b/Tiobon.Core.DataAccess/ReportHelper.cs
index 93be04a3..b4cf81c5 100644
--- a/Tiobon.Core.DataAccess/ReportHelper.cs
+++ b/Tiobon.Core.DataAccess/ReportHelper.cs
@@ -21,6 +21,7 @@ using System.Threading.Tasks;
using Tiobon.Core.Common;
using Tiobon.Core.Common.Extensions;
using Tiobon.Core.Common.Helper;
+using Tiobon.Core.Helper;
using Tiobon.Core.Model.Entity;
using Tiobon.Core.Model.Models;
@@ -834,7 +835,7 @@ public static class ReportHelper
{
var dict = new Dictionary
{
- { "Id", UtilHelper.GetSysId() },
+ { "Id", SnowFlakeSingle.instance.getID() },
{ "CreateBy", App.User.ID },
{ "CreateTime", DateTime.Now }
};
diff --git a/Tiobon.Core.Serilog/Tiobon.Core.Serilog.csproj b/Tiobon.Core.Serilog/Tiobon.Core.Serilog.csproj
index 2694d813..534f7761 100644
--- a/Tiobon.Core.Serilog/Tiobon.Core.Serilog.csproj
+++ b/Tiobon.Core.Serilog/Tiobon.Core.Serilog.csproj
@@ -10,4 +10,10 @@
+
+
+ ..\Lib\Tiobon.Core.dll
+
+
+
diff --git a/Tiobon.Core.Services/Ghre/Ghre_CertificateRuleServices.cs b/Tiobon.Core.Services/Ghre/Ghre_CertificateRuleServices.cs
index b077e7d3..e80b310b 100644
--- a/Tiobon.Core.Services/Ghre/Ghre_CertificateRuleServices.cs
+++ b/Tiobon.Core.Services/Ghre/Ghre_CertificateRuleServices.cs
@@ -128,7 +128,7 @@ public class Ghre_CertificateRuleServices : BaseServices Add(InsertGhre_SurveyInput entity)
{
+ entity.IsRequireLogin = true;
var result = await base.Add(entity);
return result;
@@ -40,6 +41,7 @@ public class Ghre_SurveyServices : BaseServices Update(long Id, EditGhre_SurveyInput editModel)
{
+ editModel.IsRequireLogin = true;
var result = await base.Update(Id, editModel, null, ["Status"]);
return result;
}