private AccountValidateMessage CheckAccountState(AccountEntity entity)
        {
            AccountValidateMessage result = null;

            if (entity == null)
            {
                result = new AccountValidateMessage()
                {
                    ResulType = ValidateType.NotExist,
                    Message   = "登陆失败,用户名或密码错误.",
                };
            }
            if (entity != null && entity.StatType != (int)AccountStatType.Normal)
            {
                result = new AccountValidateMessage();
                switch (entity.StatType)
                {
                case (int)AccountStatType.Disable:
                {
                    result.ResulType = ValidateType.Disabled;
                    result.Message   = "帐号已停用!";
                    break;
                }

                case (int)AccountStatType.FreezeReason1:
                {
                    result.ResulType = ValidateType.Freezeed;
                    result.Message   = "帐号已由于原因1冻结!";
                    break;
                }

                case (int)AccountStatType.FreezeReason2:
                {
                    result.ResulType = ValidateType.Freezeed;
                    result.Message   = "帐号已由于原因2冻结!";

                    break;
                }

                case (int)AccountStatType.Verify:
                {
                    result.ResulType = ValidateType.Verify;
                    result.Message   = "帐号需要输入验证!";
                    break;
                }

                default:
                {
                    result.ResulType = ValidateType.UnExcept;
                    result.Message   = "未知错误!";

                    break;
                }
                }
            }
            return(result);
        }
        public async Task <AccountValidateMessage> CheckAccountTokenVilidate(string userName, string token)
        {
            if (string.IsNullOrEmpty(token))
            {
                return(new AccountValidateMessage()
                {
                    ResulType = ValidateType.AuthCookieEmpty,
                    Message = "Token 验证失败.",
                });
            }
            var entity = await AccountDao.GetAccountEntityByUserName(userName);

            AccountValidateMessage result = CheckAccountState(entity);

            if (result == null)
            {
                result = new AccountValidateMessage();
                if (entity.Token == token)
                {
                    try
                    {
                        var expiredStr = token.Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[0];
                        var expire     = long.Parse(expiredStr);
                        if (DateTime.Now.Unix10TimeStamp() > expire)
                        {
                            result.ResulType = ValidateType.AuthCookieExpired;
                            result.Message   = "Token已经过期,请重新登陆!";
                        }
                        else
                        {
                            result.ResulType = ValidateType.None;
                            result.Message   = "登陆成功!";
                        }
                    }
                    catch (Exception e)
                    {
                        LogHelper.Error(e.Message, e);
                        result.ResulType = ValidateType.UnExcept;
                        result.Message   = "登陆失败,未知错误.";
                    }
                }
                else
                {
                    result.ResulType = ValidateType.AuthCookieError;
                    result.Message   = "Token 验证失败.";
                }
            }
            return(result);
        }
        public async Task <AccountValidateMessage> CheckAccountVilidate(string userName, string password, double expireTime = 7200)
        {
            var entity = await AccountDao.GetAccountEntityByUserName(userName);

            AccountValidateMessage result = CheckAccountState(entity);

            if (result == null)
            {
                result = new AccountValidateMessage();

                if (entity.Password == password)
                {
                    try
                    {
                        var expired = DateTime.Now.AddSeconds(expireTime);
                        var token   = Guid.NewGuid().Str() + $@"|{expired.Unix10TimeStamp()}";
                        await AccountDao.UpdataAccount(entity.Id, new AccountEntity()
                        {
                            Token = token
                        });

                        result.ResulType = ValidateType.None;
                        result.Cookie    = new AuthCookieModel()
                        {
                            Id       = entity.Id,
                            UserName = entity.UserName,
                            Token    = token,
                            Expired  = expired,
                        };
                        result.Message = "登陆成功!";
                    }
                    catch (Exception e)
                    {
                        LogHelper.Error(e.Message, e);
                        result.ResulType = ValidateType.UnExcept;
                        result.Message   = "登陆失败,未知错误.";
                    }
                }
                else
                {
                    result.ResulType = ValidateType.PasswordError;
                    result.Message   = "登陆失败,用户名或密码错误.";
                }
            }
            return(result);
        }