/// <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); }
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())); }