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(), "触发更新商户修改结算卡状态队列异常");
}
}
}
}
}