using System; using System.Threading; using System.Linq; using System.Data; using Library; using MySystem.Models; using LitJson; using System.Collections.Generic; namespace MySystem { public class LeaderApplyCouponsHelper { public readonly static LeaderApplyCouponsHelper Instance = new LeaderApplyCouponsHelper(); private LeaderApplyCouponsHelper() { } public void Start()//启动 { Thread thread = new Thread(doSomething); thread.IsBackground = true; thread.Start(); } public void doSomething() { while (true) { string content = RedisDbconn.Instance.RPop("LeaderApplyCouponsQueue"); if (!string.IsNullOrEmpty(content)) { try { var Id = int.Parse(content); WebCMSEntities db = new WebCMSEntities(); var LeaderUserId = 0; var queryList = db.LeaderReserveRecord.FirstOrDefault(m => m.Id == Id) ?? new LeaderReserveRecord(); var userInfo = db.Users.FirstOrDefault(m => m.Id == queryList.UserId) ?? new Users(); if (userInfo.LeaderLevel == 2) { LeaderUserId = queryList.UserId; } else { string[] ParentNavList = userInfo.ParentNav.Trim(',').Replace(",,", ",").Split(','); for (int j = ParentNavList.Length; j > 0; j--) { int userId = int.Parse(ParentNavList[j-1]); var user = db.Users.FirstOrDefault(m => m.Id == userId) ?? new Users(); if (user.LeaderLevel == 2) { LeaderUserId = userId; break; } else { continue; } } } JsonData ApplyList = JsonMapper.ToObject(queryList.SeoTitle); var SnList = ""; for (int i = 0; i < ApplyList.Count; i++) { int num = Convert.ToInt32(ApplyList[i]["Num"].ToString()); int type = Convert.ToInt32(ApplyList[i]["Type"].ToString()); //电签 if (type == 1) { var dposCoupons = db.PosCoupons.Where(m => m.QueryCount == 1 && m.UserId == 0 && m.LeaderUserId == 0 && m.IsUse == 0 && m.IsLock == 0 && m.OpId == 0).Take(num).ToList();//电签券 foreach (var item in dposCoupons) { var posCoupon = db.PosCoupons.FirstOrDefault(m => m.Id == item.Id) ?? new PosCoupons(); posCoupon.UserId = queryList.UserId; posCoupon.LeaderUserId = LeaderUserId; SnList += posCoupon.ExchangeCode + ","; } } //大机 if (type == 2) { var bposCoupons = db.PosCoupons.Where(m => m.QueryCount == 2 && m.UserId == 0 && m.LeaderUserId == 0 && m.IsUse == 0 && m.IsLock == 0 && m.OpId == 0).Take(num).ToList();//大机券 foreach (var items in bposCoupons) { var posCoupon = db.PosCoupons.FirstOrDefault(m => m.Id == items.Id) ?? new PosCoupons(); posCoupon.UserId = queryList.UserId; posCoupon.LeaderUserId = LeaderUserId; SnList += posCoupon.ExchangeCode + ","; } } db.SaveChanges(); } queryList.SeoDescription = SnList.TrimEnd(','); db.SaveChanges(); } catch (Exception ex) { LogHelper.Instance.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "盟主兑换机具券异常"); } } else { Thread.Sleep(5000); } } } } }