KqController.cs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using Microsoft.Extensions.Logging;
  6. using Microsoft.Extensions.Options;
  7. using Microsoft.AspNetCore.Mvc;
  8. using Microsoft.AspNetCore.Http;
  9. using System.IO;
  10. using Library;
  11. using LitJson;
  12. using System.Threading.Tasks;
  13. namespace MySystem.Areas.Api.Controllers
  14. {
  15. [Area("Api")]
  16. [Route("Api/v1/[controller]/[action]")]
  17. public class KqController : Admin.Controllers.BaseController
  18. {
  19. public KqController(IHttpContextAccessor accessor, ILogger<Admin.Controllers.BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
  20. {
  21. }
  22. #region 接收绑定记录
  23. [HttpPost]
  24. [Route("/posNofity")]
  25. [Route("/kxs/bind/{BrandId:int}")]
  26. public Dictionary<string, object> Bind(int BrandId = 1)
  27. {
  28. StreamReader sr = new StreamReader(Request.Body);
  29. string requestMes = sr.ReadToEnd();
  30. if (string.IsNullOrEmpty(requestMes))
  31. {
  32. return new Dictionary<string, object>();
  33. }
  34. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  35. SaveLog(BrandId, "绑定", content);
  36. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  37. RedisDbconn.Instance.AddList("kxs_bind_list_" + BrandId, content + "#cut#" + fileName);
  38. // function.WritePage("/redis/kxs_bind_list_" + BrandId + "/", fileName+".txt", content);
  39. return BackInfo(BrandId, requestMes);
  40. }
  41. #endregion
  42. #region 接收激活记录
  43. [HttpPost]
  44. [Route("/rebateNofity")]
  45. [Route("/kxs/active/{BrandId:int}")]
  46. public Dictionary<string, object> Active(int BrandId = 1)
  47. {
  48. StreamReader sr = new StreamReader(Request.Body);
  49. string requestMes = sr.ReadToEnd();
  50. if (string.IsNullOrEmpty(requestMes))
  51. {
  52. return new Dictionary<string, object>();
  53. }
  54. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  55. SaveLog(BrandId, "激活", content);
  56. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  57. RedisDbconn.Instance.AddList("kxs_active_list_" + BrandId, content + "#cut#" + fileName);
  58. // function.WritePage("/redis/kxs_active_list_" + BrandId + "/", fileName+".txt", content);
  59. return BackInfo(BrandId, requestMes);
  60. }
  61. #endregion
  62. #region 接收商户记录
  63. [HttpPost]
  64. [Route("/kxs/merchant/{BrandId:int}")]
  65. public Dictionary<string, object> Merchant(int BrandId = 1)
  66. {
  67. StreamReader sr = new StreamReader(Request.Body);
  68. string requestMes = sr.ReadToEnd();
  69. if (string.IsNullOrEmpty(requestMes))
  70. {
  71. return new Dictionary<string, object>();
  72. }
  73. RedisDbconn.Instance.AddList("kxs_merchant_list_" + BrandId, requestMes);
  74. return BackInfo(BrandId, requestMes);
  75. }
  76. #endregion
  77. #region 接收交易记录
  78. [HttpPost]
  79. [Route("/transOrderNofity")]
  80. [Route("/kxs/trade/{BrandId:int}")]
  81. public Dictionary<string, object> Trade(int BrandId = 1)
  82. {
  83. StreamReader sr = new StreamReader(Request.Body);
  84. string requestMes = sr.ReadToEnd();
  85. if (string.IsNullOrEmpty(requestMes))
  86. {
  87. return new Dictionary<string, object>();
  88. }
  89. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  90. SaveLog(BrandId, "交易", content);
  91. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  92. RedisDbconn.Instance.AddList("kxs_trade_list_" + BrandId, content + "#cut#" + fileName);
  93. // function.WritePage("/redis/kxs_trade_list_" + BrandId + "/", fileName+".txt", content);
  94. Dictionary<string, object> obj = new Dictionary<string, object>();
  95. return BackInfo(BrandId, requestMes);
  96. }
  97. #endregion
  98. #region 接收分润记录
  99. [HttpPost]
  100. [Route("/kxs/profit/{BrandId:int}")]
  101. public Dictionary<string, object> Profit(int BrandId = 1)
  102. {
  103. StreamReader sr = new StreamReader(Request.Body);
  104. string requestMes = sr.ReadToEnd();
  105. if (string.IsNullOrEmpty(requestMes))
  106. {
  107. return new Dictionary<string, object>();
  108. }
  109. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  110. SaveLog(BrandId, "分润", content);
  111. RedisDbconn.Instance.AddList("kxs_profit_list_" + BrandId, requestMes);
  112. return BackInfo(BrandId, requestMes);
  113. }
  114. #endregion
  115. #region 接收流量卡分佣交易记录
  116. [HttpPost]
  117. [Route("/kxs/flux/{BrandId:int}")]
  118. public Dictionary<string, object> Flux(int BrandId = 1)
  119. {
  120. StreamReader sr = new StreamReader(Request.Body);
  121. string requestMes = sr.ReadToEnd();
  122. if (string.IsNullOrEmpty(requestMes))
  123. {
  124. return new Dictionary<string, object>();
  125. }
  126. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  127. SaveLog(BrandId, "流量卡交易", content);
  128. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  129. RedisDbconn.Instance.AddList("kxs_flux_list_" + BrandId, content + "#cut#" + fileName);
  130. // function.WritePage("/redis/kxs_flux_list_" + BrandId + "/", fileName+".txt", content);
  131. return BackInfo(BrandId, requestMes);
  132. }
  133. #endregion
  134. #region 接收商终关系变更通知
  135. [HttpPost]
  136. [Route("/kxs/changebind/{BrandId:int}")]
  137. public Dictionary<string, object> ChangeBind(int BrandId = 1)
  138. {
  139. StreamReader sr = new StreamReader(Request.Body);
  140. string requestMes = sr.ReadToEnd();
  141. if (string.IsNullOrEmpty(requestMes))
  142. {
  143. return new Dictionary<string, object>();
  144. }
  145. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  146. SaveLog(BrandId, "商终关系变更", content);
  147. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  148. RedisDbconn.Instance.AddList("kxs_changebind_list_" + BrandId, content + "#cut#" + fileName);
  149. // function.WritePage("/redis/kxs_changebind_list_" + BrandId + "/", fileName+".txt", content);
  150. return BackInfo(BrandId, requestMes);
  151. }
  152. #endregion
  153. #region 接收商户信息通知
  154. [HttpPost]
  155. [Route("/kxs/merchantinfo/{BrandId:int}")]
  156. public Dictionary<string, object> MerchantInfo(int BrandId = 1)
  157. {
  158. StreamReader sr = new StreamReader(Request.Body);
  159. string requestMes = sr.ReadToEnd();
  160. if (string.IsNullOrEmpty(requestMes))
  161. {
  162. return new Dictionary<string, object>();
  163. }
  164. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  165. SaveLog(BrandId, "商户信息通知", content);
  166. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  167. RedisDbconn.Instance.AddList("kxs_merchantinfo_list_" + BrandId, content + "#cut#" + fileName);
  168. // function.WritePage("/redis/kxs_merchantinfo_list_" + BrandId + "/", fileName+".txt", content);
  169. return BackInfo(BrandId, requestMes);
  170. }
  171. #endregion
  172. #region 终端费率模板变更记录
  173. [HttpPost]
  174. [Route("/kxs/tempchange/{BrandId:int}")]
  175. public Dictionary<string, object> TempChange(int BrandId = 1)
  176. {
  177. StreamReader sr = new StreamReader(Request.Body);
  178. string requestMes = sr.ReadToEnd();
  179. if (string.IsNullOrEmpty(requestMes))
  180. {
  181. return new Dictionary<string, object>();
  182. }
  183. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  184. SaveLog(BrandId, "终端费率模板变更", content);
  185. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  186. RedisDbconn.Instance.AddList("kxs_tempchange_list_" + BrandId, content + "#cut#" + fileName);
  187. // function.WritePage("/redis/kxs_tempchange_list_" + BrandId + "/", fileName+".txt", content);
  188. return BackInfo(BrandId, requestMes);
  189. }
  190. #endregion
  191. #region 首刷达标数据
  192. [HttpPost]
  193. [Route("/kxs/first/{BrandId:int}")]
  194. public Dictionary<string, object> First(int BrandId = 1)
  195. {
  196. StreamReader sr = new StreamReader(Request.Body);
  197. string requestMes = sr.ReadToEnd();
  198. if (string.IsNullOrEmpty(requestMes))
  199. {
  200. return new Dictionary<string, object>();
  201. }
  202. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  203. SaveLog(BrandId, "首刷达标", content);
  204. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  205. RedisDbconn.Instance.AddList("kxs_first_list_" + BrandId, content + "#cut#" + fileName);
  206. // function.WritePage("/redis/kxs_first_list_" + BrandId + "/", fileName+".txt", content);
  207. return BackInfo(BrandId, requestMes);
  208. }
  209. #endregion
  210. #region 换绑数据
  211. [HttpPost]
  212. [Route("/kxs/changebinddata/{BrandId:int}")]
  213. public Dictionary<string, object> ChangeBindData(int BrandId = 1)
  214. {
  215. StreamReader sr = new StreamReader(Request.Body);
  216. string requestMes = sr.ReadToEnd();
  217. if (string.IsNullOrEmpty(requestMes))
  218. {
  219. return new Dictionary<string, object>();
  220. }
  221. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  222. SaveLog(BrandId, "换绑", content);
  223. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  224. RedisDbconn.Instance.AddList("kxs_changebinddata_list_" + BrandId, content + "#cut#" + fileName);
  225. // function.WritePage("/redis/kxs_changebinddata_list_" + BrandId + "/", fileName+".txt", content);
  226. return BackInfo(BrandId, requestMes);
  227. }
  228. #endregion
  229. #region 商户SVIP会员开通和续费数据
  230. [HttpPost]
  231. [Route("/kxs/svip/{BrandId:int}")]
  232. public Dictionary<string, object> SVip(int BrandId = 1)
  233. {
  234. StreamReader sr = new StreamReader(Request.Body);
  235. string requestMes = sr.ReadToEnd();
  236. if (string.IsNullOrEmpty(requestMes))
  237. {
  238. return new Dictionary<string, object>();
  239. }
  240. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  241. SaveLog(BrandId, "商户SVIP会员开通和续费", content);
  242. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  243. RedisDbconn.Instance.AddList("kxs_svip_list_" + BrandId, content + "#cut#" + fileName);
  244. // function.WritePage("/redis/kxs_svip_list_" + BrandId + "/", fileName+".txt", content);
  245. return BackInfo(BrandId, requestMes);
  246. }
  247. #endregion
  248. #region 解绑数据
  249. [HttpPost]
  250. [Route("/kxs/unbind/{BrandId:int}")]
  251. public Dictionary<string, object> UnBind(int BrandId = 1)
  252. {
  253. StreamReader sr = new StreamReader(Request.Body);
  254. string requestMes = sr.ReadToEnd();
  255. if (string.IsNullOrEmpty(requestMes))
  256. {
  257. return new Dictionary<string, object>();
  258. }
  259. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  260. SaveLog(BrandId, "解绑", content);
  261. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  262. RedisDbconn.Instance.AddList("kxs_unbind_list_" + BrandId, content + "#cut#" + fileName);
  263. // function.WritePage("/redis/kxs_unbind_list_" + BrandId + "/", fileName+".txt", content);
  264. return BackInfo(BrandId, requestMes);
  265. }
  266. #endregion
  267. #region 修改结算卡数据
  268. [HttpPost]
  269. [Route("/kxs/modifybankcard/{BrandId:int}")]
  270. public Dictionary<string, object> ModifyBankCard(int BrandId = 1)
  271. {
  272. StreamReader sr = new StreamReader(Request.Body);
  273. string requestMes = sr.ReadToEnd();
  274. if (string.IsNullOrEmpty(requestMes))
  275. {
  276. return new Dictionary<string, object>();
  277. }
  278. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  279. SaveLog(BrandId, "修改结算卡", content);
  280. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  281. RedisDbconn.Instance.AddList("kxs_modifybankcard_list_" + BrandId, content + "#cut#" + fileName);
  282. // function.WritePage("/redis/kxs_modifybankcard_list_" + BrandId + "/", fileName+".txt", content);
  283. return BackInfo(BrandId, requestMes);
  284. }
  285. #endregion
  286. #region 提现通知
  287. [HttpPost]
  288. [Route("/kxs/cash/{BrandId:int}")]
  289. public Dictionary<string, object> Cash(int BrandId = 1)
  290. {
  291. StreamReader sr = new StreamReader(Request.Body);
  292. string requestMes = sr.ReadToEnd();
  293. if (string.IsNullOrEmpty(requestMes))
  294. {
  295. return new Dictionary<string, object>();
  296. }
  297. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  298. SaveLog(BrandId, "提现", content);
  299. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  300. RedisDbconn.Instance.AddList("kxs_cash_list_" + BrandId, content + "#cut#" + fileName);
  301. // function.WritePage("/redis/kxs_cash_list_" + BrandId + "/", fileName+".txt", content);
  302. return BackInfo(BrandId, requestMes);
  303. }
  304. #endregion
  305. #region 结算通知业务
  306. [HttpPost]
  307. [Route("/kxs/settle/{BrandId:int}")]
  308. public Dictionary<string, object> Settle(int BrandId = 1)
  309. {
  310. StreamReader sr = new StreamReader(Request.Body);
  311. string requestMes = sr.ReadToEnd();
  312. if (string.IsNullOrEmpty(requestMes))
  313. {
  314. return new Dictionary<string, object>();
  315. }
  316. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  317. SaveLog(BrandId, "结算业务", content);
  318. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  319. RedisDbconn.Instance.AddList("kxs_settle_list_" + BrandId, content + "#cut#" + fileName);
  320. // function.WritePage("/redis/kxs_settle_list_" + BrandId + "/", fileName+".txt", content);
  321. return BackInfo(BrandId, requestMes);
  322. }
  323. #endregion
  324. #region 手续费和秒到费
  325. [HttpPost]
  326. [Route("/kxs/rate/{BrandId:int}")]
  327. public Dictionary<string, object> Rate(int BrandId = 1)
  328. {
  329. StreamReader sr = new StreamReader(Request.Body);
  330. string requestMes = sr.ReadToEnd();
  331. if (string.IsNullOrEmpty(requestMes))
  332. {
  333. return new Dictionary<string, object>();
  334. }
  335. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  336. SaveLog(BrandId, "手续费和秒到费", content);
  337. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  338. RedisDbconn.Instance.AddList("kxs_rate_list_" + BrandId, content + "#cut#" + fileName);
  339. // function.WritePage("/redis/kxs_rate_list_" + BrandId + "/", fileName+".txt", content);
  340. return BackInfo(BrandId, requestMes);
  341. }
  342. #endregion
  343. // #region WIFI解绑
  344. // [HttpPost]
  345. // [Route("/kxs/unbind/wifi")]
  346. // public Dictionary<string, object> UnBindWifi()
  347. // {
  348. // StreamReader sr = new StreamReader(Request.Body);
  349. // string requestMes = sr.ReadToEnd();
  350. // if (string.IsNullOrEmpty(requestMes))
  351. // {
  352. // return new Dictionary<string, object>();
  353. // }
  354. // string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  355. // SaveLog(23, "解绑", content);
  356. // string fileName = function.MD5_16(Guid.NewGuid().ToString());
  357. // RedisDbconn.Instance.AddList("kxs_unbindwifi_list", content + "#cut#" + fileName);
  358. // Dictionary<string, object> obj = new Dictionary<string, object>();
  359. // obj.Add("resCode", 200);
  360. // obj.Add("resMsg", "success");
  361. // return obj;
  362. // }
  363. // #endregion
  364. #region 接收参数日志
  365. private void SaveLog(int BrandId, string KindName, string content)
  366. {
  367. if (BrandId == 2)
  368. {
  369. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + content, "开店宝" + KindName + "推送消息");
  370. }
  371. else if (BrandId == 4)
  372. {
  373. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + content, "乐刷" + KindName + "推送消息");
  374. }
  375. else if (BrandId == 6)
  376. {
  377. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + content, "立刷" + KindName + "推送消息");
  378. }
  379. else if (BrandId == 22)
  380. {
  381. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + content, "立刷微电签" + KindName + "推送消息");
  382. }
  383. else if (BrandId == 7)
  384. {
  385. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + content, "盛付通" + KindName + "推送消息");
  386. }
  387. else if (BrandId == 8)
  388. {
  389. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + content, "海科电签" + KindName + "推送消息");
  390. }
  391. else if (BrandId == 9)
  392. {
  393. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + content, "海科大POS" + KindName + "推送消息");
  394. }
  395. else if (BrandId == 10 || BrandId == 11)
  396. {
  397. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + content, "联动" + KindName + "推送消息");
  398. }
  399. else if (BrandId == 12)
  400. {
  401. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + content, "盒易付电签" + KindName + "推送消息");
  402. }
  403. else if (BrandId == 15)
  404. {
  405. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + content, "联客宝" + KindName + "推送消息");
  406. }
  407. else if (BrandId == 23)
  408. {
  409. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + content, "WIFI" + KindName + "推送消息");
  410. }
  411. else if (BrandId == 34)
  412. {
  413. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + content, "联动掌中宝" + KindName + "推送消息");
  414. }
  415. else
  416. {
  417. LogHelper.Instance.WriteLog(DateTime.Now.ToString() + content, "金控" + KindName + "推送消息");
  418. }
  419. }
  420. #endregion
  421. #region 返回报文
  422. private Dictionary<string, object> BackInfo(int BrandId, string RequestMes = "")
  423. {
  424. Dictionary<string, object> obj = new Dictionary<string, object>();
  425. if (BrandId == 2)
  426. {
  427. obj.Add("code", "200");
  428. }
  429. else if (BrandId == 4)
  430. {
  431. obj.Add("code", "0");
  432. obj.Add("message", "成功");
  433. }
  434. else if (BrandId == 6 || BrandId == 22)
  435. {
  436. obj.Add("ret_code", "00");
  437. obj.Add("ret_msg", "SUCCESS");
  438. }
  439. else if (BrandId == 10 || BrandId == 11)
  440. {
  441. obj.Add("retCode", "SUCCESS");
  442. obj.Add("retMessage", "OK");
  443. }
  444. else if (BrandId == 12)
  445. {
  446. if(RequestMes.Contains("\"ordId\""))
  447. {
  448. JsonData jsonObj = JsonMapper.ToObject(RequestMes);
  449. obj.Add("recvOrdId", "RECV_ORD_ID_" + jsonObj["ordId"].ToString());
  450. }
  451. obj.Add("resultCode", "0");
  452. }
  453. else if (BrandId == 15 || BrandId == 17)
  454. {
  455. obj.Add("code", "200");
  456. obj.Add("status", "success");
  457. }
  458. else if (BrandId == 30)
  459. {
  460. obj.Add("code", "200");
  461. obj.Add("msg", "success");
  462. }
  463. else
  464. {
  465. obj = PublicImportDataService.Instance.CallBack();
  466. }
  467. return obj;
  468. }
  469. #endregion
  470. #region 解析get请求键值对
  471. private Dictionary<string, string> GetParams(string data)
  472. {
  473. Dictionary<string, string> result = new Dictionary<string, string>();
  474. string[] datalist = data.Split('&');
  475. foreach (string sub in datalist)
  476. {
  477. string[] subdatalist = sub.Split('=');
  478. result.Add(subdatalist[0], subdatalist[1]);
  479. }
  480. return result;
  481. }
  482. #endregion
  483. }
  484. }