using System; using System.Collections.Generic; using System.Threading; using System.Linq; using System.Data; using MySystem; using MySystem.PxcModels; using Library; public class RedPackageHelper { public readonly static RedPackageHelper Instance = new RedPackageHelper(); private RedPackageHelper() { } public void Start() { Thread th = new Thread(DoWorks); th.IsBackground = true; th.Start(); } private void DoWorks() { while (true) { if (DateTime.Now.Hour >= 3 && DateTime.Now.Hour <= 5) { string ActivityDate = DateTime.Now.ToString("yyyyMMdd"); string check = function.ReadInstance("/Activity/RedPackage/" + ActivityDate + ".txt"); if (string.IsNullOrEmpty(check)) { function.WritePage("/Activity/RedPackage/", ActivityDate + ".txt", DateTime.Now.ToString()); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "生成指定未领取红包日志"); WebCMSEntities db = new WebCMSEntities(); try { decimal TotalPrize = 888.88M; DateTime start = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 22:00:00"); DateTime today = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00"); string PreDate = DateTime.Now.AddDays(-1).ToString("yyyyMMdd"); List list = new List(); list.Add(88.88M); TotalPrize -= 88.88M; for (int i = 1; i < 300; i++) { list.Add(0.88M); TotalPrize -= 0.88M; } for (int i = 0; i < 300; i++) { if (TotalPrize > 0) { int BigPrize = function.get_Random(1, 300); decimal PrizeAmt = (decimal)function.get_Random(88, 400) / 100M; if (TotalPrize > PrizeAmt) { list[BigPrize] += PrizeAmt; TotalPrize -= PrizeAmt; } else { list[BigPrize] += TotalPrize; TotalPrize = 0; } } else { break; } } foreach (decimal PrizeAmt in list) { db.ActivityRedPackageStock.Add(new ActivityRedPackageStock() { CreateDate = DateTime.Now, PrizeAmt = PrizeAmt, ActivityDate = ActivityDate, }); } db.SaveChanges(); } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "生成指定未领取红包异常"); } db.Dispose(); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "生成指定未领取红包日志"); } } Thread.Sleep(60000); } } public void StartStatTop10() { Thread th = new Thread(StartStatTop10Do); th.IsBackground = true; th.Start(); } private void StartStatTop10Do() { while (true) { OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString(); OtherMySqlConn.op("delete from ActivityRedPackageTop10"); using (WebCMSEntities db = new WebCMSEntities()) { DataTable dt = OtherMySqlConn.dtable("select UserId,sum(PrizeAmt) from ActivityRedPackageJoins group by UserId order by sum(PrizeAmt) desc"); int index = 0; foreach (DataRow dr in dt.Rows) { index += 1; int UserId = int.Parse(dr["UserId"].ToString()); decimal PrizeAmt = decimal.Parse(dr[1].ToString()); db.ActivityRedPackageTop10.Add(new ActivityRedPackageTop10() { Sort = index, UserId = UserId, PrizeAmt = PrizeAmt, Kind = 1, }); } dt = OtherMySqlConn.dtable("select UserId,count(Id) from ActivityRedPackageJoins group by UserId order by count(Id) desc"); index = 0; foreach (DataRow dr in dt.Rows) { index += 1; int UserId = int.Parse(dr["UserId"].ToString()); int PrizeCount = int.Parse(dr[1].ToString()); db.ActivityRedPackageTop10.Add(new ActivityRedPackageTop10() { Sort = index, UserId = UserId, TimeNum = PrizeCount, Kind = 2, }); } db.SaveChanges(); } Thread.Sleep(60000); } } }