PosCouponPrizeService.cs 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Data;
  5. using System.Threading;
  6. using MySystem.PxcModels;
  7. using Library;
  8. using LitJson;
  9. namespace MySystem
  10. {
  11. public class PosCouponPrizeService
  12. {
  13. public readonly static PosCouponPrizeService Instance = new PosCouponPrizeService();
  14. private PosCouponPrizeService()
  15. { }
  16. public void Start()
  17. {
  18. Thread th = new Thread(ready);
  19. th.IsBackground = true;
  20. th.Start();
  21. }
  22. private void ready()
  23. {
  24. bool op = true;
  25. while (op)
  26. {
  27. string content = RedisDbconn.Instance.RPop<string>("PosCouponPrizeQueue");
  28. if (!string.IsNullOrEmpty(content))
  29. {
  30. try
  31. {
  32. dosomething(int.Parse(function.CheckInt(content)));
  33. }
  34. catch(Exception ex)
  35. {
  36. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "商城下单机具券发奖异常");
  37. }
  38. }
  39. else
  40. {
  41. Thread.Sleep(2000);
  42. }
  43. }
  44. }
  45. public void dosomething(int OrderId)
  46. {
  47. WebCMSEntities db = new WebCMSEntities();
  48. OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
  49. Orders order = db.Orders.FirstOrDefault(m => m.Id == OrderId);
  50. if(order != null)
  51. {
  52. List<int> ChkIds = new List<int>(); //机具券商品Id集合
  53. ChkIds.Add(10);
  54. ChkIds.Add(11);
  55. ChkIds.Add(77);
  56. ChkIds.Add(78);
  57. ChkIds.Add(79);
  58. ChkIds.Add(92);
  59. //判断是否是指定商品
  60. if(ChkIds.Contains(order.ProductId))
  61. {
  62. int Kind = 0;
  63. if (order.ProductId == 10)
  64. {
  65. Kind = 1;
  66. }
  67. else if (order.ProductId == 11)
  68. {
  69. Kind = 2;
  70. }
  71. int CouponCount = 0;
  72. if(Kind == 1)
  73. {
  74. CouponCount = 3 * order.BuyCount;
  75. }
  76. else if(Kind == 2)
  77. {
  78. CouponCount = 2 * order.BuyCount;
  79. }
  80. UserRankItem orderUser = GetUserLevel(order.UserId);
  81. if(orderUser.UserLevel == 0)
  82. {
  83. PreUserLevel(db, order.UserId, 1, DateTime.Parse("2025-01-01 00:00:00"));
  84. }
  85. List<string> codes = order.SnNos.Split(',').ToList();
  86. string ParentNav = orderUser.ParentNav + "," + orderUser.Id + ",";
  87. string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
  88. Array.Reverse(ParentNavList);
  89. int index = 0;
  90. bool DirectPrizeFlag = false; //推荐奖励发放标识
  91. bool BackAccountFlag = false; //备用金返余额标识
  92. bool BigLeaderFlag = false; //大盟主标记
  93. decimal BuyPrize = 0; //购机奖励
  94. foreach(string ParentId in ParentNavList)
  95. {
  96. UserRankItem parentUser = GetUserLevel(int.Parse(ParentId));
  97. index += 1;
  98. if(index == 1 && (orderUser.LeaderLevel > 0 || orderUser.OperateLevel > 0) && !DirectPrizeFlag)
  99. {
  100. DirectPrize(db, order.Id, order.UserId, order.BuyCount);
  101. DirectPrizeFlag = true;
  102. }
  103. if(index > 1)
  104. {
  105. if(Utils.Instance.IsStandardUser(parentUser.Id) && !DirectPrizeFlag)
  106. {
  107. DirectPrize(db, order.Id, parentUser.Id, order.BuyCount);
  108. DirectPrizeFlag = true;
  109. }
  110. }
  111. if(parentUser.AgoLeaderLevel > 0 && CheckLeaderReserve(db, order.BuyCount, parentUser.Id))
  112. {
  113. //购机奖
  114. if(parentUser.LeaderLevel > 0)
  115. {
  116. decimal CurBuyPrize = GetBuyPrize(parentUser, order.UserId);
  117. decimal GetPrize = CurBuyPrize - BuyPrize;
  118. if(GetPrize > 0)
  119. {
  120. bool PrizeFlag = true;
  121. int ChangeType = 118;
  122. if(parentUser.OperateLevel == 1)
  123. {
  124. ChangeType = 120;
  125. }
  126. if(parentUser.OperateLevel > 1)
  127. {
  128. ChangeType = 128;
  129. if(function.CheckNull(RedisDbconn.Instance.Get<string>("YingXunUser")).Contains("," + orderUser.Id + ","))
  130. {
  131. PrizeFlag = false;
  132. }
  133. }
  134. if(PrizeFlag)
  135. {
  136. OpAccount(db, order.Id, parentUser.Id, CurBuyPrize - BuyPrize, order.BuyCount, ChangeType);
  137. }
  138. BuyPrize = CurBuyPrize;
  139. }
  140. }
  141. if(!BackAccountFlag)
  142. {
  143. BackAccountFlag = true;
  144. //扣减备用金
  145. int ReserveRecordId = OpReserve(db, order.Id, parentUser.Id, GetWithdrawMoney(parentUser) * order.BuyCount, 2, order.UserId, "购机奖励");
  146. //返回到余额
  147. OpLeaderAccount(db, order, parentUser.Id, GetWithdrawMoney(parentUser), order.BuyCount, ReserveRecordId);
  148. }
  149. //给券打大盟主标记
  150. if(parentUser.LeaderLevel == 1 && CheckLeaderReserve(db, order.BuyCount, parentUser.Id) && !BigLeaderFlag)
  151. {
  152. BigLeaderFlag = CheckPosCouponLeaderFlag(db, parentUser.Id, order.BuyCount, codes);
  153. }
  154. else if(parentUser.LeaderLevel == 2 && !BigLeaderFlag)
  155. {
  156. BigLeaderFlag = true;
  157. if(!string.IsNullOrEmpty(order.SnNos))
  158. {
  159. List<int> couponIds = db.PosCoupons.Where(m => codes.Contains(m.ExchangeCode)).OrderBy(m => m.Id).Take(CouponCount).ToList().Select(m => m.Id).ToList();
  160. SetPosCouponLeaderFlag(db, parentUser.Id, order.BuyCount, couponIds);
  161. }
  162. }
  163. }
  164. else if(parentUser.OperateLevel > 0 && CheckOpReserve(opdb, order.BuyCount, parentUser.Id))
  165. {
  166. //购机奖
  167. decimal CurBuyPrize = GetBuyPrize(parentUser, order.UserId);
  168. decimal GetPrize = CurBuyPrize - BuyPrize;
  169. if(GetPrize > 0)
  170. {
  171. int ChangeType = 120;
  172. if(parentUser.OperateLevel > 1)
  173. {
  174. ChangeType = 128;
  175. }
  176. OpAccount(db, order.Id, parentUser.Id, GetPrize, order.BuyCount, ChangeType);
  177. BuyPrize = CurBuyPrize;
  178. }
  179. if(!BackAccountFlag)
  180. {
  181. BackAccountFlag = true;
  182. decimal GetAmount = GetWithdrawMoney(parentUser) * order.BuyCount;
  183. //扣减备用金
  184. // OperateAmountChange(opdb, parentUser.Id, GetAmount, 2, 1, "商城购机", true, order.Id);
  185. // //返回到余额
  186. // OperateAmountChange(opdb, parentUser.Id, GetAmount, 1, 2, "商城购机", true, order.Id);
  187. OpAmountItem item = new OpAmountItem()
  188. {
  189. UserId = parentUser.Id,
  190. OperateType = 0,
  191. ChangeType = 5,
  192. Remark = "商城购机",
  193. UseAmount = GetAmount,
  194. UseValidForGetAmount = GetAmount,
  195. UseTotalAmt = GetAmount,
  196. DataType = 1,
  197. DataId = order.Id,
  198. };
  199. RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", item);
  200. }
  201. }
  202. }
  203. }
  204. }
  205. db.Dispose();
  206. opdb.Dispose();
  207. }
  208. public void StartTmp()
  209. {
  210. Thread th = new Thread(tmpuse);
  211. th.IsBackground = true;
  212. th.Start();
  213. }
  214. public void tmpuse()
  215. {
  216. List<string> OrderNos = new List<string>();
  217. OrderNos.Add("BM2024060113545453402672795");
  218. OrderNos.Add("BM2024060120184311880104432");
  219. OrderNos.Add("BM2024060217481333220082372");
  220. OrderNos.Add("BM2024060321463465032424067");
  221. OrderNos.Add("BM2024060322545274296859914");
  222. OrderNos.Add("BM2024060411201262916896764");
  223. OrderNos.Add("BM2024060412004350540058006");
  224. OrderNos.Add("BM2024060413465972197564202");
  225. OrderNos.Add("BM2024060415033573916503519");
  226. OrderNos.Add("BM2024060415272140626450020");
  227. OrderNos.Add("BM2024060419341007900312976");
  228. OrderNos.Add("BM2024060614271376167991548");
  229. OrderNos.Add("BM2024060713063585137278426");
  230. OrderNos.Add("BM2024060717481892176601326");
  231. OrderNos.Add("BM2024060722154132572630240");
  232. OrderNos.Add("BM2024060813372270460352780");
  233. OrderNos.Add("BM2024060817212502065186555");
  234. OrderNos.Add("BM2024060913094607695535841");
  235. OrderNos.Add("BM2024060915283860183390573");
  236. OrderNos.Add("BM2024061021073127270148815");
  237. OrderNos.Add("BM2024061110512897200373083");
  238. OrderNos.Add("BM2024061116381172563321539");
  239. OrderNos.Add("BM2024061116403970848033016");
  240. OrderNos.Add("BM2024061116420698468544752");
  241. OrderNos.Add("BM2024061116454791337410830");
  242. OrderNos.Add("BM2024061618114602891640591");
  243. OrderNos.Add("BM2024061710231575090504019");
  244. OrderNos.Add("BM2024061712491667073449209");
  245. OrderNos.Add("BM2024061713313725279985341");
  246. OrderNos.Add("BM2024061715305004310220168");
  247. OrderNos.Add("BM2024061814570516374344008");
  248. OrderNos.Add("BM2024061816284293452540567");
  249. OrderNos.Add("BM2024061817303141188725776");
  250. OrderNos.Add("BM2024061817514466570015777");
  251. OrderNos.Add("BM2024061819320454306899315");
  252. OrderNos.Add("BM2024061819550591038658501");
  253. OrderNos.Add("BM2024061820083870519829511");
  254. OrderNos.Add("BM2024061913174251376166374");
  255. OrderNos.Add("BM2024061914133532158425064");
  256. OrderNos.Add("BM2024062011520571122591493");
  257. OrderNos.Add("BM2024062019282462603171101");
  258. OrderNos.Add("BM2024062110361269396743921");
  259. OrderNos.Add("BM2024062111013322637815281");
  260. OrderNos.Add("BM2024062116123310729459180");
  261. OrderNos.Add("BM2024062123360881972979017");
  262. OrderNos.Add("BM2024062215145819732048432");
  263. OrderNos.Add("BM2024062309550206498202108");
  264. OrderNos.Add("BM2024062313551537076726382");
  265. OrderNos.Add("BM2024062314521368797769848");
  266. OrderNos.Add("BM2024062315021947328572858");
  267. OrderNos.Add("BM2024062315505914062923147");
  268. OrderNos.Add("BM2024062316493189795239698");
  269. OrderNos.Add("BM2024062317220672507255078");
  270. OrderNos.Add("BM2024062317362079359724475");
  271. OrderNos.Add("BM2024062319362607330797044");
  272. OrderNos.Add("BM2024062409194399607625868");
  273. OrderNos.Add("BM2024062409354075093191999");
  274. OrderNos.Add("BM2024062409572417250788279");
  275. OrderNos.Add("BM2024062410130055103569254");
  276. OrderNos.Add("BM2024062410370404316989426");
  277. OrderNos.Add("BM2024062410494036054821444");
  278. OrderNos.Add("BM2024062410510214237120993");
  279. OrderNos.Add("BM2024062410540774395766768");
  280. OrderNos.Add("BM2024062412054969363623909");
  281. OrderNos.Add("BM2024062412063365014595845");
  282. OrderNos.Add("BM2024062412564810567150827");
  283. OrderNos.Add("BM2024062413361660963905320");
  284. OrderNos.Add("BM2024062413533005598503044");
  285. OrderNos.Add("BM2024062414034742067611108");
  286. OrderNos.Add("BM2024062414221160454950118");
  287. OrderNos.Add("BM2024062414221586262761671");
  288. OrderNos.Add("BM2024062414283991832971690");
  289. OrderNos.Add("BM2024062415020644801374214");
  290. OrderNos.Add("BM2024062416342211628125048");
  291. OrderNos.Add("BM2024062419040634390593367");
  292. OrderNos.Add("BM2024062420031688020592643");
  293. OrderNos.Add("BM2024062420595935667404632");
  294. OrderNos.Add("BM2024062421545516534666451");
  295. OrderNos.Add("BM2024062422060766623021093");
  296. List<int> ChkIds = new List<int>(); //机具券商品Id集合
  297. ChkIds.Add(10);
  298. ChkIds.Add(11);
  299. ChkIds.Add(77);
  300. ChkIds.Add(78);
  301. ChkIds.Add(79);
  302. ChkIds.Add(92);
  303. DateTime chkDate = DateTime.Parse("2024-06-01 00:00:00");
  304. WebCMSEntities db = new WebCMSEntities();
  305. OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
  306. List<Orders> orders = db.Orders.Where(m => m.CreateDate >= chkDate && OrderNos.Contains(m.OrderNo) && ChkIds.Contains(m.ProductId) && m.Status > 0).ToList();
  307. foreach(Orders order in orders)
  308. {
  309. int Kind = 0;
  310. if (order.ProductId == 10)
  311. {
  312. Kind = 1;
  313. }
  314. else if (order.ProductId == 11)
  315. {
  316. Kind = 2;
  317. }
  318. int CouponCount = 0;
  319. if(Kind == 1)
  320. {
  321. CouponCount = 3 * order.BuyCount;
  322. }
  323. else if(Kind == 2)
  324. {
  325. CouponCount = 2 * order.BuyCount;
  326. }
  327. UserAccountRecord record = db.UserAccountRecord.FirstOrDefault(m => m.Id >= 4579675 && m.QueryCount == order.Id && m.ChangeType == 112) ?? new UserAccountRecord();
  328. UserRankItem orderUser = GetUserLevel2(order.UserId, order.PayDate.Value);
  329. if(orderUser.UserLevel == 0)
  330. {
  331. PreUserLevel(db, order.UserId, 1, DateTime.Parse("2025-01-01 00:00:00"));
  332. }
  333. string ParentNav = orderUser.ParentNav + "," + orderUser.Id + ",";
  334. string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
  335. Array.Reverse(ParentNavList);
  336. int index = 0;
  337. bool DirectPrizeFlag = false; //推荐奖励发放标识
  338. foreach(string ParentId in ParentNavList)
  339. {
  340. UserRankItem parentUser = GetUserLevel2(int.Parse(ParentId), order.PayDate.Value);
  341. index += 1;
  342. if(index == 1 && (orderUser.LeaderLevel > 0 || orderUser.OperateLevel > 0) && !DirectPrizeFlag)
  343. {
  344. // DirectPrize(db, order.Id, order.UserId, order.BuyCount);
  345. if(record.UserId != order.UserId) function.WriteLog("下单人--订单号:" + order.OrderNo + ";应发对象:" + order.UserId + ";实发对象:" + record.UserId + ";发放金额:" + order.BuyCount + "00;", "推荐奖励计算");
  346. DirectPrizeFlag = true;
  347. }
  348. if(index > 1)
  349. {
  350. if(Utils.Instance.IsStandardUser2(parentUser.Id, order.PayDate.Value) && !DirectPrizeFlag)
  351. {
  352. // DirectPrize(db, order.Id, parentUser.Id, order.BuyCount);
  353. if(record.UserId != parentUser.Id) function.WriteLog("上级--订单号:" + order.OrderNo + ";应发对象:" + parentUser.Id + ";实发对象:" + record.UserId + ";发放金额:" + order.BuyCount + "00;", "推荐奖励计算");
  354. DirectPrizeFlag = true;
  355. }
  356. }
  357. }
  358. if(!DirectPrizeFlag && record.Id == 0)
  359. {
  360. function.WriteLog("没发--订单号:" + order.OrderNo + ";发放金额:" + order.BuyCount + "00;", "推荐奖励计算");
  361. }
  362. }
  363. db.Dispose();
  364. opdb.Dispose();
  365. }
  366. public void Start2()
  367. {
  368. Thread th = new Thread(ready2);
  369. th.IsBackground = true;
  370. th.Start();
  371. }
  372. private void ready2()
  373. {
  374. bool op = true;
  375. while (op)
  376. {
  377. string content = RedisDbconn.Instance.RPop<string>("PosCouponPrizeQueue2");
  378. if (!string.IsNullOrEmpty(content))
  379. {
  380. try
  381. {
  382. dosomething(int.Parse(function.CheckInt(content)));
  383. }
  384. catch
  385. {
  386. }
  387. }
  388. else
  389. {
  390. Thread.Sleep(5000);
  391. }
  392. }
  393. }
  394. public void dosomething2(int OrderId)
  395. {
  396. WebCMSEntities db = new WebCMSEntities();
  397. OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
  398. Orders order = db.Orders.FirstOrDefault(m => m.Id == OrderId);
  399. if(order != null)
  400. {
  401. List<int> ChkIds = new List<int>(); //机具券商品Id集合
  402. ChkIds.Add(10);
  403. ChkIds.Add(11);
  404. ChkIds.Add(77);
  405. ChkIds.Add(78);
  406. ChkIds.Add(79);
  407. //判断是否是指定商品
  408. if(ChkIds.Contains(order.ProductId))
  409. {
  410. int Kind = 0;
  411. if (order.ProductId == 10)
  412. {
  413. Kind = 1;
  414. }
  415. else if (order.ProductId == 11)
  416. {
  417. Kind = 2;
  418. }
  419. int CouponCount = 0;
  420. if(Kind == 1)
  421. {
  422. CouponCount = 3 * order.BuyCount;
  423. }
  424. else if(Kind == 2)
  425. {
  426. CouponCount = 2 * order.BuyCount;
  427. }
  428. UserRankItem orderUser = GetUserLevel(order.UserId);
  429. if(orderUser.UserLevel == 0)
  430. {
  431. }
  432. string ParentNav = orderUser.ParentNav + "," + orderUser.Id + ",";
  433. string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
  434. Array.Reverse(ParentNavList);
  435. int index = 0;
  436. bool DirectPrizeFlag = false; //推荐奖励发放标识
  437. bool BackAccountFlag = false; //备用金返余额标识
  438. bool BigLeaderFlag = false; //大盟主标记
  439. decimal BuyPrize = 0; //购机奖励
  440. foreach(string ParentId in ParentNavList)
  441. {
  442. UserRankItem parentUser = GetUserLevel(int.Parse(ParentId));
  443. index += 1;
  444. if(index == 1 && (orderUser.LeaderLevel > 0 || orderUser.OperateLevel > 0) && !DirectPrizeFlag)
  445. {
  446. DirectPrizeFlag = true;
  447. }
  448. if(index > 1)
  449. {
  450. if(Utils.Instance.IsStandardUser(parentUser.Id) && !DirectPrizeFlag)
  451. {
  452. DirectPrizeFlag = true;
  453. }
  454. }
  455. if(parentUser.AgoLeaderLevel > 0 && CheckLeaderReserve(db, order.BuyCount, parentUser.Id))
  456. {
  457. //购机奖
  458. if(parentUser.LeaderLevel > 0)
  459. {
  460. decimal CurBuyPrize = GetBuyPrize(parentUser, order.UserId);
  461. decimal GetPrize = CurBuyPrize - BuyPrize;
  462. if(GetPrize > 0)
  463. {
  464. bool PrizeFlag = true;
  465. int ChangeType = 118;
  466. if(parentUser.OperateLevel == 1)
  467. {
  468. ChangeType = 120;
  469. }
  470. if(parentUser.OperateLevel > 1)
  471. {
  472. ChangeType = 128;
  473. if(function.CheckNull(RedisDbconn.Instance.Get<string>("YingXunUser")).Contains("," + orderUser.Id + ","))
  474. {
  475. PrizeFlag = false;
  476. }
  477. }
  478. if(PrizeFlag && !db.UserAccountRecord.Any(m => m.QueryCount == order.Id && m.ChangeType == ChangeType))
  479. {
  480. // OpAccount(db, order.Id, parentUser.Id, GetPrize, order.BuyCount, ChangeType);
  481. }
  482. BuyPrize = CurBuyPrize;
  483. }
  484. }
  485. if(!BackAccountFlag)
  486. {
  487. BackAccountFlag = true;
  488. }
  489. }
  490. else if(parentUser.OperateLevel > 0 && CheckOpReserve(opdb, order.BuyCount, parentUser.Id))
  491. {
  492. //购机奖
  493. decimal CurBuyPrize = GetBuyPrize(parentUser, order.UserId);
  494. decimal GetPrize = CurBuyPrize - BuyPrize;
  495. if(GetPrize > 0)
  496. {
  497. int ChangeType = 120;
  498. if(parentUser.OperateLevel > 1)
  499. {
  500. ChangeType = 128;
  501. }
  502. BuyPrize = CurBuyPrize;
  503. }
  504. if(!BackAccountFlag)
  505. {
  506. BackAccountFlag = true;
  507. }
  508. }
  509. }
  510. }
  511. }
  512. db.Dispose();
  513. opdb.Dispose();
  514. }
  515. /// <summary>
  516. /// 获取创客各种等级
  517. /// </summary>
  518. /// <param name="db"></param>
  519. /// <param name="UserId"></param>
  520. /// <returns></returns>
  521. public UserRankItem GetUserLevel(int UserId)
  522. {
  523. WebCMSEntities db = new WebCMSEntities();
  524. OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
  525. UserRankItem dic = new UserRankItem();
  526. DateTime now = DateTime.Now;
  527. Users user = db.Users.FirstOrDefault(m => m.Id == UserId && m.AuthFlag == 1 && m.Status > -1) ?? new Users();
  528. UserRankWhite userWhite = db.UserRankWhite.FirstOrDefault(m => m.Id == UserId && m.UpdateDate > now) ?? new UserRankWhite();
  529. Leaders leader = db.Leaders.FirstOrDefault(m => m.Id == UserId) ?? new Leaders();
  530. dic.UserLevel = userWhite.Rank > user.UserLevel ? userWhite.Rank : user.UserLevel;
  531. if(leader.ExpiredDate > now)
  532. {
  533. dic.LeaderLevel = leader.LeaderLevel;
  534. }
  535. dic.AgoLeaderLevel = leader.LeaderLevel;
  536. OpModels.SysAdmin sys = opdb.SysAdmin.FirstOrDefault(m => m.UserId == UserId) ?? new OpModels.SysAdmin();
  537. if(sys.ExpireDate > now)
  538. {
  539. dic.OperateLevel = user.UserType;
  540. dic.UserType = user.UserType;
  541. }
  542. dic.MerchantType = user.MerchantType;
  543. dic.Id = user.Id;
  544. dic.MakerCode = user.MakerCode;
  545. dic.RealName = user.RealName;
  546. dic.ParentUserId = user.ParentUserId;
  547. dic.ParentNav = user.ParentNav;
  548. db.Dispose();
  549. opdb.Dispose();
  550. return dic;
  551. }
  552. public UserRankItem GetUserLevel2(int UserId, DateTime OrderTime)
  553. {
  554. WebCMSEntities db = new WebCMSEntities();
  555. OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
  556. UserRankItem dic = new UserRankItem();
  557. Users user = db.Users.FirstOrDefault(m => m.Id == UserId && m.AuthFlag == 1 && m.Status > -1) ?? new Users();
  558. UserRankWhite userWhite = db.UserRankWhite.FirstOrDefault(m => m.Id == UserId && m.UpdateDate > OrderTime) ?? new UserRankWhite();
  559. Leaders leader = db.Leaders.FirstOrDefault(m => m.Id == UserId) ?? new Leaders();
  560. dic.UserLevel = userWhite.Rank > user.UserLevel ? userWhite.Rank : user.UserLevel;
  561. if(leader.ExpiredDate > OrderTime && leader.LastBuyDate < OrderTime)
  562. {
  563. dic.LeaderLevel = leader.LeaderLevel;
  564. }
  565. dic.AgoLeaderLevel = leader.LeaderLevel;
  566. OpModels.SysAdmin sys = opdb.SysAdmin.FirstOrDefault(m => m.UserId == UserId) ?? new OpModels.SysAdmin();
  567. if(sys.ExpireDate > OrderTime && sys.CreateDate < OrderTime)
  568. {
  569. dic.OperateLevel = user.UserType;
  570. dic.UserType = user.UserType;
  571. }
  572. dic.MerchantType = user.MerchantType;
  573. dic.Id = user.Id;
  574. dic.MakerCode = user.MakerCode;
  575. dic.RealName = user.RealName;
  576. dic.ParentUserId = user.ParentUserId;
  577. dic.ParentNav = user.ParentNav;
  578. db.Dispose();
  579. opdb.Dispose();
  580. return dic;
  581. }
  582. /// <summary>
  583. /// 直推奖励
  584. /// </summary>
  585. /// <param name="db"></param>
  586. /// <param name="OrderId"></param>
  587. /// <param name="UserId"></param>
  588. /// <param name="Count"></param>
  589. public void DirectPrize(WebCMSEntities db, int OrderId, int UserId, int Count = 1)
  590. {
  591. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId);
  592. if (account == null)
  593. {
  594. account = db.UserAccount.Add(new UserAccount()
  595. {
  596. Id = UserId,
  597. UserId = UserId,
  598. }).Entity;
  599. db.SaveChanges();
  600. }
  601. decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
  602. decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
  603. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  604. account.BalanceAmount += 100 * Count;
  605. account.TotalAmount += 100 * Count;
  606. decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
  607. decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
  608. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  609. UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
  610. {
  611. CreateDate = DateTime.Now,
  612. UpdateDate = DateTime.Now,
  613. UserId = UserId, //创客
  614. ChangeType = 112, //变动类型
  615. ChangeAmount = 100 * Count, //变更金额
  616. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  617. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  618. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  619. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  620. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  621. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  622. QueryCount = OrderId,
  623. }).Entity;
  624. db.SaveChanges();
  625. //发送APP推送消息
  626. Utils.Instance.PrizePush(UserId, 100 * Count);
  627. }
  628. /// <summary>
  629. /// 判断盟主储蓄金足够
  630. /// </summary>
  631. /// <param name="db"></param>
  632. /// <param name="Count"></param>
  633. /// <param name="UserId"></param>
  634. /// <returns></returns>
  635. public bool CheckLeaderReserve(WebCMSEntities db, int Count, int UserId)
  636. {
  637. UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == UserId) ?? new UserAccount();
  638. if(acccount.LeaderReserve >= 400 * Count)
  639. {
  640. return true;
  641. }
  642. return false;
  643. }
  644. /// <summary>
  645. /// 判断运营中心/合伙人额度足够
  646. /// </summary>
  647. /// <param name="db"></param>
  648. /// <param name="Count"></param>
  649. /// <param name="UserId"></param>
  650. /// <returns></returns>
  651. public bool CheckOpReserve(OpModels.WebCMSEntities db, int Count, int UserId)
  652. {
  653. OpModels.UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId) ?? new OpModels.UserAccount();
  654. if(account.TotalAmt >= 400 * Count)
  655. {
  656. return true;
  657. }
  658. return false;
  659. }
  660. public bool CheckOpReserve(OpModels.WebCMSEntities db, decimal Amt, int UserId)
  661. {
  662. OpModels.UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId) ?? new OpModels.UserAccount();
  663. if(account.TotalAmt >= Amt)
  664. {
  665. return true;
  666. }
  667. return false;
  668. }
  669. /// <summary>
  670. /// 扣减/增加盟主储蓄金
  671. /// </summary>
  672. /// <param name="db"></param>
  673. /// <param name="OrderId"></param>
  674. /// <param name="UserId"></param>
  675. /// <param name="Money"></param>
  676. /// <param name="ChangeType"></param>
  677. /// <param name="SourceUserId"></param>
  678. /// <param name="Remark"></param>
  679. public int OpReserve(WebCMSEntities db, int OrderId, int UserId, decimal Money, int ChangeType, int SourceUserId = 0, string Remark = "储备金购买")
  680. {
  681. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId);
  682. if (account == null)
  683. {
  684. account = db.UserAccount.Add(new UserAccount()
  685. {
  686. Id = UserId,
  687. UserId = UserId,
  688. }).Entity;
  689. db.SaveChanges();
  690. }
  691. decimal BeforeAmount = account.LeaderReserve; //变更前总金额
  692. if(ChangeType == 1)
  693. {
  694. account.LeaderReserve += Money;
  695. }
  696. else
  697. {
  698. account.LeaderReserve -= Money;
  699. }
  700. decimal AfterAmount = account.LeaderReserve; //变更后总金额
  701. LeaderReserveRecord add = db.LeaderReserveRecord.Add(new LeaderReserveRecord()
  702. {
  703. CreateDate = DateTime.Now,
  704. ChangeType = ChangeType,
  705. OrderId = OrderId,
  706. Remark = Remark,
  707. AfterAmt = AfterAmount,
  708. BeforeAmt = BeforeAmount,
  709. ChangeAmt = Money,
  710. TradeDate = DateTime.Now.ToString("yyyyMMdd"),
  711. TradeMonth = DateTime.Now.ToString("yyyyMM"),
  712. UserId = UserId,
  713. SourceUserId = SourceUserId,
  714. Sort = GetLeaderReserveRecordType(Remark),
  715. }).Entity;
  716. db.SaveChanges();
  717. return add.Id;
  718. }
  719. private int GetLeaderReserveRecordType(string Remark)
  720. {
  721. Dictionary<int, string> data = new Dictionary<int, string>();
  722. data.Add(11, "兑换机具券,机具券兑换,系统增加(盟主储蓄金),系统扣减(盟主储蓄金),储备金购买");
  723. data.Add(12, "系统增加(可提现余额),系统扣减(可提现余额)");
  724. data.Add(13, "推荐大盟主,推荐小盟主,商城购机,购机奖励");
  725. var item = data.FirstOrDefault(m => m.Value.Contains(Remark));
  726. if(item.Key > 0)
  727. {
  728. return item.Key;
  729. }
  730. return 0;
  731. }
  732. /// <summary>
  733. /// 操作盟主可提现余额
  734. /// </summary>
  735. /// <param name="db"></param>
  736. /// <param name="order"></param>
  737. /// <param name="UserId"></param>
  738. /// <param name="Money"></param>
  739. /// <param name="Count"></param>
  740. /// <param name="Kind"></param>
  741. public void OpLeaderAccount(WebCMSEntities db, Orders order, int UserId, decimal Money, int Count = 1, int ReserveRecordId = 0)
  742. {
  743. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId);
  744. if (account == null)
  745. {
  746. account = db.UserAccount.Add(new UserAccount()
  747. {
  748. Id = UserId,
  749. UserId = UserId,
  750. }).Entity;
  751. db.SaveChanges();
  752. }
  753. int ChangeType = 0;
  754. if(Money == 400)
  755. {
  756. ChangeType = 117;
  757. }
  758. decimal BeforeLeaderBalanceAmount = account.LeaderBalanceAmount; //变更前余额
  759. account.LeaderBalanceAmount += Money * Count;
  760. decimal AfterLeaderBalanceAmount = account.LeaderBalanceAmount; //变更后余额
  761. LeaderAccountRecord leaderAccountRecord = db.LeaderAccountRecord.Add(new LeaderAccountRecord()
  762. {
  763. CreateDate = DateTime.Now,
  764. UpdateDate = DateTime.Now,
  765. UserId = UserId, //创客
  766. ChangeType = ChangeType, //变动类型
  767. ChangeAmount = Money * Count, //变更金额
  768. BeforeBalanceAmount = BeforeLeaderBalanceAmount, //变更前余额
  769. AfterBalanceAmount = AfterLeaderBalanceAmount, //变更后余额
  770. QueryCount = order.Id,
  771. Sort = order.UserId,
  772. }).Entity;
  773. db.SaveChanges();
  774. if(ReserveRecordId > 0)
  775. {
  776. LeaderReserveRecord edit = db.LeaderReserveRecord.FirstOrDefault(m => m.Id == ReserveRecordId);
  777. if(edit != null)
  778. {
  779. edit.AccountRecordId = leaderAccountRecord.Id;
  780. db.SaveChanges();
  781. }
  782. }
  783. }
  784. /// <summary>
  785. /// 操作余额
  786. /// </summary>
  787. /// <param name="db"></param>
  788. /// <param name="order"></param>
  789. /// <param name="UserId"></param>
  790. /// <param name="Money"></param>
  791. /// <param name="Count"></param>
  792. public void OpAccount(WebCMSEntities db, int OrderId, int UserId, decimal Money, int Count = 1, int ChangeType = 0, int Kind = 0)
  793. {
  794. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId);
  795. if (account == null)
  796. {
  797. account = db.UserAccount.Add(new UserAccount()
  798. {
  799. Id = UserId,
  800. UserId = UserId,
  801. }).Entity;
  802. db.SaveChanges();
  803. }
  804. decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
  805. decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
  806. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  807. account.BalanceAmount += Money * Count;
  808. account.TotalAmount += Money * Count;
  809. decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
  810. decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
  811. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  812. UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
  813. {
  814. CreateDate = DateTime.Now,
  815. UpdateDate = DateTime.Now,
  816. UserId = UserId, //创客
  817. ChangeType = ChangeType, //变动类型
  818. ChangeAmount = Money * Count, //变更金额
  819. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  820. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  821. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  822. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  823. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  824. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  825. QueryCount = OrderId,
  826. Kind = Kind,
  827. }).Entity;
  828. db.SaveChanges();
  829. //发送APP推送消息
  830. Utils.Instance.PrizePush(UserId, Money * Count);
  831. }
  832. /// <summary>
  833. /// 操作运营中心/合伙人额度(TotalAmt未使用额度,ValidForGetAmount可提现额度)
  834. /// </summary>
  835. /// <param name="db"></param>
  836. /// <param name="UserId"></param>
  837. /// <param name="Money"></param>
  838. /// <param name="OperateType">(1增加,2减少)</param>
  839. /// <param name="AmountType">(1未使用额度,2可提现额度)</param>
  840. /// <param name="Remark"></param>
  841. /// <param name="record"></param>
  842. public void OperateAmountChange(OpModels.WebCMSEntities db, int UserId, decimal Money, int OperateType, int AmountType, string Remark = "", bool record = false, int OrderId = 0)
  843. {
  844. OpModels.UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId);
  845. if (account == null)
  846. {
  847. account = db.UserAccount.Add(new OpModels.UserAccount()
  848. {
  849. Id = UserId,
  850. UserId = UserId,
  851. }).Entity;
  852. db.SaveChanges();
  853. }
  854. decimal BeforeAmount = account.ValidAmount + account.TotalAmt + account.ValidForGetAmount; //变更前总金额
  855. if(OperateType == 1)
  856. {
  857. if(AmountType == 1)
  858. {
  859. account.TotalAmt += Money;
  860. }
  861. else if(AmountType == 2)
  862. {
  863. account.ValidForGetAmount += Money;
  864. }
  865. else
  866. {
  867. account.ValidAmount += Money;
  868. }
  869. }
  870. else
  871. {
  872. if(AmountType == 1)
  873. {
  874. account.TotalAmt -= Money;
  875. }
  876. else if(AmountType == 2)
  877. {
  878. account.ValidForGetAmount -= Money;
  879. }
  880. else
  881. {
  882. account.ValidAmount -= Money;
  883. }
  884. }
  885. decimal AfterAmount = account.ValidAmount + account.TotalAmt + account.ValidForGetAmount; //变更后总金额
  886. if(record)
  887. {
  888. OpModels.AmountRecord add = db.AmountRecord.Add(new OpModels.AmountRecord()
  889. {
  890. CreateDate = DateTime.Now,
  891. UpdateDate = DateTime.Now,
  892. OperateType = OperateType,
  893. AfterAmount = AfterAmount,
  894. AfterValidForGetAmount = account.ValidForGetAmount,
  895. AfterTotalAmt = account.TotalAmt,
  896. AfterValidAmount = account.ValidAmount,
  897. BeforeAmount = BeforeAmount,
  898. UseAmount = Money,
  899. UserId = UserId,
  900. SeoDescription = Remark,
  901. Version = AmountType,
  902. QueryCount = OrderId,
  903. }).Entity;
  904. OpModels.AmountChangeRecord amountChangeRecord = db.AmountChangeRecord.Add(new OpModels.AmountChangeRecord()
  905. {
  906. AmountType = 2,//1 未使用额度 2 可提现额度 3 关联分仓额度
  907. CreateDate = DateTime.Now,
  908. Title = Remark,
  909. UserId = UserId, //运营中心Id
  910. BeforeAmount = BeforeAmount,//使用前剩余额度
  911. AfterAmount = AfterAmount,//使用后剩余额度
  912. ChangeAmount = Money,//操作金额
  913. OperateType = OperateType,//操作类别
  914. Sort = OrderId,
  915. }).Entity;
  916. }
  917. db.SaveChanges();
  918. }
  919. /// <summary>
  920. /// 给券设置大盟主标记
  921. /// </summary>
  922. /// <param name="db"></param>
  923. /// <param name="LeaderUserId"></param>
  924. /// <param name="Count"></param>
  925. /// <param name="couponIds"></param>
  926. public int SetPosCouponLeaderFlag(WebCMSEntities db, int LeaderUserId, int Count, List<int> couponIds)
  927. {
  928. int SetCount = 0;
  929. UserAccount pacccount = db.UserAccount.FirstOrDefault(m => m.Id == LeaderUserId) ?? new UserAccount();
  930. foreach(int couponId in couponIds)
  931. {
  932. PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
  933. decimal LeaderReserve = pacccount.LeaderReserve;
  934. decimal CheckReserve = 400 * Count;
  935. // if(LeaderReserve < CheckReserve)
  936. // {
  937. // LeaderReserveRecord ReserveRecord = db.LeaderReserveRecord.FirstOrDefault(m => m.UserId == LeaderUserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > 0);
  938. // if(ReserveRecord != null)
  939. // {
  940. // if(ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve >= CheckReserve)
  941. // {
  942. // LeaderReserve = CheckReserve;
  943. // ReserveRecord.UsedReserve += CheckReserve;
  944. // }
  945. // else
  946. // {
  947. // decimal OtherLeaderReserve = ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve;
  948. // ReserveRecord.UsedReserve += OtherLeaderReserve;
  949. // LeaderReserveRecord ReserveRecord2 = db.LeaderReserveRecord.FirstOrDefault(m => m.Id > ReserveRecord.Id && m.UserId == LeaderUserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > 0);
  950. // if(ReserveRecord2 != null)
  951. // {
  952. // if(ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve >= CheckReserve - OtherLeaderReserve)
  953. // {
  954. // LeaderReserve = CheckReserve - OtherLeaderReserve;
  955. // ReserveRecord2.UsedReserve += CheckReserve - OtherLeaderReserve;
  956. // }
  957. // else
  958. // {
  959. // OtherLeaderReserve = ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve;
  960. // ReserveRecord2.UsedReserve += OtherLeaderReserve;
  961. // }
  962. // }
  963. // }
  964. // }
  965. // }
  966. if(coupon != null && LeaderReserve >= CheckReserve)
  967. {
  968. coupon.LeaderUserId = LeaderUserId;
  969. SetCount += 1;
  970. }
  971. }
  972. db.SaveChanges();
  973. return SetCount;
  974. }
  975. public bool CheckPosCouponLeaderFlag(WebCMSEntities db, int UserId, int Count, List<string> codes)
  976. {
  977. int SetCount = 0;
  978. decimal CheckReserve = 400 * Count;
  979. // decimal LeaderReserve = 0;
  980. LeaderReserveRecord ReserveRecord = db.LeaderReserveRecord.FirstOrDefault(m => m.SourceUserId == UserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > CheckReserve);
  981. if(ReserveRecord != null)
  982. {
  983. int LeaderUserId = ReserveRecord.UserId;
  984. // if(ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve >= CheckReserve)
  985. // {
  986. // LeaderReserve = CheckReserve;
  987. ReserveRecord.UsedReserve += CheckReserve;
  988. // }
  989. // else
  990. // {
  991. // decimal OtherLeaderReserve = ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve;
  992. // ReserveRecord.UsedReserve += OtherLeaderReserve;
  993. // LeaderReserveRecord ReserveRecord2 = db.LeaderReserveRecord.FirstOrDefault(m => m.Id > ReserveRecord.Id && m.UserId == LeaderUserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > 0);
  994. // if(ReserveRecord2 != null)
  995. // {
  996. // if(ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve >= CheckReserve - OtherLeaderReserve)
  997. // {
  998. // LeaderReserve = CheckReserve - OtherLeaderReserve;
  999. // ReserveRecord2.UsedReserve += CheckReserve - OtherLeaderReserve;
  1000. // }
  1001. // else
  1002. // {
  1003. // OtherLeaderReserve = ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve;
  1004. // ReserveRecord2.UsedReserve += OtherLeaderReserve;
  1005. // }
  1006. // }
  1007. // }
  1008. List<int> couponIds = db.PosCoupons.Where(m => codes.Contains(m.ExchangeCode)).OrderBy(m => m.Id).ToList().Select(m => m.Id).ToList();
  1009. foreach(int couponId in couponIds)
  1010. {
  1011. PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
  1012. if(coupon != null)
  1013. {
  1014. coupon.LeaderUserId = LeaderUserId;
  1015. SetCount += 1;
  1016. }
  1017. }
  1018. db.SaveChanges();
  1019. }
  1020. return SetCount > 0;
  1021. }
  1022. /// <summary>
  1023. /// 获取购机奖金额
  1024. /// </summary>
  1025. /// <param name="user"></param>
  1026. /// <returns></returns>
  1027. public decimal GetBuyPrize(UserRankItem user, int OrderUserId = 0)
  1028. {
  1029. if(user.OperateLevel == 1) return 100;
  1030. if(user.OperateLevel == 2)
  1031. {
  1032. if(!TradeTeamCheck(OrderUserId))
  1033. {
  1034. return 100;
  1035. }
  1036. return 160;
  1037. }
  1038. if(user.OperateLevel == 3) return 180;
  1039. if(user.OperateLevel == 4) return 200;
  1040. if(user.LeaderLevel > 0) return 100;
  1041. return 0;
  1042. }
  1043. public bool TradeTeamCheck(int UserId)
  1044. {
  1045. bool op = true;
  1046. if(UserId == 0)
  1047. {
  1048. return op;
  1049. }
  1050. function.WriteLog("UserId:" + UserId, "训练营判断参与活动");
  1051. WebCMSEntities maindb = new WebCMSEntities();
  1052. Users muser = maindb.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  1053. string ParentNav = muser.ParentNav + "," + UserId + ",";
  1054. string[] ParentNavList = ParentNav.Replace(",,", ",").Trim(',').Split(',');
  1055. List<int> UserIds = new List<int>();
  1056. foreach(string IdString in ParentNavList)
  1057. {
  1058. UserIds.Add(int.Parse(function.CheckInt(IdString)));
  1059. }
  1060. JavaModels.WebCMSEntities db = new JavaModels.WebCMSEntities();
  1061. var users = db.KxsCampUser.Where(m => UserIds.Contains(m.UserId)).ToList();
  1062. foreach(var user in users)
  1063. {
  1064. DateTime now = DateTime.Now;
  1065. // JavaModels.KxsCamp camp = db.KxsCamp.FirstOrDefault(m => m.Id == user.CampId && m.StartTime <= now && m.EndTime >= now);
  1066. JavaModels.KxsCamp camp = db.KxsCamp.FirstOrDefault(m => m.Id == user.CampId && m.Status == 1);
  1067. if(camp != null)
  1068. {
  1069. function.WriteLog("活动Id:" + camp.Id, "训练营判断参与活动");
  1070. op = false;
  1071. break;
  1072. }
  1073. }
  1074. maindb.Dispose();
  1075. db.Dispose();
  1076. function.WriteLog("\n\n\n", "训练营判断参与活动");
  1077. return op;
  1078. }
  1079. /// <summary>
  1080. /// 获取可提现金额
  1081. /// </summary>
  1082. /// <param name="user"></param>
  1083. /// <returns></returns>
  1084. public decimal GetWithdrawMoney(UserRankItem user)
  1085. {
  1086. if(user.OperateLevel == 1) return 400;
  1087. // if(user.OperateLevel == 2) return 340;
  1088. // if(user.OperateLevel == 3) return 320;
  1089. // if(user.OperateLevel == 4) return 300;
  1090. if(user.OperateLevel == 2) return 400;
  1091. if(user.OperateLevel == 3) return 400;
  1092. if(user.OperateLevel == 4) return 400;
  1093. if(user.AgoLeaderLevel > 0) return 400;
  1094. return 0;
  1095. }
  1096. /// <summary>
  1097. /// 预设职级
  1098. /// </summary>
  1099. /// <param name="db"></param>
  1100. /// <param name="UserId">创客Id</param>
  1101. /// <param name="Rank">职级</param>
  1102. /// <param name="ExpiredDate">过期时间</param>
  1103. public void PreUserLevel(WebCMSEntities db, int UserId, int Rank, DateTime ExpiredDate)
  1104. {
  1105. UserRankWhite rank = db.UserRankWhite.FirstOrDefault(m => m.Id == UserId);
  1106. if(rank == null)
  1107. {
  1108. rank = db.UserRankWhite.Add(new UserRankWhite()
  1109. {
  1110. CreateDate = DateTime.Now, //设置时间
  1111. UserId = UserId, //用户
  1112. Id = UserId,
  1113. }).Entity;
  1114. db.SaveChanges();
  1115. }
  1116. rank.Rank = Rank;
  1117. rank.UpdateDate = ExpiredDate;
  1118. db.SaveChanges();
  1119. }
  1120. }
  1121. }