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 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); } }
/// <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 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); } }
private WalletDbContext AddToContext <T>(WalletDbContext context, T entity, int count, int commitCount, bool recreateContext) where T : class { context.Set <T>().Add(entity); if (count % commitCount == 0) { context.SaveChanges(); if (recreateContext) { context.Dispose(); context = new WalletDbContext(DbContextOptionsFactory.DbContextOptions()); context.ChangeTracker.AutoDetectChangesEnabled = false; } } return(context); }
/// <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 EntityRepositoryBase(WalletDbContext dbContext) { DbContext = dbContext; DbSet = dbContext.Set <TEntity>(); }
public GenericRepository(WalletDbContext db) { Db = db; DbSet = Db.Set <TEntity>(); }