Пример #1
0
        /// <summary>
        /// 更新在线账户信息缓存
        /// </summary>
        /// <param name="online"></param>
        void IOnlineAccountCache.UpdateOnlineAccount(OnlineAccountInfo online)
        {
            if (online == null)
            {
                throw new ArgumentNullException("onlinecache info can not be null");
            }
            //从缓存中拿数据
            string         key  = string.Format("OnlineAI_{0}_*", online.Phone);
            IList <string> list = Session.Current.ScanAllKeys(key);

            if (list != null && list.Count > 0)
            {
                OnlineAccountInfo infocache = Session.Current.Get <OnlineAccountInfo>(list[0]);

                //修改数据
                infocache.NickName     = online.NickName;
                infocache.Sex          = online.Sex;
                infocache.Description  = online.Description;
                infocache.BirthdayDate = online.BirthdayDate;
                //移除之前的
                bool removed = Session.Current.Remove(list[0]);


                //保存
                Session.Current.Set(infocache.GetKeyName(), infocache);
                Session.Current.Expire(infocache.GetKeyName(), ExpireTime);
            }
        }
Пример #2
0
        /// <summary>
        /// 登陆
        /// </summary>
        /// <param name="signInCode"></param>
        /// <param name="securityCode"></param>
        /// <returns></returns>
        public Result <Account> SignIn(string signInCode, string securityCode)
        {
            Result <Account> result = new Result <Account>()
            {
                Status = false
            };

            try
            {
                //1.检查是否已经登录
                IOnlineAccountCache service        = ServiceObjectContainer.Get <IOnlineAccountCache>();
                IAccountInfoCache   accountservice = ServiceObjectContainer.Get <IAccountInfoCache>();

                string            phonekey        = string.Format("OnlineAI_{0}_*", signInCode);
                string            emailkey        = string.Format("OnlineAI_*_{0}", signInCode);
                string            securityCodeMD5 = MD5Engine.ToMD5String(securityCode);
                OnlineAccountInfo onlineinfo      = null;

                onlineinfo = service.SearchInfoByKey(phonekey);

                if (onlineinfo == null)
                {
                    onlineinfo = service.SearchInfoByKey(emailkey);
                }

                if (onlineinfo == null)
                {
                    //2.直接从数据库拿数据
                    IList <AccountInfo> inforesult = DBConnectionManager.Instance.Reader.Select <AccountInfo>(new AccountSelectSpefication(3, signInCode, securityCodeMD5).Satifasy());
                    if (inforesult != null && inforesult.Count > 0)
                    {
                        result.Status = true;
                        result.Data   = inforesult[0].Copy <Account>();

                        //保存到缓存
                        service.SaveInfo(inforesult[0].Copy <OnlineAccountInfo>());
                        accountservice.SaveInfo(inforesult[0]);
                    }
                    else
                    {
                        result.Message    = "用户名或密码错误";
                        result.StatusCode = "LG000";
                    }
                }
                else
                {
                    //校验密码
                    if (onlineinfo.SecurityCode != securityCodeMD5)
                    {
                        result.Message    = "密码错误";
                        result.StatusCode = "LG000";
                        result.Data       = null;
                    }
                    else
                    {
                        //返回结果
                        result.Status = true;
                        result.Data   = onlineinfo.Copy <Account>();
                    }
                }
            }
            catch (Exception ex)
            {
                result.Status     = false;
                result.Data       = null;
                result.Message    = ex.Message;
                result.StatusCode = "EX000";

                LoggerUtils.LogIn(LoggerUtils.ColectExceptionMessage(ex, "At service:SignIn() .AccountService"), LogType.ErrorLog);
            }
            return(result);
        }