private void Charge(User user, string number, decimal vouchers, string description, int gameId) { var log = db.AccountVouchersLog.FirstOrDefault(a => a.Number == number); if (log != null) { throw new Exception(String.Format("订单号{0}已经处理过,Description:{1},Vouchers:{2}", number, description, vouchers)); } //生成账户记录 AccountVouchersLog accountLog = new AccountVouchersLog() { Account = user.Account, AccountId = user.Id, Before = user.Account.Vouchers, After = user.Account.Vouchers + vouchers, Vouchers = vouchers, Description = description, CreateTime = DateTime.Now, Number = number, Type = AccountVouchersLogType.Charge, DetailId = gameId }; db.AccountVouchersLog.Add(accountLog); //修改账户余额 var userData = db.Users.Where(u => u.Id == user.Id).FirstOrDefault(); userData.Account.Vouchers += vouchers; db.SaveChanges(); }
public JsonResult CreateOrder(int gameId, int count, int gameResult) { int fee = 20 * count; if (CurrentUser == null) { return(Json(new { success = false, msg = "未登录" })); } if (CurrentUser.Account.Vouchers < fee) { return(Json(new { success = false, msg = "余额不足,微信联系客服mytokenera进行充值" })); } int userId = CurrentUser.Id; var game = _db.Games.Find(gameId); var gameOrder = new GameOrders { GameCount = count, GameId = gameId, UserId = userId, Number = Utils.GetOrderNumber(), GameOrderStatus = (GameOrderStatus)gameResult, CreateTime = DateTime.Now }; _db.GameOrders.Add(gameOrder); _db.SaveChanges(); string resultStr = ""; if (gameOrder.GameOrderStatus == GameOrderStatus.Win) { resultStr = "主胜"; } else if (gameOrder.GameOrderStatus == GameOrderStatus.Ping) { resultStr = "平"; } else if (gameOrder.GameOrderStatus == GameOrderStatus.Lose) { resultStr = "客胜"; } AccountVouchersLog log = new AccountVouchersLog() { Account = CurrentUser.Account, AccountId = CurrentUser.Account.Id, Before = CurrentUser.Account.Vouchers, After = CurrentUser.Account.Vouchers - fee, CreateTime = DateTime.Now, Description = $"竞猜【{game.ZhuChang}】VS【{game.KeChang}】,{resultStr}{count}注,消耗{fee}积分", Vouchers = fee, Number = gameOrder.Number, DetailId = gameId, Type = AccountVouchersLogType.Pay, }; _db.AccountVouchersLog.Add(log); CurrentUser.Account.Vouchers -= fee; _db.SaveChanges(); return(Json(new { success = true })); }
public void Charge(User user, string number, decimal vouchers, string description, int gameId) { var log = db.AccountVouchersLog.FirstOrDefault(a => a.Number == number); if (log != null) { throw new Exception($"订单号{number}已经处理过,Description:{description},Vouchers:{vouchers}"); } //生成账户记录 AccountVouchersLog accountLog = new AccountVouchersLog() { Account = user.Account, AccountId = user.Id, Before = user.Account.Vouchers, After = user.Account.Vouchers + vouchers, Vouchers = vouchers, Description = description, CreateTime = DateTime.Now, Number = number, Type = AccountVouchersLogType.Income, DetailId = gameId }; db.AccountVouchersLog.Add(accountLog); //修改账户余额 var userData = db.Users.FirstOrDefault(u => u.Id == user.Id); if (userData != null) { userData.Account.Vouchers += vouchers; } db.SaveChanges(); }
public ActionResult InputTestOrders() { Random r = new Random(); foreach (var item in _db.Games) { for (int i = 0; i < 19; i++) { var randomUserId = r.Next(1, 50); var count = 1; var gameResult = r.Next(0, 3); var user = _db.Users.Where(u => u.Id == randomUserId).FirstOrDefault(); int fee = 20 * count; int userId = user.Id; var game = _db.Games.Find(item.Id); int day = r.Next(14, 20); int hour = r.Next(0, 24); int minute = r.Next(0, 60); int second = r.Next(0, 60); string tempStr = $"{DateTime.Now:yyyy}-{DateTime.Now:MM}-{day} {hour}:{minute}:{second}"; DateTime rTime = Convert.ToDateTime(tempStr); var gameOrder = new GameOrders { GameCount = count, GameId = item.Id, UserId = userId, Number = Utils.GetOrderNumber(), GameOrderStatus = (GameOrderStatus)gameResult, CreateTime = rTime }; _db.GameOrders.Add(gameOrder); string resultStr = ""; if (gameOrder.GameOrderStatus == GameOrderStatus.Win) { resultStr = "主胜"; } else if (gameOrder.GameOrderStatus == GameOrderStatus.Ping) { resultStr = "平"; } else if (gameOrder.GameOrderStatus == GameOrderStatus.Lose) { resultStr = "客胜"; } AccountVouchersLog log = new AccountVouchersLog() { Account = user.Account, AccountId = user.Account.Id, Before = user.Account.Vouchers, After = user.Account.Vouchers - fee, CreateTime = DateTime.Now, Description = $"竞猜【{game.ZhuChang}】VS【{game.KeChang}】,{resultStr}{count}注,消耗{fee}积分", Vouchers = fee, Number = gameOrder.Number, DetailId = item.Id, Type = AccountVouchersLogType.Pay, }; _db.AccountVouchersLog.Add(log); user.Account.Vouchers -= fee; } } _db.SaveChanges(); return(Content($"{DateTime.Now}生成订单成功")); }