PosMachinesFeeChangeRecordController.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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. namespace MySystem.Areas.Api.Controllers.v1
  14. {
  15. [Area("Api")]
  16. [Route("Api/v1/[controller]/[action]")]
  17. public class PosMachinesFeeChangeRecordController : BaseController
  18. {
  19. public PosMachinesFeeChangeRecordController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
  20. {
  21. }
  22. #region 降扣-申请调低机具费率
  23. [Authorize]
  24. public JsonResult ApplyPost(string value)
  25. {
  26. value = DesDecrypt(value);
  27. JsonData data = JsonMapper.ToObject(value);
  28. AppResultJson result = ApplyPostDo(value);
  29. return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
  30. }
  31. public AppResultJson ApplyPostDo(string value)
  32. {
  33. JsonData data = JsonMapper.ToObject(value);
  34. int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客
  35. int PosId = int.Parse(function.CheckInt(data["PosId"].ToString())); //机具Id
  36. decimal ChangeFee = decimal.Parse(function.CheckNum(data["ChangeFee"].ToString())); //调整费率
  37. Dictionary<string, object> Obj = new Dictionary<string, object>();
  38. var user = maindb.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  39. var pos = maindb.PosMachinesTwo.FirstOrDefault(m => m.Id == PosId) ?? new PosMachinesTwo();
  40. var mer = maindb.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId) ?? new PosMerchantInfo();
  41. string Name = mer.MerchantName;
  42. if (mer.BrandId == 2)
  43. {
  44. if (Name.Contains("-"))
  45. {
  46. Name = Name.Split('-')[1];
  47. }
  48. else if (Name.Contains("_"))
  49. {
  50. Name = Name.Split('_')[1];
  51. }
  52. }
  53. var brand = maindb.KqProducts.FirstOrDefault(m => m.Id == pos.BrandId) ?? new KqProducts();
  54. RedisDbconn.Instance.GetLock("CheckApplyPostId:" + PosId);
  55. var poschannge = maindb.PosMachinesFeeChangeRecord.FirstOrDefault(m => m.PosId == PosId && m.UserId == UserId && m.Status != -1);
  56. if (poschannge != null)
  57. {
  58. RedisDbconn.Instance.ReleaseLock("CheckApplyPostId:" + PosId);
  59. return new AppResultJson() { Status = "-1", Info = "已经申请过了,请勿重复申请!", Data = Obj };
  60. }
  61. else
  62. {
  63. PosMachinesFeeChangeRecord query = new PosMachinesFeeChangeRecord();
  64. query = maindb.PosMachinesFeeChangeRecord.Add(new PosMachinesFeeChangeRecord()
  65. {
  66. CreateDate = DateTime.Now, //创建时间
  67. Sort = pos.BrandId, //品牌Id
  68. UserId = UserId, //创客
  69. PosId = PosId, //机具Id
  70. PosSn = pos.PosSn,
  71. MerNo = mer.MerchantNo,
  72. MerchantId = mer.Id,
  73. PosUserId = pos.BuyUserId, //机具所属人
  74. ChangeFee = ChangeFee, //调整费率
  75. }).Entity;
  76. maindb.SaveChanges();
  77. // PosId:机具Id
  78. // Kind:1或2,1为费率0.63,2为费率0.6
  79. // OpMan:操作人,app传创客编号,后台传SysUserName
  80. string info = "{\"RecordId\":\"" + query.Id + "\",\"PosId\":\"" + pos.Id + "\",\"Fee\": \"" + 0.6 + "\",\"Kind\": \"2\",\"OpMan\": \"" + user.MakerCode + "\"}";
  81. RedisDbconn.Instance.AddList("SetDepositQueue", info);
  82. string snhtml = "<div style='margin-bottom: .48rem;'>";
  83. snhtml += "<div style='margin-bottom: .48rem;'><div class='f16'>商户姓名:" + Name + "</div>";
  84. snhtml += "<div class='f16'>机具品牌:" + brand.Name + "</div>";
  85. snhtml += "<div class='f16'>SN:" + pos.PosSn + "</div>";
  86. snhtml += "<div class='f16'>当前费率:0.63%</div>";
  87. snhtml += "<div class='f16'>变更费率:0.6%</div>";
  88. snhtml += "<div class='f16'>变更时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "</div></div>";
  89. snhtml += "</div>";
  90. RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
  91. {
  92. UserId = UserId, //创客
  93. Title = "商户费率变更通知", //标题
  94. Content = "<div class='f16' style='margin-bottom: .72rem'>您的商户刷卡交易费率正在审核中!</div>" + snhtml, //内容
  95. Summary = "您的商户刷卡交易费率正在审核中!",
  96. CreateDate = DateTime.Now,
  97. }));
  98. }
  99. return new AppResultJson() { Status = "1", Info = "", Data = Obj };
  100. }
  101. #endregion
  102. #region 检查签名是否合法,合法返回1,不合法返回提示信息
  103. /// <summary>
  104. /// 检查签名是否合法,合法返回1,不合法返回提示信息
  105. /// </summary>
  106. /// <param name="value">请求的参数(json字符串)</param>
  107. /// <param name="signField">要签名的字段</param>
  108. /// <returns></returns>
  109. private string CheckSign(string value, string[] signField)
  110. {
  111. JsonData json = JsonMapper.ToObject(value);
  112. Dictionary<string, string> dic = new Dictionary<string, string>();
  113. for (int i = 0; i < signField.Length; i++)
  114. {
  115. dic.Add(signField[i], json[signField[i]].ToString());
  116. }
  117. string sign = json["sign"].ToString(); //客户端签名字符串
  118. return new Sign().sign(dic, sign);
  119. }
  120. #endregion
  121. }
  122. }