using System; using System.Collections.Generic; using System.Linq; using MySystem.MainModels; using Library; using Microsoft.IdentityModel.Tokens; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; namespace MySystem { public class PublicFunction { #region 根据ParentNav获取顶级创客Id public static int GetTopUserId(string ParentNav) { int TopUserId = 0; if (!string.IsNullOrEmpty(ParentNav)) { TopUserId = int.Parse(ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]); } return TopUserId; } #endregion #region 隐藏身份证号 public static string HideCertId(string str) { return str.Substring(0, 3) + "***********" + str.Substring(14); } #endregion #region 隐藏姓名 public static string HideRealName(string str) { string result = ""; for (int i = 0; i < str.Length; i++) { if (i == 0) { result += str.Substring(i, 1); } else { result += "*"; } } return result; } #endregion #region 姓名脱敏 /// /// 姓名敏感处理 /// /// 姓名 /// 脱敏后的姓名 public static string SetSensitiveName(string fullName) { if (string.IsNullOrEmpty(fullName)) return string.Empty; string familyName = fullName.Substring(0, 1); string end = fullName.Substring(fullName.Length - 1, 1); string name = string.Empty; //长度为2 if (fullName.Length <= 2) name = familyName + "*"; //长度⼤于2 else if (fullName.Length >= 3) { name = familyName.PadRight(fullName.Length - 1, '*') + end; } return name; } #endregion #region 统计机具绑定数据 public static void StatUserMachineData(int UserId, int BrandId, int Count) { WebCMSEntities db = new WebCMSEntities(); string IdBrand = UserId + "_" + BrandId; UserMachineData MachineData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand); if (MachineData == null) { MachineData = db.UserMachineData.Add(new UserMachineData() { IdBrand = IdBrand, }).Entity; db.SaveChanges(); } if(Count < 0) { MachineData.TotalMachineCount -= Math.Abs(Count); MachineData.UnBindCount -= Math.Abs(Count); } else { MachineData.TotalMachineCount += Count; MachineData.UnBindCount += Count; } db.SaveChanges(); db.Dispose(); } #endregion #region 绑定 public static void BindUserMachineData(WebCMSEntities db, int UserId, int BrandId, int Count, string PosSn) { PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn) ?? new PosMachinesTwo(); pos.BindingState = 1; pos.BindingTime = DateTime.Now; string IdBrand = UserId + "_" + BrandId; UserMachineData MachineData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand); if (MachineData == null) { MachineData = db.UserMachineData.Add(new UserMachineData() { IdBrand = IdBrand, }).Entity; db.SaveChanges(); } MachineData.UnBindCount -= Count; MachineData.BindCount += Count; db.SaveChanges(); } #endregion #region 划拨记录 public static void SendRecord(WebCMSEntities db, int UserId, int ToUserId, int StoreId, string[] PosSnList) { string ChangeRecordNo = "SC" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8); for (int i = 0; i < PosSnList.Length; i++) { string PosSn = PosSnList[i]; PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn) ?? new PosMachinesTwo(); pos.StoreId = StoreId; pos.TransferTime = DateTime.Now; pos.BuyUserId = ToUserId; pos.UserId = ToUserId; db.PosCouponRecord.Add(new PosCouponRecord() { CreateDate = DateTime.Now, OrderNo = ChangeRecordNo, ToUserId = ToUserId, FromUserId = UserId, PosCouponId = pos.Id, }); } int SnCount = PosSnList.Length; db.PosCouponOrders.Add(new PosCouponOrders() { CreateDate = DateTime.Now, ChangeCount = SnCount, OrderNo = ChangeRecordNo, ToUserId = ToUserId, FromUserId = UserId, }); db.SaveChanges(); } #endregion #region 获取jwt的token public static string AppToken(int UserId, string JwtSecret, string JwtIss, string tag = "") { return AppToken(UserId.ToString(), JwtSecret, JwtIss, tag); } public static string AppToken(string UserId, string JwtSecret, string JwtIss, string tag = "") { string Token = RedisDbconn.Instance.Get("apptoken:" + UserId + tag); if(!string.IsNullOrEmpty(Token)) { return Token; } string issuer = "new_" + UserId + tag; string test = function.get_Random(10); var securityKey = new SigningCredentials(new SymmetricSecurityKey(Encoding.ASCII.GetBytes(JwtSecret)), SecurityAlgorithms.HmacSha256); var claims = new Claim[] { new Claim(JwtRegisteredClaimNames.Iss,JwtIss), new Claim(JwtRegisteredClaimNames.Aud,test), new Claim("Guid", Guid.NewGuid().ToString("D")), new Claim(ClaimTypes.Role, "system"), new Claim(ClaimTypes.Role, "admin"), }; SecurityToken securityToken = new JwtSecurityToken( signingCredentials: securityKey, expires: DateTime.Now.AddDays(10),//过期时间 claims: claims, audience: test, issuer: issuer ); RedisDbconn.Instance.Set("utoken:" + issuer, test); RedisDbconn.Instance.SetExpire("utoken:" + issuer, 3600 * 24 * 10); //生成jwt令牌 Token = new JwtSecurityTokenHandler().WriteToken(securityToken); RedisDbconn.Instance.Set("apptoken:" + UserId + tag, Token); RedisDbconn.Instance.SetExpire("apptoken:" + UserId + tag, 3600 * 24 * 10 - 60); //生成jwt令牌 return new JwtSecurityTokenHandler().WriteToken(securityToken); } #endregion //收支明细类别结合 public static List IncomeTypes() { List list = new List(); list.Add(0); list.Add(1); list.Add(12); list.Add(31); list.Add(50); list.Add(60); list.Add(64); list.Add(66); list.Add(111); list.Add(112); list.Add(113); list.Add(114); list.Add(115); list.Add(116); list.Add(117); list.Add(118); list.Add(119); list.Add(120); list.Add(121); list.Add(122); list.Add(123); list.Add(126); return list; } public static List ExpendTypes() { List list = new List(); list.Add(3); list.Add(4); list.Add(5); list.Add(20); list.Add(63); list.Add(65); list.Add(124); list.Add(125); return list; } } }