MerchantConfirmService.cs 13 KB

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