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; namespace MySystem.Areas.Api.Controllers.v1 { [Area("Api")] [Route("Api/v1/[controller]/[action]")] public class KdbController : BaseController { public KdbController(IHttpContextAccessor accessor, ILogger logger, IOptions setting) : base(accessor, logger, setting) { } #region 开店宝-获取押金列表 [Authorize] public JsonResult GetDepositList(string value) { value = DesDecrypt(value); // JsonData data = JsonMapper.ToObject(value); List> dataList = GetDepositListDo(); return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList }); } public List> GetDepositListDo() { // JsonData data = JsonMapper.ToObject(value); List> dataList = new List>(); string content = RedisDbconn.Instance.Get("KdbDepositList"); if (string.IsNullOrEmpty(content)) { content = PublicImportDataService.Instance.GetPolicyList(); JsonData tops = JsonMapper.ToObject(content); if (tops.Count > 0) { content = PublicImportDataService.Instance.GetDepositList(tops[0]["id"].ToString()); } RedisDbconn.Instance.Set("KdbDepositList", content); RedisDbconn.Instance.SetExpire("KdbDepositList", function.get_Random(1800, 5400)); } JsonData list = JsonMapper.ToObject(content); for (int i = 0; i < list.Count; i++) { JsonData item = list[i]; Dictionary row = new Dictionary(); row.Add("Id", item["depositId"].ToString()); string depositName = item["depositName"].ToString(); if (depositName.Contains("返")) { depositName = depositName.Split(new string[] { "返" }, StringSplitOptions.None)[0]; } if(depositName != "押0") { row.Add("Name", depositName); dataList.Add(row); } } return dataList; } #endregion #region 开店宝-设置押金 [Authorize] public JsonResult SetDeposit(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); string SnIds = data["SnIds"].ToString(); //机具Id列表 string DepositId = data["DepositId"].ToString(); //押金Id Dictionary Obj = new Dictionary(); string[] SnIdList = SnIds.Split(','); foreach (string SnId in SnIdList) { int SnIdNum = int.Parse(SnId); PosMachinesTwo pos = maindb.PosMachinesTwo.FirstOrDefault(m => m.Id == SnIdNum && m.UserId == UserId && m.BindingState == 0 && (string.IsNullOrEmpty(m.SeoKeyword) || m.SeoKeyword == "0")); if (pos == null) { return Json(new AppResultJson() { Status = "-1", Info = "机具" + pos.PosSn + "已设置押金,请勿重复设置" }); } function.WriteLog(DateTime.Now.ToString() + ":请求参数," + pos.PosSn + ":" + DepositId, "开店宝-设置押金-返回报文"); string content = PublicImportDataService.Instance.ModifyDeposit(pos.PosSn, DepositId); if (content == "fail") { return Json(new AppResultJson() { Status = "-1", Info = "机具" + pos.PosSn + "设置失败" }); } function.WriteLog(DateTime.Now.ToString() + "\n" + content, "开店宝-设置押金-返回报文"); var BeforeDeposit = 0; if (string.IsNullOrEmpty(pos.PrizeParams)) { if (RelationClass.GetKqProductBrandInfo(pos.BrandId) == "立刷云电签") { BeforeDeposit = 249; } else { BeforeDeposit = 299; } } else { BeforeDeposit = int.Parse(pos.PrizeParams); } decimal amount = decimal.Parse(PublicImportDataService.Instance.GetDepositAmount(DepositId)); pos.PrizeParams = amount.ToString("f0"); maindb.SaveChanges(); //设置押金添加记录 PublicFunction.MerchantDepositSet(pos.BrandId, UserId, SnIdNum, pos.PosSn, BeforeDeposit, decimal.Parse(pos.PrizeParams), content); } return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj }); } #endregion #region 检查签名是否合法,合法返回1,不合法返回提示信息 /// /// 检查签名是否合法,合法返回1,不合法返回提示信息 /// /// 请求的参数(json字符串) /// 要签名的字段 /// private string CheckSign(string value, string[] signField) { JsonData json = JsonMapper.ToObject(value); Dictionary dic = new Dictionary(); for (int i = 0; i < signField.Length; i++) { dic.Add(signField[i], json[signField[i]].ToString()); } string sign = json["sign"].ToString(); //客户端签名字符串 return new Sign().sign(dic, sign); } #endregion } }