😎清理代码
This commit is contained in:
parent
0f30009f91
commit
21168c280d
@ -5,7 +5,6 @@
|
|||||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||||
|
|
||||||
global using Admin.NET.Core;
|
global using Admin.NET.Core;
|
||||||
global using Admin.NET.Core.Utils;
|
|
||||||
global using Furion;
|
global using Furion;
|
||||||
global using Furion.DependencyInjection;
|
global using Furion.DependencyInjection;
|
||||||
global using Furion.DynamicApiController;
|
global using Furion.DynamicApiController;
|
||||||
|
|||||||
@ -25,7 +25,7 @@ public class CaptchaDistributedCache : IDistributedCache
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="key"></param>
|
/// <param name="key"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private string GetKey(string key)
|
private static string GetKey(string key)
|
||||||
{
|
{
|
||||||
return $"Captcha:{key}";
|
return $"Captcha:{key}";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,9 +31,9 @@ public sealed class RedisEventSourceStorer : IEventSourceStorer, IDisposable
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly Channel<IEventSource> _channel;
|
private readonly Channel<IEventSource> _channel;
|
||||||
|
|
||||||
private IProducerConsumer<ChannelEventSource> _queueSingle;
|
private readonly IProducerConsumer<ChannelEventSource> _queueSingle;
|
||||||
|
|
||||||
private RedisStream<string> _queueBroadcast;
|
private readonly RedisStream<string> _queueBroadcast;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 构造函数
|
/// 构造函数
|
||||||
@ -111,8 +111,7 @@ public sealed class RedisEventSourceStorer : IEventSourceStorer, IDisposable
|
|||||||
public async ValueTask WriteAsync(IEventSource eventSource, CancellationToken cancellationToken)
|
public async ValueTask WriteAsync(IEventSource eventSource, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
// 空检查
|
// 空检查
|
||||||
if (eventSource == default)
|
ArgumentNullException.ThrowIfNull(eventSource);
|
||||||
throw new ArgumentNullException(nameof(eventSource));
|
|
||||||
|
|
||||||
// 这里判断是否是 ChannelEventSource 或者 自定义的 EventSource
|
// 这里判断是否是 ChannelEventSource 或者 自定义的 EventSource
|
||||||
if (eventSource is ChannelEventSource source)
|
if (eventSource is ChannelEventSource source)
|
||||||
|
|||||||
@ -1,43 +0,0 @@
|
|||||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
|
||||||
//
|
|
||||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
|
||||||
//
|
|
||||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
|
||||||
|
|
||||||
namespace Admin.NET.Core;
|
|
||||||
|
|
||||||
public static class LogInfoExtension
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 添加自定义日志 自动设置当前请求的Action和Controller名称
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="logger"></param>
|
|
||||||
/// <param name="title"></param>
|
|
||||||
/// <param name="logMessage"></param>
|
|
||||||
/// <param name="args"></param>
|
|
||||||
public static void AddLog(this ILogger logger, string title, string logMessage, params object[] args)
|
|
||||||
{
|
|
||||||
var request = App.HttpContext.Request;
|
|
||||||
// 获取当前路由信息
|
|
||||||
var route = request.RouteValues.Values;
|
|
||||||
var scheme = request.Scheme; // 协议(http 或 https)
|
|
||||||
var host = request.Host.Value; // 主机名(包括端口)
|
|
||||||
var path = request.Path.Value; // 路径
|
|
||||||
var queryString = request.QueryString.Value; // 查询字符串
|
|
||||||
// 拼接完整链接
|
|
||||||
var fullUrl = $"{scheme}://{host}{path}{queryString}";
|
|
||||||
|
|
||||||
// 写入上下文
|
|
||||||
using var scope = logger.ScopeContext(ctx => ctx.Set("Title", title)
|
|
||||||
.Set("Action", route.FirstOrDefault()?.ToString())
|
|
||||||
.Set("Controller", route.Count > 1 ? route.Skip(1).FirstOrDefault().ToString() : "")
|
|
||||||
.Set("Url", fullUrl)
|
|
||||||
.Set("Method", request.Method)
|
|
||||||
);
|
|
||||||
// 记录日志
|
|
||||||
logger.LogInformation(logMessage, args);
|
|
||||||
|
|
||||||
// 使用方法 先注入_logger
|
|
||||||
// _logger.AddLog("日志标题", "日志内容");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -68,165 +68,7 @@ public static partial class ObjectExtension
|
|||||||
public static string ToJson(this object obj)
|
public static string ToJson(this object obj)
|
||||||
{
|
{
|
||||||
return JSON.GetJsonSerializer().Serialize(obj);
|
return JSON.GetJsonSerializer().Serialize(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Json字符串反序列化成对象
|
|
||||||
/// </summary>
|
|
||||||
/// <typeparam name="T"></typeparam>
|
|
||||||
/// <param name="json"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static T ToObject<T>(this string json)
|
|
||||||
{
|
|
||||||
return JSON.GetJsonSerializer().Deserialize<T>(json);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 将object转换为long,若失败则返回0
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="obj"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static long ParseToLong(this object obj)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return long.Parse(obj.ToString());
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return 0L;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 将object转换为long,若失败则返回指定值
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="str"></param>
|
|
||||||
/// <param name="defaultValue"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static long ParseToLong(this string str, long defaultValue)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return long.Parse(str);
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return defaultValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 将object转换为double,若失败则返回0
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="obj"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static double ParseToDouble(this object obj)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return double.Parse(obj.ToString());
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 将object转换为double,若失败则返回指定值
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="str"></param>
|
|
||||||
/// <param name="defaultValue"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static double ParseToDouble(this object str, double defaultValue)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return double.Parse(str.ToString());
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return defaultValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 将string转换为DateTime,若失败则返回日期最小值
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="str"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static DateTime ParseToDateTime(this string str)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (string.IsNullOrWhiteSpace(str))
|
|
||||||
{
|
|
||||||
return DateTime.MinValue;
|
|
||||||
}
|
|
||||||
if (str.Contains('-') || str.Contains('/'))
|
|
||||||
{
|
|
||||||
return DateTime.Parse(str);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int length = str.Length;
|
|
||||||
return length switch
|
|
||||||
{
|
|
||||||
4 => DateTime.ParseExact(str, "yyyy", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
6 => DateTime.ParseExact(str, "yyyyMM", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
8 => DateTime.ParseExact(str, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
10 => DateTime.ParseExact(str, "yyyyMMddHH", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
12 => DateTime.ParseExact(str, "yyyyMMddHHmm", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
14 => DateTime.ParseExact(str, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
_ => DateTime.ParseExact(str, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return DateTime.MinValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 将string转换为DateTime,若失败则返回默认值
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="str"></param>
|
|
||||||
/// <param name="defaultValue"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static DateTime ParseToDateTime(this string str, DateTime? defaultValue)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (string.IsNullOrWhiteSpace(str))
|
|
||||||
{
|
|
||||||
return defaultValue.GetValueOrDefault();
|
|
||||||
}
|
|
||||||
if (str.Contains('-') || str.Contains('/'))
|
|
||||||
{
|
|
||||||
return DateTime.Parse(str);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int length = str.Length;
|
|
||||||
return length switch
|
|
||||||
{
|
|
||||||
4 => DateTime.ParseExact(str, "yyyy", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
6 => DateTime.ParseExact(str, "yyyyMM", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
8 => DateTime.ParseExact(str, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
10 => DateTime.ParseExact(str, "yyyyMMddHH", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
12 => DateTime.ParseExact(str, "yyyyMMddHHmm", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
14 => DateTime.ParseExact(str, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
_ => DateTime.ParseExact(str, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return defaultValue.GetValueOrDefault();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 将 string 时间日期格式转换成字符串 如 {yyyy} => 2024
|
/// 将 string 时间日期格式转换成字符串 如 {yyyy} => 2024
|
||||||
|
|||||||
@ -36,7 +36,7 @@ public static class YitIdHelperExtension
|
|||||||
// return;
|
// return;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
var maxLength = Math.Pow(2, _options.WorkerIdBitLength.ParseToDouble());
|
var maxLength = Math.Pow(2, _options.WorkerIdBitLength.ToLong());
|
||||||
for (int i = 0; i < maxLength; i++)
|
for (int i = 0; i < maxLength; i++)
|
||||||
{
|
{
|
||||||
_workIds.Add(i.ToString());
|
_workIds.Add(i.ToString());
|
||||||
@ -54,7 +54,7 @@ public static class YitIdHelperExtension
|
|||||||
var valueKey = $"{_options.WorkerPrefix}{MainValueKey}";
|
var valueKey = $"{_options.WorkerPrefix}{MainValueKey}";
|
||||||
|
|
||||||
var minWorkId = 0;
|
var minWorkId = 0;
|
||||||
var maxWorkId = Math.Pow(2, _options.WorkerIdBitLength.ParseToDouble());
|
var maxWorkId = Math.Pow(2, _options.WorkerIdBitLength.ToLong());
|
||||||
|
|
||||||
var cache = App.GetRequiredService<ICacheProvider>().Cache;
|
var cache = App.GetRequiredService<ICacheProvider>().Cache;
|
||||||
var redisLock = cache.AcquireLock(lockName, 10000, 15000, true);
|
var redisLock = cache.AcquireLock(lockName, 10000, 15000, true);
|
||||||
@ -85,7 +85,7 @@ public static class YitIdHelperExtension
|
|||||||
|
|
||||||
Console.WriteLine($"############ 当前应用雪花WorkId:【{workIdStr}】############");
|
Console.WriteLine($"############ 当前应用雪花WorkId:【{workIdStr}】############");
|
||||||
|
|
||||||
long workId = workIdStr.ParseToLong();
|
long workId = workIdStr.ToLong();
|
||||||
if (workId < minWorkId || workId > maxWorkId)
|
if (workId < minWorkId || workId > maxWorkId)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,6 @@
|
|||||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||||
|
|
||||||
global using Admin.NET.Core.Service;
|
global using Admin.NET.Core.Service;
|
||||||
global using Admin.NET.Core.Utils;
|
|
||||||
global using Furion;
|
global using Furion;
|
||||||
global using Furion.ConfigurableOptions;
|
global using Furion.ConfigurableOptions;
|
||||||
global using Furion.DatabaseAccessor;
|
global using Furion.DatabaseAccessor;
|
||||||
@ -19,7 +18,6 @@ global using Furion.HttpRemote;
|
|||||||
global using Furion.JsonSerialization;
|
global using Furion.JsonSerialization;
|
||||||
global using Furion.Logging;
|
global using Furion.Logging;
|
||||||
global using Furion.Schedule;
|
global using Furion.Schedule;
|
||||||
global using Furion.Shapeless;
|
|
||||||
global using Furion.UnifyResult;
|
global using Furion.UnifyResult;
|
||||||
global using Furion.ViewEngine;
|
global using Furion.ViewEngine;
|
||||||
global using Magicodes.ExporterAndImporter.Core;
|
global using Magicodes.ExporterAndImporter.Core;
|
||||||
|
|||||||
@ -67,7 +67,7 @@ public class OnlineUserHub : Hub<IOnlineUserHub>
|
|||||||
Device = device
|
Device = device
|
||||||
};
|
};
|
||||||
await _sysOnlineUerRep.InsertAsync(user);
|
await _sysOnlineUerRep.InsertAsync(user);
|
||||||
_sysCacheService.HashAdd(CacheConst.KeyUserOnline, user.UserId + Context.ConnectionId + loginMode, user);
|
SysCacheService.HashAdd(CacheConst.KeyUserOnline, user.UserId + Context.ConnectionId + loginMode, user);
|
||||||
|
|
||||||
// 以租户Id进行分组
|
// 以租户Id进行分组
|
||||||
var groupName = $"{GROUP_ONLINE}{user.TenantId}";
|
var groupName = $"{GROUP_ONLINE}{user.TenantId}";
|
||||||
@ -96,7 +96,7 @@ public class OnlineUserHub : Hub<IOnlineUserHub>
|
|||||||
if (user == null) return;
|
if (user == null) return;
|
||||||
|
|
||||||
await _sysOnlineUerRep.DeleteByIdAsync(user.Id);
|
await _sysOnlineUerRep.DeleteByIdAsync(user.Id);
|
||||||
_sysCacheService.HashDel<SysOnlineUser>(CacheConst.KeyUserOnline, user.UserId + Context.ConnectionId + user.LoginMode);
|
SysCacheService.HashDel<SysOnlineUser>(CacheConst.KeyUserOnline, user.UserId + Context.ConnectionId + user.LoginMode);
|
||||||
|
|
||||||
// 通知当前组用户变动
|
// 通知当前组用户变动
|
||||||
var userList = await _sysOnlineUerRep.AsQueryable().Filter("", true).Where(u => u.TenantId == user.TenantId).Take(10).ToListAsync();
|
var userList = await _sysOnlineUerRep.AsQueryable().Filter("", true).Where(u => u.TenantId == user.TenantId).Take(10).ToListAsync();
|
||||||
|
|||||||
@ -17,7 +17,7 @@ public class FuncList
|
|||||||
/// <param name="a"></param>
|
/// <param name="a"></param>
|
||||||
/// <param name="b"></param>
|
/// <param name="b"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public string Merge(object a, object b)
|
public static string Merge(object a, object b)
|
||||||
{
|
{
|
||||||
return a.ToString() + b.ToString();
|
return a.ToString() + b.ToString();
|
||||||
}
|
}
|
||||||
@ -28,7 +28,7 @@ public class FuncList
|
|||||||
/// <param name="a"></param>
|
/// <param name="a"></param>
|
||||||
/// <param name="b"></param>
|
/// <param name="b"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public object MergeObj(object a, object b)
|
public static object MergeObj(object a, object b)
|
||||||
{
|
{
|
||||||
return new { a, b };
|
return new { a, b };
|
||||||
}
|
}
|
||||||
@ -39,7 +39,7 @@ public class FuncList
|
|||||||
/// <param name="a"></param>
|
/// <param name="a"></param>
|
||||||
/// <param name="b"></param>
|
/// <param name="b"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool IsContain(object a, object b)
|
public static bool IsContain(object a, object b)
|
||||||
{
|
{
|
||||||
return a.ToString().Split(',').Contains(b);
|
return a.ToString().Split(',').Contains(b);
|
||||||
}
|
}
|
||||||
@ -54,13 +54,13 @@ public class FuncList
|
|||||||
JTokenType jTokenType = jToken.Type;
|
JTokenType jTokenType = jToken.Type;
|
||||||
return jTokenType switch
|
return jTokenType switch
|
||||||
{
|
{
|
||||||
JTokenType.Integer => jToken.ToObject(typeof(long)),
|
JTokenType.Integer => jToken.ToObject<long>(),
|
||||||
JTokenType.Float => jToken.ToObject(typeof(decimal)),
|
JTokenType.Float => jToken.ToObject<decimal>(),
|
||||||
JTokenType.Boolean => jToken.ToObject(typeof(bool)),
|
JTokenType.Boolean => jToken.ToObject<bool>(),
|
||||||
JTokenType.Date => jToken.ToObject(typeof(DateTime)),
|
JTokenType.Date => jToken.ToObject<DateTime>(),
|
||||||
JTokenType.Bytes => jToken.ToObject(typeof(byte)),
|
JTokenType.Bytes => jToken.ToObject<byte>(),
|
||||||
JTokenType.Guid => jToken.ToObject(typeof(Guid)),
|
JTokenType.Guid => jToken.ToObject<Guid>(),
|
||||||
JTokenType.TimeSpan => jToken.ToObject(typeof(TimeSpan)),
|
JTokenType.TimeSpan => jToken.ToObject<TimeSpan>(),
|
||||||
JTokenType.Array => TransJArrayToSugarPara(jToken),
|
JTokenType.Array => TransJArrayToSugarPara(jToken),
|
||||||
_ => jToken
|
_ => jToken
|
||||||
};
|
};
|
||||||
|
|||||||
@ -132,7 +132,7 @@ public class SelectTable : ISingleton
|
|||||||
}
|
}
|
||||||
else if (key.Equals("func"))
|
else if (key.Equals("func"))
|
||||||
{
|
{
|
||||||
ExecFunc(resultObj, item);
|
SelectTable.ExecFunc(resultObj, item);
|
||||||
}
|
}
|
||||||
else if (key.Equals("total@") || key.Equals("total"))
|
else if (key.Equals("total@") || key.Equals("total"))
|
||||||
{
|
{
|
||||||
@ -181,7 +181,7 @@ public class SelectTable : ISingleton
|
|||||||
}
|
}
|
||||||
else if (key.Equals("func"))
|
else if (key.Equals("func"))
|
||||||
{
|
{
|
||||||
ExecFunc(resultObj, item);
|
SelectTable.ExecFunc(resultObj, item);
|
||||||
}
|
}
|
||||||
else if (key.Equals("total@") || key.Equals("total"))
|
else if (key.Equals("total@") || key.Equals("total"))
|
||||||
{
|
{
|
||||||
@ -396,7 +396,7 @@ public class SelectTable : ISingleton
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 执行方法
|
// 执行方法
|
||||||
private void ExecFunc(JObject resultObj, KeyValuePair<string, JToken> item)
|
private static void ExecFunc(JObject resultObj, KeyValuePair<string, JToken> item)
|
||||||
{
|
{
|
||||||
var jb = JObject.Parse(item.Value.ToString());
|
var jb = JObject.Parse(item.Value.ToString());
|
||||||
|
|
||||||
@ -478,7 +478,7 @@ public class SelectTable : ISingleton
|
|||||||
if (ziduan[1].Length > 20)
|
if (ziduan[1].Length > 20)
|
||||||
throw new Exception("别名不能超过20个字符");
|
throw new Exception("别名不能超过20个字符");
|
||||||
|
|
||||||
str.Append(ziduan[0] + " as `" + ReplaceSQLChar(ziduan[1]) + "`,");
|
str.Append(ziduan[0] + " as `" + SelectTable.ReplaceSQLChar(ziduan[1]) + "`,");
|
||||||
}
|
}
|
||||||
// 不对函数加``,解决sum(*)、Count(1)等不能使用的问题
|
// 不对函数加``,解决sum(*)、Count(1)等不能使用的问题
|
||||||
else if (ziduan[0].Contains('('))
|
else if (ziduan[0].Contains('('))
|
||||||
@ -835,7 +835,7 @@ public class SelectTable : ISingleton
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 处理sql注入
|
// 处理sql注入
|
||||||
private string ReplaceSQLChar(string str)
|
private static string ReplaceSQLChar(string str)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(str))
|
if (string.IsNullOrWhiteSpace(str))
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
|
|||||||
@ -163,7 +163,7 @@ public class SysLdapService : IDynamicApiController, ITransient
|
|||||||
public async Task<List<SysUserLdap>> SyncUserTenant(long tenantId)
|
public async Task<List<SysUserLdap>> SyncUserTenant(long tenantId)
|
||||||
{
|
{
|
||||||
var sysLdap = await _sysLdapRep.GetFirstAsync(c => c.TenantId == tenantId && c.IsDelete == false && c.Status == StatusEnum.Enable) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
var sysLdap = await _sysLdapRep.GetFirstAsync(c => c.TenantId == tenantId && c.IsDelete == false && c.Status == StatusEnum.Enable) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
||||||
return await SyncUser(sysLdap);
|
return await SysLdapService.SyncUser(sysLdap);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -175,7 +175,7 @@ public class SysLdapService : IDynamicApiController, ITransient
|
|||||||
public async Task<List<SysUserLdap>> SyncUser(SyncSysLdapInput input)
|
public async Task<List<SysUserLdap>> SyncUser(SyncSysLdapInput input)
|
||||||
{
|
{
|
||||||
var sysLdap = await _sysLdapRep.GetByIdAsync(input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
var sysLdap = await _sysLdapRep.GetByIdAsync(input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
||||||
return await SyncUser(sysLdap);
|
return await SysLdapService.SyncUser(sysLdap);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -183,7 +183,7 @@ public class SysLdapService : IDynamicApiController, ITransient
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sysLdap"></param>
|
/// <param name="sysLdap"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task<List<SysUserLdap>> SyncUser(SysLdap sysLdap)
|
private static async Task<List<SysUserLdap>> SyncUser(SysLdap sysLdap)
|
||||||
{
|
{
|
||||||
if (sysLdap == null) throw Oops.Oh(ErrorCodeEnum.D1002);
|
if (sysLdap == null) throw Oops.Oh(ErrorCodeEnum.D1002);
|
||||||
var ldapConn = new LdapConnection();
|
var ldapConn = new LdapConnection();
|
||||||
|
|||||||
@ -154,7 +154,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
|
|||||||
/// <param name="key"></param>
|
/// <param name="key"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[NonAction]
|
[NonAction]
|
||||||
public TimeSpan GetExpire(string key)
|
public static TimeSpan GetExpire(string key)
|
||||||
{
|
{
|
||||||
return _cacheProvider.Cache.GetExpire(key);
|
return _cacheProvider.Cache.GetExpire(key);
|
||||||
}
|
}
|
||||||
@ -274,7 +274,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
|
|||||||
/// <param name="key"></param>
|
/// <param name="key"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[NonAction]
|
[NonAction]
|
||||||
public IDictionary<String, T> GetHashMap<T>(string key)
|
public static IDictionary<String, T> GetHashMap<T>(string key)
|
||||||
{
|
{
|
||||||
return _cacheProvider.Cache.GetDictionary<T>(key);
|
return _cacheProvider.Cache.GetDictionary<T>(key);
|
||||||
}
|
}
|
||||||
@ -287,7 +287,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
|
|||||||
/// <param name="dic"></param>
|
/// <param name="dic"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[NonAction]
|
[NonAction]
|
||||||
public bool HashSet<T>(string key, Dictionary<string, T> dic)
|
public static bool HashSet<T>(string key, Dictionary<string, T> dic)
|
||||||
{
|
{
|
||||||
var hash = GetHashMap<T>(key);
|
var hash = GetHashMap<T>(key);
|
||||||
foreach (var v in dic)
|
foreach (var v in dic)
|
||||||
@ -305,7 +305,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
|
|||||||
/// <param name="hashKey"></param>
|
/// <param name="hashKey"></param>
|
||||||
/// <param name="value"></param>
|
/// <param name="value"></param>
|
||||||
[NonAction]
|
[NonAction]
|
||||||
public void HashAdd<T>(string key, string hashKey, T value)
|
public static void HashAdd<T>(string key, string hashKey, T value)
|
||||||
{
|
{
|
||||||
var hash = GetHashMap<T>(key);
|
var hash = GetHashMap<T>(key);
|
||||||
hash.Add(hashKey, value);
|
hash.Add(hashKey, value);
|
||||||
@ -319,7 +319,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
|
|||||||
/// <param name="hashKey"></param>
|
/// <param name="hashKey"></param>
|
||||||
/// <param name="value"></param>
|
/// <param name="value"></param>
|
||||||
[NonAction]
|
[NonAction]
|
||||||
public void HashAddOrUpdate<T>(string key, string hashKey, T value)
|
public static void HashAddOrUpdate<T>(string key, string hashKey, T value)
|
||||||
{
|
{
|
||||||
var hash = GetHashMap<T>(key);
|
var hash = GetHashMap<T>(key);
|
||||||
if (hash.ContainsKey(hashKey))
|
if (hash.ContainsKey(hashKey))
|
||||||
@ -336,7 +336,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
|
|||||||
/// <param name="fields"></param>
|
/// <param name="fields"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[NonAction]
|
[NonAction]
|
||||||
public List<T> HashGet<T>(string key, params string[] fields)
|
public static List<T> HashGet<T>(string key, params string[] fields)
|
||||||
{
|
{
|
||||||
var hash = GetHashMap<T>(key);
|
var hash = GetHashMap<T>(key);
|
||||||
return hash.Where(t => fields.Any(c => t.Key == c)).Select(t => t.Value).ToList();
|
return hash.Where(t => fields.Any(c => t.Key == c)).Select(t => t.Value).ToList();
|
||||||
@ -350,7 +350,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
|
|||||||
/// <param name="field"></param>
|
/// <param name="field"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[NonAction]
|
[NonAction]
|
||||||
public T HashGetOne<T>(string key, string field)
|
public static T HashGetOne<T>(string key, string field)
|
||||||
{
|
{
|
||||||
var hash = GetHashMap<T>(key);
|
var hash = GetHashMap<T>(key);
|
||||||
return hash.TryGetValue(field, out T value) ? value : default;
|
return hash.TryGetValue(field, out T value) ? value : default;
|
||||||
@ -363,7 +363,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
|
|||||||
/// <param name="key"></param>
|
/// <param name="key"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[NonAction]
|
[NonAction]
|
||||||
public IDictionary<string, T> HashGetAll<T>(string key)
|
public static IDictionary<string, T> HashGetAll<T>(string key)
|
||||||
{
|
{
|
||||||
var hash = GetHashMap<T>(key);
|
var hash = GetHashMap<T>(key);
|
||||||
return hash;
|
return hash;
|
||||||
@ -377,7 +377,7 @@ public class SysCacheService : IDynamicApiController, ISingleton
|
|||||||
/// <param name="fields"></param>
|
/// <param name="fields"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[NonAction]
|
[NonAction]
|
||||||
public int HashDel<T>(string key, params string[] fields)
|
public static int HashDel<T>(string key, params string[] fields)
|
||||||
{
|
{
|
||||||
var hash = GetHashMap<T>(key);
|
var hash = GetHashMap<T>(key);
|
||||||
fields.ToList().ForEach(t => hash.Remove(t));
|
fields.ToList().ForEach(t => hash.Remove(t));
|
||||||
|
|||||||
@ -46,7 +46,7 @@ public class SysMessageService : IDynamicApiController, ITransient
|
|||||||
[DisplayName("发送消息给除了发送人的其他人")]
|
[DisplayName("发送消息给除了发送人的其他人")]
|
||||||
public async Task SendOtherUser(MessageInput input)
|
public async Task SendOtherUser(MessageInput input)
|
||||||
{
|
{
|
||||||
var hashKey = _sysCacheService.HashGetAll<SysOnlineUser>(CacheConst.KeyUserOnline);
|
var hashKey = SysCacheService.HashGetAll<SysOnlineUser>(CacheConst.KeyUserOnline);
|
||||||
var exceptReceiveUsers = hashKey.Where(u => u.Value.UserId == input.ReceiveUserId).Select(u => u.Value).ToList();
|
var exceptReceiveUsers = hashKey.Where(u => u.Value.UserId == input.ReceiveUserId).Select(u => u.Value).ToList();
|
||||||
await _chatHubContext.Clients.AllExcept(exceptReceiveUsers.Select(t => t.ConnectionId)).ReceiveMessage(input);
|
await _chatHubContext.Clients.AllExcept(exceptReceiveUsers.Select(t => t.ConnectionId)).ReceiveMessage(input);
|
||||||
}
|
}
|
||||||
@ -61,7 +61,7 @@ public class SysMessageService : IDynamicApiController, ITransient
|
|||||||
{
|
{
|
||||||
var sysLogMsg = await SaveMsgLog(input);
|
var sysLogMsg = await SaveMsgLog(input);
|
||||||
|
|
||||||
var hashKey = _sysCacheService.HashGetAll<SysOnlineUser>(CacheConst.KeyUserOnline);
|
var hashKey = SysCacheService.HashGetAll<SysOnlineUser>(CacheConst.KeyUserOnline);
|
||||||
var receiveUser = hashKey.Where(u => u.Value.UserId == input.ReceiveUserId).Select(u => u.Value).FirstOrDefault();
|
var receiveUser = hashKey.Where(u => u.Value.UserId == input.ReceiveUserId).Select(u => u.Value).FirstOrDefault();
|
||||||
await _chatHubContext.Clients.Client(receiveUser.ConnectionId ?? "").ReceiveMessage(sysLogMsg);
|
await _chatHubContext.Clients.Client(receiveUser.ConnectionId ?? "").ReceiveMessage(sysLogMsg);
|
||||||
}
|
}
|
||||||
@ -74,7 +74,7 @@ public class SysMessageService : IDynamicApiController, ITransient
|
|||||||
[DisplayName("发送消息给某些人")]
|
[DisplayName("发送消息给某些人")]
|
||||||
public async Task SendUsers(MessageInput input)
|
public async Task SendUsers(MessageInput input)
|
||||||
{
|
{
|
||||||
var hashKey = _sysCacheService.HashGetAll<SysOnlineUser>(CacheConst.KeyUserOnline);
|
var hashKey = SysCacheService.HashGetAll<SysOnlineUser>(CacheConst.KeyUserOnline);
|
||||||
var receiveUsers = hashKey.Where(u => input.UserIds.Any(a => a == u.Value.UserId)).Select(u => u.Value).ToList();
|
var receiveUsers = hashKey.Where(u => input.UserIds.Any(a => a == u.Value.UserId)).Select(u => u.Value).ToList();
|
||||||
await receiveUsers.ForEachAsync(u => _chatHubContext.Clients.Client(u.ConnectionId ?? "").ReceiveMessage(input));
|
await receiveUsers.ForEachAsync(u => _chatHubContext.Clients.Client(u.ConnectionId ?? "").ReceiveMessage(input));
|
||||||
}
|
}
|
||||||
@ -86,7 +86,7 @@ public class SysMessageService : IDynamicApiController, ITransient
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task<SysLogMsg> SaveMsgLog(MessageInput input)
|
private async Task<SysLogMsg> SaveMsgLog(MessageInput input)
|
||||||
{
|
{
|
||||||
var hashKey = _sysCacheService.HashGetAll<SysOnlineUser>(CacheConst.KeyUserOnline);
|
var hashKey = SysCacheService.HashGetAll<SysOnlineUser>(CacheConst.KeyUserOnline);
|
||||||
var receiveUser = hashKey.Where(u => u.Value.UserId == input.ReceiveUserId).Select(u => u.Value).FirstOrDefault();
|
var receiveUser = hashKey.Where(u => u.Value.UserId == input.ReceiveUserId).Select(u => u.Value).FirstOrDefault();
|
||||||
var sendUser = hashKey.Where(u => u.Value.UserId == input.SendUserId).Select(u => u.Value).FirstOrDefault();
|
var sendUser = hashKey.Where(u => u.Value.UserId == input.SendUserId).Select(u => u.Value).FirstOrDefault();
|
||||||
|
|
||||||
|
|||||||
@ -263,7 +263,7 @@ public class SysRegionService : IDynamicApiController, ITransient
|
|||||||
await _sysRegionRep.Context.Fastest<SysRegion>().BulkCopyAsync(regionList);
|
await _sysRegionRep.Context.Fastest<SysRegion>().BulkCopyAsync(regionList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GetChildren(List<SysRegion> regionList, List<GDRegionResponse> responses, int level, long pid)
|
private static void GetChildren(List<SysRegion> regionList, List<GDRegionResponse> responses, int level, long pid)
|
||||||
{
|
{
|
||||||
foreach (var region in responses)
|
foreach (var region in responses)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -49,7 +49,7 @@ public class SysServerService : IDynamicApiController, ITransient
|
|||||||
var programStartTime = Process.GetCurrentProcess().StartTime;
|
var programStartTime = Process.GetCurrentProcess().StartTime;
|
||||||
var totalMilliseconds = (DateTime.Now - programStartTime).TotalMilliseconds.ToString();
|
var totalMilliseconds = (DateTime.Now - programStartTime).TotalMilliseconds.ToString();
|
||||||
var ts = totalMilliseconds.Contains('.') ? totalMilliseconds.Split('.')[0] : totalMilliseconds;
|
var ts = totalMilliseconds.Contains('.') ? totalMilliseconds.Split('.')[0] : totalMilliseconds;
|
||||||
var programRunTime = DateTimeUtil.FormatTime(ts.ParseToLong());
|
var programRunTime = DateTimeUtil.FormatTime(ts.ToLong());
|
||||||
|
|
||||||
var memoryMetrics = ComputerUtil.GetComputerInfo();
|
var memoryMetrics = ComputerUtil.GetComputerInfo();
|
||||||
return new
|
return new
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
//
|
//
|
||||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||||
|
|
||||||
namespace Admin.NET.Core.Utils;
|
namespace Admin.NET.Core;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 聚合配置增强版(独立类)
|
/// 聚合配置增强版(独立类)
|
||||||
|
|||||||
@ -34,7 +34,7 @@ public static class ComputerUtil
|
|||||||
var cpuRates = GetCPURates();
|
var cpuRates = GetCPURates();
|
||||||
if (cpuRates != null)
|
if (cpuRates != null)
|
||||||
{
|
{
|
||||||
memoryMetrics.CpuRates = cpuRates.Select(u => Math.Ceiling(u.ParseToDouble()) + "%").ToList();
|
memoryMetrics.CpuRates = cpuRates.Select(u => Math.Ceiling(u.ToDouble()) + "%").ToList();
|
||||||
}
|
}
|
||||||
return memoryMetrics;
|
return memoryMetrics;
|
||||||
}
|
}
|
||||||
@ -208,19 +208,19 @@ public static class ComputerUtil
|
|||||||
// 返回:1705379131
|
// 返回:1705379131
|
||||||
// 使用date格式化即可
|
// 使用date格式化即可
|
||||||
string output = ShellUtil.Bash("date -r $(sysctl -n kern.boottime | awk '{print $4}' | tr -d ',') +\"%Y-%m-%d %H:%M:%S\"").Trim();
|
string output = ShellUtil.Bash("date -r $(sysctl -n kern.boottime | awk '{print $4}' | tr -d ',') +\"%Y-%m-%d %H:%M:%S\"").Trim();
|
||||||
runTime = DateTimeUtil.FormatTime((DateTime.Now - output.ParseToDateTime()).TotalMilliseconds.ToString().Split('.')[0].ParseToLong());
|
runTime = DateTimeUtil.FormatTime((DateTime.Now - output.ToDateTime()).TotalMilliseconds.ToString().Split('.')[0].ToLong());
|
||||||
}
|
}
|
||||||
else if (IsUnix())
|
else if (IsUnix())
|
||||||
{
|
{
|
||||||
string output = ShellUtil.Bash("date -d \"$(awk -F. '{print $1}' /proc/uptime) second ago\" +\"%Y-%m-%d %H:%M:%S\"").Trim();
|
string output = ShellUtil.Bash("date -d \"$(awk -F. '{print $1}' /proc/uptime) second ago\" +\"%Y-%m-%d %H:%M:%S\"").Trim();
|
||||||
runTime = DateTimeUtil.FormatTime((DateTime.Now - output.ParseToDateTime()).TotalMilliseconds.ToString().Split('.')[0].ParseToLong());
|
runTime = DateTimeUtil.FormatTime((DateTime.Now - output.ToDateTime()).TotalMilliseconds.ToString().Split('.')[0].ToLong());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string output = ShellUtil.Cmd("wmic", "OS get LastBootUpTime/Value");
|
string output = ShellUtil.Cmd("wmic", "OS get LastBootUpTime/Value");
|
||||||
string[] outputArr = output.Split('=', (char)StringSplitOptions.RemoveEmptyEntries);
|
string[] outputArr = output.Split('=', (char)StringSplitOptions.RemoveEmptyEntries);
|
||||||
if (outputArr.Length == 2)
|
if (outputArr.Length == 2)
|
||||||
runTime = DateTimeUtil.FormatTime((DateTime.Now - outputArr[1].Split('.')[0].ParseToDateTime()).TotalMilliseconds.ToString().Split('.')[0].ParseToLong());
|
runTime = DateTimeUtil.FormatTime((DateTime.Now - outputArr[1].Split('.')[0].ToDateTime()).TotalMilliseconds.ToString().Split('.')[0].ToLong());
|
||||||
}
|
}
|
||||||
return runTime;
|
return runTime;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user