using System.Data;
|
using System.Dynamic;
|
using System.Security.Cryptography;
|
using System.Text;
|
using Microsoft.AspNetCore.Http;
|
|
namespace Gs.Toolbox;
|
|
public static class UtilityHelper
|
{
|
|
/// <summary>
|
/// 读取登录用户信息:返回用户Code,用户Guid,组织ID
|
/// </summary>
|
/// <param name="_http"></param>
|
/// <returns></returns>
|
public static (string?, string?, string?) GetUserGuidAndOrgGuid(
|
IHttpContextAccessor _http)
|
{
|
try
|
{
|
string _token = _http.HttpContext.Request.Headers["token"];
|
var _userGuid = _token;
|
var _sb = new StringBuilder();
|
_sb.Append("select ACCOUNT as t1,'' as t3 from SYS_USER where guid='" + _userGuid + "' ");
|
var dset = new DataSet();
|
dset = DbHelperSQL.Query(_sb.ToString());
|
if (dset != null && dset.Tables[0].Rows.Count > 0)
|
{
|
DataRow _row = dset.Tables[0].Rows[0];
|
var _userCode = _row["t1"].ToString();
|
var _orgFids = _row["t3"].ToString();
|
return (_userCode, _userGuid, _orgFids);
|
}
|
return (null, null, null);
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Debug("GetUserGuidAndOrgGuid:", ex.Message);
|
}
|
return (null, null, null);
|
}
|
|
/// <summary>
|
/// 32位MD5加密
|
/// </summary>
|
/// <param name="password"></param>
|
/// <returns></returns>
|
public static string MD5Encrypt32(string password)
|
{
|
var cl = password;
|
var pwd = "";
|
var md5 = MD5.Create();
|
var s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
|
for (var i = 0; i < s.Length; i++) pwd = pwd + s[i].ToString("X");
|
return pwd;
|
}
|
|
/// <summary>
|
/// table转DynamicList
|
/// </summary>
|
/// <param name="table"></param>
|
/// <returns></returns>
|
public static List<dynamic> TableToDynamicList(this DataTable table)
|
{
|
var list = new List<dynamic>();
|
// 遍历DataTable中的每一行
|
foreach (DataRow row in table.Rows)
|
{
|
dynamic item = new ExpandoObject();
|
// 遍历每一列,并添加到dynamic对象中
|
foreach (DataColumn column in table.Columns)
|
((IDictionary<string, object>)item)[column.ColumnName] =
|
row[column];
|
list.Add(item);
|
}
|
|
return list;
|
}
|
|
/// <summary>
|
/// row转DynamicList
|
/// </summary>
|
/// <param name="row"></param>
|
/// <returns></returns>
|
public static dynamic RowToDynamic(this DataRow row)
|
{
|
dynamic expando = new ExpandoObject();
|
if (row != null)
|
foreach (DataColumn column in row.Table.Columns)
|
{
|
var value = row[column];
|
// 如果值为DBNull.Value,则转换为null
|
if (value == DBNull.Value) value = null;
|
((IDictionary<string, object>)expando)[column.ColumnName] =
|
value;
|
}
|
|
return expando;
|
}
|
|
public static int? ToInt(string strV)
|
{
|
if (string.IsNullOrEmpty(strV))
|
return null;
|
return int.Parse(strV);
|
}
|
|
/// <summary>
|
/// </summary>
|
/// <param name="_userGuid">操作用户</param>
|
/// <param name="_abtGuid">关联主键,有时候会为null</param>
|
/// <param name="_tableName">表名,表描述</param>
|
/// <param name="_logTxt">行为</param>
|
/// <returns></returns>
|
public static StringBuilder BuildLog(string _userGuid, string _abtGuid,
|
string _table, string _logTxt)
|
{
|
var sb = new StringBuilder();
|
sb.Append(" exec prc_log_create '" + _userGuid + "','" + _abtGuid +
|
"','" + _table + "','" + _logTxt + "' ");
|
return sb;
|
}
|
|
/// <summary>
|
/// 判断是不是guid
|
/// </summary>
|
/// <param name="guid"></param>
|
/// <returns></returns>
|
public static bool CheckGuid(Guid? guid)
|
{
|
if (guid == Guid.Empty)
|
return false;
|
if (guid == null) return false;
|
return true;
|
}
|
|
/// <summary>
|
/// 判断是不是guid
|
/// </summary>
|
/// <param name="guid"></param>
|
/// <returns></returns>
|
public static bool CheckGuid(string? guid)
|
{
|
if (guid == Guid.Empty.ToString())
|
return false;
|
if (string.IsNullOrEmpty(guid))
|
return false;
|
if (guid == null) return false;
|
return true;
|
}
|
}
|