public override bool Exsits(string username) { using (var context = new RacingGameDbContext()) { return(context.User.Count(u => u.UserName == username) > 0); } }
/// <returns> /// 0: valid /// -1: user doesn't exist /// </returns> public override int LockUser(int userId, bool locked) { using (var context = new RacingGameDbContext()) { var user = context.User.FirstOrDefault(u => u.UserId == userId); if (user == null) { return(-1); } user.IsLocked = locked; if (locked) { user.LockedDate = DateTime.Now; } else { user.LockedDate = null; } context.SaveChanges(); } return(0); }
public bool ExistPK(DateTime dt) { using (var db = new RacingGameDbContext()) { return(db.PK.Where(pk => pk.BeginTime <= dt && dt <= pk.EndTime).Any()); } }
public List <AppConfig> GetAll() { using (var db = new RacingGameDbContext()) { return(db.AppConfig.ToList()); } }
/// <summary> /// 生成 1条PK, 3条PKRoom (初中高级), 24条PKRoomDesk(桌) /// </summary> public PK AddPK() { using (var db = new RacingGameDbContext()) { // 生成PK var pk = db.Database.SqlQuery <PK>(string.Format("EXEC {0}", DBConst.SP_PK_GeneratePK)).FirstOrDefault(); return(pk); } }
public List <PK> GetNotCalculatePKs() { using (var db = new RacingGameDbContext()) { return(db.PK .Include(nameof(PK.PKRooms)).Include("PKRooms.PKRoomDesks") .Where(pk => !pk.IsRanked).ToList()); } }
/// <summary> /// 取当前PK /// </summary> /// <returns></returns> public PK GetCurrentPK() { using (var db = new RacingGameDbContext()) { var current = Convert.ToDateTime(DateTime.Now.ToString(DateFormatConst.yMd_Hms));// remove millisecond return(db.PK.Include(nameof(PK.PKRooms)) .Include("PKRooms.PKRoomDesks") .Where(pk => pk.BeginTime <= current && current <= pk.EndTime).FirstOrDefault()); } }
protected virtual void AuditLogin(int userId) { using (var context = new RacingGameDbContext()) { var user = context.User.Where(u => u.UserId == userId).FirstOrDefault(); user.LastLoginDate = DateTime.Now; context.SaveChanges(); } }
/// <returns> /// 0: valid /// -1: user doesn't exist /// </returns> public override int UpdateUser(User user, bool updateRoles) { using (var context = new RacingGameDbContext()) { var dbUser = GetUser(user.UserId, false); if (dbUser == null) { return(-1); } if (!string.IsNullOrEmpty(user.Password)) { dbUser.Password = HashedPassword ? CryptoUtils.ComputeHash(user.Password) : CryptoUtils.Encrypt(user.Password); } if (dbUser.IsLocked != user.IsLocked) { if (user.IsLocked) { dbUser.IsLocked = true; dbUser.LockedDate = DateTime.Now; } else { dbUser.IsLocked = false; dbUser.LockedDate = null; dbUser.FailedPasswordAttemptCount = 0; } } dbUser.Enabled = user.Enabled; //if (updateRoles) //{ // var userRoles = context.UserRole.Where(ur => ur.UserId == user.UserId).ToList(); // foreach (var userRole in userRoles) // { // context.UserRole.Remove(userRole); // } // foreach (var ur in user.UserRoles) // { // context.UserRole.Add(new UserRole // { // UserId = ur.UserId, // RoleId = ur.RoleId // }); // } //} context.SaveChanges(); } return(0); }
public List <PKBonus> GetPKBonus(int pkId, int userId) { using (var db = new RacingGameDbContext()) { return(db.PKBonus .Where(b => b.PKId == pkId && b.UserId == userId) .OrderBy(b => b.Rank) .ThenBy(b => b.Num) .ToList()); } }
public override List <User> GetAllUsers(bool includeRoles) { using (var context = new RacingGameDbContext()) { //if (includeRoles) //{ // context.UserRole.ToList(); // context.Role.ToList(); //} return(context.User.ToList()); } }
/// <summary> /// 生成头像 /// </summary> /// <param name="userName"></param> public void SaveAvatar(string userName) { using (var db = new RacingGameDbContext()) { var user = db.User.Where(u => u.UserName == userName).FirstOrDefault(); if (user != null) { user.Avatar = GetRandomAvatar(); db.SaveChanges(); } } }
/// <summary> /// 更新 名次生成标志, 防止多次计算 /// </summary> public void UpdateIsRanked(int pkId, bool isRanked) { using (var db = new RacingGameDbContext()) { var pk = db.PK.Where(p => p.PKId == pkId).FirstOrDefault(); if (pk != null) { pk.IsRanked = isRanked; db.SaveChanges(); } } }
public void Update(string name, string val) { using (var db = new RacingGameDbContext()) { var appConfig = db.AppConfig.Where(a => a.Name == name).FirstOrDefault(); if (appConfig != null) { appConfig.Value = val; db.SaveChanges(); } } }
public void Delete(string name) { using (var db = new RacingGameDbContext()) { var appConfig = db.AppConfig.Where(a => a.Name == name).FirstOrDefault(); if (appConfig != null) { db.AppConfig.Remove(appConfig); db.SaveChanges(); } } }
public AppConfig Add(string name, string val) { using (var db = new RacingGameDbContext()) { var appConfig = new AppConfig(); appConfig.Name = name; appConfig.Value = val; appConfig = db.AppConfig.Add(appConfig); db.SaveChanges(); return(appConfig); } }
/// <summary> /// 取余额 /// </summary> /// <param name="userName"></param> public decimal GetBalance(string userName) { using (var db = new RacingGameDbContext()) { decimal balance = 0; var user = db.User.Where(u => u.UserName == userName).FirstOrDefault(); if (user != null) { balance = user.Amount; } return(balance); } }
//public PK GetPK(int pkId) //{ // using (var db = new RacingGameDbContext()) // { // return db.PK.Where(pk => pk.PKId == pkId).FirstOrDefault(); // } //} /// <summary> /// 取当前PK /// </summary> /// <returns></returns> public PKInfoModel GetCurrentPKModel() { using (var db = new RacingGameDbContext()) { var currentPK = GetCurrentPK(); //var currentPK = GetLastPK(); // job 设置5秒启动一次, 两次PK之间会有时间差, 故取不到PK数据 if (currentPK == null) { return(null); } return(ConvertToPKModel(currentPK)); } }
/// <summary> /// 更新名次 /// </summary> public void UpdateRanks(List <PKRoomDesk> desks) { using (var db = new RacingGameDbContext()) { var deskIds = desks.Select(d => d.PKRoomDeskId).ToList(); var dbDesks = db.PKRoomDesk.Where(d => deskIds.Contains(d.PKRoomDeskId)).ToList(); foreach (var dbDesk in dbDesks) { var desk = desks.Where(d => d.PKRoomDeskId == dbDesk.PKRoomDeskId).First(); dbDesk.Ranks = desk.Ranks; } db.SaveChanges(); } }
/// <returns> /// 0: valid /// -1: user already exists /// </returns> public override int CreateUser(User user) { using (var context = new RacingGameDbContext()) { if (context.User.Any(u => u.UserName == user.UserName)) { return(-1); } User dbUser = new User { UserName = user.UserName, Email = user.Email, Password = string.IsNullOrEmpty(user.Password) ? null : (HashedPassword ? CryptoUtils.ComputeHash(user.Password) : CryptoUtils.Encrypt(user.Password)), Enabled = user.Enabled, IsLocked = user.IsLocked, LockedDate = user.IsLocked ? new Nullable <DateTime>(DateTime.Now) : null, FailedPasswordAttemptCount = 0, FailedPasswordAttemptWindowStart = DateTime.Parse("1900-01-01"), CreateDate = DateTime.Now, LastLoginDate = DateTime.Now }; context.User.Add(dbUser); //if (user.UserRoles != null) //{ // dbUser.UserRoles = new List<UserRole>(); // foreach (var ur in user.UserRoles) // { // dbUser.UserRoles.Add(new UserRole // { // User = dbUser, // RoleId = ur.RoleId // }); // } //} context.SaveChanges(); user.UserId = dbUser.UserId; } return(0); }
/// <returns> /// 0: valid /// -1: user doesn't exist /// </returns> public override int EnableUser(int userId, bool enabled) { using (var context = new RacingGameDbContext()) { var user = context.User.FirstOrDefault(u => u.UserId == userId); if (user == null) { return(-1); } user.Enabled = enabled; context.SaveChanges(); } return(0); }
/// <returns> /// 0: valid /// 1: user doesn't exist /// </returns> public override int ChangePassword(string username, string newPassword) { using (var context = new RacingGameDbContext()) { var user = context.User.FirstOrDefault(u => u.UserName == username); if (user == null) { return(1); } var encryptNewPassword = HashedPassword ? CryptoUtils.ComputeHash(newPassword) : CryptoUtils.Encrypt(newPassword); user.Password = encryptNewPassword; context.SaveChanges(); } return(0); }
public override User GetUser(int userId, bool includeRoles) { using (var context = new RacingGameDbContext()) { var user = context.User.FirstOrDefault(u => u.UserId == userId); //if (user != null) //{ // if (includeRoles) // { // context.UserRole.Where(ur => ur.UserId == user.UserId).ToList(); // if (user.UserRoles != null) // { // var roleIds = user.UserRoles.Select(ur => ur.RoleId); // context.Role.Where(r => roleIds.Contains(r.RoleId)).ToList(); // } // } //} return(user); } }
/// <summary> /// 取最后一个未生产奖金的PK /// </summary> /// <returns></returns> public PK GetNotBonusPKs() { using (var db = new RacingGameDbContext()) { var now = DateTime.Now; //var dbPK = db.PK.Where(pk => !pk.IsBonused && DbFunctions.DiffSeconds(now, pk.EndTime) > 0).FirstOrDefault(); var dbPK = db.PK.Where(pk => !pk.IsBonused).OrderByDescending(pk => pk.PKId).FirstOrDefault(); if (dbPK != null) { var dbPKRooms = db.PKRoom.Where(r => r.PKId == dbPK.PKId).ToList(); var roomIds = dbPKRooms.Select(r => r.PKRoomId).ToList(); var pkRoomDesks = db.PKRoomDesk.Where(d => roomIds.Contains(d.PKRoomId) && d.Ranks != null).ToList(); //pkRoomDesks.Count == 0 还没生成名次 return(pkRoomDesks.Count > 0 ? dbPK : null); } else { return(null); } } }
/// <summary> /// 生成奖金 /// </summary> /// <param name="pk"></param> public void GenerateBonus(List <PKBonus> bonuses) { using (var db = new RacingGameDbContext()) { if (bonuses.Count > 0) { // 保存奖金 db.PKBonus.AddRange(bonuses); db.SaveChanges(); // 奖金加到余额 var sql = new StringBuilder(); foreach (var bonus in bonuses) { sql.AppendLine(string.Format("Update dbo.[User] Set Amount = IsNull(Amount, 0) + {0} Where UserId = {1};", bonus.Amount, bonus.UserId)); } db.Database.ExecuteSqlCommand(sql.ToString()); db.SaveChanges(); } } }
/// <returns> /// 0: valid /// -1: user doesn't exist /// </returns> public override int DeleteUser(int userId) { using (var context = new RacingGameDbContext()) { var user = context.User.Where(u => u.UserId == userId).Select(u => new { u.UserId }).FirstOrDefault(); if (user == null) { return(-1); } if (context.Database.Connection.State != System.Data.ConnectionState.Open) { context.Database.Connection.Open(); } var trans = context.Database.Connection.BeginTransaction(); //context.Database.ExecuteSqlCommand("DELETE FROM dbo.UserRoles WHERE UserId = @UserId\n" // + "DELETE FROM dbo.Users WHERE UserId = @UserId", new DbParameter[] { new SqlParameter("@UserId", userId) }); trans.Commit(); context.Database.Connection.Close(); } return(0); }
/// <returns> /// 0: is valid /// 1: user doesn't exist /// 2: invalid password /// 3: locked /// 4: disabled /// </returns> protected virtual LoginStatus Authenticate(string username, string password, out int userId) { userId = -1; using (var context = new RacingGameDbContext()) { var user = context.User.FirstOrDefault(u => u.UserName == username); if (user == null) { return(LoginStatus.InvalidUserName); // user doesn't exist } if (user.IsLocked) { return(LoginStatus.IsLocked); // if account is locked, there is no need to check password } // check password bool invalidPassword = false; if (HashedPassword) { if (CryptoUtils.ComputeHash(password) != user.Password) { invalidPassword = true; } } else { if (CryptoUtils.Decrypt(user.Password) != password) { invalidPassword = true; } } if (invalidPassword) { if (FailedPasswordAttemptCount > 0) { DateTime now = DateTime.Now; TimeSpan ts = now - user.FailedPasswordAttemptWindowStart; if (ts.TotalMinutes <= FailedPasswordAttemptWindow) { if (user.FailedPasswordAttemptCount >= FailedPasswordAttemptCount) { user.IsLocked = true; user.LockedDate = now; } else { if (user.FailedPasswordAttemptCount == 0) { user.FailedPasswordAttemptWindowStart = now; } user.FailedPasswordAttemptCount += 1; } context.SaveChanges(); } } return(LoginStatus.InvalidPassword); } //if (!user.Enabled) return LoginStatus.Disabled; if (user.FailedPasswordAttemptCount > 0) { user.FailedPasswordAttemptCount = 0; context.SaveChanges(); } userId = user.UserId; } return(LoginStatus.Success); }