OutApiController.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. using Microsoft.AspNetCore.Mvc;
  2. using Microsoft.AspNetCore.Http;
  3. using Microsoft.Extensions.Logging;
  4. using Microsoft.Extensions.Options;
  5. using System.Collections.Generic;
  6. using LitJson;
  7. using Library;
  8. using System.Linq;
  9. using System;
  10. using MySystem.MainModels;
  11. using System.IO;
  12. namespace MySystem.Areas.Api.Controllers.v1
  13. {
  14. public class OutApiController : BaseController
  15. {
  16. public OutApiController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
  17. {
  18. }
  19. #region 设置服务费
  20. [Route("/api/v1/deposit/set")]
  21. public JsonResult SetDeposit()
  22. {
  23. StreamReader sr = new StreamReader(Request.Body);
  24. string requestMes = sr.ReadToEnd();
  25. JsonData data = JsonMapper.ToObject(requestMes);
  26. Dictionary<string, object> req = new Dictionary<string, object>();
  27. string PosSn = data["posSn"].ToString();
  28. req.Add("PosSn", PosSn);
  29. req.Add("BrandId", data["brandId"].ToString());
  30. req.Add("Deposit", data["deposit"].ToString());
  31. string UserId = "0";
  32. if(requestMes.Contains("\"userId\""))
  33. {
  34. UserId = data["userId"].ToString();
  35. }
  36. req.Add("UserId", UserId);
  37. string CallBackUrl = "";
  38. if(requestMes.Contains("\"callBackUrl\""))
  39. {
  40. CallBackUrl = data["callBackUrl"].ToString();
  41. }
  42. req.Add("CallBackUrl", CallBackUrl);
  43. RedisDbconn.Instance.AddList("ChangePosFeeQueue", Newtonsoft.Json.JsonConvert.SerializeObject(req));
  44. return Json(new AppResultJson() { Status = "1", Info = "" });
  45. }
  46. #endregion
  47. #region 设置费率
  48. [Route("/api/v1/fee/set")]
  49. public JsonResult SetFee()
  50. {
  51. StreamReader sr = new StreamReader(Request.Body);
  52. string requestMes = sr.ReadToEnd();
  53. JsonData data = JsonMapper.ToObject(requestMes);
  54. string PosSn = data["posSn"].ToString();
  55. string MerNo = data["mchNo"].ToString();
  56. int BrandId = int.Parse(data["brandId"].ToString());
  57. decimal FeeRate = decimal.Parse(data["feeRate"].ToString());
  58. int FeeExtra = int.Parse(data["feeExtra"].ToString());
  59. string CallBackUrl = "";
  60. if(requestMes.Contains("\"callBackUrl\""))
  61. {
  62. CallBackUrl = data["callBackUrl"].ToString();
  63. }
  64. int ChangeKind = 0;
  65. if(FeeRate == 0.63M && FeeExtra == 3)
  66. {
  67. ChangeKind = 1;
  68. }
  69. else if(FeeRate == 0.63M && FeeExtra == 0)
  70. {
  71. ChangeKind = 2;
  72. }
  73. else if(FeeRate == 0.6M && FeeExtra == 0)
  74. {
  75. ChangeKind = 3;
  76. }
  77. // PosId:机具Id
  78. // Kind:1或2,1为费率0.63+3,2为费率0.63,3为费率0.6
  79. // OpMan:操作人,app传创客编号,后台传SysUserName
  80. string info = "{\"RecordId\":\"0\",\"PosSn\":\"" + PosSn + "\",\"MerNo\":\"" + MerNo + "\",\"BrandId\":\"" + BrandId + "\",\"Fee\": \"" + FeeRate.ToString("f0").TrimEnd('0') + "\",\"Kind\": \"" + ChangeKind + "\",\"OpMan\": \"接口\",\"CallBackUrl\":\"" + CallBackUrl + "\"}";
  81. RedisDbconn.Instance.AddList("SetDepositPostQueue", info);
  82. return Json(new AppResultJson() { Status = "1", Info = "" });
  83. }
  84. #endregion
  85. #region WIFI解绑
  86. [HttpPost]
  87. [Route("/kxs/unbind/wifi")]
  88. public Dictionary<string, object> UnBindWifi()
  89. {
  90. StreamReader sr = new StreamReader(Request.Body);
  91. string requestMes = sr.ReadToEnd();
  92. if (string.IsNullOrEmpty(requestMes))
  93. {
  94. return new Dictionary<string, object>();
  95. }
  96. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  97. function.WriteLog(content, "WIFI解绑推送消息");
  98. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  99. RedisDbconn.Instance.AddList("kxs_unbindwifi_list", content + "#cut#" + fileName);
  100. Dictionary<string, object> obj = new Dictionary<string, object>();
  101. obj.Add("resCode", 200);
  102. obj.Add("resMsg", "success");
  103. return obj;
  104. }
  105. #endregion
  106. #region WIFI换绑
  107. [HttpPost]
  108. [Route("/kxs/changebind/wifi")]
  109. public Dictionary<string, object> ChangeBindWifi()
  110. {
  111. StreamReader sr = new StreamReader(Request.Body);
  112. string requestMes = sr.ReadToEnd();
  113. if (string.IsNullOrEmpty(requestMes))
  114. {
  115. return new Dictionary<string, object>();
  116. }
  117. string content = Newtonsoft.Json.JsonConvert.SerializeObject(Request.Headers) + "#cut#" + requestMes;
  118. function.WriteLog(content, "WIFI换绑推送消息");
  119. string fileName = function.MD5_16(Guid.NewGuid().ToString());
  120. RedisDbconn.Instance.AddList("kxs_changebindwifi_list", content + "#cut#" + fileName);
  121. Dictionary<string, object> obj = new Dictionary<string, object>();
  122. obj.Add("resCode", 200);
  123. obj.Add("resMsg", "success");
  124. return obj;
  125. }
  126. #endregion
  127. #region 同行奖同步
  128. [Route("/leader/prize/do")]
  129. public string LeaderPrize(string month)
  130. {
  131. DateTime start = DateTime.Parse(month + "-01 00:00:00");
  132. DateTime end = start.AddMonths(1);
  133. Dictionary<string, string> txjList = TxjList();
  134. JavaProductModels.WebCMSEntities dbpro = new JavaProductModels.WebCMSEntities();
  135. JavaUserModels.WebCMSEntities dbuser = new JavaUserModels.WebCMSEntities();
  136. IQueryable<JavaProductModels.KxsMachineAward> dellist = dbpro.KxsMachineAward.Where(m => m.VariationType == 0 && m.CreateTime >= start && m.CreateTime < end);
  137. foreach(JavaProductModels.KxsMachineAward sub in dellist)
  138. {
  139. dbpro.KxsMachineAward.Remove(sub);
  140. }
  141. dbpro.SaveChanges();
  142. List<JavaProductModels.KxsMachineAward> list = dbpro.KxsMachineAward.Where(m => m.VariationType == 118 && m.CreateTime >= start && m.CreateTime < end).ToList();
  143. foreach(JavaProductModels.KxsMachineAward sub in list)
  144. {
  145. JavaProductModels.KxsShopOrder order = dbpro.KxsShopOrder.FirstOrDefault(m => m.OrderSn == sub.PosSn);
  146. if(order != null)
  147. {
  148. int UserId = order.UserId;
  149. JavaUserModels.KxsUser user = dbuser.KxsUser.FirstOrDefault(m => m.Id == UserId);
  150. if(user != null)
  151. {
  152. string ParentNav = user.PidPath;
  153. string[] ParentList = ParentNav.TrimEnd(',').Split(',');
  154. Array.Reverse(ParentList);
  155. foreach(string ParentId in ParentList)
  156. {
  157. if(txjList.ContainsKey(ParentId))
  158. {
  159. string[] userData = txjList[ParentId].Split('|');
  160. dbpro.KxsMachineAward.Add(new JavaProductModels.KxsMachineAward()
  161. {
  162. Amount = 60,
  163. VariationType = 0,
  164. Username = userData[1],
  165. UserCode = userData[0],
  166. UserId = int.Parse(ParentId),
  167. MachineId = sub.MachineId,
  168. PosSn = sub.PosSn,
  169. CreateTime = DateTime.Now,
  170. AwardType = 1,
  171. });
  172. break;
  173. }
  174. }
  175. }
  176. }
  177. }
  178. dbpro.Dispose();
  179. dbuser.Dispose();
  180. return "ok";
  181. }
  182. private Dictionary<string, string> TxjList()
  183. {
  184. Dictionary<string, string> dic = new Dictionary<string, string>();
  185. string[] list = function.ReadInstance("/TxjList.txt").Split('\n');
  186. foreach(string sub in list)
  187. {
  188. string[] data = sub.Split('|');
  189. dic.Add(data[0], data[1] + "|" + data[2]);
  190. }
  191. return dic;
  192. }
  193. #endregion
  194. // [Route("/api/v1/{c1}/{c2}")]
  195. // public JsonResult ToApServer(string c1, string c2, string value)
  196. // {
  197. // string apis = function.CheckNull(RedisDbconn.Instance.Get<string>("ToApServer"));
  198. // function.WriteLog(DateTime.Now.ToString() + "\n" + value, "接口转发日志");
  199. // string hasDo = "";
  200. // if (apis.Contains(c1 + "/" + c2))
  201. // {
  202. // value = dbconn.DesEncrypt(value, "*ga34|^7");
  203. // }
  204. // else
  205. // {
  206. // hasDo = "do";
  207. // }
  208. // function.WriteLog(value, "接口转发日志");
  209. // string url = AppConfig.Base.ApHost + "api/v1/" + c1 + "/" + c2 + hasDo;
  210. // function.WriteLog(url, "接口转发日志");
  211. // string result = function.PostWebRequest(url, "value=" + value);
  212. // function.WriteLog(str: result, "接口转发日志");
  213. // JsonData data = JsonMapper.ToObject(result);
  214. // if(result.Contains("\"status\""))
  215. // {
  216. // return Json(new AppResultJson() { Status = data["status"].ToString(), Data = data["data"].ToJson(), Info = data["info"].ToString(), Other = data["other"] == null ? "" : data["other"].ToJson(), Timestamp = int.Parse(function.CheckInt(data["timestamp"].ToString())) });
  217. // }
  218. // return Json(new AppResultJson() { Status = "1", Data = result, Info = "" });
  219. // }
  220. }
  221. }