MerchantConfirmService.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text.RegularExpressions;
  5. using MySystem.Models;
  6. using Library;
  7. using LitJson;
  8. namespace MySystem
  9. {
  10. public class MerchantConfirmService
  11. {
  12. public readonly static MerchantConfirmService Instance = new MerchantConfirmService();
  13. private MerchantConfirmService()
  14. { }
  15. public void Start(string MerchantIdString, int Kind = 0)
  16. {
  17. try
  18. {
  19. int MerchantId = int.Parse(function.CheckInt(MerchantIdString));
  20. PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities();
  21. PxcModels.MerchantAddInfo AddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId);
  22. PxcModels.MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == MerchantId);
  23. if (AddInfo != null && merchant != null)
  24. {
  25. string BusinessCode = AddInfo.BusinessCode;
  26. if (string.IsNullOrEmpty(BusinessCode))
  27. {
  28. BusinessCode = "KXS" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(5);
  29. AddInfo.BusinessCode = BusinessCode;
  30. }
  31. merchant.LoginPwd = function.MD532(AddInfo.MobilePhone.Substring(6));
  32. db.SaveChanges();
  33. List<MerchantInfo> merchants = TendisDbconn.Instance.GetList<MerchantInfo>("MerchantList:" + merchant.UserId, 1, 10000000);
  34. //微信
  35. if (Kind == 0 || Kind == 2)
  36. {
  37. string result = new WeChatFunction().MerchantCreate(AddInfo, merchant);
  38. if (result.Contains("\"applyment_id\":"))
  39. {
  40. JsonData jsonObj = JsonMapper.ToObject(result);
  41. AddInfo.ApplymentId = jsonObj["applyment_id"].ToString();
  42. AddInfo.Status = 0;
  43. db.SaveChanges();
  44. List<MerchantSign> signs = TendisDbconn.Instance.GetList<MerchantSign>("MerchantSignList", 1, 10000000);
  45. bool op = signs.Any(m => m.BusinessCode == BusinessCode);
  46. if (!op)
  47. {
  48. TendisDbconn.Instance.AddList("WeChatSignList", new MerchantSign()
  49. {
  50. BusinessCode = BusinessCode,
  51. MerchantAddInfoId = MerchantId,
  52. Status = ""
  53. });
  54. }
  55. signs.Clear();
  56. if (merchants.Any(m => m.Id == merchant.Id) == false)
  57. {
  58. BothdisDbconn.Instance.AddList("MerchantList:" + merchant.UserId, merchant);
  59. }
  60. else
  61. {
  62. PxcModels.MerchantAddInfo merchantAddInfo = BothdisDbconn.Instance.Get<PxcModels.MerchantAddInfo>("MerchantAddInfo:" + MerchantId);
  63. if (merchantAddInfo != null)
  64. {
  65. merchantAddInfo.ApplymentId = AddInfo.ApplymentId;
  66. merchantAddInfo.Status = AddInfo.Status;
  67. BothdisDbconn.Instance.Set("MerchantAddInfo:" + MerchantId, merchantAddInfo);
  68. }
  69. }
  70. }
  71. else if (result.Contains("\"message\":"))
  72. {
  73. JsonData jsonObj = JsonMapper.ToObject(result);
  74. AddInfo.Status = -1;
  75. merchant.Status = -1;
  76. string Season = function.CheckNull(AddInfo.SeoDescription);
  77. if (string.IsNullOrEmpty(Season))
  78. {
  79. Season = "WeChat:" + jsonObj["message"].ToString() + ";";
  80. }
  81. else
  82. {
  83. Season = Regex.Replace(Season, "WeChat:.*?;", "");
  84. Season += "WeChat:" + jsonObj["message"].ToString() + ";";
  85. }
  86. AddInfo.SeoDescription = Season;
  87. db.SaveChanges();
  88. if (merchants.Any(m => m.Id == merchant.Id) == false)
  89. {
  90. BothdisDbconn.Instance.AddList("MerchantList:" + merchant.UserId, merchant);
  91. }
  92. else
  93. {
  94. PxcModels.MerchantAddInfo merchantAddInfo = BothdisDbconn.Instance.Get<PxcModels.MerchantAddInfo>("MerchantAddInfo:" + MerchantId);
  95. if (merchantAddInfo != null)
  96. {
  97. merchantAddInfo.SeoDescription = AddInfo.SeoDescription;
  98. merchantAddInfo.Status = AddInfo.Status;
  99. BothdisDbconn.Instance.Set("MerchantAddInfo:" + MerchantId, merchantAddInfo);
  100. }
  101. }
  102. List<MerchantSign> signs = TendisDbconn.Instance.GetList<MerchantSign>("WeChatSignList", 1, 10000000);
  103. MerchantSign sign = signs.FirstOrDefault(m => m.BusinessCode == BusinessCode);
  104. if (sign != null)
  105. {
  106. signs.Remove(sign);
  107. TendisDbconn.Instance.Clear("WeChatSignList");
  108. TendisDbconn.Instance.AddList("WeChatSignList", signs.ToArray());
  109. }
  110. }
  111. }
  112. //支付宝
  113. if (Kind == 0 || Kind == 1)
  114. {
  115. bool checkAlipay = true;
  116. string content = new AlipayFunction().GetBatchNo(AddInfo.CreateMan, AddInfo.IdCardName, AddInfo.MobilePhone, AddInfo.ContactEmail);
  117. JsonData json = JsonMapper.ToObject(content);
  118. if (json["alipay_open_agent_create_response"]["code"].ToString() == "10000")
  119. {
  120. string batch_no = json["alipay_open_agent_create_response"]["batch_no"].ToString();
  121. string Qualifications = AddInfo.Qualifications;
  122. if (!string.IsNullOrEmpty(Qualifications))
  123. {
  124. Qualifications = function.getPath("/bsserver_com" + Qualifications);
  125. }
  126. content = new AlipayFunction().CommonSign(batch_no, AddInfo.UpdateMan, AddInfo.LicenseNumber, function.getPath("/bsserver_com" + AddInfo.LicenseCopy), Qualifications);
  127. json = JsonMapper.ToObject(content);
  128. if (json["alipay_open_agent_common_sign_response"]["code"].ToString() == "10000")
  129. {
  130. content = new AlipayFunction().CommonSignConfirm(batch_no);
  131. json = JsonMapper.ToObject(content);
  132. if (json["alipay_open_agent_commonsign_confirm_response"]["code"].ToString() == "10000")
  133. {
  134. AddInfo.QueryCount = 0;
  135. AddInfo.SeoTitle = batch_no;
  136. db.SaveChanges();
  137. List<MerchantSign> signs = TendisDbconn.Instance.GetList<MerchantSign>("MerchantSignList", 1, 10000000);
  138. bool op = signs.Any(m => m.BusinessCode == batch_no);
  139. if (!op)
  140. {
  141. TendisDbconn.Instance.AddList("AlipaySignList", new MerchantSign()
  142. {
  143. BusinessCode = batch_no,
  144. MerchantAddInfoId = MerchantId,
  145. Status = ""
  146. });
  147. }
  148. signs.Clear();
  149. if (merchants.Any(m => m.Id == merchant.Id) == false)
  150. {
  151. BothdisDbconn.Instance.AddList("MerchantList:" + merchant.UserId, merchant);
  152. }
  153. }
  154. else
  155. {
  156. checkAlipay = false;
  157. }
  158. }
  159. else
  160. {
  161. checkAlipay = false;
  162. }
  163. }
  164. else
  165. {
  166. checkAlipay = false;
  167. }
  168. if (!checkAlipay)
  169. {
  170. JsonData jsonObj = JsonMapper.ToObject(content);
  171. AddInfo.QueryCount = -1;
  172. merchant.Status = -1;
  173. string Season = function.CheckNull(AddInfo.SeoDescription);
  174. if (string.IsNullOrEmpty(Season))
  175. {
  176. Season = "Alipay:" + jsonObj["alipay_open_agent_create_response"]["sub_msg"].ToString() + ";";
  177. }
  178. else
  179. {
  180. Season = Regex.Replace(Season, "Alipay:.*?;", "");
  181. Season = "Alipay:" + jsonObj["alipay_open_agent_create_response"]["sub_msg"].ToString() + ";" + Season;
  182. }
  183. AddInfo.SeoDescription = Season;
  184. db.SaveChanges();
  185. if (merchants.Any(m => m.Id == merchant.Id) == false)
  186. {
  187. BothdisDbconn.Instance.AddList("MerchantList:" + merchant.UserId, merchant);
  188. }
  189. else
  190. {
  191. PxcModels.MerchantAddInfo merchantAddInfo = BothdisDbconn.Instance.Get<PxcModels.MerchantAddInfo>("MerchantAddInfo:" + MerchantId);
  192. if (merchantAddInfo != null)
  193. {
  194. merchantAddInfo.SeoDescription = AddInfo.SeoDescription;
  195. merchantAddInfo.QueryCount = AddInfo.QueryCount;
  196. BothdisDbconn.Instance.Set("MerchantAddInfo:" + MerchantId, merchantAddInfo);
  197. }
  198. }
  199. List<MerchantSign> signs = TendisDbconn.Instance.GetList<MerchantSign>("AlipaySignList", 1, 10000000);
  200. MerchantSign sign = signs.FirstOrDefault(m => m.BusinessCode == BusinessCode);
  201. if (sign != null)
  202. {
  203. signs.Remove(sign);
  204. TendisDbconn.Instance.Clear("AlipaySignList");
  205. TendisDbconn.Instance.AddList("AlipaySignList", signs.ToArray());
  206. }
  207. }
  208. }
  209. BothdisDbconn.Instance.Set("MerchantAddInfo:" + MerchantId, AddInfo);
  210. BothdisDbconn.Instance.Set("MerchantInfo:" + MerchantId, merchant);
  211. BothdisDbconn.Instance.SendMq("Pop:MerchantAddInfo", AddInfo);
  212. BothdisDbconn.Instance.SendMq("Pop:MerchantInfo", merchant);
  213. }
  214. db.Dispose();
  215. }
  216. catch (Exception ex)
  217. {
  218. TendisDbconn.Instance.AddList("public_service", DateTime.Now.ToString() + ":" + ex.ToString());
  219. }
  220. }
  221. }
  222. }