using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading; using MySystem.MainModels; using Library; using LitJson; namespace MySystem { /// /// 设置机具费率标记并推送消息 /// public class SetFeeService { public readonly static SetFeeService Instance = new SetFeeService(); private SetFeeService() { } public void Start() { Thread th = new Thread(doSomething); th.IsBackground = true; th.Start(); } public void doSomething() { DataTable dt = CustomerSqlConn.dtable("select Id from PosMachinesTwo where BrandId in (1,3) and BindingState=1 and BindingTime<'" + DateTime.Now.AddDays(-90).ToString("yyyy-MM-dd") + " 00:00:00' and UpFeeFlag=0", Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString()); foreach(DataRow dr in dt.Rows) { RedisDbconn.Instance.AddList("JkFeeQueue", dr["Id"].ToString()); } dt = CustomerSqlConn.dtable("select Id from PosMachinesTwo where BrandId in (1,3) and BindingState=1 and BindingTime<'" + DateTime.Now.AddDays(-90).ToString("yyyy-MM-dd") + " 00:00:00' and DownFeeFlag=1", Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString()); foreach(DataRow dr in dt.Rows) { RedisDbconn.Instance.AddList("JkFeeQueue", dr["Id"].ToString()); } dt.Dispose(); dt.Clear(); while (true) { string content = RedisDbconn.Instance.RPop("JkFeeQueue"); if (!string.IsNullOrEmpty(content)) { try { int PosId = int.Parse(content); WebCMSEntities db = new WebCMSEntities(); PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == PosId); if(pos != null) { PosMerchantInfo mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if(mer != null) { function.WriteLog("KqMerNo:" + mer.KqMerNo + ";PosSn:" + pos.PosSn + ";", "金控机具费率设置日志"); string result = PublicImportDataService.Instance.SetFee(mer.KqMerNo, pos.PosSn, 0.63M); function.WriteLog(result, "金控机具费率设置日志"); JsonData obj = JsonMapper.ToObject(result); if (obj["code"].ToString() == "000000") { function.WriteLog(PublicImportDataService.Instance.Decrypt(obj["data"].ToString()), "金控机具费率设置日志"); } function.WriteLog("\n\n", "金控机具费率设置日志"); } } db.Dispose(); Thread.Sleep(100); } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "金控机具费率设置异常"); } } else { Thread.Sleep(60000); } } } } }