using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading; using MySystem.Models; using Library; namespace MySystem { /// /// 过期购买机具循环截止时间超过15天激活扣费退还 /// public class TimeOutPosChargeReturnService { public readonly static TimeOutPosChargeReturnService Instance = new TimeOutPosChargeReturnService(); private TimeOutPosChargeReturnService() { } public void Start() { Thread th = new Thread(doSomething); th.IsBackground = true; th.Start(); } public void doSomething() { while (true) { if (DateTime.Now.Hour < 18) { try { string check = function.ReadInstance("/TimeOutPosChargeReturn/check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt"); if (string.IsNullOrEmpty(check)) { function.WritePage("/TimeOutPosChargeReturn/", "check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString("HH:mm:ss")); WebCMSEntities db = new WebCMSEntities(); var date = DateTime.Parse(DateTime.Now.AddDays(-15).ToString("yyyy-MM-dd 00:00:00"));//过期限制时间 var query = db.PosMachinesTwo.Where(m => m.Status > -1 && m.BuyUserId > 0 && m.PosSnType == 1 && m.BindingState == 1 && m.ActivationState == 1 && m.RecycEndDate < date).ToList();//循环过期超过15天激活机具 var brandInfo = db.KqProducts.ToList(); foreach (var pos in query) { var Brand = brandInfo.FirstOrDefault(m => m.Id == pos.BrandId); var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new UserAccount(); var amount = 0; if (Brand.Name.Contains("电签")) { amount = 200; } if (Brand.Name.Contains("大POS")) { amount = 300; } var userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord { CreateDate = DateTime.Now, UserId = pos.BuyUserId, BeforeBalanceAmount = userAccount.BalanceAmount, AfterBalanceAmount = userAccount.BalanceAmount + amount, ChangeAmount = amount, ChangeType = 126,//过期购买机具超过15天激活扣费退还 Remark = "机具货款退还", }).Entity; userAccount.BalanceAmount += amount; db.SaveChanges(); } } } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "过期购买机具超过15天激活扣费退还"); } } Thread.Sleep(1000); } } } }