HelpProfitHelper.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Data;
  5. using MySystem.PxcModels;
  6. using Library;
  7. using System.Threading;
  8. using Microsoft.Extensions.Hosting;
  9. using System.Threading.Tasks;
  10. namespace MySystem
  11. {
  12. public class HelpProfitHelper
  13. {
  14. public readonly static HelpProfitHelper Instance = new HelpProfitHelper();
  15. private HelpProfitHelper()
  16. {
  17. }
  18. public void Start()
  19. {
  20. Thread th = new Thread(StartFor);
  21. th.IsBackground = true;
  22. th.Start();
  23. }
  24. public void StartFor()
  25. {
  26. while (true)
  27. {
  28. if(DateTime.Now.Hour >= 2)// && DateTime.Now.Hour <= 3)
  29. {
  30. StatProfitEveryDay(DateTime.Now.AddDays(-1).ToString("yyyyMMdd"));
  31. }
  32. Thread.Sleep(600000);
  33. }
  34. }
  35. public void StatProfitEveryDay(string Date)
  36. {
  37. string check = function.ReadInstance("/HelpProfitStat/" + Date + ".txt");
  38. if (!string.IsNullOrEmpty(check))
  39. {
  40. return;
  41. }
  42. function.WritePage("/HelpProfitStat/", Date + ".txt", DateTime.Now.ToString());
  43. WebCMSEntities db = new WebCMSEntities();
  44. List<HelpProfitMerTradeSummay> list = db.HelpProfitMerTradeSummay.Where(m => m.TradeDate == Date).ToList();
  45. foreach(HelpProfitMerTradeSummay sub in list)
  46. {
  47. int MerchantId = sub.MerchantId;
  48. decimal TradeAmount = sub.TradeAmount;
  49. HelpProfitMerchantForUser merchant = db.HelpProfitMerchantForUser.FirstOrDefault(m => m.MerchantId == MerchantId);
  50. if(merchant != null)
  51. {
  52. int UserId = merchant.UserId;
  53. PosMerchantInfo mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == MerchantId) ?? new PosMerchantInfo();
  54. string Name = mer.MerchantName;
  55. if (mer.BrandId == 2)
  56. {
  57. if (Name.Contains("-"))
  58. {
  59. Name = Name.Split('-')[1];
  60. }
  61. else if (Name.Contains("_"))
  62. {
  63. Name = Name.Split('_')[1];
  64. }
  65. }
  66. Name = Name.Replace("个体户", "");
  67. Name = Name.Replace("个体商户", "");
  68. Name = Name.Replace("企业户", "");
  69. Name = Name.Replace("企业商户", "");
  70. Users user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  71. decimal money = TradeAmount * 0.0005M;
  72. decimal money2 = TradeAmount * 0.00005M;
  73. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId);
  74. if (account == null)
  75. {
  76. account = db.UserAccount.Add(new UserAccount()
  77. {
  78. Id = UserId,
  79. UserId = UserId,
  80. }).Entity;
  81. db.SaveChanges();
  82. }
  83. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  84. account.HelpProfitBalanceAmount += money;
  85. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  86. HelpProfitAccountRecord accountRecord = db.HelpProfitAccountRecord.Add(new HelpProfitAccountRecord()
  87. {
  88. CreateDate = DateTime.Now,
  89. UpdateDate = DateTime.Now,
  90. Sort = MerchantId,
  91. UserId = UserId, //创客
  92. ProductType = mer.BrandId, //产品类型
  93. ChangeType = 1,
  94. ChangeAmount = money, //变更金额
  95. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  96. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  97. Remark = Name.Substring(0, 1) + "**:" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "交易" + TradeAmount.ToString("f2"),
  98. }).Entity;
  99. db.SaveChanges();
  100. account = db.UserAccount.FirstOrDefault(m => m.Id == user.ParentUserId);
  101. if (account == null)
  102. {
  103. account = db.UserAccount.Add(new UserAccount()
  104. {
  105. Id = user.ParentUserId,
  106. UserId = user.ParentUserId,
  107. }).Entity;
  108. db.SaveChanges();
  109. }
  110. BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  111. account.HelpProfitBalanceAmount += money2;
  112. AfterBalanceAmount = account.BalanceAmount; //变更后余额
  113. accountRecord = db.HelpProfitAccountRecord.Add(new HelpProfitAccountRecord()
  114. {
  115. CreateDate = DateTime.Now,
  116. UpdateDate = DateTime.Now,
  117. Sort = MerchantId,
  118. UserId = user.ParentUserId, //创客
  119. ProductType = mer.BrandId, //产品类型
  120. ChangeType = 112,
  121. ChangeAmount = money2, //变更金额
  122. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  123. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  124. Remark = Name.Substring(0, 1) + "**:" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "交易" + TradeAmount.ToString("f2"),
  125. }).Entity;
  126. db.SaveChanges();
  127. string Month = Date.Substring(0, 6);
  128. HelpProfitRebateDetail selfStat = db.HelpProfitRebateDetail.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == Month && m.TradeDate == Date);
  129. if (selfStat == null)
  130. {
  131. selfStat = db.HelpProfitRebateDetail.Add(new HelpProfitRebateDetail()
  132. {
  133. TradeMonth = Month,
  134. TradeDate = Date,
  135. UserId = UserId,
  136. }).Entity;
  137. db.SaveChanges();
  138. }
  139. selfStat.CreditRewardAmount += money;
  140. selfStat = db.HelpProfitRebateDetail.FirstOrDefault(m => m.UserId == user.ParentUserId && m.TradeMonth == Month && m.TradeDate == Date);
  141. if (selfStat == null)
  142. {
  143. selfStat = db.HelpProfitRebateDetail.Add(new HelpProfitRebateDetail()
  144. {
  145. TradeMonth = Month,
  146. TradeDate = Date,
  147. UserId = user.ParentUserId,
  148. }).Entity;
  149. db.SaveChanges();
  150. }
  151. selfStat.CreditRewardAmount += money2;
  152. db.SaveChanges();
  153. }
  154. }
  155. db.Dispose();
  156. }
  157. }
  158. }