UserMonthFeeHelper.cs 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading;
  4. using System.Linq;
  5. using System.Data;
  6. using MySystem;
  7. using MySystem.PxcModels;
  8. using Library;
  9. using LitJson;
  10. public class UserMonthFeeHelper
  11. {
  12. public readonly static UserMonthFeeHelper Instance = new UserMonthFeeHelper();
  13. private UserMonthFeeHelper()
  14. {
  15. }
  16. public void Start()
  17. {
  18. Thread th = new Thread(DoWorks);
  19. th.IsBackground = true;
  20. th.Start();
  21. }
  22. private void DoWorks()
  23. {
  24. while (true)
  25. {
  26. try
  27. {
  28. string content = RedisDbconn.Instance.RPop<string>("UserMonthFeeQueue");
  29. if(!string.IsNullOrEmpty(content))
  30. {
  31. if(content == "end")
  32. {
  33. RedisDbconn.Instance.AddList("PosExpiredPayQueue", "1");
  34. }
  35. else
  36. {
  37. WebCMSEntities db = new WebCMSEntities();
  38. DoSomething(db, int.Parse(content));
  39. db.Dispose();
  40. }
  41. }
  42. else
  43. {
  44. Thread.Sleep(60000);
  45. }
  46. }
  47. catch (Exception ex)
  48. {
  49. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "创客每月月费扣款异常");
  50. }
  51. function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "创客每月月费扣款日志");
  52. }
  53. }
  54. public void DoSomething(WebCMSEntities db, int UserId)
  55. {
  56. DateTime Start = DateTime.Parse(DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00");
  57. DateTime WithoutStart = DateTime.Parse("2023-02-20 00:00:00"); //收支明细服务费记录开始时间
  58. UserAccount User = db.UserAccount.FirstOrDefault(m => m.Id == UserId && m.BalanceAmount > 0);
  59. if(User != null)
  60. {
  61. bool check = db.UserAccountRecord.Any(m => m.UserId == User.Id && m.CreateDate >= Start && m.CreateDate >= WithoutStart && m.ChangeType == 125);
  62. if(!check)
  63. {
  64. if(User.BalanceAmount > 10)
  65. {
  66. AlipayPayBack2Service.Instance.ChangeAccount(db, new Orders(), User.Id, -10, 125);
  67. }
  68. else
  69. {
  70. AlipayPayBack2Service.Instance.ChangeAccount(db, new Orders(), User.Id, -User.BalanceAmount, 125);
  71. }
  72. }
  73. }
  74. }
  75. public void Start2()
  76. {
  77. Thread th = new Thread(DoWorks2);
  78. th.IsBackground = true;
  79. th.Start();
  80. }
  81. private void DoWorks2()
  82. {
  83. while (true)
  84. {
  85. try
  86. {
  87. if(DateTime.Now.Hour == 1 && DateTime.Now < DateTime.Parse("2023-02-20 00:00:00"))
  88. {
  89. string check = function.ReadInstance("/UserMonthFee/" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt");
  90. if(string.IsNullOrEmpty(check))
  91. {
  92. function.WritePage("/UserMonthFee/", DateTime.Now.ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString("HH:mm:ss"));
  93. WebCMSEntities db = new WebCMSEntities();
  94. DoSomething2(db);
  95. db.Dispose();
  96. }
  97. }
  98. }
  99. catch (Exception ex)
  100. {
  101. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "创客每月月费补扣款异常");
  102. }
  103. function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "创客每月月费补扣款日志");
  104. Thread.Sleep(60000);
  105. }
  106. }
  107. public void DoSomething2(WebCMSEntities db)
  108. {
  109. DateTime Start = DateTime.Parse("2023-01-19 00:00:00"); //收支明细服务费记录开始时间
  110. // DateTime ExpireDate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00").AddDays(-90); //创客认证超过90天比对时间
  111. // //超过90天创客ID集合
  112. // List<int> UserIds = db.Users.Where(m => m.AuthFlag == 1 && m.AuthDate < ExpireDate).ToList().Select(m => m.Id).ToList();
  113. List<int> UserIds = new List<int>();
  114. UserIds.Add(311);
  115. UserIds.Add(3057);
  116. UserIds.Add(3061);
  117. UserIds.Add(12122);
  118. UserIds.Add(36591);
  119. UserIds.Add(39115);
  120. UserIds.Add(43435);
  121. UserIds.Add(47763);
  122. UserIds.Add(56954);
  123. UserIds.Add(63674);
  124. UserIds.Add(69804);
  125. UserIds.Add(70203);
  126. UserIds.Add(72356);
  127. UserIds.Add(74571);
  128. UserIds.Add(75261);
  129. UserIds.Add(79265);
  130. UserIds.Add(80363);
  131. UserIds.Add(80579);
  132. UserIds.Add(80639);
  133. UserIds.Add(80856);
  134. UserIds.Add(88455);
  135. UserIds.Add(88494);
  136. UserIds.Add(99635);
  137. UserIds.Add(100934);
  138. UserIds.Add(109518);
  139. UserIds.Add(120692);
  140. UserIds.Add(120896);
  141. UserIds.Add(122704);
  142. UserIds.Add(123101);
  143. UserIds.Add(124776);
  144. UserIds.Add(124822);
  145. UserIds.Add(124875);
  146. UserIds.Add(125094);
  147. UserIds.Add(125720);
  148. UserIds.Add(125969);
  149. UserIds.Add(126346);
  150. UserIds.Add(126781);
  151. UserIds.Add(126897);
  152. UserIds.Add(127469);
  153. UserIds.Add(127515);
  154. UserIds.Add(127645);
  155. UserIds.Add(128851);
  156. UserIds.Add(128969);
  157. UserIds.Add(129039);
  158. UserIds.Add(129061);
  159. UserIds.Add(129153);
  160. UserIds.Add(129220);
  161. UserIds.Add(129277);
  162. UserIds.Add(129307);
  163. UserIds.Add(129405);
  164. UserIds.Add(129434);
  165. UserIds.Add(129436);
  166. UserIds.Add(129443);
  167. UserIds.Add(129519);
  168. UserIds.Add(129659);
  169. UserIds.Add(129762);
  170. UserIds.Add(129914);
  171. UserIds.Add(129949);
  172. UserIds.Add(129980);
  173. UserIds.Add(130182);
  174. UserIds.Add(130307);
  175. UserIds.Add(130342);
  176. UserIds.Add(130546);
  177. UserIds.Add(130778);
  178. UserIds.Add(130837);
  179. UserIds.Add(131077);
  180. UserIds.Add(131879);
  181. UserIds.Add(132140);
  182. UserIds.Add(132567);
  183. UserIds.Add(132572);
  184. UserIds.Add(132936);
  185. UserIds.Add(133205);
  186. UserIds.Add(133216);
  187. UserIds.Add(133522);
  188. UserIds.Add(133649);
  189. UserIds.Add(133798);
  190. UserIds.Add(134112);
  191. UserIds.Add(134150);
  192. UserIds.Add(134307);
  193. UserIds.Add(134310);
  194. UserIds.Add(134318);
  195. UserIds.Add(134321);
  196. UserIds.Add(134522);
  197. UserIds.Add(134571);
  198. UserIds.Add(134840);
  199. UserIds.Add(134863);
  200. UserIds.Add(135039);
  201. UserIds.Add(135327);
  202. UserIds.Add(135434);
  203. UserIds.Add(135459);
  204. UserIds.Add(135475);
  205. UserIds.Add(135498);
  206. UserIds.Add(135590);
  207. UserIds.Add(135606);
  208. UserIds.Add(135719);
  209. UserIds.Add(135835);
  210. UserIds.Add(135877);
  211. UserIds.Add(135906);
  212. UserIds.Add(135924);
  213. UserIds.Add(136122);
  214. UserIds.Add(136346);
  215. UserIds.Add(136458);
  216. UserIds.Add(136581);
  217. UserIds.Add(136587);
  218. UserIds.Add(136700);
  219. UserIds.Add(136707);
  220. UserIds.Add(136980);
  221. UserIds.Add(137055);
  222. UserIds.Add(137123);
  223. UserIds.Add(137228);
  224. UserIds.Add(137313);
  225. UserIds.Add(137459);
  226. UserIds.Add(137468);
  227. UserIds.Add(137532);
  228. UserIds.Add(137617);
  229. UserIds.Add(138055);
  230. UserIds.Add(138074);
  231. UserIds.Add(138183);
  232. UserIds.Add(138275);
  233. UserIds.Add(138288);
  234. UserIds.Add(138359);
  235. UserIds.Add(138362);
  236. UserIds.Add(138440);
  237. UserIds.Add(138460);
  238. UserIds.Add(138581);
  239. UserIds.Add(138682);
  240. UserIds.Add(139109);
  241. UserIds.Add(139118);
  242. UserIds.Add(139172);
  243. UserIds.Add(139455);
  244. UserIds.Add(139517);
  245. UserIds.Add(139530);
  246. UserIds.Add(139890);
  247. UserIds.Add(140120);
  248. UserIds.Add(140274);
  249. UserIds.Add(140381);
  250. UserIds.Add(140397);
  251. UserIds.Add(140406);
  252. UserIds.Add(140522);
  253. UserIds.Add(140539);
  254. UserIds.Add(140540);
  255. UserIds.Add(140749);
  256. UserIds.Add(140753);
  257. UserIds.Add(140764);
  258. UserIds.Add(141057);
  259. UserIds.Add(141109);
  260. UserIds.Add(141406);
  261. UserIds.Add(141494);
  262. UserIds.Add(141892);
  263. UserIds.Add(141918);
  264. UserIds.Add(141951);
  265. UserIds.Add(141980);
  266. //已扣费创客ID集合
  267. List<int> UserAccountRecordIds = db.UserAccountRecord.Where(m => UserIds.Contains(m.UserId) && m.CreateDate >= Start && m.ChangeType == 125).ToList().Select(m => m.UserId).ToList();
  268. //应该扣除而未扣的创客集合
  269. var Users = db.UserAccount.Select(m => new { m.Id, m.BalanceAmount }).Where(m => !UserAccountRecordIds.Contains(m.Id) && UserIds.Contains(m.Id) && m.BalanceAmount >= 10).ToList();
  270. foreach(var User in Users)
  271. {
  272. AlipayPayBack2Service.Instance.ChangeAccount(db, new Orders(), User.Id, -10, 125); //执行扣费
  273. }
  274. }
  275. }