using OASystem.Domain.Entities.PersonnelModule;
using OASystem.Domain.Entities.System;
using OASystem.Domain.ViewModels.PersonnelModule;
using OASystem.Infrastructure.Repositories.Groups;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
namespace OASystem.API.OAMethodLib
{
public static class GeneralMethod
{
#region 消息
#endregion
#region md5 加密
///
/// MD5加密,和动网上的16/32位MD5加密结果相同,
/// 使用的UTF8编码
///
/// 待加密字串
/// 16或32值之一,其它则采用.net默认MD5加密算法
/// 加密后的字串
public static string Encrypt(string source, int length = 32)
{
if (string.IsNullOrWhiteSpace(source))
return string.Empty;
HashAlgorithm hashAlgorithm = CryptoConfig.CreateFromName("MD5") as HashAlgorithm;
byte[] bytes = Encoding.UTF8.GetBytes(source);
byte[] hashValue = hashAlgorithm.ComputeHash(bytes);
StringBuilder sb = new StringBuilder();
switch (length)
{
case 16://16位密文是32位密文的9到24位字符
for (int i = 4; i < 12; i++)
{
sb.Append(hashValue[i].ToString("x2"));
}
break;
case 32:
for (int i = 0; i < 16; i++)
{
sb.Append(hashValue[i].ToString("x2"));
}
break;
default:
for (int i = 0; i < hashValue.Length; i++)
{
sb.Append(hashValue[i].ToString("x2"));
}
break;
}
return sb.ToString();
}
#endregion
#region jwt
///
/// 获取token
///
///
///
///
///
public static string GetToken(IConfiguration _config,string Number,DateTime exp)
{
var claims = new[] {
new Claim(ClaimTypes.NameIdentifier, "Future"),
new Claim("Number",Number)
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["JwtSecurityKey"]));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
issuer: "OASystem.com",
audience: "OASystem.com",
claims: claims,
expires: exp,
signingCredentials: creds);
return new JwtSecurityTokenHandler().WriteToken(token);
}
#endregion
#region 数据类型转换
///
/// object 转 Int
///
///
///
public static int GetInt(this object obj)
{
if (obj == null)
return 0;
int _number = 0;
bool reslut = Int32.TryParse(obj.ToString(), out _number);
return _number;
}
private static DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0);
private static long longTime = 621355968000000000;
private static int samllTime = 10000000;
///
/// 时间戳 转 datetime
///
///
///
public static DateTime GetTimeSpmpToDate(this object timeStamp)
{
if (timeStamp == null) return dateStart;
DateTime dateTime = new DateTime(longTime + Convert.ToInt64(timeStamp) * samllTime, DateTimeKind.Utc).ToLocalTime();
return dateTime;
}
#endregion
#region 用户页面操作功能
//团组信息
private readonly static DelegationInfoRepository _dirRep = AutofacIocManager.Instance.GetService();
///
/// 用户页面操作功能(可使用)
///
/// 用户Id
/// 页面Id
///
public static async Task PostUserPageFuncDatas(int userId,int PageId)
{
PageFunAuthViewBase pageFunAuth = new PageFunAuthViewBase();
List userPageFuncDatas = new List();
string sql = string.Format(@"Select Distinct ua.UId As UserId, u.CnName As UserName, pa.ModuleId,pa.ModuleName,pa.PageId,pa.PageName,pa.PageIsEnable,
pa.PagePhoneIsEnable,pa.FuncId,pa.FuncName,pa.FuncIsEnable
From Sys_UserAuthority ua
Left Join Sys_Users u On ua.UId = u.Id
Left Join (
Select sd.Id As ModuleId,sd.Name As ModuleName, smp.Id As PageId,smp.Name As PageName,smp.IsEnable As PageIsEnable,
smp.phoneIsEnable As PagePhoneIsEnable,pfp.Id As FuncId,pfp.FunctionName As FuncName,pfp.IsEnable As FuncIsEnable
From Sys_SystemMenuAndFunction smaf
Left Join Sys_SystemMenuPermission smp On smaf.SmId = smp.Id
Left Join Sys_SetData sd On sd.STid = 5 And smp.Mid = sd.Id
Left Join Sys_PageFunctionPermission pfp On smaf.FId = pfp.Id
Where smaf.IsDel = 0 And smp.IsDel = 0 And pfp.IsDel = 0 And sd.IsDel = 0
) As pa On ua.SmId = pa.PageId
Where ua.IsDel = 0 And ua.UId = {0} And pa.PageId = {1}
Order By ModuleId,PageId,FuncId Asc", userId, PageId);
userPageFuncDatas = await _dirRep._sqlSugar.SqlQueryable(sql).ToListAsync();
if (userPageFuncDatas.Count <= 0)
{
return pageFunAuth;
}
UserPageFuncView userPageFunc = new UserPageFuncView();
//查询 1
userPageFunc = userPageFuncDatas.Where(it => it.FuncId == 1).FirstOrDefault();
if (userPageFunc != null) pageFunAuth.CheckAuth = 1;
//删除 2
userPageFunc = userPageFuncDatas.Where(it => it.FuncId == 2).FirstOrDefault();
if (userPageFunc != null) pageFunAuth.DeleteAuth = 1;
//编辑 3
userPageFunc = userPageFuncDatas.Where(it => it.FuncId == 3).FirstOrDefault();
if (userPageFunc != null) pageFunAuth.EditAuth = 1;
//下载 4
userPageFunc = userPageFuncDatas.Where(it => it.FuncId == 4).FirstOrDefault();
if (userPageFunc != null) pageFunAuth.FilesDownloadAuth = 1;
//上传 5
userPageFunc = userPageFuncDatas.Where(it => it.FuncId == 5).FirstOrDefault();
if (userPageFunc != null) pageFunAuth.FilesUploadAuth = 1;
//添加 11
userPageFunc = userPageFuncDatas.Where(it => it.FuncId == 11).FirstOrDefault();
if (userPageFunc != null) pageFunAuth.AddAuth = 1;
//审核 12
userPageFunc = userPageFuncDatas.Where(it => it.FuncId == 12).FirstOrDefault();
if (userPageFunc != null) pageFunAuth.AuditAuth = 1;
return pageFunAuth;
}
#endregion
}
}