/// <summary> /// 用户登陆验证 /// </summary> /// <param name="account"></param> /// <param name="password"></param> /// <param name="platform">0:web,1:app</param> /// <returns></returns> public (bool Status, string Message, Entities.Sys_User User, Entities.Sys_UserJwt Jwt) ValidateUser(string account, string password, int platform = 0) { var user = _dbContext.Sys_User.Where(o => o.Account == account && !o.IsDeleted).FirstOrDefault(); if (user == null) { return(false, "账号或密码错误", null, null); } var r_item = _dbContext.Sys_UserR.FirstOrDefault(o => o.UserId == user.Id && o.Platform == platform); if (r_item == null) { return(false, "非法操作,因子不存在,请重试", null, null); } var pwd = EncryptorHelper.GetMD5((user.Password ?? "") + r_item.R); var log = new Sys_UserLogin() { Id = CombGuid.NewGuid(), UserId = user.Id, IpAddress = _webHelper.GetIPAddress(), LoginTime = DateTime.Now, Status = false }; Entities.Sys_UserJwt jwt = null; string msg = "账号或密码错误"; if (password.Equals(pwd, StringComparison.InvariantCultureIgnoreCase)) { log.Status = true; msg = "登陆成功"; user.LastIpAddress = log.IpAddress; _dbContext.Sys_UserR.Remove(r_item); jwt = new Sys_UserJwt() { Jti = EncryptorHelper.GetMD5(Guid.NewGuid().ToString()), Expiration = DateTime.Now.AddDays(30), RefreshToken = EncryptorHelper.GetMD5(Guid.NewGuid().ToString()), Platform = platform, UserId = user.Id }; _dbContext.Sys_UserJwt.Add(jwt); } _dbContext.Sys_UserLogin.Add(log); _dbContext.SaveChanges(); return(log.Status, msg, user, jwt); }
/// <summary> /// 初始化 /// </summary> public void Initialize() { using (var connection = _dbContext.Database.GetDbConnection()) { connection.Open(); var table = connection.GetSchema("Tables"); connection.Close(); List <string> tables = new List <string>(); foreach (DataRow row in table.Rows) { tables.Add(row["TABLE_NAME"].ToString()); } var ac_comments = _dbContext.Sys_ActivityLogComment.ToList(); ac_comments.ForEach(del => { if (!tables.Any(o => o == del.EntityName)) { _dbContext.Sys_ActivityLogComment.Remove(del); } }); tables.ForEach(name => { if (!ac_comments.Any(o => o.EntityName == name)) { _dbContext.Sys_ActivityLogComment.Add(new Sys_ActivityLogComment() { EntityName = name }); } }); _dbContext.SaveChanges(); } }
/// <summary> /// 开启任务 /// </summary> /// <param name="id"></param> /// <returns></returns> public (bool Status, string Message) Start(Guid id) { var item = _dbContext.QuarztSchedule.Find(id); if (item == null) { return(Fail("任务不存在")); } var res = _jobCenter.AddScheduleJobAsync(_mapper.Map <QuarztScheduleMapping>(item)).Result; if (res.Status) { item.RunStatus = (int)JobStatus.执行任务中; _dbContext.SaveChanges(); } return(res); }
/// <summary> /// 修改 /// </summary> /// <param name="bucket"></param> /// <param name="userId"></param> /// <returns></returns> public (bool Status, string Message) UpdateBucket(BucketMapping bucket, Guid userId) { var item = _dbContext.Bucket.Find(bucket.Id); if (item == null) { return(Fail("数据不存在")); } string oldLog = JsonConvert.SerializeObject(item); item.Description = bucket.Description; item.IsCompress = bucket.IsCompress; string newLog = JsonConvert.SerializeObject(item); _dbContext.SaveChanges(); _activityLogService.UpdatedEntity <Entities.Bucket>(item.Id, oldLog, newLog, userId); _cacheManager.Remove(MODEL_KEY); return(Success("修改成功")); }
/// <summary> /// 新增 /// </summary> /// <param name="bucketImage"></param> public void AddImage(Entities.BucketImage bucketImage) { lock (lockObj) { if (!_dbContext.BucketImage.Any(o => o.SHA1 == bucketImage.SHA1)) { _dbContext.BucketImage.Add(bucketImage); _dbContext.SaveChanges(); } } }
/// <summary> /// 强制用户下线所有平台 /// </summary> /// <param name="userId"></param> public void CompelOut(Guid userId) { var jwtList = _dbContext.Sys_UserJwt.Where(o => o.UserId == userId).ToList(); _dbContext.Sys_UserJwt.RemoveRange(jwtList); _dbContext.SaveChanges(); jwtList.ForEach(item => { RemoveCahce(item.Jti); }); }
/// <summary> /// 保存基数设置的值 /// </summary> /// <param name="name"></param> /// <param name="value"></param> /// <returns></returns> public (bool Status, string Message) SaveSetting(string name, string value) { var item = _dbContext.Sys_Setting.FirstOrDefault(o => o.Name == name); if (item == null) { _dbContext.Sys_Setting.Add(new Entities.Sys_Setting() { Id = Guid.NewGuid(), Name = name, Value = value }); } else { item.Value = value; } _dbContext.SaveChanges(); _cacheManager.Remove(MODEL_KEY); return(Success("保存成功")); }
/// <summary> /// 配置用户角色 /// </summary> /// <param name="userRoles"></param> public void SetUserRoles(Guid userId, List <Guid> roleIds, Guid modifier) { try { using (var trans = _dbContext.Database.BeginTransaction()) { _dbContext.Database.ExecuteSqlRaw($"DELETE FROM [Sys_UserRole] WHERE [UserId]='{userId}'"); if (roleIds != null && roleIds.Any()) { roleIds.ForEach(roleId => { _dbContext.Sys_UserRole.Add(new Sys_UserRole() { Id = CombGuid.NewGuid(), RoleId = roleId, UserId = userId }); }); } _dbContext.SaveChanges(); trans.Commit(); _cacheManager.Remove(USER_ROLES_ALL); } } catch (Exception ex) { _logger.LogError(ex, ex.Message); } }
/// <summary> /// 初始化 /// </summary> /// <param name="sysCategories"></param> public void Init(List <Entities.Sys_Category> sysCategories) { using (var tarns = _dbContext.Database.BeginTransaction()) { var oldList = _dbContext.Sys_Category.ToList(); oldList.ForEach(del => { var item = sysCategories.FirstOrDefault(o => o.UID == del.UID); if (item == null) { _dbContext.Database.ExecuteSqlRaw($"DELETE FROM [Sys_Permission] WHERE [CategoryId]='{del.Id}'"); _dbContext.Sys_Category.Remove(del); } }); sysCategories.ForEach(entity => { var item = oldList.FirstOrDefault(o => o.UID == entity.UID); if (item == null) { _dbContext.Sys_Category.Add(entity); } else { item.RouteTemplate = entity.RouteTemplate ?? ""; item.Name = entity.Name; item.Code = entity.Code; item.FatherCode = entity.FatherCode; item.Target = entity.Target ?? "0"; item.Sort = entity.Sort; item.IsMenu = entity.IsMenu ?? "0"; item.Controller = entity.Controller ?? ""; item.Action = entity.Action ?? ""; item.RouteName = entity.RouteName ?? ""; item.IconClass = entity.IconClass ?? ""; } }); _dbContext.SaveChanges(); tarns.Commit(); } }
/// <summary> /// 私有方法 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="logService"></param> /// <param name="method"></param> /// <param name="entity"></param> public void InsertActivityLog <T>(string method, object primaryKey, string oldValue, string newValue, Guid?userId = null) { try { var log = new Entities.Sys_ActivityLog() { Id = CombGuid.NewGuid(), PrimaryKey = primaryKey.ToString(), CreationTime = DateTime.Now, Method = method, OldValue = oldValue, NewValue = newValue, EntityName = typeof(T).Name, Creator = userId }; _dbContext.Sys_ActivityLog.Add(log); _dbContext.SaveChanges(); } catch { } }