Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="cache"></param>
        /// <param name="user"></param>
        /// <param name="callback"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task StreamAsync(this IAccountInfoCache cache, IBinanceApiUser user, Action <AccountInfoCacheEventArgs> callback, CancellationToken token)
        {
            Throw.IfNull(cache, nameof(cache));

            await cache.SubscribeAsync(user, callback, token)
            .ConfigureAwait(false);

            await cache.Client.WebSocket.StreamAsync(token)
            .ConfigureAwait(false);
        }
Example #2
0
        /// <summary>
        /// 根据手机号获取账户信息
        /// </summary>
        /// <param name="phone"></param>
        /// <returns></returns>
        public Result <Account> GetAccountInfo(long phone)
        {
            Result <Account> result = new Result <Account>()
            {
                Status     = true,
                Message    = "获取信息成功",
                StatusCode = "GA001",
                Data       = new Account()
            };

            try
            {
                IAccountInfoCache service      = ServiceObjectContainer.Get <IAccountInfoCache>();
                AccountInfo       accountcache = service.SearchInfoByKey(string.Format("DB_AI_{0}_*", phone));

                if (accountcache == null)
                {
                    IList <AccountInfo> accounts = DBConnectionManager.Instance.Reader.Select <AccountInfo>(new AccountSelectSpefication(0, phone.ToString()).Satifasy());
                    if (accounts != null && accounts.Count > 0)
                    {
                        accountcache = accounts[0];
                        service.SaveInfo(accountcache);
                    }
                }

                if (accountcache != null)
                {
                    result.Data = accountcache.Copy <Account>();
                }
                else
                {
                    result.Message = "未能找到此账号的信息,请确认后再试";
                    result.Data    = null;
                }
            }
            catch (Exception ex)
            {
                result.Status     = false;
                result.Message    = "获取信息失败";
                result.StatusCode = "GA000";
                result.Data       = null;
                LoggerUtils.LogIn(LoggerUtils.ColectExceptionMessage(ex, "At service:GetAccountInfo() .AccountService"), LogType.ErrorLog);
            }
            return(result);
        }
Example #3
0
        /// <summary>
        /// 认证账户
        /// </summary>
        /// <param name="phone"></param>
        /// <returns></returns>
        public Result RequireAccount(long phone)
        {
            Result result = new Result()
            {
                Status     = true,
                Message    = "验证账户成功",
                StatusCode = "RA000"
            };

            try
            {
                //更改数据库
                if (DBConnectionManager.Instance.Writer.Update(new AccountRequireSpefication(true, phone).Satifasy(), null))
                {
                    IList <AccountInfo> accountlist = DBConnectionManager.Instance.Reader.Select <AccountInfo>(new AccountSelectSpefication(0, phone.ToString()).Satifasy());
                    if (accountlist != null && accountlist.Count > 0)
                    {
                        IAccountInfoCache   service       = ServiceObjectContainer.Get <IAccountInfoCache>();
                        IOnlineAccountCache onlineservice = ServiceObjectContainer.Get <IOnlineAccountCache>();

                        //同步缓存信息
                        service.SaveInfo(accountlist[0]);
                        onlineservice.SaveInfo(accountlist[0].Copy <OnlineAccountInfo>());
                    }
                    DBConnectionManager.Instance.Writer.Commit();
                }
                else
                {
                    result.Status     = false;
                    result.Message    = "验证账户失败";
                    result.StatusCode = "RA001";
                }
            }
            catch (Exception ex)
            {
                result.Status     = false;
                result.Message    = string.Format("验证账户出错/r/n {0}", ex.Message);
                result.StatusCode = "EX000";
                LoggerUtils.LogIn(LoggerUtils.ColectExceptionMessage(ex, "At service:RequireAccount() .AccountService"), LogType.ErrorLog);
            }

            return(result);
        }
Example #4
0
        /// <summary>
        /// 更改背景图
        /// </summary>
        /// <param name="backCoverbase64str"></param>
        /// <param name="account"></param>
        /// <returns></returns>
        public Result UpdateBackCover(string backCoverbase64str, string account)
        {
            Result result = new Result()
            {
                Status     = true,
                Message    = "更改背景图成功",
                StatusCode = "UB001"
            };

            try
            {
                result.Status = DBConnectionManager.Instance.Writer.Update(new AccountUpdateImageSpefication(backCoverbase64str, account, 1).Satifasy());
                if (result.Status)
                {
                    //更新缓存
                    IAccountInfoCache   service       = ServiceObjectContainer.Get <IAccountInfoCache>();
                    IOnlineAccountCache onlineservice = ServiceObjectContainer.Get <IOnlineAccountCache>();

                    AccountInfo accountcache = service.SearchInfoByKey(string.Format("DB_AI_{0}", account));
                    if (accountcache != null)
                    {
                        accountcache.BackCorver = backCoverbase64str;
                        //保存
                        service.SaveInfo(accountcache);
                        onlineservice.SaveInfo(accountcache.Copy <OnlineAccountInfo>());
                    }
                }
            }
            catch (Exception ex)
            {
                result.Status     = false;
                result.Message    = "修改背景图出错" + ex.Message;
                result.StatusCode = "UB000";
                LoggerUtils.LogIn(LoggerUtils.ColectExceptionMessage(ex, "At service:UpdateBackCover() .AccountService"), LogType.ErrorLog);
            }

            return(result);
        }
Example #5
0
        /// <summary>
        /// 检查手机是否被注册
        /// </summary>
        /// <param name="phone"></param>
        /// <returns></returns>
        public Result CheckPhoneRegisted(string phone)
        {
            Result result = new Result()
            {
                Status = true,
            };

            try
            {
                //检验缓存是否存在
                IAccountInfoCache service = ServiceObjectContainer.Get <IAccountInfoCache>();
                //存在,返回结果为false
                result.Status = !service.CheckPhoneExists(phone);
            }
            catch (Exception ex)
            {
                result.Status     = false;
                result.Message    = "手机验证出错" + ex.Message;
                result.StatusCode = "CMR000";
                LoggerUtils.LogIn(LoggerUtils.ColectExceptionMessage(ex, "At service:CheckPhoneRegisted() .AccountService"), LogType.ErrorLog);
            }
            return(result);
        }
Example #6
0
        /// <summary>
        /// 更新账户信息 (不包括背景图像和头像)
        /// </summary>
        /// <param name="account"></param>
        /// <returns></returns>
        public Result UpdateAccountInfo(Account account)
        {
            Result result = new Result()
            {
                Status     = true,
                Message    = "更新账户信息成功",
                StatusCode = "UA001"
            };

            try
            {
                AccountInfo info = account.Copy <AccountInfo>();
                result.Status = DBConnectionManager.Instance.Writer.Update(new AccountUpdateInfoSpefication(info).Satifasy());

                if (result.Status)
                {
                    DBConnectionManager.Instance.Writer.Commit();

                    //更新缓存
                    IAccountInfoCache service = ServiceObjectContainer.Get <IAccountInfoCache>();
                    service.UpdateAccount(info);

                    IOnlineAccountCache onlineservice = ServiceObjectContainer.Get <IOnlineAccountCache>();
                    onlineservice.UpdateOnlineAccount(info.Copy <OnlineAccountInfo>());
                }
            }
            catch (Exception ex)
            {
                result.Status     = false;
                result.Message    = "修改账户信息出错" + ex.Message;
                result.StatusCode = "UA000";
                LoggerUtils.LogIn(LoggerUtils.ColectExceptionMessage(ex, "At service:UpdateAccountInfo() .AccountService"), LogType.ErrorLog);
            }

            return(result);
        }
Example #7
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="cache"></param>
 /// <param name="user"></param>
 /// <param name="token"></param>
 /// <returns></returns>
 public static Task StreamAsync(this IAccountInfoCache cache, IBinanceApiUser user, CancellationToken token)
 => StreamAsync(cache, user, null, token);
Example #8
0
        /// <summary>
        /// 注册账户信息
        /// </summary>
        /// <param name="account"></param>
        /// <returns></returns>
        public Result <Account> RegistInfo(RegistRequest request)
        {
            Result <Account> result = new Result <Account>()
            {
                Status     = true,
                Message    = "注册账户成功",
                Data       = null,
                StatusCode = "RR000"
            };

            AccountInfo account = new AccountInfo();

            account.Phone          = Int64.Parse(request.Phone);
            account.Email          = request.Email;
            account.SecurityCode   = MD5Engine.ToMD5String(request.SecurityCode);
            account.CreatDate      = DateTime.Now;
            account.BirthdayDate   = DateTime.Parse("2000-01-01");
            account.Avator         = ConstInfo.DefaultHeadBase64;
            account.BackCorver     = ConstInfo.DefaultBackCover;
            account.Sex            = Model.Enum.AccountSex.Male.GetHashCode();
            account.RequiredStatus = Model.Enum.AccountRequiredStatus.UnRequired.GetHashCode();
            account.Description    = "";
            account.NickName       = request.Phone;


            //加入数据库
            try
            {
                IAccountInfoCache service = ServiceObjectContainer.Get <IAccountInfoCache>();

                if (service.SearchInfoByKey(account.GetKeyName()) == null)
                {
                    //入库
                    result.Status = DBConnectionManager.Instance.Writer.Insert(new AccountAddSpefication(account).Satifasy());

                    if (result.Status)
                    {
                        DBConnectionManager.Instance.Writer.Commit();
                        //加入缓存
                        service.SaveInfo(account);
                        result.Data = account.Copy <Account>();
                    }
                }
                else
                {
                    result.Status     = false;
                    result.Message    = "当前账户已存在";
                    result.StatusCode = "RR001";
                }
            }
            catch (Exception ex)
            {
                DBConnectionManager.Instance.Writer.Rollback();
                result.Status     = false;
                result.Message    = ex.Message;
                result.StatusCode = "EX000";
                LoggerUtils.LogIn(LoggerUtils.ColectExceptionMessage(ex, "At service:RegistInfo() .AccountService"), LogType.ErrorLog);
            }


            return(result);
        }
Example #9
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);
        }
Example #10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="cache"></param>
 /// <param name="listenKey"></param>
 /// <param name="user"></param>
 public static void Subscribe <TClient>(this IAccountInfoCache <TClient> cache, string listenKey, IBinanceApiUser user)
     where TClient : IUserDataClient
 => cache.Subscribe(listenKey, user, null);
 /// <summary>
 ///
 /// </summary>
 /// <param name="cache"></param>
 /// <param name="user"></param>
 /// <param name="token"></param>
 /// <returns></returns>
 public static Task SubscribeAndStreamAsync(this IAccountInfoCache cache, IBinanceApiUser user, CancellationToken token)
 => cache.SubscribeAndStreamAsync(user, null, token);
 /// <summary>
 ///
 /// </summary>
 /// <param name="cache"></param>
 /// <param name="listenKey"></param>
 /// <param name="user"></param>
 public static void Subscribe(this IAccountInfoCache cache, string listenKey, IBinanceApiUser user)
 => cache.Subscribe(listenKey, user, null);