using System; using System.Collections.Generic; using System.Threading; using System.Linq; using System.Data; using MySystem; using MySystem.PxcModels; using Library; using LitJson; public class UserMonthFeeHelper { public readonly static UserMonthFeeHelper Instance = new UserMonthFeeHelper(); private UserMonthFeeHelper() { } public void Start() { Thread th = new Thread(DoWorks); th.IsBackground = true; th.Start(); } private void DoWorks() { while (true) { try { string content = RedisDbconn.Instance.RPop("UserMonthFeeQueue"); if(!string.IsNullOrEmpty(content)) { if(content == "end") { RedisDbconn.Instance.AddList("PosExpiredPayQueue", "1"); } else { WebCMSEntities db = new WebCMSEntities(); DoSomething(db, int.Parse(content)); db.Dispose(); } } else { Thread.Sleep(60000); } } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "创客每月月费扣款异常"); } function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "创客每月月费扣款日志"); } } public void DoSomething(WebCMSEntities db, int UserId) { DateTime Start = DateTime.Parse(DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00"); DateTime WithoutStart = DateTime.Parse("2023-02-20 00:00:00"); //收支明细服务费记录开始时间 UserAccount User = db.UserAccount.FirstOrDefault(m => m.Id == UserId && m.BalanceAmount > 0); if(User != null) { bool check = db.UserAccountRecord.Any(m => m.UserId == User.Id && m.CreateDate >= Start && m.CreateDate >= WithoutStart && m.ChangeType == 125); if(!check) { if(User.BalanceAmount > 10) { AlipayPayBack2Service.Instance.ChangeAccount(db, new Orders(), User.Id, -10, 125); } else { AlipayPayBack2Service.Instance.ChangeAccount(db, new Orders(), User.Id, -User.BalanceAmount, 125); } } } } public void Start2() { Thread th = new Thread(DoWorks2); th.IsBackground = true; th.Start(); } private void DoWorks2() { while (true) { try { if(DateTime.Now.Hour == 1 && DateTime.Now < DateTime.Parse("2023-02-20 00:00:00")) { string check = function.ReadInstance("/UserMonthFee/" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt"); if(string.IsNullOrEmpty(check)) { function.WritePage("/UserMonthFee/", DateTime.Now.ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString("HH:mm:ss")); WebCMSEntities db = new WebCMSEntities(); DoSomething2(db); db.Dispose(); } } } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "创客每月月费补扣款异常"); } function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "创客每月月费补扣款日志"); Thread.Sleep(60000); } } public void DoSomething2(WebCMSEntities db) { DateTime Start = DateTime.Parse("2023-01-19 00:00:00"); //收支明细服务费记录开始时间 // DateTime ExpireDate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00").AddDays(-90); //创客认证超过90天比对时间 // //超过90天创客ID集合 // List UserIds = db.Users.Where(m => m.AuthFlag == 1 && m.AuthDate < ExpireDate).ToList().Select(m => m.Id).ToList(); List UserIds = new List(); UserIds.Add(311); UserIds.Add(3057); UserIds.Add(3061); UserIds.Add(12122); UserIds.Add(36591); UserIds.Add(39115); UserIds.Add(43435); UserIds.Add(47763); UserIds.Add(56954); UserIds.Add(63674); UserIds.Add(69804); UserIds.Add(70203); UserIds.Add(72356); UserIds.Add(74571); UserIds.Add(75261); UserIds.Add(79265); UserIds.Add(80363); UserIds.Add(80579); UserIds.Add(80639); UserIds.Add(80856); UserIds.Add(88455); UserIds.Add(88494); UserIds.Add(99635); UserIds.Add(100934); UserIds.Add(109518); UserIds.Add(120692); UserIds.Add(120896); UserIds.Add(122704); UserIds.Add(123101); UserIds.Add(124776); UserIds.Add(124822); UserIds.Add(124875); UserIds.Add(125094); UserIds.Add(125720); UserIds.Add(125969); UserIds.Add(126346); UserIds.Add(126781); UserIds.Add(126897); UserIds.Add(127469); UserIds.Add(127515); UserIds.Add(127645); UserIds.Add(128851); UserIds.Add(128969); UserIds.Add(129039); UserIds.Add(129061); UserIds.Add(129153); UserIds.Add(129220); UserIds.Add(129277); UserIds.Add(129307); UserIds.Add(129405); UserIds.Add(129434); UserIds.Add(129436); UserIds.Add(129443); UserIds.Add(129519); UserIds.Add(129659); UserIds.Add(129762); UserIds.Add(129914); UserIds.Add(129949); UserIds.Add(129980); UserIds.Add(130182); UserIds.Add(130307); UserIds.Add(130342); UserIds.Add(130546); UserIds.Add(130778); UserIds.Add(130837); UserIds.Add(131077); UserIds.Add(131879); UserIds.Add(132140); UserIds.Add(132567); UserIds.Add(132572); UserIds.Add(132936); UserIds.Add(133205); UserIds.Add(133216); UserIds.Add(133522); UserIds.Add(133649); UserIds.Add(133798); UserIds.Add(134112); UserIds.Add(134150); UserIds.Add(134307); UserIds.Add(134310); UserIds.Add(134318); UserIds.Add(134321); UserIds.Add(134522); UserIds.Add(134571); UserIds.Add(134840); UserIds.Add(134863); UserIds.Add(135039); UserIds.Add(135327); UserIds.Add(135434); UserIds.Add(135459); UserIds.Add(135475); UserIds.Add(135498); UserIds.Add(135590); UserIds.Add(135606); UserIds.Add(135719); UserIds.Add(135835); UserIds.Add(135877); UserIds.Add(135906); UserIds.Add(135924); UserIds.Add(136122); UserIds.Add(136346); UserIds.Add(136458); UserIds.Add(136581); UserIds.Add(136587); UserIds.Add(136700); UserIds.Add(136707); UserIds.Add(136980); UserIds.Add(137055); UserIds.Add(137123); UserIds.Add(137228); UserIds.Add(137313); UserIds.Add(137459); UserIds.Add(137468); UserIds.Add(137532); UserIds.Add(137617); UserIds.Add(138055); UserIds.Add(138074); UserIds.Add(138183); UserIds.Add(138275); UserIds.Add(138288); UserIds.Add(138359); UserIds.Add(138362); UserIds.Add(138440); UserIds.Add(138460); UserIds.Add(138581); UserIds.Add(138682); UserIds.Add(139109); UserIds.Add(139118); UserIds.Add(139172); UserIds.Add(139455); UserIds.Add(139517); UserIds.Add(139530); UserIds.Add(139890); UserIds.Add(140120); UserIds.Add(140274); UserIds.Add(140381); UserIds.Add(140397); UserIds.Add(140406); UserIds.Add(140522); UserIds.Add(140539); UserIds.Add(140540); UserIds.Add(140749); UserIds.Add(140753); UserIds.Add(140764); UserIds.Add(141057); UserIds.Add(141109); UserIds.Add(141406); UserIds.Add(141494); UserIds.Add(141892); UserIds.Add(141918); UserIds.Add(141951); UserIds.Add(141980); //已扣费创客ID集合 List UserAccountRecordIds = db.UserAccountRecord.Where(m => UserIds.Contains(m.UserId) && m.CreateDate >= Start && m.ChangeType == 125).ToList().Select(m => m.UserId).ToList(); //应该扣除而未扣的创客集合 var Users = db.UserAccount.Select(m => new { m.Id, m.BalanceAmount }).Where(m => !UserAccountRecordIds.Contains(m.Id) && UserIds.Contains(m.Id) && m.BalanceAmount >= 10).ToList(); foreach(var User in Users) { AlipayPayBack2Service.Instance.ChangeAccount(db, new Orders(), User.Id, -10, 125); //执行扣费 } } }