UpdateMerchantChangeCardStatusService.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. using System;
  2. using System.Threading;
  3. using System.Linq;
  4. using System.Data;
  5. using Library;
  6. using LitJson;
  7. using Newtonsoft.Json;
  8. using MySystem.Models.Main2;
  9. using MySystem.Service.Main2;
  10. /// <summary>
  11. /// 更新商户修改结算卡状态
  12. /// </summary>
  13. namespace MySystem
  14. {
  15. public class UpdateMerchantChangeCardStatusService
  16. {
  17. public readonly static UpdateMerchantChangeCardStatusService Instance = new UpdateMerchantChangeCardStatusService();
  18. private UpdateMerchantChangeCardStatusService()
  19. {
  20. }
  21. public void Start()//启动
  22. {
  23. Thread thread = new Thread(EveryDayUpdateStatus); // 每天更新商户修改结算卡状态
  24. thread.IsBackground = true;
  25. thread.Start();
  26. Thread thread1 = new Thread(TriggerUpdateStatus); // 触发更新商户修改结算卡状态
  27. thread1.IsBackground = true;
  28. thread1.Start();
  29. Thread thread2 = new Thread(RealTimeUpdateStatus); // 实时更新商户修改结算卡状态
  30. thread2.IsBackground = true;
  31. thread2.Start();
  32. }
  33. public void RealTimeUpdateStatus()
  34. {
  35. while (true)
  36. {
  37. try
  38. {
  39. WebCMSEntities maindb = new WebCMSEntities();
  40. var infos = maindb.MerchantChangeSettlementCardRecord.Where(m => m.Status == 1).ToList();
  41. foreach (var item in infos)
  42. {
  43. var info = infos.FirstOrDefault(m => m.Id == item.Id) ?? new MerchantChangeSettlementCardRecord();
  44. //好哒查询修改银行卡任务审核状态
  45. JsonData results = JsonMapper.ToObject(HaoDaHelper.Instance.QueryChangeCardStatus(info.MchtNo, info.TaskId.ToString()));
  46. if (results["resultCode"].ToString() == "1")
  47. {
  48. var Status = int.Parse(results["data"]["status"].ToString());
  49. var Remark = results["data"]["desc"].ToString();
  50. //Status(1 待审核 3 审核拒绝 4 任务失效 5 审核通过)
  51. info.Status = Status;
  52. info.Remark = Remark;
  53. //审核成功修改商户结算信息
  54. if (Status == 5)
  55. {
  56. var merchantAddInfo = maindb.MerchantAddInfo.FirstOrDefault(m => m.Id == info.MerchantId) ?? new MerchantAddInfo();
  57. merchantAddInfo.AccountNumber = info.AccountNo;
  58. merchantAddInfo.AccountName = info.AccountName;
  59. var bankInfo = OpenBankAllService.Query(" and BankChildNo='" + info.ZbankNo + "'");
  60. merchantAddInfo.BankName = bankInfo.BankChild;
  61. var AreaInfo = HaoDaAreaCodeService.Query(" and CityCode='" + info.AcctZbankCode + "'");
  62. merchantAddInfo.BankAddressCode = AreaInfo.CityName;
  63. merchantAddInfo.AccountType = info.AccountType.ToString();
  64. //开户许可证
  65. if (info.AccountType == 0 && !string.IsNullOrEmpty(info.OpenAccountLicenses))
  66. {
  67. merchantAddInfo.OpenAccountLicenses = info.OpenAccountLicenses;
  68. }
  69. if (info.AccountType == 1)
  70. {
  71. //银行卡正面
  72. if (!string.IsNullOrEmpty(info.BankCard))
  73. {
  74. merchantAddInfo.BankCard = info.BankCard;
  75. }
  76. //企业法人对私授权书
  77. if (merchantAddInfo.SubjectType == "SUBJECT_TYPE_ENTERPRISE" && !string.IsNullOrEmpty(info.PriLicAgreement))
  78. {
  79. merchantAddInfo.Support = info.PriLicAgreement;
  80. }
  81. }
  82. merchantAddInfo.OpenUnionNo = info.ZbankNo;
  83. }
  84. }
  85. maindb.SaveChanges();
  86. maindb.Dispose();
  87. }
  88. Thread.Sleep(180000);
  89. }
  90. catch (Exception ex)
  91. {
  92. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "实时更新商户修改结算卡状态队列异常");
  93. }
  94. }
  95. }
  96. public void EveryDayUpdateStatus()
  97. {
  98. while (true)
  99. {
  100. if (DateTime.Now.Hour > 2 && DateTime.Now.Hour < 9)
  101. {
  102. try
  103. {
  104. string check = function.ReadInstance("/UpdateMerchantChangeCardStatus/check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt");
  105. if (!string.IsNullOrEmpty(check))
  106. {
  107. function.WritePage("/UpdateMerchantChangeCardStatus/", "check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString("HH:mm:ss"));
  108. WebCMSEntities maindb = new WebCMSEntities();
  109. var infos = maindb.MerchantChangeSettlementCardRecord.Where(m => m.Status == 1).ToList();
  110. foreach (var item in infos)
  111. {
  112. var info = infos.FirstOrDefault(m => m.Id == item.Id) ?? new MerchantChangeSettlementCardRecord();
  113. //好哒查询修改银行卡任务审核状态
  114. JsonData results = JsonMapper.ToObject(HaoDaHelper.Instance.QueryChangeCardStatus(info.MchtNo, info.TaskId.ToString()));
  115. if (results["resultCode"].ToString() == "1")
  116. {
  117. var Status = int.Parse(results["data"]["status"].ToString());
  118. var Remark = results["data"]["desc"].ToString();
  119. //Status(1 待审核 3 审核拒绝 4 任务失效 5 审核通过)
  120. info.Status = Status;
  121. info.Remark = Remark;
  122. //审核成功修改商户结算信息
  123. if (Status == 5)
  124. {
  125. var merchantAddInfo = maindb.MerchantAddInfo.FirstOrDefault(m => m.Id == info.MerchantId) ?? new MerchantAddInfo();
  126. merchantAddInfo.AccountNumber = info.AccountNo;
  127. merchantAddInfo.AccountName = info.AccountName;
  128. var bankInfo = OpenBankAllService.Query(" and BankChildNo='" + info.ZbankNo + "'");
  129. merchantAddInfo.BankName = bankInfo.BankChild;
  130. var AreaInfo = HaoDaAreaCodeService.Query(" and CityCode='" + info.AcctZbankCode + "'");
  131. merchantAddInfo.BankAddressCode = AreaInfo.CityName;
  132. merchantAddInfo.AccountType = info.AccountType.ToString();
  133. //开户许可证
  134. if (info.AccountType == 0 && !string.IsNullOrEmpty(info.OpenAccountLicenses))
  135. {
  136. merchantAddInfo.OpenAccountLicenses = info.OpenAccountLicenses;
  137. }
  138. if (info.AccountType == 1)
  139. {
  140. //银行卡正面
  141. if (!string.IsNullOrEmpty(info.BankCard))
  142. {
  143. merchantAddInfo.BankCard = info.BankCard;
  144. }
  145. //企业法人对私授权书
  146. if (merchantAddInfo.SubjectType == "SUBJECT_TYPE_ENTERPRISE" && !string.IsNullOrEmpty(info.PriLicAgreement))
  147. {
  148. merchantAddInfo.Support = info.PriLicAgreement;
  149. }
  150. }
  151. merchantAddInfo.OpenUnionNo = info.ZbankNo;
  152. }
  153. }
  154. }
  155. maindb.SaveChanges();
  156. maindb.Dispose();
  157. }
  158. }
  159. catch (Exception ex)
  160. {
  161. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "定时更新商户修改结算卡状态队列异常");
  162. }
  163. }
  164. else
  165. {
  166. Thread.Sleep(60000);
  167. }
  168. }
  169. }
  170. public void TriggerUpdateStatus()
  171. {
  172. while (true)
  173. {
  174. try
  175. {
  176. string data = RedisDbconn.Instance.RPop<string>("UpdateMerchantChangeCardStatus");
  177. if (!string.IsNullOrEmpty(data))
  178. {
  179. WebCMSEntities maindb = new WebCMSEntities();
  180. var infos = maindb.MerchantChangeSettlementCardRecord.Where(m => m.Status == 1).ToList();
  181. foreach (var item in infos)
  182. {
  183. var info = infos.FirstOrDefault(m => m.Id == item.Id) ?? new MerchantChangeSettlementCardRecord();
  184. //好哒查询修改银行卡任务审核状态
  185. JsonData results = JsonMapper.ToObject(HaoDaHelper.Instance.QueryChangeCardStatus(info.MchtNo, info.TaskId.ToString()));
  186. if (results["resultCode"].ToString() == "1")
  187. {
  188. var Status = int.Parse(results["data"]["status"].ToString());
  189. var Remark = results["data"]["desc"].ToString();
  190. //Status(1 待审核 3 审核拒绝 4 任务失效 5 审核通过)
  191. info.Status = Status;
  192. info.Remark = Remark;
  193. //审核成功修改商户结算信息
  194. if (Status == 5)
  195. {
  196. var merchantAddInfo = maindb.MerchantAddInfo.FirstOrDefault(m => m.Id == info.MerchantId) ?? new MerchantAddInfo();
  197. merchantAddInfo.AccountNumber = info.AccountNo;
  198. merchantAddInfo.AccountName = info.AccountName;
  199. var bankInfo = OpenBankAllService.Query(" and BankChildNo='" + info.ZbankNo + "'");
  200. merchantAddInfo.BankName = bankInfo.BankChild;
  201. var AreaInfo = HaoDaAreaCodeService.Query(" and CityCode='" + info.AcctZbankCode + "'");
  202. merchantAddInfo.BankAddressCode = AreaInfo.CityName;
  203. merchantAddInfo.AccountType = info.AccountType.ToString();
  204. //开户许可证
  205. if (info.AccountType == 0 && !string.IsNullOrEmpty(info.OpenAccountLicenses))
  206. {
  207. merchantAddInfo.OpenAccountLicenses = info.OpenAccountLicenses;
  208. }
  209. if (info.AccountType == 1)
  210. {
  211. //银行卡正面
  212. if (!string.IsNullOrEmpty(info.BankCard))
  213. {
  214. merchantAddInfo.BankCard = info.BankCard;
  215. }
  216. //企业法人对私授权书
  217. if (merchantAddInfo.SubjectType == "SUBJECT_TYPE_ENTERPRISE" && !string.IsNullOrEmpty(info.PriLicAgreement))
  218. {
  219. merchantAddInfo.Support = info.PriLicAgreement;
  220. }
  221. }
  222. merchantAddInfo.OpenUnionNo = info.ZbankNo;
  223. }
  224. }
  225. }
  226. maindb.SaveChanges();
  227. maindb.Dispose();
  228. }
  229. else
  230. {
  231. Thread.Sleep(50000);
  232. }
  233. }
  234. catch (Exception ex)
  235. {
  236. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "触发更新商户修改结算卡状态队列异常");
  237. }
  238. }
  239. }
  240. }
  241. }