public OrderDepositRentInfo GetRentOrder(int merchantId, int posMachineId) { var merchant = CurrentDb.Merchant.Where(m => m.Id == merchantId).FirstOrDefault(); var merchantPosMachine = CurrentDb.MerchantPosMachine.Where(m => m.PosMachineId == posMachineId && m.MerchantId == merchantId).FirstOrDefault(); var orderToRent = CurrentDb.OrderToDepositRent.Where(m => m.MerchantId == merchantId && m.PosMachineId == posMachineId && m.ProductType == Enumeration.ProductType.PosMachineRent && m.Status == Enumeration.OrderStatus.WaitPay).FirstOrDefault(); CalculateRent calculateRent = new CalculateRent(merchantPosMachine.Rent); if (orderToRent == null) { orderToRent = new OrderToDepositRent(); orderToRent.MerchantId = merchant.Id; orderToRent.PosMachineId = posMachineId; orderToRent.UserId = merchantPosMachine.UserId; orderToRent.CreateTime = this.DateTime; orderToRent.Creator = 0; orderToRent.SubmitTime = this.DateTime; orderToRent.ProductType = Enumeration.ProductType.PosMachineRent; orderToRent.ProductName = Enumeration.ProductType.PosMachineRent.GetCnName(); orderToRent.ProductId = (int)Enumeration.ProductType.PosMachineRent; orderToRent.Deposit = 0; orderToRent.RentMonths = 3; orderToRent.MonthlyRent = calculateRent.MonthlyRent; orderToRent.RentTotal = calculateRent.GetRent(orderToRent.RentMonths); orderToRent.RentVersion = calculateRent.Version; orderToRent.Price = orderToRent.RentTotal; orderToRent.Status = Enumeration.OrderStatus.WaitPay; CurrentDb.OrderToDepositRent.Add(orderToRent); CurrentDb.SaveChanges(); orderToRent.Sn = Sn.Build(SnType.DepositRent, orderToRent.Id); CurrentDb.SaveChanges(); } OrderDepositRentInfo orderDepositRentInfo = new OrderDepositRentInfo(); orderDepositRentInfo.Id = orderToRent.Id; orderDepositRentInfo.Sn = orderToRent.Sn; orderDepositRentInfo.Product = orderToRent.ProductName; orderDepositRentInfo.ProductType = orderToRent.ProductType; orderDepositRentInfo.Status = orderToRent.Status; orderDepositRentInfo.StatusName = orderToRent.Status.GetCnName(); orderDepositRentInfo.MonthlyRent = calculateRent.MonthlyRent; orderDepositRentInfo.Remarks = calculateRent.Remark; orderDepositRentInfo.MerchantCode = merchant.ClientCode; orderDepositRentInfo.RentDueDate = merchantPosMachine.RentDueDate.ToUnifiedFormatDate(); return(orderDepositRentInfo); }
public CustomJsonResult Run() { CustomJsonResult result = new CustomJsonResult(); int operater = 0; using (TransactionScope ts = new TransactionScope()) { var posMachines = CurrentDb.PosMachine.Where(m => m.IsUse == false).ToList(); Log.InfoFormat("准备生成商户账号{0}个", posMachines.Count()); for (int i = 0; i < posMachines.Count; i++) { var sysClientUser = new SysClientUser(); sysClientUser.UserName = Guid.NewGuid().ToString().Replace("-", ""); sysClientUser.PasswordHash = PassWordHelper.HashPassword("888888"); sysClientUser.SecurityStamp = Guid.NewGuid().ToString(); sysClientUser.RegisterTime = this.DateTime; sysClientUser.CreateTime = this.DateTime; sysClientUser.Creator = operater; sysClientUser.ClientAccountType = Enumeration.ClientAccountType.MasterAccount; sysClientUser.Status = Enumeration.UserStatus.Normal; CurrentDb.SysClientUser.Add(sysClientUser); CurrentDb.SaveChanges(); var clientCode = CurrentDb.SysClientCode.Where(m => m.Id == sysClientUser.Id).FirstOrDefault(); if (clientCode == null) { Log.WarnFormat("生成商户账号{0}个", i + 1); throw new Exception("客户代码已经用完,请马上生成客户代码"); } sysClientUser.ClientCode = clientCode.Code; sysClientUser.UserName = clientCode.Code; var merchant = new Merchant(); merchant.ClientCode = clientCode.Code; merchant.UserId = sysClientUser.Id; merchant.CreateTime = this.DateTime; merchant.Creator = operater; merchant.Status = Enumeration.MerchantStatus.WaitFill; CurrentDb.Merchant.Add(merchant); CurrentDb.SaveChanges(); sysClientUser.MerchantId = merchant.Id; posMachines[i].IsUse = true; posMachines[i].LastUpdateTime = this.DateTime; posMachines[i].Mender = operater; CurrentDb.SaveChanges(); var bankCard = new BankCard(); bankCard.MerchantId = merchant.Id; bankCard.UserId = merchant.UserId; bankCard.CreateTime = this.DateTime; bankCard.Creator = operater; CurrentDb.BankCard.Add(bankCard); CurrentDb.SaveChanges(); var merchantPosMachine = new MerchantPosMachine(); merchantPosMachine.PosMachineId = posMachines[i].Id; merchantPosMachine.BankCardId = bankCard.Id; merchantPosMachine.UserId = sysClientUser.Id; merchantPosMachine.MerchantId = merchant.Id; merchantPosMachine.Status = Enumeration.MerchantPosMachineStatus.NoActive; merchantPosMachine.CreateTime = this.DateTime; merchantPosMachine.Creator = operater; merchantPosMachine.Deposit = posMachines[i].Deposit; merchantPosMachine.Rent = posMachines[i].Rent; CurrentDb.MerchantPosMachine.Add(merchantPosMachine); CurrentDb.SaveChanges(); var fund = new Fund(); fund.UserId = sysClientUser.Id; fund.Arrearage = 0; fund.Balance = 0; fund.CreateTime = this.DateTime; fund.Creator = operater; fund.MerchantId = merchant.Id; CurrentDb.Fund.Add(fund); CurrentDb.SaveChanges(); var orderToDepositRent = new OrderToDepositRent(); orderToDepositRent.MerchantId = merchant.Id; orderToDepositRent.PosMachineId = posMachines[i].Id; orderToDepositRent.UserId = sysClientUser.Id; orderToDepositRent.CreateTime = this.DateTime; orderToDepositRent.Creator = 0; orderToDepositRent.SubmitTime = this.DateTime; orderToDepositRent.ProductType = Enumeration.ProductType.PosMachineDepositRent; orderToDepositRent.ProductName = Enumeration.ProductType.PosMachineDepositRent.GetCnName(); orderToDepositRent.ProductId = (int)Enumeration.ProductType.PosMachineDepositRent; orderToDepositRent.Deposit = posMachines[i].Deposit; CalculateRent calculateRent = new CalculateRent(merchantPosMachine.Rent); orderToDepositRent.RentMonths = 3; orderToDepositRent.MonthlyRent = calculateRent.MonthlyRent; orderToDepositRent.RentVersion = calculateRent.Version; orderToDepositRent.RentTotal = calculateRent.GetRent(orderToDepositRent.RentMonths); orderToDepositRent.Price = posMachines[i].Deposit + orderToDepositRent.RentTotal; orderToDepositRent.Status = Enumeration.OrderStatus.WaitPay; CurrentDb.OrderToDepositRent.Add(orderToDepositRent); CurrentDb.SaveChanges(); orderToDepositRent.Sn = Sn.Build(SnType.DepositRent, orderToDepositRent.Id); CurrentDb.SaveChanges(); Log.InfoFormat("生成商户账号:{0},对应POS机DeviceId:{1}", clientCode.Code, posMachines[i].DeviceId); } ts.Complete(); Log.InfoFormat("生成商户账号{0}个", posMachines.Count()); } return(result); }