/// <summary> /// 提现申请 /// </summary> /// <returns></returns> public bool AuditApply(Guid id) { using (var dbContext = new WalletDbContext()) { CrashApply crashApply = dbContext.CrashApplys.FirstOrDefault(c => c.Id == id); if (crashApply == null) { throw new Exception("找不到提现的记录"); } crashApply.ApplyState = ApplyState.ApplyPassed; crashApply.AuditTime = DateTime.Now; dbContext.Set <CrashApply>().Attach(crashApply); dbContext.Entry(crashApply).State = EntityState.Modified; Models.Wallet wallet = GetWalletByMemberId(crashApply.MemberId); if (wallet == null) { throw new Exception("钱包是空的"); } else if (crashApply.Money > wallet.Frozen) { throw new Exception("提现的金额不能大于冻结的金额"); } return(dbContext.SaveChanges() > 0); } }
public bool Thaw(string memberId, WalletType walletType, decimal money, string remark, out string error) { error = string.Empty; if (money == 0) { return(true); } using (var dbContext = new WalletDbContext()) { var wallet = dbContext.Set <Models.Wallet>() .FirstOrDefault(w => w.WalletType == walletType && w.MemberId.Equals(memberId, StringComparison.OrdinalIgnoreCase)); if (wallet == null) { error = "冻结金额不足"; return(false); } else { if (wallet.Frozen < money) { error = "冻结金额不足"; return(false); } wallet.Available += money; wallet.Frozen -= money; dbContext.Set <Models.Wallet>().Attach(wallet); dbContext.Entry(wallet).State = EntityState.Modified; } dbContext.SaveChanges(); return(true); } }
public async Task <PaymentMethod> Handle(UpdatePaymentMethodCommand request, CancellationToken cancellationToken) { var entity = _context.PaymentMethods.SingleOrDefault(b => b.ID == request.ID); if (entity == null) { return(new PaymentMethod { ID = 0, statusCode = SharedStatusCodes.NotFound }); } if (entity.Name != request.Name) { entity.Name = request.Name; } if (entity.Icon != request.Icon) { entity.Icon = request.Icon; } if (request.ExternalCharges != null) { entity.ExternalCharges = request.ExternalCharges; } if (request.InternalCharges != null) { entity.InternalCharges = request.InternalCharges; } if (request.AllowDeposit != null) { entity.AllowDeposit = request.AllowDeposit; } if (request.AllowTransfer != null) { entity.AllowTransfer = request.AllowTransfer; } if (request.AllowWithdrawal != null) { entity.AllowWithdrawal = request.AllowWithdrawal; } if (!_context.Entry(entity).Context.ChangeTracker.HasChanges()) { entity.statusCode = SharedStatusCodes.Unchanged; return(entity); } if (await _context.SaveChangesAsync(cancellationToken) > 0) { entity.statusCode = SharedStatusCodes.Updated; } else { entity.statusCode = SharedStatusCodes.Failed; } return(entity); }
public bool Draw(string memberId, WalletType walletType, decimal money, string remark, out string error, string tag = null, string toMemberId = null, bool drawFrozen = false) { error = string.Empty; if (money == 0) { return(true); } using (var dbContext = new WalletDbContext()) { var wallet = dbContext.Set <Models.Wallet>() .FirstOrDefault(w => w.WalletType == walletType && w.MemberId == memberId); if (drawFrozen) { if (wallet == null || wallet.Frozen < money) { error = "冻结余额不足"; return(false); } wallet.Frozen -= money; } else { if (wallet == null || wallet.Available < money) { error = "余额不足"; return(false); } wallet.Available -= money; } dbContext.Set <Models.Wallet>().Attach(wallet); dbContext.Entry(wallet).State = EntityState.Modified; WalletBill walletBill = new WalletBill(); walletBill.Id = KeyGenerator.GetGuidKey(); walletBill.MemberId = memberId; walletBill.BillType = BillType.TakeOut; walletBill.WalletType = walletType; walletBill.Money = money; walletBill.Remark = remark; walletBill.BillTag = tag; walletBill.CreateTime = DateTime.Now; walletBill.FromMemberId = toMemberId; dbContext.WalletBills.Add(walletBill); dbContext.SaveChanges(); return(true); } }
public async Task <Currency> Handle(UpdateCurrencyCommand request, CancellationToken cancellationToken) { var currencyEntity = _context.Currencies.SingleOrDefault(b => b.ID == request.ID); if (currencyEntity == null) { return(new Currency { ID = 0, statusCode = SharedStatusCodes.NotFound }); } if (request.Name != null) { currencyEntity.Name = request.Name; } if (request.Code != null) { currencyEntity.Code = request.Code; } if (request.Symbol != null) { currencyEntity.Symbol = request.Symbol; } if (request.AddOnRegistration != null && request.AddOnRegistration == true) { foreach (var crr in _context.Currencies.Where(x => x.AddOnRegistration == true).ToList()) { crr.AddOnRegistration = false; } currencyEntity.AddOnRegistration = request.AddOnRegistration; } if (!_context.Entry(currencyEntity).Context.ChangeTracker.HasChanges()) { currencyEntity.statusCode = SharedStatusCodes.Unchanged; return(currencyEntity); } if (await _context.SaveChangesAsync(cancellationToken) > 0) { currencyEntity.statusCode = SharedStatusCodes.Updated; } else { currencyEntity.statusCode = SharedStatusCodes.Failed; } return(currencyEntity); }
public async Task <CategoryModel> UpdateCategory(int id, CategoryDto category) { var categoryModel = await context.Category.Where(c => c.id == id).FirstOrDefaultAsync(); if (categoryModel == null) { throw new Exception("Nie ma kategorii o tym ID"); } context.Entry(categoryModel).CurrentValues.SetValues(category); await context.SaveChangesAsync(); return(categoryModel); }
public async Task <Recipient> Handle(UpdateRecipientCommand request, CancellationToken cancellationToken) { var recipientEntity = _context.Recipients.SingleOrDefault(b => b.ID == request.ID); if (recipientEntity == null) { return(new Recipient { ID = 0, statusCode = SharedStatusCodes.NotFound }); } if (recipientEntity.FirstName != request.FirstName) { recipientEntity.FirstName = request.FirstName; } if (recipientEntity.LastName != request.LastName) { recipientEntity.LastName = request.LastName; } if (request.Email != null) { recipientEntity.Email = request.Email; } if (request.Phone != null) { recipientEntity.Phone = request.Phone; } if (!_context.Entry(recipientEntity).Context.ChangeTracker.HasChanges()) { recipientEntity.statusCode = SharedStatusCodes.Unchanged; return(recipientEntity); } if (await _context.SaveChangesAsync(cancellationToken) > 0) { recipientEntity.statusCode = SharedStatusCodes.Updated; } else { recipientEntity.statusCode = SharedStatusCodes.Failed; } return(recipientEntity); }
public async Task <Country> Handle(UpdateCountryCommand request, CancellationToken cancellationToken) { var entity = _context.Countries.SingleOrDefault(b => b.ID == request.ID); if (entity == null) { return(new Country { ID = 0, statusCode = SharedStatusCodes.NotFound }); } if (request.DefaultCurrencyID != null) { entity.DefaultCurrencyID = request.DefaultCurrencyID; } if (request.Name != null) { entity.Name = request.Name; } if (request.Code != null) { entity.Code = request.Code; } if (request.PhoneCode != null) { entity.PhoneCode = request.PhoneCode; } if (!_context.Entry(entity).Context.ChangeTracker.HasChanges()) { entity.statusCode = SharedStatusCodes.Unchanged; return(entity); } if (await _context.SaveChangesAsync(cancellationToken) > 0) { entity.statusCode = SharedStatusCodes.Updated; } else { entity.statusCode = SharedStatusCodes.Failed; } return(entity); }
public bool Deposit(string memberId, WalletType walletType, decimal money, string remark, out string error, string tag = null, string fromMemberId = null) { error = string.Empty; if (money == 0) { return(true); } using (var dbContext = new WalletDbContext()) { var wallet = dbContext.Set <Models.Wallet>() .FirstOrDefault(w => w.WalletType == walletType && w.MemberId.Equals(memberId, StringComparison.OrdinalIgnoreCase)); if (wallet == null) { wallet = new Models.Wallet(); wallet.Id = KeyGenerator.GetGuidKey(); wallet.MemberId = memberId; wallet.WalletType = walletType; wallet.Frozen = 0; wallet.Available = money; dbContext.Wallets.Add(wallet); } else { wallet.Available += money; dbContext.Set <Models.Wallet>().Attach(wallet); dbContext.Entry(wallet).State = EntityState.Modified; } WalletBill walletBill = new WalletBill(); walletBill.Id = KeyGenerator.GetGuidKey(); walletBill.MemberId = memberId; walletBill.BillType = BillType.TakeIn; walletBill.WalletType = walletType; walletBill.Money = money; walletBill.Remark = remark; walletBill.BillTag = tag; walletBill.CreateTime = DateTime.Now; walletBill.FromMemberId = fromMemberId; dbContext.WalletBills.Add(walletBill); dbContext.SaveChanges(); return(true); } }
public async Task <SavedCard> Handle(UpdateSavedCardCommand request, CancellationToken cancellationToken) { var cardEntity = _context.SavedCards.SingleOrDefault(b => b.ID == request.ID); if (cardEntity == null) { return(new SavedCard { ID = 0, statusCode = SharedStatusCodes.NotFound }); } if (cardEntity.MaskedNumber != request.MaskedNumber) { cardEntity.MaskedNumber = request.MaskedNumber; } if (cardEntity.CardType != request.CardType) { cardEntity.CardType = request.CardType; } if (cardEntity.ExpiryDate != request.ExpiryDate) { cardEntity.ExpiryDate = request.ExpiryDate; } if (!_context.Entry(cardEntity).Context.ChangeTracker.HasChanges()) { cardEntity.statusCode = SharedStatusCodes.Unchanged; return(cardEntity); } if (await _context.SaveChangesAsync(cancellationToken) > 0) { cardEntity.statusCode = SharedStatusCodes.Updated; } else { cardEntity.statusCode = SharedStatusCodes.Failed; } return(cardEntity); }
/// <summary> /// 申请提现 /// </summary> public bool ApplyCrash(string memberId, string account, decimal money, PaymentType paymentType, string name) { using (var dbContext = new WalletDbContext()) { CrashApply crashApply = new CrashApply(); crashApply.Id = KeyGenerator.GetGuidKey(); crashApply.MemberId = memberId; crashApply.Account = account; crashApply.TransactionNo = KeyGenerator.GetOrderNumber(); crashApply.RealName = name; crashApply.Money = money; crashApply.PaymentType = paymentType; crashApply.ApplyState = ApplyState.Applying; crashApply.CreateTime = DateTime.Now; dbContext.CrashApplys.Add(crashApply); if (paymentType == PaymentType.WeiXin) { //判断是否绑定了微信 } Models.Wallet wallet = GetWalletByMemberId(memberId); if (wallet == null) { throw new WebApiInnerException("0003", "钱包没有可以提现的余额"); } else { if (money > wallet.Available) { throw new WebApiInnerException("0004", "提现的金额不能大于钱包的余额"); } wallet.Frozen += money; wallet.Available -= money; } dbContext.Set <Models.Wallet>().Attach(wallet); dbContext.Entry(wallet).State = EntityState.Modified; return(dbContext.SaveChanges() > 0); } }
public async Task <TransactionModel> UpdateTransaction(int id, TransactionDto transaction) { TransactionModel transactionModel = await context.Transaction.Where(t => t.id == id).FirstOrDefaultAsync(); CategoryModel category = await context.Category.Where(c => c.id == transaction.categoryId).FirstOrDefaultAsync(); if (category == null) { throw new Exception("Brak kategorii transakcji"); } if (transactionModel == null) { throw new Exception("Brak transakcji o tym ID"); } context.Entry(transactionModel).CurrentValues.SetValues(transaction); await context.SaveChangesAsync(); return(transactionModel); }
public async Task <WalletAccount> Handle(UpdateWalletAccountCommand request, CancellationToken cancellationToken) { var walletAccountEntity = _context.WalletAccounts.SingleOrDefault(b => b.ID == request.ID); if (walletAccountEntity == null) { return(new WalletAccount { ID = 0, statusCode = SharedStatusCodes.NotFound }); } if (walletAccountEntity.Name != request.Name) { walletAccountEntity.Name = request.Name; } if (request.WalletAccountCategoryID != null) { walletAccountEntity.WalletAccountCategoryID = request.WalletAccountCategoryID; } if (!_context.Entry(walletAccountEntity).Context.ChangeTracker.HasChanges()) { walletAccountEntity.statusCode = SharedStatusCodes.Unchanged; return(walletAccountEntity); } if (await _context.SaveChangesAsync(cancellationToken) > 0) { walletAccountEntity.statusCode = SharedStatusCodes.Updated; } else { walletAccountEntity.statusCode = SharedStatusCodes.Failed; } return(walletAccountEntity); }
public async Task <User> Handle(RegisterUserCommand request, CancellationToken cancellationToken) { var entity = _context.Users.SingleOrDefault(b => b.Email == request.Email); if (entity != null) { entity.statusCode = SharedStatusCodes.Exists; return(entity); } // Create User Entity User user_entity = new User { CountryID = request.CountryID, FirstName = request.FirstName, LastName = request.LastName, Email = request.Email, Phone = request.Phone, Password = request.Password, DateOfBirth = request.DateOfBirth, AddressLine1 = request.AddressLine1, AddressLine2 = request.AddressLine2, IsActive = false }; _context.Users.Add(user_entity); try { if (await _context.SaveChangesAsync(cancellationToken) > 0) { try { _context.Entry(user_entity).GetDatabaseValues(); // Create WalletAccount Entity var defaultWalletCategory = new WalletAccountCategory().GetWalletAccountCategory(_context); WalletAccount wallet_account_entity = new WalletAccount { UserID = user_entity.ID, CurrencyID = request.CurrencyID, WalletAccountCategoryID = defaultWalletCategory.ID, WalletAccountCode = WalletAccount.generateWalletAccountCode(user_entity.ID), Name = defaultWalletCategory.Name, Balance = 0, IsDefault = true }; _context.WalletAccounts.Add(wallet_account_entity); if (await _context.SaveChangesAsync(cancellationToken) > 0) { user_entity.statusCode = SharedStatusCodes.Created; } else { _context.Users.Remove(user_entity); await _context.SaveChangesAsync(cancellationToken); user_entity.statusCode = SharedStatusCodes.Failed; } } catch (Exception) { _context.Users.Remove(user_entity); await _context.SaveChangesAsync(cancellationToken); user_entity.statusCode = SharedStatusCodes.Failed; } } } catch (Exception) { user_entity.statusCode = SharedStatusCodes.Failed; } return(user_entity); }
public async Task <BankAccount> Handle(UpdateBankAccountCommand request, CancellationToken cancellationToken) { var entity = _context.BankAccounts.SingleOrDefault(b => b.ID == request.ID); if (entity == null) { return(new BankAccount { ID = 0, statusCode = SharedStatusCodes.NotFound }); } if (!string.IsNullOrEmpty(request.Beneficiary)) { entity.Beneficiary = request.Beneficiary; } if (!string.IsNullOrEmpty(request.Name)) { entity.Name = request.Name; } if (!string.IsNullOrEmpty(request.Number)) { entity.Number = request.Number; } if (!string.IsNullOrEmpty(request.IBANumber)) { entity.IBANumber = request.IBANumber; } if (!string.IsNullOrEmpty(request.SwiftCode)) { entity.SwiftCode = request.SwiftCode; } if (!string.IsNullOrEmpty(request.Currency)) { entity.Currency = request.Currency; } if (!string.IsNullOrEmpty(request.AddressLine1)) { entity.AddressLine1 = request.AddressLine1; } if (!string.IsNullOrEmpty(request.AddressLine2)) { entity.AddressLine2 = request.AddressLine2; } if (!string.IsNullOrEmpty(request.City)) { entity.City = request.City; } if (!string.IsNullOrEmpty(request.Country)) { entity.Country = request.Country; } if (request.IsDefault) { foreach (var crr in _context.BankAccounts.Where(x => x.UserID == request.UserID).ToList()) { crr.IsDefault = false; } } entity.IsDefault = request.IsDefault; if (!_context.Entry(entity).Context.ChangeTracker.HasChanges()) { entity.statusCode = SharedStatusCodes.Unchanged; return(entity); } if (await _context.SaveChangesAsync(cancellationToken) > 0) { entity.statusCode = SharedStatusCodes.Updated; } else { entity.statusCode = SharedStatusCodes.Failed; } return(entity); }