using System; using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Microsoft.AspNetCore.Authorization; using System.Web; using MySystem.MainModels; using LitJson; using Library; using System.IO; using System.Text; namespace MySystem.Areas.Api.Controllers.v1 { [Area("Api")] [Route("Api/[controller]/[action]")] public class DepositController : BaseController { public DepositController(IHttpContextAccessor accessor, ILogger logger, IOptions setting) : base(accessor, logger, setting) { } #region 设置押金 public Dictionary Set() { Dictionary result = new Dictionary(); try { StreamReader sr = new StreamReader(Request.Body); string requestMes = sr.ReadToEnd(); JsonData json = JsonMapper.ToObject(requestMes); string value = AesDecrypt(json["content"].ToString(), "kvS4TIRh7Yulg4nr"); JsonData data = JsonMapper.ToObject(value); string sn = data["sn"].ToString(); string serviceFee = data["serviceFee"].ToString(); WebCMSEntities db = new WebCMSEntities(); PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == sn); if(pos != null) { Dictionary req = new Dictionary(); req.Add("PosSnId", pos.Id); req.Add("BrandId", 12); req.Add("Deposit", serviceFee); RedisDbconn.Instance.AddList("ChangePosFeeQueue", Newtonsoft.Json.JsonConvert.SerializeObject(req)); result.Add("code", 0); result.Add("status", "success"); result.Add("msg", "成功"); } else { result.Add("code", 1); result.Add("status", "fail"); result.Add("msg", "机具号不存在"); } } catch(Exception ex) { function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "设置押金异常"); result.Add("code", 1); result.Add("status", "fail"); result.Add("msg", "异常"); } return result; } public string AesDecrypt(string str, string key) { if (string.IsNullOrEmpty(str)) return null; byte[] toEncryptArray = Convert.FromBase64String(str); System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged { Key = Encoding.UTF8.GetBytes(key), Mode = System.Security.Cryptography.CipherMode.ECB, Padding = System.Security.Cryptography.PaddingMode.PKCS7, }; System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Encoding.UTF8.GetString(resultArray); } #endregion #region 设置服务费 [Route("/api/v1/deposit/set")] public JsonResult SetDeposit(string value) { JsonData data = JsonMapper.ToObject(value); Dictionary req = new Dictionary(); req.Add("PosSnId", data["posId"].ToString()); req.Add("BrandId", data["brandId"].ToString()); req.Add("Deposit", data["deposit"].ToString()); req.Add("CallBackUrl", data["callBackUrl"].ToString()); RedisDbconn.Instance.AddList("ChangePosFeeQueue", Newtonsoft.Json.JsonConvert.SerializeObject(req)); return Json(new AppResultJson() { Status = "1", Info = "" }); } #endregion #region 设置费率 [Route("/api/v1/deposit/set")] public JsonResult SetFee(string value) { JsonData data = JsonMapper.ToObject(value); int PosId = int.Parse(data["posId"].ToString()); int BrandId = int.Parse(data["brandId"].ToString()); decimal FeeRate = decimal.Parse(data["feeRate"].ToString()); int FeeExtra = int.Parse(data["feeExtra"].ToString()); string CallBackUrl = data["callBackUrl"].ToString(); PosMachinesTwo pos = maindb.PosMachinesTwo.FirstOrDefault(m => m.Id == PosId) ?? new PosMachinesTwo(); PosMerchantInfo mer = maindb.PosMerchantInfo.FirstOrDefault(m => m.Id == PosId) ?? new PosMerchantInfo(); PosMachinesFeeChangeRecord query = maindb.PosMachinesFeeChangeRecord.FirstOrDefault(m => m.PosId == PosId && m.Status == 0); if(query == null) { query = maindb.PosMachinesFeeChangeRecord.Add(new PosMachinesFeeChangeRecord() { CreateDate = DateTime.Now, //创建时间 PosId = PosId, //机具Id }).Entity; maindb.SaveChanges(); } query.UpdateDate = DateTime.Now; //创建时间 query.Sort = pos.BrandId; //品牌Id query.UserId = pos.BuyUserId; //创客 query.PosId = PosId; //机具Id query.PosSn = pos.PosSn; query.MerNo = mer.MerchantNo; query.MerchantId = mer.Id; query.PosUserId = pos.BuyUserId; //机具所属人 query.ChangeFee = FeeRate; //调整费率 maindb.SaveChanges(); int ChangeKind = 0; if(FeeRate == 0.63M && FeeExtra == 3) { ChangeKind = 1; } else if(FeeRate == 0.63M && FeeExtra == 0) { ChangeKind = 2; } else if(FeeRate == 0.6M && FeeExtra == 0) { ChangeKind = 3; } // PosId:机具Id // Kind:1或2,1为费率0.63+3,2为费率0.63,3为费率0.6 // OpMan:操作人,app传创客编号,后台传SysUserName string info = "{\"RecordId\":\"" + query.Id + "\",\"PosId\":\"" + pos.Id + "\",\"Fee\": \"" + FeeRate.ToString("f0").TrimEnd('0') + "\",\"Kind\": \"" + ChangeKind + "\",\"OpMan\": \"接口\",\"CallBackUrl\":\"" + CallBackUrl + "\"}"; RedisDbconn.Instance.AddList("SetDepositQueue", info); return Json(new AppResultJson() { Status = "1", Info = "" }); } #endregion } }