DepositController.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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.MainModels;
  11. using LitJson;
  12. using Library;
  13. using System.IO;
  14. using System.Text;
  15. namespace MySystem.Areas.Api.Controllers.v1
  16. {
  17. [Area("Api")]
  18. [Route("Api/[controller]/[action]")]
  19. public class DepositController : BaseController
  20. {
  21. public DepositController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
  22. {
  23. }
  24. #region 设置押金
  25. public Dictionary<string, object> Set()
  26. {
  27. Dictionary<string, object> result = new Dictionary<string, object>();
  28. try
  29. {
  30. StreamReader sr = new StreamReader(Request.Body);
  31. string requestMes = sr.ReadToEnd();
  32. JsonData json = JsonMapper.ToObject(requestMes);
  33. string value = AesDecrypt(json["content"].ToString(), "kvS4TIRh7Yulg4nr");
  34. JsonData data = JsonMapper.ToObject(value);
  35. string sn = data["sn"].ToString();
  36. string serviceFee = data["serviceFee"].ToString();
  37. WebCMSEntities db = new WebCMSEntities();
  38. PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == sn);
  39. if(pos != null)
  40. {
  41. Dictionary<string, object> req = new Dictionary<string, object>();
  42. req.Add("PosSnId", pos.Id);
  43. req.Add("BrandId", 12);
  44. req.Add("Deposit", serviceFee);
  45. RedisDbconn.Instance.AddList("ChangePosFeeQueue", Newtonsoft.Json.JsonConvert.SerializeObject(req));
  46. result.Add("code", 0);
  47. result.Add("status", "success");
  48. result.Add("msg", "成功");
  49. }
  50. else
  51. {
  52. result.Add("code", 1);
  53. result.Add("status", "fail");
  54. result.Add("msg", "机具号不存在");
  55. }
  56. }
  57. catch(Exception ex)
  58. {
  59. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "设置押金异常");
  60. result.Add("code", 1);
  61. result.Add("status", "fail");
  62. result.Add("msg", "异常");
  63. }
  64. return result;
  65. }
  66. public string AesDecrypt(string str, string key)
  67. {
  68. if (string.IsNullOrEmpty(str)) return null;
  69. byte[] toEncryptArray = Convert.FromBase64String(str);
  70. System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
  71. {
  72. Key = Encoding.UTF8.GetBytes(key),
  73. Mode = System.Security.Cryptography.CipherMode.ECB,
  74. Padding = System.Security.Cryptography.PaddingMode.PKCS7,
  75. };
  76. System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateDecryptor();
  77. byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
  78. return Encoding.UTF8.GetString(resultArray);
  79. }
  80. #endregion
  81. #region 设置服务费
  82. [Route("/api/v1/deposit/set")]
  83. public JsonResult SetDeposit(string value)
  84. {
  85. JsonData data = JsonMapper.ToObject(value);
  86. Dictionary<string, object> req = new Dictionary<string, object>();
  87. req.Add("PosSnId", data["posId"].ToString());
  88. req.Add("BrandId", data["brandId"].ToString());
  89. req.Add("Deposit", data["deposit"].ToString());
  90. req.Add("CallBackUrl", data["callBackUrl"].ToString());
  91. RedisDbconn.Instance.AddList("ChangePosFeeQueue", Newtonsoft.Json.JsonConvert.SerializeObject(req));
  92. return Json(new AppResultJson() { Status = "1", Info = "" });
  93. }
  94. #endregion
  95. #region 设置费率
  96. [Route("/api/v1/deposit/set")]
  97. public JsonResult SetFee(string value)
  98. {
  99. JsonData data = JsonMapper.ToObject(value);
  100. int PosId = int.Parse(data["posId"].ToString());
  101. int BrandId = int.Parse(data["brandId"].ToString());
  102. decimal FeeRate = decimal.Parse(data["feeRate"].ToString());
  103. int FeeExtra = int.Parse(data["feeExtra"].ToString());
  104. string CallBackUrl = data["callBackUrl"].ToString();
  105. PosMachinesTwo pos = maindb.PosMachinesTwo.FirstOrDefault(m => m.Id == PosId) ?? new PosMachinesTwo();
  106. PosMerchantInfo mer = maindb.PosMerchantInfo.FirstOrDefault(m => m.Id == PosId) ?? new PosMerchantInfo();
  107. PosMachinesFeeChangeRecord query = maindb.PosMachinesFeeChangeRecord.FirstOrDefault(m => m.PosId == PosId && m.Status == 0);
  108. if(query == null)
  109. {
  110. query = maindb.PosMachinesFeeChangeRecord.Add(new PosMachinesFeeChangeRecord()
  111. {
  112. CreateDate = DateTime.Now, //创建时间
  113. PosId = PosId, //机具Id
  114. }).Entity;
  115. maindb.SaveChanges();
  116. }
  117. query.UpdateDate = DateTime.Now; //创建时间
  118. query.Sort = pos.BrandId; //品牌Id
  119. query.UserId = pos.BuyUserId; //创客
  120. query.PosId = PosId; //机具Id
  121. query.PosSn = pos.PosSn;
  122. query.MerNo = mer.MerchantNo;
  123. query.MerchantId = mer.Id;
  124. query.PosUserId = pos.BuyUserId; //机具所属人
  125. query.ChangeFee = FeeRate; //调整费率
  126. maindb.SaveChanges();
  127. int ChangeKind = 0;
  128. if(FeeRate == 0.63M && FeeExtra == 3)
  129. {
  130. ChangeKind = 1;
  131. }
  132. else if(FeeRate == 0.63M && FeeExtra == 0)
  133. {
  134. ChangeKind = 2;
  135. }
  136. else if(FeeRate == 0.6M && FeeExtra == 0)
  137. {
  138. ChangeKind = 3;
  139. }
  140. // PosId:机具Id
  141. // Kind:1或2,1为费率0.63+3,2为费率0.63,3为费率0.6
  142. // OpMan:操作人,app传创客编号,后台传SysUserName
  143. string info = "{\"RecordId\":\"" + query.Id + "\",\"PosId\":\"" + pos.Id + "\",\"Fee\": \"" + FeeRate.ToString("f0").TrimEnd('0') + "\",\"Kind\": \"" + ChangeKind + "\",\"OpMan\": \"接口\",\"CallBackUrl\":\"" + CallBackUrl + "\"}";
  144. RedisDbconn.Instance.AddList("SetDepositQueue", info);
  145. return Json(new AppResultJson() { Status = "1", Info = "" });
  146. }
  147. #endregion
  148. }
  149. }