using System; using System.Threading; using System.Linq; using System.Data; using Library; using LitJson; using Newtonsoft.Json; using MySystem.Models.Main2; using MySystem.Service.Main2; /// /// 更新商户修改结算卡状态 /// namespace MySystem { public class UpdateMerchantChangeCardStatusService { public readonly static UpdateMerchantChangeCardStatusService Instance = new UpdateMerchantChangeCardStatusService(); private UpdateMerchantChangeCardStatusService() { } public void Start()//启动 { Thread thread = new Thread(EveryDayUpdateStatus); // 每天更新商户修改结算卡状态 thread.IsBackground = true; thread.Start(); Thread thread1 = new Thread(TriggerUpdateStatus); // 触发更新商户修改结算卡状态 thread1.IsBackground = true; thread1.Start(); Thread thread2 = new Thread(RealTimeUpdateStatus); // 实时更新商户修改结算卡状态 thread2.IsBackground = true; thread2.Start(); } public void RealTimeUpdateStatus() { while (true) { try { WebCMSEntities maindb = new WebCMSEntities(); var infos = maindb.MerchantChangeSettlementCardRecord.Where(m => m.Status == 1).ToList(); foreach (var item in infos) { var info = infos.FirstOrDefault(m => m.Id == item.Id) ?? new MerchantChangeSettlementCardRecord(); //好哒查询修改银行卡任务审核状态 JsonData results = JsonMapper.ToObject(HaoDaHelper.Instance.QueryChangeCardStatus(info.MchtNo, info.TaskId.ToString())); if (results["resultCode"].ToString() == "1") { var Status = int.Parse(results["data"]["status"].ToString()); var Remark = results["data"]["desc"].ToString(); //Status(1 待审核 3 审核拒绝 4 任务失效 5 审核通过) info.Status = Status; info.Remark = Remark; //审核成功修改商户结算信息 if (Status == 5) { var merchantAddInfo = maindb.MerchantAddInfo.FirstOrDefault(m => m.Id == info.MerchantId) ?? new MerchantAddInfo(); merchantAddInfo.AccountNumber = info.AccountNo; merchantAddInfo.AccountName = info.AccountName; var bankInfo = OpenBankAllService.Query(" and BankChildNo='" + info.ZbankNo + "'"); merchantAddInfo.BankName = bankInfo.BankChild; var AreaInfo = HaoDaAreaCodeService.Query(" and CityCode='" + info.AcctZbankCode + "'"); merchantAddInfo.BankAddressCode = AreaInfo.CityName; merchantAddInfo.AccountType = info.AccountType.ToString(); //开户许可证 if (info.AccountType == 0 && !string.IsNullOrEmpty(info.OpenAccountLicenses)) { merchantAddInfo.OpenAccountLicenses = info.OpenAccountLicenses; } if (info.AccountType == 1) { //银行卡正面 if (!string.IsNullOrEmpty(info.BankCard)) { merchantAddInfo.BankCard = info.BankCard; } //企业法人对私授权书 if (merchantAddInfo.SubjectType == "SUBJECT_TYPE_ENTERPRISE" && !string.IsNullOrEmpty(info.PriLicAgreement)) { merchantAddInfo.Support = info.PriLicAgreement; } } merchantAddInfo.OpenUnionNo = info.ZbankNo; } } maindb.SaveChanges(); maindb.Dispose(); } Thread.Sleep(180000); } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "实时更新商户修改结算卡状态队列异常"); } } } public void EveryDayUpdateStatus() { while (true) { if (DateTime.Now.Hour > 2 && DateTime.Now.Hour < 9) { try { string check = function.ReadInstance("/UpdateMerchantChangeCardStatus/check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt"); if (!string.IsNullOrEmpty(check)) { function.WritePage("/UpdateMerchantChangeCardStatus/", "check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString("HH:mm:ss")); WebCMSEntities maindb = new WebCMSEntities(); var infos = maindb.MerchantChangeSettlementCardRecord.Where(m => m.Status == 1).ToList(); foreach (var item in infos) { var info = infos.FirstOrDefault(m => m.Id == item.Id) ?? new MerchantChangeSettlementCardRecord(); //好哒查询修改银行卡任务审核状态 JsonData results = JsonMapper.ToObject(HaoDaHelper.Instance.QueryChangeCardStatus(info.MchtNo, info.TaskId.ToString())); if (results["resultCode"].ToString() == "1") { var Status = int.Parse(results["data"]["status"].ToString()); var Remark = results["data"]["desc"].ToString(); //Status(1 待审核 3 审核拒绝 4 任务失效 5 审核通过) info.Status = Status; info.Remark = Remark; //审核成功修改商户结算信息 if (Status == 5) { var merchantAddInfo = maindb.MerchantAddInfo.FirstOrDefault(m => m.Id == info.MerchantId) ?? new MerchantAddInfo(); merchantAddInfo.AccountNumber = info.AccountNo; merchantAddInfo.AccountName = info.AccountName; var bankInfo = OpenBankAllService.Query(" and BankChildNo='" + info.ZbankNo + "'"); merchantAddInfo.BankName = bankInfo.BankChild; var AreaInfo = HaoDaAreaCodeService.Query(" and CityCode='" + info.AcctZbankCode + "'"); merchantAddInfo.BankAddressCode = AreaInfo.CityName; merchantAddInfo.AccountType = info.AccountType.ToString(); //开户许可证 if (info.AccountType == 0 && !string.IsNullOrEmpty(info.OpenAccountLicenses)) { merchantAddInfo.OpenAccountLicenses = info.OpenAccountLicenses; } if (info.AccountType == 1) { //银行卡正面 if (!string.IsNullOrEmpty(info.BankCard)) { merchantAddInfo.BankCard = info.BankCard; } //企业法人对私授权书 if (merchantAddInfo.SubjectType == "SUBJECT_TYPE_ENTERPRISE" && !string.IsNullOrEmpty(info.PriLicAgreement)) { merchantAddInfo.Support = info.PriLicAgreement; } } merchantAddInfo.OpenUnionNo = info.ZbankNo; } } } maindb.SaveChanges(); maindb.Dispose(); } } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "定时更新商户修改结算卡状态队列异常"); } } else { Thread.Sleep(60000); } } } public void TriggerUpdateStatus() { while (true) { try { string data = RedisDbconn.Instance.RPop("UpdateMerchantChangeCardStatus"); if (!string.IsNullOrEmpty(data)) { WebCMSEntities maindb = new WebCMSEntities(); var infos = maindb.MerchantChangeSettlementCardRecord.Where(m => m.Status == 1).ToList(); foreach (var item in infos) { var info = infos.FirstOrDefault(m => m.Id == item.Id) ?? new MerchantChangeSettlementCardRecord(); //好哒查询修改银行卡任务审核状态 JsonData results = JsonMapper.ToObject(HaoDaHelper.Instance.QueryChangeCardStatus(info.MchtNo, info.TaskId.ToString())); if (results["resultCode"].ToString() == "1") { var Status = int.Parse(results["data"]["status"].ToString()); var Remark = results["data"]["desc"].ToString(); //Status(1 待审核 3 审核拒绝 4 任务失效 5 审核通过) info.Status = Status; info.Remark = Remark; //审核成功修改商户结算信息 if (Status == 5) { var merchantAddInfo = maindb.MerchantAddInfo.FirstOrDefault(m => m.Id == info.MerchantId) ?? new MerchantAddInfo(); merchantAddInfo.AccountNumber = info.AccountNo; merchantAddInfo.AccountName = info.AccountName; var bankInfo = OpenBankAllService.Query(" and BankChildNo='" + info.ZbankNo + "'"); merchantAddInfo.BankName = bankInfo.BankChild; var AreaInfo = HaoDaAreaCodeService.Query(" and CityCode='" + info.AcctZbankCode + "'"); merchantAddInfo.BankAddressCode = AreaInfo.CityName; merchantAddInfo.AccountType = info.AccountType.ToString(); //开户许可证 if (info.AccountType == 0 && !string.IsNullOrEmpty(info.OpenAccountLicenses)) { merchantAddInfo.OpenAccountLicenses = info.OpenAccountLicenses; } if (info.AccountType == 1) { //银行卡正面 if (!string.IsNullOrEmpty(info.BankCard)) { merchantAddInfo.BankCard = info.BankCard; } //企业法人对私授权书 if (merchantAddInfo.SubjectType == "SUBJECT_TYPE_ENTERPRISE" && !string.IsNullOrEmpty(info.PriLicAgreement)) { merchantAddInfo.Support = info.PriLicAgreement; } } merchantAddInfo.OpenUnionNo = info.ZbankNo; } } } maindb.SaveChanges(); maindb.Dispose(); } else { Thread.Sleep(50000); } } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "触发更新商户修改结算卡状态队列异常"); } } } } }