Пример #1
0
 public override bool Exsits(string username)
 {
     using (var context = new RacingGameDbContext())
     {
         return(context.User.Count(u => u.UserName == username) > 0);
     }
 }
Пример #2
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);
        }
Пример #3
0
 public bool ExistPK(DateTime dt)
 {
     using (var db = new RacingGameDbContext())
     {
         return(db.PK.Where(pk => pk.BeginTime <= dt && dt <= pk.EndTime).Any());
     }
 }
Пример #4
0
 public List <AppConfig> GetAll()
 {
     using (var db = new RacingGameDbContext())
     {
         return(db.AppConfig.ToList());
     }
 }
Пример #5
0
 /// <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);
     }
 }
Пример #6
0
 public List <PK> GetNotCalculatePKs()
 {
     using (var db = new RacingGameDbContext())
     {
         return(db.PK
                .Include(nameof(PK.PKRooms)).Include("PKRooms.PKRoomDesks")
                .Where(pk => !pk.IsRanked).ToList());
     }
 }
Пример #7
0
 /// <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());
     }
 }
Пример #8
0
        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();
            }
        }
Пример #9
0
        /// <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);
        }
Пример #10
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());
     }
 }
Пример #11
0
 public override List <User> GetAllUsers(bool includeRoles)
 {
     using (var context = new RacingGameDbContext())
     {
         //if (includeRoles)
         //{
         //    context.UserRole.ToList();
         //    context.Role.ToList();
         //}
         return(context.User.ToList());
     }
 }
Пример #12
0
 /// <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();
         }
     }
 }
Пример #13
0
 /// <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();
         }
     }
 }
Пример #14
0
 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();
         }
     }
 }
Пример #15
0
 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();
         }
     }
 }
Пример #16
0
        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);
            }
        }
Пример #17
0
        /// <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);
            }
        }
Пример #18
0
        //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));
            }
        }
Пример #19
0
        /// <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();
            }
        }
Пример #20
0
        /// <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);
        }
Пример #21
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);
        }
Пример #22
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);
        }
Пример #23
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);
     }
 }
Пример #24
0
 /// <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);
         }
     }
 }
Пример #25
0
        /// <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();
                }
            }
        }
Пример #26
0
        /// <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);
        }
Пример #27
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);
        }