SycnSpMerchantService.cs 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using MySystem.SpModels;
  5. using Library;
  6. using LitJson;
  7. using System.Threading;
  8. namespace MySystem
  9. {
  10. public class SycnSpMerchantService
  11. {
  12. public readonly static SycnSpMerchantService Instance = new SycnSpMerchantService();
  13. private SycnSpMerchantService()
  14. { }
  15. public void Start()
  16. {
  17. Thread th = new Thread(StartDo);
  18. th.IsBackground = true;
  19. th.Start();
  20. }
  21. public void StartDo()
  22. {
  23. while (true)
  24. {
  25. try
  26. {
  27. WebCMSEntities spdb = new WebCMSEntities();
  28. PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities();
  29. DateTime start = DateTime.Now.AddDays(-100);
  30. DateTime end = DateTime.Now.AddMinutes(-2);
  31. int StartId = int.Parse(function.CheckInt(function.ReadInstance("/SycnSp/MerchantsId.txt")));
  32. var Mers = spdb.Merchants.Where(m => m.Id >= StartId && m.CreateTime >= start && m.CreateTime <= end && m.Status == 1 && m.ProductType != "14").OrderByDescending(m => m.Id).Take(20).ToList();
  33. // var Mers = spdb.Merchants.Where(m => m.Id == 765841).ToList();
  34. foreach (var Mer in Mers)
  35. {
  36. var tran = db.Database.BeginTransaction();
  37. try
  38. {
  39. if (Mer.Field2 != "解绑" && Mer.Field2 != "UNBIND")
  40. {
  41. if (Utils.Instance.IsWifi(int.Parse(Mer.ProductType)))
  42. {
  43. Mer.MerNo = Mer.SnNo;
  44. PosPushDataNewHelper.Bind(Mer);
  45. if (function.CheckNull(Mer.AgentName).StartsWith("YCJG"))
  46. {
  47. PosPushDataNewHelper.Deposit(new ActivateRecord()
  48. {
  49. SeoTitle = "0.00",
  50. ProductType = Mer.ProductType,
  51. SnNo = Mer.SnNo,
  52. MerNo = Mer.SnNo,
  53. Id = Mer.Id,
  54. });
  55. }
  56. }
  57. else if (Mer.ProductType == "12" || Mer.ProductType == "30")
  58. {
  59. MerchantRecord merInfo = new MerchantRecord();
  60. if (Mer.ProductType == "12") merInfo = spdb.MerchantRecord.FirstOrDefault(m => m.MerNo == Mer.MerNo);
  61. if (Mer.ProductType == "30")
  62. {
  63. merInfo = spdb.MerchantRecord.FirstOrDefault(m => m.Field3 == Mer.MerNo);
  64. if (merInfo == null) merInfo = spdb.MerchantRecord.FirstOrDefault(m => m.MerNo == Mer.MerNo);
  65. }
  66. if (merInfo != null)
  67. {
  68. Mer.MerNo = merInfo.MerNo;
  69. Mer.MerIdcardNo = merInfo.LegalIdCard;
  70. Mer.MerName = merInfo.MerName;
  71. if (Mer.ProductType == "30")
  72. {
  73. Mer.MerMobile = merInfo.Field2;
  74. }
  75. PosPushDataNewHelper.Bind(Mer);
  76. }
  77. }
  78. else if (!Utils.Instance.IsHaoDa(int.Parse(Mer.ProductType)))
  79. {
  80. PosPushDataNewHelper.Bind(Mer);
  81. }
  82. }
  83. Merchants edit = spdb.Merchants.FirstOrDefault(m => m.Id == Mer.Id);
  84. if (edit != null)
  85. {
  86. edit.Status = 2;
  87. spdb.SaveChanges();
  88. }
  89. tran.Commit();
  90. }
  91. catch (Exception ex)
  92. {
  93. tran.Rollback();
  94. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n" + Mer.Id, "同步SP商户数据到MAIN异常");
  95. }
  96. tran.Dispose();
  97. }
  98. spdb.SaveChanges();
  99. spdb.Dispose();
  100. db.SaveChanges();
  101. db.Dispose();
  102. }
  103. catch (Exception ex)
  104. {
  105. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "同步SP商户数据到MAIN异常");
  106. }
  107. Thread.Sleep(1000);
  108. }
  109. }
  110. public void WifiSendPrize(PxcModels.WebCMSEntities db, PxcModels.PosMachinesTwo pos, PxcModels.PosMerchantInfo add)
  111. {
  112. PxcModels.WifiTradeRecord trade = db.WifiTradeRecord.FirstOrDefault(m => m.SnNo == pos.PosSn && m.Status == 0);
  113. if (trade != null)
  114. {
  115. trade.Status = 1;
  116. db.SaveChanges();
  117. decimal Prize = trade.TradeAmount * 0.15M;
  118. StatService.Instance.doActiveReward(db, add, pos, pos.BuyUserId, "", 1, Prize);
  119. if (pos.CardType < 100)
  120. {
  121. RedisDbconn.Instance.AddList("OpenRewardQueue", pos.Id.ToString());
  122. }
  123. if (pos.LeaderUserId > 0 && db.Leaders.Any(m => m.Id == pos.LeaderUserId && m.ExpiredDate > DateTime.Now) && pos.CardType < 100)
  124. {
  125. RedisDbconn.Instance.AddList("LeaderPrizeQueue", pos.Id);
  126. }
  127. if (pos.CardType < 100)
  128. {
  129. RedisDbconn.Instance.AddList("OperatePrizeQueue", pos.Id);
  130. }
  131. }
  132. }
  133. public void StartSim()
  134. {
  135. Thread th = new Thread(StartSimDo);
  136. th.IsBackground = true;
  137. th.Start();
  138. }
  139. public void StartSimDo()
  140. {
  141. while (true)
  142. {
  143. try
  144. {
  145. WebCMSEntities spdb = new WebCMSEntities();
  146. PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities();
  147. DateTime start = DateTime.Now.AddDays(-365);
  148. DateTime end = DateTime.Now.AddMinutes(-2);
  149. int StartId = 400000;
  150. var Mers = spdb.Merchants.Where(m => m.Id >= StartId && m.CreateTime >= start && m.CreateTime <= end && m.Status == 1 && m.ProductType == "14").OrderByDescending(m => m.Id).Take(20).ToList();
  151. foreach (var Mer in Mers)
  152. {
  153. var tran = db.Database.BeginTransaction();
  154. try
  155. {
  156. if (Mer.Field2 != "解绑" && Mer.Field2 != "UNBIND")
  157. {
  158. if (!Utils.Instance.IsHaoDa(int.Parse(Mer.ProductType)))
  159. {
  160. PosPushDataNewHelper.Bind(Mer);
  161. }
  162. }
  163. Merchants edit = spdb.Merchants.FirstOrDefault(m => m.Id == Mer.Id);
  164. if (edit != null)
  165. {
  166. edit.Status = 2;
  167. spdb.SaveChanges();
  168. }
  169. tran.Commit();
  170. }
  171. catch (Exception ex)
  172. {
  173. tran.Rollback();
  174. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n" + Mer.Id, "同步SP广电卡商户数据到MAIN异常");
  175. }
  176. tran.Dispose();
  177. }
  178. spdb.SaveChanges();
  179. spdb.Dispose();
  180. db.SaveChanges();
  181. db.Dispose();
  182. }
  183. catch (Exception ex)
  184. {
  185. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "同步SP广电卡商户数据到MAIN异常");
  186. }
  187. Thread.Sleep(1000);
  188. }
  189. }
  190. }
  191. }