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 } }