SycnUserMachineCountHelper.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System;
  2. using System.Linq;
  3. using System.Threading;
  4. using MySystem.Models;
  5. using LitJson;
  6. namespace MySystem
  7. {
  8. public class SycnUserMachineCountHelper
  9. {
  10. public readonly static SycnUserMachineCountHelper Instance = new SycnUserMachineCountHelper();
  11. private SycnUserMachineCountHelper()
  12. {
  13. }
  14. public void Start()//启动
  15. {
  16. Thread thread = new Thread(StartDo);
  17. thread.IsBackground = true;
  18. thread.Start();
  19. }
  20. public void StartDo()
  21. {
  22. while (true)
  23. {
  24. string data = RedisDbconn.Instance.RPop<string>("SycnUserMachineCountQueue");
  25. if (!string.IsNullOrEmpty(data))
  26. {
  27. JsonData json = JsonMapper.ToObject(data);
  28. int UserId = int.Parse(json["UserId"].ToString());
  29. int BrandId = int.Parse(json["BrandId"].ToString());
  30. WebCMSEntities dbnew = new WebCMSEntities();
  31. string IdBrand = "";
  32. if (BrandId == 0)
  33. {
  34. var Brands = dbnew.KqProducts.Where(m => m.Status == 1).ToList();
  35. foreach (var Brand in Brands)
  36. {
  37. IdBrand = UserId + "_" + Brand.Id;
  38. UserMachineData machineData = dbnew.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand);
  39. if (machineData == null)
  40. {
  41. machineData = dbnew.UserMachineData.Add(new UserMachineData()
  42. {
  43. IdBrand = IdBrand
  44. }).Entity;
  45. dbnew.SaveChanges();
  46. }
  47. machineData.BindCount = dbnew.PosMachinesTwo.Count(m => m.Status > -1 && m.BuyUserId == UserId && m.BrandId == BrandId && m.BindingState == 1);
  48. machineData.UnBindCount = dbnew.PosMachinesTwo.Count(m => m.Status > -1 && m.BuyUserId == UserId && m.BrandId == BrandId && m.BindingState == 0);
  49. machineData.TotalMachineCount = machineData.BindCount + machineData.UnBindCount;
  50. dbnew.SaveChanges();
  51. dbnew.Dispose();
  52. }
  53. }
  54. else
  55. {
  56. IdBrand = UserId + "_" + BrandId;
  57. UserMachineData machineData = dbnew.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand);
  58. if (machineData == null)
  59. {
  60. machineData = dbnew.UserMachineData.Add(new UserMachineData()
  61. {
  62. IdBrand = IdBrand
  63. }).Entity;
  64. dbnew.SaveChanges();
  65. }
  66. machineData.BindCount = dbnew.PosMachinesTwo.Count(m => m.Status > -1 && m.BuyUserId == UserId && m.BrandId == BrandId && m.BindingState == 1);
  67. machineData.UnBindCount = dbnew.PosMachinesTwo.Count(m => m.Status > -1 && m.BuyUserId == UserId && m.BrandId == BrandId && m.BindingState == 0);
  68. machineData.TotalMachineCount = machineData.BindCount + machineData.UnBindCount;
  69. dbnew.SaveChanges();
  70. dbnew.Dispose();
  71. }
  72. }
  73. else
  74. {
  75. Thread.Sleep(10000);
  76. }
  77. }
  78. }
  79. }
  80. }