MerchantAddInfoController.cs 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Microsoft.AspNetCore.Mvc;
  5. using Microsoft.AspNetCore.Http;
  6. using Microsoft.Extensions.Logging;
  7. using Microsoft.Extensions.Options;
  8. using Microsoft.AspNetCore.Authorization;
  9. using System.Web;
  10. using MySystem.Models.Main2;
  11. using MySystem.Service.Main2;
  12. using LitJson;
  13. using Library;
  14. using MySystem.Service.KxsMain;
  15. namespace MySystem.Areas.Api.Controllers.v1.Main2
  16. {
  17. [Area("Api")]
  18. [Route("/v1/QrCodePlateMain/[controller]/[action]")]
  19. public class MerchantAddInfoController : BaseController
  20. {
  21. public MerchantAddInfoController(IHttpContextAccessor accessor) : base(accessor)
  22. {
  23. }
  24. #region 进件管理-银联商户列表
  25. [Authorize]
  26. public JsonResult UnionPayList(string value)
  27. {
  28. value = PublicFunction.DesDecrypt(value);
  29. JsonData data = JsonMapper.ToObject(value);
  30. Dictionary<string, object> Other = new Dictionary<string, object>();
  31. List<Dictionary<string, object>> dataList = UnionPayListDo(value, out Other);
  32. return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList, Other = Other });
  33. }
  34. private List<Dictionary<string, object>> UnionPayListDo(string value, out Dictionary<string, object> Other)
  35. {
  36. JsonData data = JsonMapper.ToObject(value);
  37. string SubjectType = data["SubjectType"].ToString(); //主体类型(1 企业 2 个体)
  38. string CertMerchantName = data["CertMerchantName"].ToString(); //商户名称
  39. string ServicePhone = data["ServicePhone"].ToString(); //客服电话
  40. string MakerCode = data["MakerCode"].ToString(); //所属创客编号
  41. string HDStatus = data["HDStatus"].ToString(); //好哒状态(-1 审核失败 0 待审核 3 已通过)
  42. string WeChatStatus = data["WeChatStatus"].ToString(); //微信状态(-1 审核失败 0 待审核 1 待签约 2 已通过)
  43. string AliPayStatus = data["AliPayStatus"].ToString(); //支付宝状态(-1 审核失败 0 待审核 1 待签约 2 已通过)
  44. int BrandId = 0; //品牌(0 银联 1 好哒)
  45. int pageSize = int.Parse(function.CheckInt(data["page_size"].ToString()));
  46. int pageNum = int.Parse(function.CheckInt(data["page_num"].ToString()));
  47. string condition = "";
  48. var merIds = MerchantInfoUtil.QuerySenedMerchantId();
  49. condition = " and Id in (" + merIds + ")";
  50. if (!string.IsNullOrEmpty(data["SubjectType"].ToString()))
  51. {
  52. if (data["SubjectType"].ToString() == "1") SubjectType = "SUBJECT_TYPE_ENTERPRISE"; //企业公司
  53. if (data["SubjectType"].ToString() == "2") SubjectType = "SUBJECT_TYPE_INDIVIDUAL"; //个体工商户
  54. if (data["SubjectType"].ToString() == "3") SubjectType = "SUBJECT_TYPE_SMALL"; //小微商户
  55. condition += " and SubjectType='" + SubjectType + "'";
  56. }
  57. if (!string.IsNullOrEmpty(data["CertMerchantName"].ToString()))
  58. {
  59. condition += " and CertMerchantName like '%" + CertMerchantName + "%'";
  60. }
  61. if (!string.IsNullOrEmpty(data["ServicePhone"].ToString()))
  62. {
  63. condition += " and ServicePhone='" + ServicePhone + "'";
  64. }
  65. if (!string.IsNullOrEmpty(data["MakerCode"].ToString()))
  66. {
  67. var Ids = MerchantInfoUtil.QueryMerchantIdByMakerCode(MakerCode);
  68. condition += " and Id in (" + Ids + ")";
  69. }
  70. if (!string.IsNullOrEmpty(data["HDStatus"].ToString()))
  71. {
  72. if (int.Parse(HDStatus) == 3)
  73. {
  74. condition += " and HdStatus in(1,2,3)";
  75. }
  76. else
  77. {
  78. condition += " and Status=" + HDStatus + "";
  79. }
  80. }
  81. if (!string.IsNullOrEmpty(data["WeChatStatus"].ToString()))
  82. {
  83. condition += " and Status=" + WeChatStatus + "";
  84. }
  85. if (!string.IsNullOrEmpty(data["AliPayStatus"].ToString()))
  86. {
  87. condition += " and QueryCount=" + AliPayStatus + "";
  88. }
  89. if (!string.IsNullOrEmpty(data["BrandId"].ToString()))
  90. {
  91. BrandId = int.Parse(function.CheckInt(data["BrandId"].ToString())); //品牌(0 银联 1 好哒)
  92. condition += " and BrandId=" + BrandId + "";
  93. }
  94. List<RelationData> relationData = new List<RelationData>();
  95. List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
  96. Other = new Dictionary<string, object>();
  97. int count = 0;
  98. List<Dictionary<string, object>> source = MerchantAddInfoService.List(relationData, condition, out count, pageNum, pageSize);
  99. foreach (Dictionary<string, object> subdata in source)
  100. {
  101. Dictionary<string, object> curData = new Dictionary<string, object>();
  102. var hdStatus = int.Parse(subdata["HdStatus"].ToString());
  103. var status = int.Parse(subdata["Status"].ToString());
  104. var queryCount = int.Parse(subdata["QueryCount"].ToString());
  105. if (hdStatus != 3)
  106. {
  107. hdStatus = status;
  108. }
  109. //商户Id
  110. var MerchantId = int.Parse(subdata["Id"].ToString());
  111. //父商户Id
  112. var ParentId = int.Parse(subdata["ParentId"].ToString());
  113. //主体类型
  114. var subjectType = 0;
  115. if (subdata["SubjectType"].ToString() == "SUBJECT_TYPE_ENTERPRISE") subjectType = 1; //企业公司
  116. if (subdata["SubjectType"].ToString() == "SUBJECT_TYPE_INDIVIDUAL") subjectType = 2; //个体工商户
  117. if (subdata["SubjectType"].ToString() == "SUBJECT_TYPE_SMALL") subjectType = 3; //小微商户
  118. curData.Add("Id", subdata["Id"].ToString()); //Id
  119. curData.Add("BrandId", subdata["BrandId"].ToString()); //品牌(0 银联 1 好哒)
  120. curData.Add("SubjectType", subjectType); //主体类型(1 企业 2 个体 3 小微)
  121. curData.Add("CertMerchantName", subdata["CertMerchantName"].ToString()); //商户名称
  122. curData.Add("ServicePhone", subdata["ServicePhone"].ToString()); //客服电话
  123. curData.Add("BizStoreAddress", subdata["BizStoreAddress"].ToString()); //门店地址
  124. curData.Add("CreateDate", subdata["CreateDate"].ToString() == "" ? "" : DateTime.Parse(subdata["CreateDate"].ToString()).ToString("yyyy-MM-dd HH:mm:ss")); //进件时间
  125. var userInfo = UsersService.Query(MerchantInfoService.Query(MerchantId).UserId);
  126. curData.Add("MakerCode", userInfo.MakerCode); //所属创客编号
  127. curData.Add("RealName", userInfo.RealName); //所属创客姓名
  128. curData.Add("HDStatus", hdStatus); //好哒状态(-1 审核失败 0 待审核 3 已通过)
  129. curData.Add("WeChatStatus", status); //微信状态(-1 审核失败 0 待审核 1 待签约 2 已通过)
  130. curData.Add("AliPayStatus", queryCount); //支付宝状态(-1 审核失败 0 待审核 1 待签约 2 已通过)
  131. curData.Add("ParentName", MerchantInfoService.Query(ParentId).Name);
  132. curData.Add("UpdateDate", subdata["UpdateDate"].ToString() == "" ? "" : DateTime.Parse(subdata["UpdateDate"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"));
  133. dataList.Add(curData);
  134. }
  135. Other.Add("Count", count); //总数
  136. return dataList;
  137. }
  138. #endregion
  139. #region 进件管理-获取商户门店号
  140. [Authorize]
  141. public JsonResult UnionPayGetStoreNo(string value)
  142. {
  143. value = PublicFunction.DesDecrypt(value);
  144. JsonData data = JsonMapper.ToObject(value);
  145. AppResultJson result = UnionPayGetStoreNoDo(value);
  146. return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
  147. }
  148. private AppResultJson UnionPayGetStoreNoDo(string value)
  149. {
  150. JsonData data = JsonMapper.ToObject(value);
  151. int MerchantId = int.Parse(function.CheckInt(data["MerchantId"].ToString()));
  152. Dictionary<string, object> Obj = new Dictionary<string, object>();
  153. var merAddInfo = main2db.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId) ?? new MerchantAddInfo();
  154. var merInfo = main2db.MerchantInfo.FirstOrDefault(m => m.Id == MerchantId) ?? new MerchantInfo();
  155. merAddInfo.Status = 0;
  156. merInfo.Status = 0;
  157. RedisDbconn.Instance.AddList("UnionPayGetStoreNoQueue", MerchantId.ToString());
  158. main2db.SaveChanges();
  159. return new AppResultJson() { Status = "1", Info = "", Data = Obj };
  160. }
  161. #endregion
  162. #region 进件管理-银联查看失败原因
  163. [Authorize]
  164. public JsonResult UnionPayQueryFailReason(string value)
  165. {
  166. value = PublicFunction.DesDecrypt(value);
  167. JsonData data = JsonMapper.ToObject(value);
  168. Dictionary<string, object> Obj = UnionPayQueryFailReasonDo(value);
  169. return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
  170. }
  171. private Dictionary<string, object> UnionPayQueryFailReasonDo(string value)
  172. {
  173. JsonData data = JsonMapper.ToObject(value);
  174. string MerchantId = data["MerchantId"].ToString(); //商户Id
  175. Dictionary<string, object> Obj = new Dictionary<string, object>();
  176. var query = MerchantAddInfoService.Query(int.Parse(MerchantId));
  177. Obj.Add("HdReason", query.WeChatRemark); //好哒原因
  178. Obj.Add("WeChatReason", query.WeChatRemark); //微信原因
  179. Obj.Add("AlipayReason", query.AlipayRemark); //支付宝原因
  180. return Obj;
  181. }
  182. #endregion
  183. #region 进件管理-银联进件详情
  184. [Authorize]
  185. public JsonResult UnionPayDetail(string value)
  186. {
  187. value = PublicFunction.DesDecrypt(value);
  188. JsonData data = JsonMapper.ToObject(value);
  189. Dictionary<string, object> Obj = UnionPayDetailDo(value);
  190. return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
  191. }
  192. private Dictionary<string, object> UnionPayDetailDo(string value)
  193. {
  194. JsonData data = JsonMapper.ToObject(value);
  195. string MerchantId = data["MerchantId"].ToString(); //商户Id
  196. Dictionary<string, object> Obj = new Dictionary<string, object>();
  197. Obj = MerchantAddInfoUtil.MerchantAddInfoDetail(int.Parse(MerchantId));
  198. return Obj;
  199. }
  200. #endregion
  201. #region 进件管理-银联提交进件
  202. [Authorize]
  203. public JsonResult UnionPaySubmit(string value)
  204. {
  205. value = PublicFunction.DesDecrypt(value);
  206. JsonData data = JsonMapper.ToObject(value);
  207. AppResultJson result = UnionPaySubmitDo(value);
  208. return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
  209. }
  210. private AppResultJson UnionPaySubmitDo(string value)
  211. {
  212. JsonData data = JsonMapper.ToObject(value);
  213. string MerchantId = data["MerchantId"].ToString(); //商户Id
  214. var info = MerchantAddInfoUtil.UnionPaySubmitDo(int.Parse(MerchantId));
  215. if (info == "success")
  216. {
  217. return new AppResultJson() { Status = "1", Info = "成功", Data = info };
  218. }
  219. else
  220. {
  221. return new AppResultJson() { Status = "-1", Info = "失败", Data = info };
  222. }
  223. }
  224. #endregion
  225. #region 商户管理-银联查询商户交易信息
  226. [Authorize]
  227. public JsonResult UnionPayQueryMerchantTradeInfo(string value)
  228. {
  229. value = PublicFunction.DesDecrypt(value);
  230. JsonData data = JsonMapper.ToObject(value);
  231. Dictionary<string, object> Other = new Dictionary<string, object>();
  232. List<Dictionary<string, object>> dataList = UnionPayQueryMerchantTradeInfoDo(value, out Other);
  233. return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList, Other = Other });
  234. }
  235. private List<Dictionary<string, object>> UnionPayQueryMerchantTradeInfoDo(string value, out Dictionary<string, object> Other)
  236. {
  237. JsonData data = JsonMapper.ToObject(value);
  238. string MerchantName = data["MerchantName"].ToString(); //商户名称
  239. string Mobile = data["Mobile"].ToString(); //手机号码
  240. string MakerCode = data["MakerCode"].ToString(); //所属创客
  241. string MatchNo = data["MatchNo"].ToString(); //商户号
  242. string SubjectType = data["SubjectType"].ToString(); //主体类型(1 企业 2 个体 3 小微)
  243. string IsAct = data["IsAct"].ToString(); //激活状态(0 未激活 1 已激活)
  244. string ActDate = data["ActDate"].ToString(); //激活时间
  245. int BrandId = 0; //品牌(0 银联 1 好哒)
  246. int pageSize = int.Parse(function.CheckInt(data["page_size"].ToString()));
  247. int pageNum = int.Parse(function.CheckInt(data["page_num"].ToString()));
  248. string condition = "";
  249. var merIds = MerchantInfoUtil.QueryAnyIsOkMerchantId();
  250. condition = " and Id in (" + merIds + ")";
  251. if (!string.IsNullOrEmpty(MerchantName))
  252. {
  253. condition += " and CertMerchantName like '%" + MerchantName + "%'";
  254. }
  255. if (!string.IsNullOrEmpty(Mobile))
  256. {
  257. condition += " and MobilePhone='" + Mobile + "'";
  258. }
  259. if (!string.IsNullOrEmpty(MakerCode))
  260. {
  261. var Ids = MerchantInfoUtil.QueryMerchantIdByMakerCode(MakerCode);
  262. condition += " and Id in (" + Ids + ")";
  263. }
  264. if (!string.IsNullOrEmpty(MatchNo))
  265. {
  266. condition += " and MchtNo='" + MatchNo + "'";
  267. }
  268. if (!string.IsNullOrEmpty(SubjectType))
  269. {
  270. if (SubjectType == "1") SubjectType = "SUBJECT_TYPE_ENTERPRISE"; //企业公司
  271. if (SubjectType == "2") SubjectType = "SUBJECT_TYPE_INDIVIDUAL"; //个体工商户
  272. if (SubjectType == "3") SubjectType = "SUBJECT_TYPE_SMALL"; //小微
  273. condition += " and SubjectType='" + SubjectType + "'";
  274. }
  275. if (!string.IsNullOrEmpty(IsAct))
  276. {
  277. var Ids = MerchantInfoUtil.QueryIsActMerchantId(int.Parse(IsAct));
  278. condition += " and Id in (" + Ids + ")";
  279. }
  280. if (!string.IsNullOrEmpty(data["ActDate"].ToString()))
  281. {
  282. string[] datelist = ActDate.Split(new string[] { " - " }, StringSplitOptions.None);
  283. string start = datelist[0];
  284. string end = datelist[1];
  285. var Ids = MerchantInfoUtil.QueryActDateMerchantId(start, end);
  286. condition += " and Id in (" + Ids + ")";
  287. }
  288. if (!string.IsNullOrEmpty(data["BrandId"].ToString()))
  289. {
  290. BrandId = int.Parse(function.CheckInt(data["BrandId"].ToString())); //品牌(0 银联 1 好哒)
  291. condition += " and BrandId=" + BrandId + "";
  292. }
  293. List<RelationData> relationData = new List<RelationData>();
  294. List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
  295. Other = new Dictionary<string, object>();
  296. int count = 0;
  297. List<Dictionary<string, object>> source = MerchantAddInfoService.List(relationData, condition, out count, pageNum, pageSize);
  298. foreach (Dictionary<string, object> subdata in source)
  299. {
  300. Dictionary<string, object> curData = new Dictionary<string, object>();
  301. //商户Id
  302. var MerchantId = int.Parse(subdata["Id"].ToString());
  303. var merInfo = MerchantInfoService.Query(MerchantId);
  304. var userInfo = UsersService.Query(merInfo.UserId);
  305. curData.Add("MerchantId", subdata["Id"].ToString()); //商户Id
  306. curData.Add("BrandId", subdata["BrandId"].ToString()); //品牌(0 银联 1 好哒)
  307. curData.Add("IsAct", merInfo.IsAct); //激活状态(0 未激活 1 已激活)
  308. var actDate = "";
  309. var order = MerchantDepositOrderService.Query(" and Status>0 and MerchantId=" + MerchantId + "");
  310. if (order.Id > 0)
  311. {
  312. actDate = order.UpdateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
  313. }
  314. curData.Add("ActDate", actDate); //激活时间
  315. curData.Add("MerchantName", subdata["CertMerchantName"].ToString()); //商户名称
  316. curData.Add("Mobile", subdata["MobilePhone"].ToString()); //手机号码
  317. curData.Add("MakerCode", userInfo.MakerCode); //所属创客
  318. curData.Add("RealName", userInfo.RealName); //所属创客姓名
  319. var subjectType = 0;
  320. if (subdata["SubjectType"].ToString() == "SUBJECT_TYPE_ENTERPRISE") subjectType = 1; //企业公司
  321. if (subdata["SubjectType"].ToString() == "SUBJECT_TYPE_INDIVIDUAL") subjectType = 2; //个体工商户
  322. if (subdata["SubjectType"].ToString() == "SUBJECT_TYPE_SMALL") subjectType = 3; //小微
  323. curData.Add("SubjectType", subjectType); //主体类型(1 企业 2 个体 3 小微)
  324. curData.Add("MatchNo", subdata["MchtNo"].ToString()); //商户号
  325. var amountInfo = MerchantAmountSummayService.Sum("TradeCount,TotalActual,TradeAmount", " and MerchantId=" + MerchantId + "");
  326. curData.Add("OrderCount", decimal.Parse(amountInfo["TradeCount"].ToString())); //订单总数
  327. curData.Add("InComeAmount", decimal.Parse(amountInfo["TotalActual"].ToString()).ToString("f2")); //实收总金额
  328. curData.Add("TradeAmount", decimal.Parse(amountInfo["TradeAmount"].ToString()).ToString("f2")); //营业总金额
  329. dataList.Add(curData);
  330. }
  331. Other.Add("Count", count); //总数
  332. return dataList;
  333. }
  334. #endregion
  335. #region 节点操作-银联提交微信开户意愿
  336. [Authorize]
  337. public JsonResult UnionWeChatMerchantOpenAccount(string value)
  338. {
  339. value = PublicFunction.DesDecrypt(value);
  340. JsonData data = JsonMapper.ToObject(value);
  341. AppResultJson result = UnionWeChatMerchantOpenAccountDo(value);
  342. return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
  343. }
  344. private AppResultJson UnionWeChatMerchantOpenAccountDo(string value)
  345. {
  346. JsonData data = JsonMapper.ToObject(value);
  347. int id = int.Parse(function.CheckInt(data["id"].ToString()));
  348. Dictionary<string, object> Obj = new Dictionary<string, object>();
  349. var merAddInfo = main2db.MerchantAddInfo.FirstOrDefault(m => m.Id == id) ?? new MerchantAddInfo();
  350. if (merAddInfo.HdStatus != 3)
  351. {
  352. return new AppResultJson() { Status = "-1", Info = "商户未添加分账接收方账户", Data = Obj };
  353. }
  354. var merInfo = main2db.MerchantInfo.FirstOrDefault(m => m.Id == id) ?? new MerchantInfo();
  355. merAddInfo.Status = 0;
  356. merAddInfo.ApplymentId = null;
  357. merAddInfo.WeChatSignUrl = null;
  358. merInfo.Status = 0;
  359. main2db.SaveChanges();
  360. RedisDbconn.Instance.AddList("WeChatForHaoDaQueue", id.ToString());
  361. return new AppResultJson() { Status = "1", Info = "", Data = Obj };
  362. }
  363. #endregion
  364. #region 节点操作-银联提交支付宝开户意愿
  365. [Authorize]
  366. public JsonResult UnionAlipayMerchantOpenAccount(string value)
  367. {
  368. value = PublicFunction.DesDecrypt(value);
  369. JsonData data = JsonMapper.ToObject(value);
  370. AppResultJson result = UnionAlipayMerchantOpenAccountDo(value);
  371. return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
  372. }
  373. private AppResultJson UnionAlipayMerchantOpenAccountDo(string value)
  374. {
  375. JsonData data = JsonMapper.ToObject(value);
  376. int id = int.Parse(function.CheckInt(data["id"].ToString()));
  377. Dictionary<string, object> Obj = new Dictionary<string, object>();
  378. var merAddInfo = main2db.MerchantAddInfo.FirstOrDefault(m => m.Id == id) ?? new MerchantAddInfo();
  379. if (merAddInfo.HdStatus != 3)
  380. {
  381. return new AppResultJson() { Status = "-1", Info = "商户未添加分账接收方账户", Data = Obj };
  382. }
  383. var merInfo = main2db.MerchantInfo.FirstOrDefault(m => m.Id == id) ?? new MerchantInfo();
  384. merAddInfo.QueryCount = 0;
  385. merAddInfo.SeoTitle = null;
  386. merAddInfo.AlipaySignUrl = null;
  387. merInfo.QueryCount = 0;
  388. main2db.SaveChanges();
  389. RedisDbconn.Instance.AddList("AlipayForHaoDaQueue", id.ToString());
  390. return new AppResultJson() { Status = "1", Info = "", Data = Obj };
  391. }
  392. #endregion
  393. #region 节点操作-银联提交进件
  394. [Authorize]
  395. public JsonResult UnionMerchantAdd(string value)
  396. {
  397. value = PublicFunction.DesDecrypt(value);
  398. JsonData data = JsonMapper.ToObject(value);
  399. AppResultJson result = UnionMerchantAddDo(value);
  400. return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
  401. }
  402. private AppResultJson UnionMerchantAddDo(string value)
  403. {
  404. JsonData data = JsonMapper.ToObject(value);
  405. int id = int.Parse(function.CheckInt(data["id"].ToString()));
  406. Dictionary<string, object> Obj = new Dictionary<string, object>();
  407. var merAddInfo = main2db.MerchantAddInfo.FirstOrDefault(m => m.Id == id) ?? new MerchantAddInfo();
  408. var merInfo = main2db.MerchantInfo.FirstOrDefault(m => m.Id == id) ?? new MerchantInfo();
  409. merAddInfo.Status = 0;
  410. merAddInfo.QueryCount = 0;
  411. merInfo.Status = 0;
  412. merInfo.QueryCount = 0;
  413. RedisDbconn.Instance.AddList("MerchantConfirmHdQueue", "{\"MerchantId\":\"" + id + "\"}");
  414. main2db.SaveChanges();
  415. return new AppResultJson() { Status = "1", Info = "", Data = Obj };
  416. }
  417. #endregion
  418. #region 节点操作-银联绑定微信appid
  419. [Authorize]
  420. public JsonResult UnionMerchantBindWeChatAppId(string value)
  421. {
  422. value = PublicFunction.DesDecrypt(value);
  423. JsonData data = JsonMapper.ToObject(value);
  424. AppResultJson result = UnionMerchantBindWeChatAppIdDo(value);
  425. return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
  426. }
  427. private AppResultJson UnionMerchantBindWeChatAppIdDo(string value)
  428. {
  429. JsonData data = JsonMapper.ToObject(value);
  430. int id = int.Parse(function.CheckInt(data["id"].ToString()));
  431. var merAddInfo = main2db.MerchantAddInfo.FirstOrDefault(m => m.Id == id) ?? new MerchantAddInfo();
  432. merAddInfo.HdBindWeChat = 0;
  433. main2db.SaveChanges();
  434. return new AppResultJson() { Status = "1", Info = "" };
  435. }
  436. #endregion
  437. #region 节点操作-银联获取好哒认证结果
  438. [Authorize]
  439. public JsonResult UnionMerchantGetAuth(string value)
  440. {
  441. value = PublicFunction.DesDecrypt(value);
  442. JsonData data = JsonMapper.ToObject(value);
  443. Dictionary<string, object> Obj = UnionMerchantGetAuthDo(value);
  444. return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
  445. }
  446. private Dictionary<string, object> UnionMerchantGetAuthDo(string value)
  447. {
  448. JsonData data = JsonMapper.ToObject(value);
  449. Dictionary<string, object> Obj = new Dictionary<string, object>();
  450. MerchantAddInfo query = new MerchantAddInfo();
  451. int id = int.Parse(function.CheckInt(data["id"].ToString()));
  452. query = MerchantAddInfoService.Query(id);
  453. Obj.Add("WeChatMerchantId", query.WeChatMerchantId); //微信商户号
  454. Obj.Add("AliMerchantId", query.AliMerchantId); //支付宝商户号
  455. Obj.Add("WeChatStatus", ""); //微信认证状态
  456. Obj.Add("AlipayStatus", ""); //支付宝认证状态
  457. return Obj;
  458. }
  459. #endregion
  460. #region 节点操作-银联获取审核状态
  461. [Authorize]
  462. public JsonResult UnionMerchantQueryStatus(string value)
  463. {
  464. value = PublicFunction.DesDecrypt(value);
  465. JsonData data = JsonMapper.ToObject(value);
  466. Dictionary<string, object> Obj = UnionMerchantQueryStatusDo(value);
  467. return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
  468. }
  469. private Dictionary<string, object> UnionMerchantQueryStatusDo(string value)
  470. {
  471. JsonData data = JsonMapper.ToObject(value);
  472. Dictionary<string, object> Obj = new Dictionary<string, object>();
  473. MerchantAddInfo query = new MerchantAddInfo();
  474. int id = int.Parse(function.CheckInt(data["id"].ToString()));
  475. query = MerchantAddInfoService.Query(id);
  476. Obj.Add("AlipaySignUrl", query.AlipaySignUrl); //支付宝签约地址
  477. Obj.Add("WeChatSignUrl", query.WeChatSignUrl); //微信签约地址
  478. Obj.Add("MchtNo", query.MchtNo); //好哒商户号
  479. Obj.Add("OutMchtNo", query.OutMchtNo); //慧掌柜商户号
  480. Obj.Add("StoreNo", query.StoreNo); //门店号
  481. Obj.Add("ToAcctNo", query.ToAcctNo); //分账接收方
  482. Obj.Add("HdPassDate", query.HdPassDate == null ? "" : query.HdPassDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //好哒审核通过时间
  483. Obj.Add("HdBindWeChat", query.HdBindWeChat); //好哒绑定微信状态
  484. string HdRemark = "";
  485. string WeChatRemark = "";
  486. string AlipayRemark = "";
  487. int HdStatus = 0;
  488. int WeChatStatus = 0;
  489. int AlipayStatus = 0;
  490. if (query.HdStatus == 0 && query.Status == -1)
  491. {
  492. HdStatus = -1;
  493. HdRemark = query.WeChatRemark;
  494. }
  495. if (query.HdStatus == 3)
  496. {
  497. WeChatStatus = query.Status;
  498. AlipayStatus = query.QueryCount;
  499. WeChatRemark = query.WeChatRemark;
  500. AlipayRemark = query.AlipayRemark;
  501. }
  502. Obj.Add("HdStatus", HdStatus); //好哒进件状态
  503. Obj.Add("HdRemark", HdRemark); //好哒备注
  504. Obj.Add("WeChatRemark", WeChatRemark); //微信备注
  505. Obj.Add("AlipayRemark", AlipayRemark); //支付宝备注
  506. Obj.Add("WeChatStatus", WeChatStatus); //微信审核状态
  507. Obj.Add("AlipayStatus", AlipayStatus); //微信审核状态
  508. return Obj;
  509. }
  510. #endregion
  511. #region 节点操作-好哒同步审核结果
  512. [Authorize]
  513. public JsonResult SycnMerchantQueryStatus(string value)
  514. {
  515. value = PublicFunction.DesDecrypt(value);
  516. JsonData data = JsonMapper.ToObject(value);
  517. int id = int.Parse(function.CheckInt(data["id"].ToString()));
  518. Dictionary<string, object> Obj = new Dictionary<string, object>();
  519. MerchantAddInfo add = main2db.MerchantAddInfo.FirstOrDefault(m => m.Id == id);
  520. if(add != null)
  521. {
  522. if(add.BrandId != 1)
  523. {
  524. return Json(new AppResultJson() { Status = "-1", Info = "不是好哒商户", Data = Obj });
  525. }
  526. if(!string.IsNullOrEmpty(add.OutMchtNo))
  527. {
  528. add.Status = 2;
  529. add.QueryCount = 2;
  530. add.HdStatus = 1;
  531. add.HdPassDate = DateTime.Now;
  532. }
  533. else
  534. {
  535. add.Status = 0;
  536. add.QueryCount = 0;
  537. }
  538. MerchantInfo mer = main2db.MerchantInfo.FirstOrDefault(m => m.Id == id);
  539. if(mer != null)
  540. {
  541. if(!string.IsNullOrEmpty(add.OutMchtNo))
  542. {
  543. mer.Status = 2;
  544. mer.QueryCount = 2;
  545. }
  546. else
  547. {
  548. mer.Status = 0;
  549. mer.QueryCount = 0;
  550. }
  551. }
  552. main2db.SaveChanges();
  553. return Json(new AppResultJson() { Status = "1", Info = "已同步", Data = Obj });
  554. }
  555. return Json(new AppResultJson() { Status = "-1", Info = "同步失败", Data = Obj });
  556. }
  557. #endregion
  558. #region 进件管理-银联修改商户名称
  559. [Authorize]
  560. public JsonResult UnionPayEditMerchantName(string value)
  561. {
  562. value = PublicFunction.DesDecrypt(value);
  563. JsonData data = JsonMapper.ToObject(value);
  564. AppResultJson result = UnionPayEditMerchantNameDo(value);
  565. return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
  566. }
  567. private AppResultJson UnionPayEditMerchantNameDo(string value)
  568. {
  569. JsonData data = JsonMapper.ToObject(value);
  570. string MerchantId = data["MerchantId"].ToString(); //商户Id
  571. string MerchantName = data["MerchantName"].ToString(); //新商户名称
  572. string MerchantShortName = data["MerchantShortName"].ToString(); //新商户简称
  573. Dictionary<string, object> Obj = new Dictionary<string, object>();
  574. var Id = int.Parse(MerchantId);
  575. var query = main2db.MerchantAddInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantAddInfo();
  576. var merInfo = main2db.MerchantInfo.FirstOrDefault(m => m.Id == Id) ?? new MerchantInfo();
  577. if (query.Id > 0)
  578. {
  579. if (!string.IsNullOrEmpty(MerchantName))
  580. {
  581. query.CertMerchantName = MerchantName;
  582. merInfo.Name = MerchantName;
  583. }
  584. if (!string.IsNullOrEmpty(MerchantShortName))
  585. {
  586. query.MerchantShortname = MerchantShortName;
  587. }
  588. }
  589. main2db.SaveChanges();
  590. return new AppResultJson() { Status = "1", Info = "", Data = Obj };
  591. }
  592. #endregion
  593. #region 商户管理-银联查询商户交易信息导出
  594. [Authorize]
  595. public JsonResult ExportUnionPayQueryMerchantTradeInfo(string value)
  596. {
  597. value = PublicFunction.DesDecrypt(value);
  598. JsonData data = JsonMapper.ToObject(value);
  599. AppResultJson result = ExportUnionPayQueryMerchantTradeInfoDo(value);
  600. return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
  601. }
  602. private AppResultJson ExportUnionPayQueryMerchantTradeInfoDo(string value)
  603. {
  604. JsonData data = JsonMapper.ToObject(value);
  605. string MerchantName = data["MerchantName"].ToString(); //商户名称
  606. string Mobile = data["Mobile"].ToString(); //手机号码
  607. string MakerCode = data["MakerCode"].ToString(); //所属创客
  608. string MatchNo = data["MatchNo"].ToString(); //商户号
  609. string SubjectType = data["SubjectType"].ToString(); //主体类型(1 企业 2 个体 3 小微)
  610. string IsAct = data["IsAct"].ToString(); //激活状态(0 未激活 1 已激活)
  611. string ActDate = data["ActDate"].ToString(); //激活时间
  612. string condition = "";
  613. var merIds = MerchantInfoUtil.QueryAnyIsOkMerchantId();
  614. condition = " and Id in (" + merIds + ")";
  615. if (!string.IsNullOrEmpty(MerchantName))
  616. {
  617. condition += " and CertMerchantName like '%" + MerchantName + "%'";
  618. }
  619. if (!string.IsNullOrEmpty(Mobile))
  620. {
  621. condition += " and MobilePhone='" + Mobile + "'";
  622. }
  623. if (!string.IsNullOrEmpty(MakerCode))
  624. {
  625. var Ids = MerchantInfoUtil.QueryMerchantIdByMakerCode(MakerCode);
  626. condition += " and Id in (" + Ids + ")";
  627. }
  628. if (!string.IsNullOrEmpty(MatchNo))
  629. {
  630. condition += " and MchtNo='" + MatchNo + "'";
  631. }
  632. if (!string.IsNullOrEmpty(SubjectType))
  633. {
  634. if (SubjectType == "1") SubjectType = "SUBJECT_TYPE_ENTERPRISE"; //企业公司
  635. if (SubjectType == "2") SubjectType = "SUBJECT_TYPE_INDIVIDUAL"; //个体工商户
  636. if (SubjectType == "3") SubjectType = "SUBJECT_TYPE_SMALL"; //小微
  637. condition += " and SubjectType='" + SubjectType + "'";
  638. }
  639. if (!string.IsNullOrEmpty(IsAct))
  640. {
  641. var Ids = MerchantInfoUtil.QueryIsActMerchantId(int.Parse(IsAct));
  642. condition += " and Id in (" + Ids + ")";
  643. }
  644. if (!string.IsNullOrEmpty(data["ActDate"].ToString()))
  645. {
  646. string[] datelist = ActDate.Split(new string[] { " - " }, StringSplitOptions.None);
  647. string start = datelist[0];
  648. string end = datelist[1];
  649. var Ids = MerchantInfoUtil.QueryActDateMerchantId(start, end);
  650. condition += " and Id in (" + Ids + ")";
  651. }
  652. Dictionary<string, object> Obj = new Dictionary<string, object>();
  653. var Sql = "SELECT a.Id '商户Id',(CASE WHEN b.IsAct=0 THEN '未激活' WHEN b.IsAct=1 THEN '已激活' ELSE '' end) '激活状态',c.UpdateDate '激活时间',a.CertMerchantName '商户名称',a.MobilePhone '手机号码',b.UserId '所属创客Id',(CASE WHEN a.SubjectType='SUBJECT_TYPE_ENTERPRISE' THEN '企业公司' WHEN a.SubjectType='SUBJECT_TYPE_INDIVIDUAL' THEN '个体工商户' WHEN a.SubjectType='SUBJECT_TYPE_SMALL' THEN '小微' ELSE '' end) '主体类型',a.MchtNo '商户号',(SELECT SUM(TradeCount) TradeCount FROM QrCodePlateMainServer2.MerchantAmountSummay WHERE 1=1 AND MerchantId=a.Id) '订单总数',(SELECT SUM(TotalActual) TotalActual FROM QrCodePlateMainServer2.MerchantAmountSummay WHERE 1=1 AND MerchantId=a.Id)' 实收总金额',(SELECT SUM(TradeAmount) TradeAmount FROM QrCodePlateMainServer2.MerchantAmountSummay WHERE 1=1 AND MerchantId=a.Id) '营业总金额' FROM(SELECT Id,CertMerchantName,MobilePhone,MchtNo,SubjectType FROM QrCodePlateMainServer2.MerchantAddInfo WHERE 1=1 " + condition + " AND (Status=2 or QueryCount=2)) a LEFT JOIN (SELECT Id,IsAct,UserId FROM QrCodePlateMainServer2.MerchantInfo WHERE 1=1 AND Status=2 or QueryCount=2) b ON a.Id=b.Id LEFT JOIN (SELECT MerchantId,UpdateDate FROM QrCodePlateMainServer2.MerchantDepositOrder WHERE `Status`>0)c ON a.Id=c.MerchantId ORDER BY a.Id";
  654. var FileName = "商户管理-银联查询商户交易信息" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  655. string SendData = "{\"Operater\":\"" + AppConfig.LoginSession.sysId + "\",\"SqlString\":\"" + Sql + "\",\"FileName\":\"" + FileName + "\",\"MaxCount\":\"0\"}";
  656. RedisDbconn.Instance.AddList("ExportQueue", SendData);
  657. return new AppResultJson() { Status = "1", Info = "", Data = Obj };
  658. }
  659. #endregion
  660. #region 银联结算管理-银联结算记录
  661. [Authorize]
  662. public JsonResult UnionPaySettlementRecordList(string value)
  663. {
  664. value = PublicFunction.DesDecrypt(value);
  665. JsonData data = JsonMapper.ToObject(value);
  666. Dictionary<string, object> Other = new Dictionary<string, object>();
  667. List<Dictionary<string, object>> dataList = UnionPaySettlementRecordListDo(value, out Other);
  668. return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList, Other = Other });
  669. }
  670. private List<Dictionary<string, object>> UnionPaySettlementRecordListDo(string value, out Dictionary<string, object> Other)
  671. {
  672. JsonData data = JsonMapper.ToObject(value);
  673. string MerchantName = data["MerchantName"].ToString(); //商户名称
  674. string MerchantNo = data["MerchantNo"].ToString(); //商户号
  675. string SettlementDate = data["SettlementDate"].ToString(); //结算时间(必填)
  676. string SettleStatus = data["SettleStatus"].ToString(); //出款状态(0 入账成功 1 入账失败 2 结算超时 3 入账受理成功 4 已提交结算请求)
  677. string pageSize = data["page_size"].ToString();
  678. string pageNum = data["page_num"].ToString();
  679. var MerchantId = 0;
  680. string StartDate = "";
  681. string EndDate = "";
  682. if (!string.IsNullOrEmpty(data["MerchantName"].ToString()))
  683. {
  684. var merAddInfo = MerchantAddInfoService.Query(" and CertMerchantName='" + MerchantName + "'");
  685. MerchantId = merAddInfo.Id;
  686. }
  687. if (!string.IsNullOrEmpty(data["MerchantNo"].ToString()))
  688. {
  689. var merAddInfo = MerchantAddInfoService.Query(" and MchtNo='" + MerchantNo + "'");
  690. MerchantId = merAddInfo.Id;
  691. }
  692. if (!string.IsNullOrEmpty(data["SettlementDate"].ToString()))
  693. {
  694. string[] datelist = SettlementDate.Split(new string[] { " - " }, StringSplitOptions.None);
  695. StartDate = datelist[0];
  696. EndDate = datelist[1];
  697. }
  698. Other = new Dictionary<string, object>();
  699. var dataList = MySelfUtil.CardInComeRecordList(MerchantId, StartDate, EndDate, SettleStatus, pageSize, pageNum, out Other);
  700. Other = Other;
  701. return dataList;
  702. }
  703. #endregion
  704. #region 重置交易额-银联重置商户交易额
  705. [Authorize]
  706. public JsonResult UnionPayResetMerchantAmount(string value)
  707. {
  708. value = PublicFunction.DesDecrypt(value);
  709. JsonData data = JsonMapper.ToObject(value);
  710. AppResultJson result = UnionPayResetMerchantAmountDo(value);
  711. return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
  712. }
  713. private AppResultJson UnionPayResetMerchantAmountDo(string value)
  714. {
  715. JsonData data = JsonMapper.ToObject(value);
  716. string MerchantId = data["MerchantId"].ToString(); //商户Id
  717. string TradeDate = data["TradeDate"].ToString(); //交易时间
  718. if (string.IsNullOrEmpty(data["MerchantId"].ToString()) || string.IsNullOrEmpty(data["TradeDate"].ToString()))
  719. {
  720. return new AppResultJson() { Status = "-1", Info = "商户Id和交易时间不能为空" };
  721. }
  722. string[] datelist = TradeDate.Split(new string[] { " - " }, StringSplitOptions.None);
  723. string start = DateTime.Parse(datelist[0]).ToString("yyyyMMdd");
  724. string end = DateTime.Parse(datelist[1]).ToString("yyyyMMdd");
  725. string info = "{\"MerchantId\":\"" + MerchantId + "\",\"StartDate\":\"" + start + "\",\"EndDate\": \"" + end + "\"}";
  726. RedisDbconn.Instance.AddList("ResetMerchantStatDataQueue2", info);
  727. Dictionary<string, object> Obj = new Dictionary<string, object>();
  728. return new AppResultJson() { Status = "1", Info = "成功", Data = Obj };
  729. }
  730. #endregion
  731. }
  732. }