public CustomJsonResult Run() { CustomJsonResult result = new CustomJsonResult(); var merchantPosMachines = CurrentDb.MerchantPosMachine.Where(m => m.ExpiryTime < DateTime.Now).ToList(); Log.InfoFormat("到期的机器数量有:{0}", merchantPosMachines.Count); foreach (var merchantPosMachine in merchantPosMachines) { merchantPosMachine.Status = Enumeration.MerchantPosMachineStatus.Expiry; var orderToServiceFee = CurrentDb.OrderToServiceFee.Where(m => m.Status == Enumeration.OrderStatus.WaitPay && m.Type == Entity.Enumeration.OrderType.PosMachineServiceFee && m.UserId == merchantPosMachine.UserId && m.MerchantId == merchantPosMachine.MerchantId && m.PosMachineId == merchantPosMachine.PosMachineId).FirstOrDefault(); if (orderToServiceFee == null) { CalculateServiceFee calculateServiceFee = new CalculateServiceFee(); orderToServiceFee = new OrderToServiceFee(); orderToServiceFee.MerchantId = merchantPosMachine.MerchantId; orderToServiceFee.PosMachineId = merchantPosMachine.PosMachineId; orderToServiceFee.UserId = merchantPosMachine.UserId; orderToServiceFee.SubmitTime = this.DateTime; orderToServiceFee.Type = Enumeration.OrderType.PosMachineServiceFee; orderToServiceFee.TypeName = Enumeration.OrderType.PosMachineServiceFee.GetCnName(); orderToServiceFee.Deposit = 0; orderToServiceFee.MobileTrafficFee = calculateServiceFee.MobileTrafficFee; orderToServiceFee.PriceVersion = calculateServiceFee.Version; orderToServiceFee.Price = calculateServiceFee.MobileTrafficFee; orderToServiceFee.Status = Enumeration.OrderStatus.WaitPay; orderToServiceFee.CreateTime = this.DateTime; orderToServiceFee.Creator = 0; CurrentDb.OrderToServiceFee.Add(orderToServiceFee); CurrentDb.SaveChanges(); SnModel snModel = Sn.Build(SnType.OrderToServiceFee, orderToServiceFee.Id); orderToServiceFee.Sn = snModel.Sn; orderToServiceFee.TradeSnByWechat = snModel.TradeSnByWechat; orderToServiceFee.TradeSnByAlipay = snModel.TradeSnByAlipay; Log.InfoFormat("生成待支付订单号:{0}", orderToServiceFee.Sn); } SysFactory.SysItemCacheUpdateTime.UpdateUser(orderToServiceFee.UserId); CurrentDb.SaveChanges(); } return(result); }
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); }