PosMerchantInfoDbconn.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using MySystem.MainModels;
  5. namespace MySystem
  6. {
  7. public class PosMerchantInfoDbconn
  8. {
  9. public readonly static PosMerchantInfoDbconn Instance = new PosMerchantInfoDbconn();
  10. #region 获取单个字段
  11. public PosMerchantInfo Get(int Id)
  12. {
  13. // string key = "PosMerchantInfo:" + Id;
  14. // if (RedisDbconn.Instance.Exists(key))
  15. // {
  16. // PosMerchantInfo obj = RedisDbconn.Instance.Get<PosMerchantInfo>(key);
  17. // if (obj != null)
  18. // {
  19. // return obj;
  20. // }
  21. // }
  22. WebCMSEntities db = new WebCMSEntities();
  23. PosMerchantInfo order = db.PosMerchantInfo.FirstOrDefault(m => m.Id == Id);
  24. if (order != null)
  25. {
  26. // RedisDbconn.Instance.Set(key, order);
  27. // RedisDbconn.Instance.SetExpire(key, Library.function.get_Random(1800, 5400));
  28. }
  29. db.Dispose();
  30. return order;
  31. }
  32. #endregion
  33. #region 获取列表
  34. public List<PosMerchantInfo> GetList(int UserId, int pageNum = 1, int pageSize = 10)
  35. {
  36. string key = "PosMerchantInfoList:" + UserId;
  37. List<PosMerchantInfo> list = new List<PosMerchantInfo>();
  38. if (RedisDbconn.Instance.Exists(key))
  39. {
  40. list = RedisDbconn.Instance.GetList<PosMerchantInfo>(key, pageNum, pageSize);
  41. if (list.Count > 0)
  42. {
  43. return list;
  44. }
  45. }
  46. RedisDbconn.Instance.GetLock(key + ":lock");
  47. WebCMSEntities db = new WebCMSEntities();
  48. List<PosMerchantInfo> newlist = new List<PosMerchantInfo>();
  49. var mysqllist = db.PosMachinesTwo.Select(m => new { m.BuyUserId, m.UserId, m.BindingState, m.Id, m.BindMerchantId, m.Status }).Where(m => m.Status > -1 && m.BuyUserId == UserId && m.BindingState == 1).OrderByDescending(m => m.Id).ToList();
  50. if (mysqllist.Count > 0)
  51. {
  52. foreach (var sub in mysqllist)
  53. {
  54. PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == sub.BindMerchantId) ?? new PosMerchantInfo();
  55. newlist.Add(merchant);
  56. }
  57. RedisDbconn.Instance.Clear(key);
  58. foreach (PosMerchantInfo sub in newlist)
  59. {
  60. RedisDbconn.Instance.AddRightList(key, sub);
  61. }
  62. RedisDbconn.Instance.SetExpire(key, Library.function.get_Random(300, 600));
  63. }
  64. db.Dispose();
  65. RedisDbconn.Instance.ReleaseLock(key + ":lock");
  66. return newlist;
  67. }
  68. #endregion
  69. #region 获取列表子账号
  70. public List<PosMerchantInfo> GetChildList(int PartnerId, int UserId, int pageNum = 1, int pageSize = 10)
  71. {
  72. string key = "PosMerchantInfoList:" + PartnerId;
  73. List<PosMerchantInfo> list = new List<PosMerchantInfo>();
  74. if (RedisDbconn.Instance.Exists(key))
  75. {
  76. list = RedisDbconn.Instance.GetList<PosMerchantInfo>(key, pageNum, pageSize);
  77. if (list.Count > 0)
  78. {
  79. return list;
  80. }
  81. }
  82. RedisDbconn.Instance.GetLock(key + ":lock");
  83. WebCMSEntities db = new WebCMSEntities();
  84. List<int> posId = new List<int>();
  85. var Id = db.BusinessPartnerPos.Where(m => m.Id == PartnerId).ToList();
  86. foreach (var item in Id)
  87. {
  88. posId.Add(item.PosId);
  89. }
  90. List<PosMerchantInfo> newlist = new List<PosMerchantInfo>();
  91. var mysqllist = db.PosMachinesTwo.Select(m => new { m.BuyUserId, m.UserId, m.BindingState, m.Id, m.BindMerchantId, m.Status }).Where(m => m.Status > -1 && m.BuyUserId == UserId && m.BindingState == 1 && posId.Contains(m.Id)).OrderByDescending(m => m.Id).ToList();
  92. if (mysqllist.Count > 0)
  93. {
  94. foreach (var sub in mysqllist)
  95. {
  96. PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == sub.BindMerchantId) ?? new PosMerchantInfo();
  97. newlist.Add(merchant);
  98. }
  99. RedisDbconn.Instance.Clear(key);
  100. foreach (PosMerchantInfo sub in newlist)
  101. {
  102. RedisDbconn.Instance.AddRightList(key, sub);
  103. }
  104. RedisDbconn.Instance.SetExpire(key, Library.function.get_Random(300, 600));
  105. }
  106. db.Dispose();
  107. RedisDbconn.Instance.ReleaseLock(key + ":lock");
  108. return newlist;
  109. }
  110. #endregion
  111. }
  112. }