Example #1
0
        /// <summary>
        /// 提款申请
        /// </summary>
        /// <param name="widthdrawinfo"></param>
        /// <returns></returns>
        public async Task <OperationResult> Widthdraw(WidthdrawInfo widthdrawInfo)
        {
            UserRepository.UnitOfWork.TransactionEnabled = true;
            //验证用户
            User user = await UserManager.FindByIdAsync(widthdrawInfo.UserId);

            if (user == null)
            {
                return(new OperationResult(OperationResultType.QueryNull));
            }
            //验证密码
            if (!await UserManager.CheckPasswordAsync(user, widthdrawInfo.Password))
            {
                return(new OperationResult(OperationResultType.Error, "密码错误"));
            }
            //验证资金
            if (user.UserExtend.RmbCoin < widthdrawInfo.Amount)
            {
                return(new OperationResult(OperationResultType.Error, "提现金额大于账户余额"));
            }


            user.UserExtend.RmbCoin -= widthdrawInfo.Amount;

            //提款记录
            RmbCoinTransaction transaction = new RmbCoinTransaction()
            {
                Amount        = -widthdrawInfo.Amount,
                Type          = RmbTransactionType.Withdraw,
                State         = TransactionState.UnConfirmed,
                Direction     = TransactionDirection.Expend,
                RealAmount    = -widthdrawInfo.Amount,
                CreatedTime   = DateTime.Now,
                StreamId      = DateTime.Now.ToString("yyMMddHHmmss") + new Random().GetRandomNumberString(4),//生成序列号
                Remark        = "提现",
                OtherSideInfo = widthdrawInfo.BankName,
                Fee           = 0,
                Preferential  = 0,
                User          = user
            };
            await RmbCoinTransactionRepository.InsertAsync(transaction);

            user.RmbCoinTransactions.Add(transaction);

            IdentityResult result;

            result = await UserManager.UpdateAsync(user);

            if (!result.Succeeded)
            {
                return(result.ToOperationResult());
            }
            return(await UserRepository.UnitOfWork.SaveChangesAsync() > 0
                    ? new OperationResult(OperationResultType.Success, $"提款申请成功")
                    : OperationResult.NoChanged);
        }
Example #2
0
        public async Task <ActionResult> CreateWidthdraw(WidthdrawInfo info)
        {
            info.CheckNotNull(nameof(info));

            info.UserId = CurrentUser.Id;

            OperationResult result = await IdentityContract.Widthdraw(info);

            return(Json(result.ToAjaxResult()));
        }