ResetMerchantTradeService.cs 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Threading;
  6. using MySystem.BsModels;
  7. using Library;
  8. namespace MySystem
  9. {
  10. public class ResetMerchantTradeService
  11. {
  12. public readonly static ResetMerchantTradeService Instance = new ResetMerchantTradeService();
  13. private ResetMerchantTradeService()
  14. { }
  15. public void Start()
  16. {
  17. Thread th = new Thread(doSomething);
  18. th.IsBackground = true;
  19. th.Start();
  20. }
  21. public void doSomething()
  22. {
  23. while (true)
  24. {
  25. string content = RedisDbconn.Instance.RPop<string>("ResetMerchantTradeQueue");
  26. if (!string.IsNullOrEmpty(content))
  27. {
  28. try
  29. {
  30. OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
  31. string[] datalist = content.Split(new string[] { "#cut#" }, StringSplitOptions.None);
  32. int MerchantId = int.Parse(datalist[0]);
  33. DateTime sdate = DateTime.Parse(datalist[1]);
  34. DateTime edate = DateTime.Parse(datalist[2]);
  35. function.WriteLog(DateTime.Now.ToString(), "重置商户交易额");
  36. while (sdate <= edate)
  37. {
  38. string date = sdate.ToString("yyyy-MM-dd");
  39. string TradeDate = date.Replace("-", "");
  40. string TradeMonth = TradeDate.Substring(0, 6);
  41. string start = date + " 00:00:00";
  42. string end = DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00";
  43. OtherMySqlConn.op("delete from PosMerchantTradeSummay where MerchantId=" + MerchantId + " and TradeMonth='" + TradeMonth + "' and TradeDate='" + TradeDate + "'");
  44. OtherMySqlConn.op("insert into PosMerchantTradeSummay (MerchantId,BrandId,TradeDate,TradeMonth,TradeAmount,CreateDate) select *,now() from (select MerchantId,BrandId,DATE_FORMAT(CreateDate,'%Y%m%d') as TradeDate,DATE_FORMAT(CreateDate,'%Y%m') as TradeMonth,sum(TradeAmount) as TradeAmount from TradeRecord where MerchantId=" + MerchantId + " and CreateDate>='" + start + "' and CreateDate<'" + end + "' group by MerchantId,BrandId,DATE_FORMAT(CreateDate,'%Y%m%d'),TradeDate,DATE_FORMAT(CreateDate,'%Y%m') order by MerchantId,BrandId,DATE_FORMAT(CreateDate,'%Y%m%d')) tb");
  45. RedisDbconn.Instance.Clear("PosMerchantAmount:*");
  46. RedisDbconn.Instance.Clear("PosMerchantAmount:*:" + date.Replace("-", "").Substring(0, 6)); //商户当月交易
  47. RedisDbconn.Instance.Clear("PosMerchantAmount:*:" + date.Replace("-", "")); //商户当日交易
  48. sdate = sdate.AddDays(1);
  49. Thread.Sleep(200);
  50. }
  51. function.WriteLog(DateTime.Now.ToString() + "\r\n\r\n", "重置商户交易额");
  52. }
  53. catch (Exception ex)
  54. {
  55. function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "重置商户交易额异常");
  56. }
  57. }
  58. else
  59. {
  60. Thread.Sleep(5000);
  61. }
  62. }
  63. }
  64. }
  65. }