Пример #1
0
        public async Task <BaseApiResponse> Login([FromBody] LoginRequest request)
        {
            request.CheckNotNull(nameof(request));
            if (!request.Mobile.IsMobileNumber())
            {//是否手机号
                return(new BaseApiResponse {
                    Code = 400, Message = "手机号格式不正确"
                });
            }
            var userinfo = _userQueryService.FindUser(request.Mobile);

            //验证用户
            if (userinfo == null)
            {
                return(new BaseApiResponse {
                    Code = 400, Message = "没找到该账号"
                });
            }
            //验证账号
            if (userinfo.IsLocked == UserLock.Locked)
            {
                return(new BaseApiResponse {
                    Code = 400, Message = "账号锁定"
                });
            }
            //验证密码
            if (!PasswordHash.ValidatePassword(request.Password, userinfo.Password))
            {
                return(new BaseApiResponse {
                    Code = 400, Message = "登录密码错误"
                });
            }
            try
            {
                //获取钱包信息
                var walletinfo = _walletQueryService.Info(userinfo.WalletId);
                if (walletinfo == null)
                {
                    return(new BaseApiResponse {
                        Code = 400, Message = "获取钱包信息失败"
                    });
                }

                //购物车信息
                var cart = _cartQueryService.Info(userinfo.CartId);
                if (cart == null)
                {
                    return(new BaseApiResponse {
                        Code = 400, Message = "获取购物车信息失败"
                    });
                }
                //店铺信息
                var storeId   = "";
                var storeinfo = _storeQueryService.InfoByUserId(userinfo.Id);
                if (storeinfo != null)
                {
                    storeId = storeinfo.Id.ToString();
                }

                await SignInAsync(userinfo.Id.ToString(), userinfo.WalletId.ToString(), userinfo.Mobile, true);

                return(new LoginResponse
                {
                    UserInfo = new UserInfo
                    {
                        Id = userinfo.Id,
                        ParentId = userinfo.ParentId,
                        NickName = userinfo.NickName,
                        Portrait = userinfo.Portrait.ToOssStyleUrl(OssImageStyles.UserPortrait.ToDescription()),
                        Mobile = userinfo.Mobile,
                        Gender = userinfo.Gender,
                        Region = userinfo.Region,
                        Role = userinfo.Role.ToDescription(),
                        StoreId = storeId,
                        CartId = userinfo.CartId.ToString(),
                        CartGoodsCount = cart.GoodsCount,
                        IsLocked = userinfo.IsLocked,
                        Token = userinfo.Id.ToString()
                    },
                    WalletInfo = new WalletInfo
                    {
                        Id = walletinfo.Id,
                        AccessCode = walletinfo.AccessCode,
                        Cash = walletinfo.Cash,
                        Benevolence = walletinfo.Benevolence,
                        Earnings = walletinfo.Earnings,
                        YesterdayEarnings = walletinfo.YesterdayEarnings,
                        IsFreeze = walletinfo.IsFreeze
                    }
                });
            }
            catch (Exception e)
            {
                return(new BaseApiResponse {
                    Code = 400, Message = e.Message
                });
            }
        }