using System; using System.Collections.Generic; using System.Linq; using System.Data; 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 RecycMachineOrderController : BaseController { public RecycMachineOrderController(IHttpContextAccessor accessor, ILogger logger, IOptions setting) : base(accessor, logger, setting) { OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString(); } #region 创客-过期机具回收-仓库管理-待回收机具 [Authorize] public JsonResult StoreList(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); Dictionary Obj = new Dictionary(); List> dataList = StoreListDo(value, out Obj); return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList, Other = Obj }); } public List> StoreListDo(string value, out Dictionary Other) { JsonData data = JsonMapper.ToObject(value); string UserId = data["UserId"].ToString(); //创客Id int Status = int.Parse(function.CheckInt(data["Status"].ToString())); //状态 string Keyword = data["Keyword"].ToString(); //搜索关键词 int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString())); int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString())); List> dataList = new List>(); IQueryable list = maindb.RecycMachineOrder.Where(m => m.SeoTitle == UserId); //待处理 if (Status == 0) { list = list.Where(m => m.Sort != m.QueryCount).OrderByDescending(m => m.CreateDate); } else { list = list.Where(m => m.Sort == m.QueryCount).OrderByDescending(m => m.UpdateDate); } if (!string.IsNullOrEmpty(Keyword)) { List PosIdList = maindb.RecycMachineOrderPos.Select(m => new { m.SnNo, m.OrderId }).Where(m => m.SnNo.EndsWith(Keyword)).ToList().Select(m => m.OrderId).ToList(); UserForMakerCode code = maindb.UserForMakerCode.FirstOrDefault(m => m.MakerCode == Keyword) ?? new UserForMakerCode(); list = list.Where(m => (PosIdList.Contains(m.Id) || m.UserId == code.UserId)); } foreach (var item in list.ToList()) { var order = maindb.RecycMachineOrder.FirstOrDefault(m => m.Id == item.Id && m.Sort == 1) ?? new RecycMachineOrder(); var orderp = maindb.RecycMachineOrderPos.FirstOrDefault(m => m.Status == 0 && m.OrderId == order.Id) ?? new RecycMachineOrderPos(); var pos = maindb.PosMachinesTwo.FirstOrDefault(m => m.Status > -1 && m.BindingState == 1 && m.ActivationState == 1 && m.PosSn == orderp.SnNo) ?? new PosMachinesTwo(); if (order.Id == 0 || pos.Id == 0) { Dictionary curData = new Dictionary(); Users UsersData = maindb.Users.FirstOrDefault(m => m.Id == item.UserId) ?? new Users(); curData.Add("Id", item.Id); //Id curData.Add("RealName", UsersData.RealName); //真实姓名 curData.Add("Mobile", UsersData.Mobile); //手机号 curData.Add("MakerCode", UsersData.MakerCode); //创客编号 curData.Add("RecycOrderNo", item.RecycOrderNo); //申请单号 if (item.PostType == 1) { curData.Add("PostType", item.PostType); //寄回方式(1 邮寄 2 送货上门) curData.Add("ErpCode", item.ErpCode); //快递单号 } if (item.PostType == 2) { curData.Add("PostType", item.PostType); //寄回方式(1 邮寄 2 送货上门) } curData.Add("CreateDate", item.CreateDate == null ? "" : item.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //CreateDate curData.Add("UpdateDate", item.UpdateDate == null ? "" : item.UpdateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //确认或驳回时间 curData.Add("BrandId", item.BrandId); //机具品牌 var brandInfo = maindb.KqProducts.FirstOrDefault(m => m.Id == item.BrandId) ?? new KqProducts(); curData.Add("BrandName", brandInfo.Name); //品牌名称 List> SnLists = new List>(); var orderPos = maindb.RecycMachineOrderPos.Where(m => m.OrderId == item.Id).ToList(); foreach (var items in orderPos) { var posMachinesTwo = maindb.PosMachinesTwo.FirstOrDefault(m => m.Status > -1 && m.BindingState == 1 && m.ActivationState == 1 && m.PosSn == items.SnNo) ?? new PosMachinesTwo(); Dictionary SnList = new Dictionary(); if (posMachinesTwo.Id == 0) { SnList.Add("Status", items.Status); SnList.Add("SnNo", items.SnNo); SnLists.Add(SnList); } } curData.Add("SnList", SnLists); dataList.Add(curData); } } dataList = dataList.Skip((PageNum - 1) * PageSize).Take(PageSize).ToList();//分页的重点 Dictionary Obj = new Dictionary(); var PendCount = maindb.RecycMachineOrder.Where(m => m.Sort != m.QueryCount && m.SeoTitle == UserId).Count();//待处理 var RecyclableCount = maindb.RecycMachineOrder.Where(m => m.Sort == m.QueryCount && m.SeoTitle == UserId).Count();//已完成 Obj.Add("RecyclableCount", RecyclableCount);//已完成 Obj.Add("PendCount", PendCount);//待处理数量 Other = Obj; return dataList; } #endregion #region 创客-过期机具回收-仓库管理-待回收详情 [Authorize] public JsonResult Detail(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); List> dataList = DetailDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList }); } public List> DetailDo(string value) { JsonData data = JsonMapper.ToObject(value); int RecycStoreId = int.Parse(function.CheckInt(data["RecycStoreId"].ToString())); //退回仓库 int Id = int.Parse(function.CheckInt(data["Id"].ToString()));//申请订单Id List> dataList = new List>(); var query = maindb.RecycMachineOrder.FirstOrDefault(m => m.Id == Id) ?? new RecycMachineOrder(); var recycMachineOrderPos = maindb.RecycMachineOrderPos.Where(m => m.OrderId == query.Id).ToList(); if (recycMachineOrderPos.Count > 0) { Dictionary curData = new Dictionary(); var count = recycMachineOrderPos.Count(); curData.Add("Count", count); //数量 Users UsersData = maindb.Users.FirstOrDefault(m => m.Id == query.UserId) ?? new Users(); curData.Add("RealName", UsersData.RealName); //真实姓名 curData.Add("Mobile", UsersData.Mobile); //手机号 curData.Add("MakerCode", UsersData.MakerCode); //创客编号 curData.Add("RecycOrderNo", query.RecycOrderNo); //申请单号 if (query.PostType == 1) { curData.Add("PostType", query.PostType); //寄回方式(1 邮寄 2 送货上门) curData.Add("ErpCode", query.ErpCode); //快递单号 } if (query.PostType == 2) { curData.Add("PostType", query.PostType); //寄回方式(1 邮寄 2 送货上门) } curData.Add("CreateDate", query.CreateDate == null ? "" : query.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //CreateDate curData.Add("UpdateDate", query.UpdateDate == null ? "" : query.UpdateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //确认或驳回时间 curData.Add("BrandId", query.BrandId); //机具品牌 var brandInfo = maindb.KqProducts.FirstOrDefault(m => m.Id == query.BrandId) ?? new KqProducts(); curData.Add("BrandName", brandInfo.Name); //品牌名称 foreach (var items in recycMachineOrderPos) { Dictionary SnList = new Dictionary(); SnList.Add("Status", items.Status);//状态(-1 已撤回 0 待处理 1 已确认 2 驳回) SnList.Add("SnNo", items.SnNo); curData.Add("SnList", SnList); } dataList.Add(curData); } return dataList; } #endregion #region 创客-过期机具回收-仓库管理-确认收货 [Authorize] public JsonResult ConfirmRecyc(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); AppResultJson result = ConfirmRecycDo(value); return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data }); } public AppResultJson ConfirmRecycDo(string value) { JsonData data = JsonMapper.ToObject(value); int RecycStoreId = int.Parse(function.CheckInt(data["RecycStoreId"].ToString())); //仓库Id int OrderId = int.Parse(function.CheckInt(data["OrderId"].ToString())); //记录Id string SnList = data["SnList"].ToString(); //机具Sn string[] Sns = SnList.Split(','); string checks = RedisDbconn.Instance.Get("CheckConfirmRecyc:" + OrderId); if (checks == "1") { return new AppResultJson() { Status = "-1", Info = "请勿重复操作" }; } RedisDbconn.Instance.Set("CheckConfirmRecyc:" + OrderId, "1"); RedisDbconn.Instance.SetExpire("CheckConfirmRecyc:" + OrderId, 10); Dictionary Obj = new Dictionary(); var query = maindb.RecycMachineOrder.FirstOrDefault(m => m.Id == OrderId) ?? new RecycMachineOrder(); var recycMachineOrderPos = maindb.RecycMachineOrderPos.Where(m => m.OrderId == OrderId && m.Status == 0).ToList(); foreach (var item in Sns) { var pos = maindb.PosMachinesTwo.FirstOrDefault(m => m.Status > -1 && m.PosSn == item && m.BindingState == 0 && m.ActivationState == 0 && m.RecycStatus == 99) ?? new PosMachinesTwo(); var poscount = maindb.PosMachinesTwo.FirstOrDefault(m => m.Status > -1 && m.PosSn == item && m.BindingState == 1 && m.ActivationState == 1) ?? new PosMachinesTwo(); var orderposcount = recycMachineOrderPos.FirstOrDefault(m => m.QueryCount == 0 && m.SnNo == item) ?? new RecycMachineOrderPos(); if (poscount.Id > 0 && orderposcount.Id > 0) { query.QueryCount += 1; query.UpdateDate = DateTime.Now; orderposcount.QueryCount += 1; orderposcount.UpdateDate = DateTime.Now; maindb.SaveChanges(); return new AppResultJson() { Status = "-1", Info = "部分机具已激活,请重新刷新操作" }; } if (pos.Id == 0) { return new AppResultJson() { Status = "-1", Info = "机具" + item + "不满足操作条件", Data = Obj }; // return new AppResultJson() { Status = "-1", Info = "部分机具已激活,请重新刷新操作" }; } var brandinfo = maindb.KqProducts.FirstOrDefault(m => m.Id == pos.BrandId) ?? new KqProducts(); var storeInfo = maindb.StoreHouse.FirstOrDefault(m => m.Id == query.RecycStoreId) ?? new StoreHouse(); var storeAccount = maindb.UserAccount.FirstOrDefault(m => m.Id == storeInfo.UserId) ?? new UserAccount(); var amount = 0; if (brandinfo.Name.Contains("电签")) { amount = 200; } if (brandinfo.Name.Contains("大POS")) { amount = 300; } //扣减机具来源创客机具数 var fInfo = pos.BuyUserId + "_" + pos.BrandId; var userMachineDatas = maindb.UserMachineData.FirstOrDefault(m => m.IdBrand == fInfo) ?? new UserMachineData(); userMachineDatas.TotalMachineCount -= 1; userMachineDatas.UnBindCount -= 1; //增加分仓机具数 var tInfo = storeInfo.UserId + "_" + pos.BrandId; var userMachineData = maindb.UserMachineData.FirstOrDefault(m => m.IdBrand == tInfo) ?? new UserMachineData(); userMachineData.TotalMachineCount += 1; userMachineData.UnBindCount += 1; //增加仓库剩余库存数和总数 storeInfo.LaveNum += 1; storeInfo.TotalNum += 1; storeAccount.ValidAmount -= amount;//扣减分仓可用额度 var add = maindb.StoreHouseAmountRecord.Add(new StoreHouseAmountRecord() { CreateDate = DateTime.Now, //创建时间 BeforeAmount = storeAccount.ValidAmount - amount, AfterAmount = storeAccount.ValidAmount, UseAmount = amount, UserId = storeInfo.UserId, }).Entity; var info = recycMachineOrderPos.FirstOrDefault(m => m.Status == 0 && m.OrderId == OrderId && m.SnNo == item) ?? new RecycMachineOrderPos(); if (info.Id == 0) { return new AppResultJson() { Status = "-1", Info = "机具" + item + "不满足操作条件", Data = Obj }; } info.Status = 1;//状态(-1 已撤回 0 待处理 1 已确认 2 驳回) info.UpdateDate = DateTime.Now; info.ResultDate = DateTime.Now; //重置为仓库机 pos.Status = 1; pos.StoreId = query.RecycStoreId; pos.QueryCount = 0; pos.UpdateDate = null; pos.ActivityList = null; pos.SeoKeyword = null; pos.SeoDescription = null; pos.OrderId = 0; pos.RecycEndDate = null; pos.RecycBackCount = 0; pos.PrizeParams = null; pos.ScanQrTrade = 0; pos.BindMerchantId = 0; pos.CreditTrade = 0; pos.DebitCardTrade = 0; pos.IsVip = 0; pos.UserNav = null; pos.TransferTime = null; pos.IsPurchase = 0; pos.Detail = null; pos.BindingTime = null; pos.BindingState = 0; pos.ActivationTime = null; pos.ActivationState = 0; pos.LeaderUserId = 0; pos.PreUserId = 0; pos.IsFirst = 0; pos.DownFeeMan = null; pos.DownFeeFlag = 0; pos.DownFeeDate = null; pos.UpFeeMan = null; pos.UpFeeFlag = 0; pos.UpFeeDate = null; pos.OpReserve1 = 0; pos.OpReserve2 = 0; pos.OpReserve3 = 0; pos.OpId = 0; pos.RecycStartDate = null; pos.SourcePosSn = null; pos.BuyUserId = 0; pos.UserId = 0; pos.RecycStatus = 0; // maindb.SaveChanges(); } query.UpdateDate = DateTime.Now; query.ResultDate = DateTime.Now; query.QueryCount += Sns.Length;//添加订单完成数 maindb.SaveChanges(); return new AppResultJson() { Status = "1", Info = "", Data = Obj }; } #endregion #region 创客-过期机具回收-仓库管理-驳回 [Authorize] public JsonResult RefuseRecyc(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); AppResultJson result = RefuseRecycDo(value); return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data }); } public AppResultJson RefuseRecycDo(string value) { JsonData data = JsonMapper.ToObject(value); // int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客 int RecycStoreId = int.Parse(function.CheckInt(data["RecycStoreId"].ToString())); //仓库Id int OrderId = int.Parse(function.CheckInt(data["OrderId"].ToString())); //记录Id string SnList = data["SnList"].ToString(); //机具Sn string[] Sns = SnList.Split(','); string checks = RedisDbconn.Instance.Get("CheckRefuseRecyc:" + OrderId); if (checks == "1") { return new AppResultJson() { Status = "-1", Info = "请勿重复操作" }; } RedisDbconn.Instance.Set("CheckRefuseRecyc:" + OrderId, "1"); RedisDbconn.Instance.SetExpire("CheckRefuseRecyc:" + OrderId, 10); var PosInfo = ""; Dictionary Obj = new Dictionary(); var query = maindb.RecycMachineOrder.FirstOrDefault(m => m.Id == OrderId) ?? new RecycMachineOrder(); var store = maindb.StoreHouse.FirstOrDefault(m => m.Id == query.RecycStoreId) ?? new StoreHouse(); var brand = maindb.KqProducts.FirstOrDefault(m => m.Id == query.BrandId) ?? new KqProducts(); var recycMachineOrderPos = maindb.RecycMachineOrderPos.Where(m => m.OrderId == OrderId && m.Status == 0).ToList(); foreach (var item in Sns) { PosInfo += brand.Name + ":" + item + "," + "
"; var pos = maindb.PosMachinesTwo.FirstOrDefault(m => m.Status > -1 && m.PosSn == item && m.BindingState == 0 && m.ActivationState == 0 && m.RecycStatus == 99) ?? new PosMachinesTwo(); var poscount = maindb.PosMachinesTwo.FirstOrDefault(m => m.Status > -1 && m.PosSn == item && m.BindingState == 1 && m.ActivationState == 1) ?? new PosMachinesTwo(); var orderposcount = recycMachineOrderPos.FirstOrDefault(m => m.QueryCount == 0 && m.SnNo == item) ?? new RecycMachineOrderPos(); if (poscount.Id > 0 && orderposcount.Id > 0) { query.QueryCount += 1; query.UpdateDate = DateTime.Now; orderposcount.QueryCount += 1; orderposcount.UpdateDate = DateTime.Now; maindb.SaveChanges(); return new AppResultJson() { Status = "-1", Info = "部分机具已激活,请重新刷新操作" }; } var info = recycMachineOrderPos.FirstOrDefault(m => m.Status == 0 && m.OrderId == OrderId && m.SnNo == item) ?? new RecycMachineOrderPos(); if (info.Id == 0 || pos.Id == 0) { return new AppResultJson() { Status = "-1", Info = "机具" + pos.PosSn + "不满足驳回条件" }; // return new AppResultJson() { Status = "-1", Info = "部分机具已激活,请重新刷新操作" }; } pos.RecycStatus = 0; info.Status = 2;//状态(-1 已撤回 0 待处理 1 已确认 2 驳回) info.UpdateDate = DateTime.Now; info.ResultDate = DateTime.Now; maindb.SaveChanges(); } query.UpdateDate = DateTime.Now; query.ResultDate = DateTime.Now; query.QueryCount += Sns.Length;//添加订单完成数 maindb.SaveChanges(); RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal() { UserId = query.UserId, //创客 Title = "机具回收驳回通知", //标题 Content = "
" + PosInfo + " ",//内容 Summary = "您提交的过期回收机具已被" + store.StoreNo + "_" + store.StoreName + "驳回,请打开我的-回收机具及时处理!", CreateDate = DateTime.Now, })); return new AppResultJson() { Status = "1", Info = "", Data = Obj }; } #endregion #region 创客-过期机具回收-提交回收申请 [Authorize] public JsonResult Add(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); AppResultJson result = AddDo(value); return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data }); } public AppResultJson AddDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客 int RecycStoreId = int.Parse(function.CheckInt(data["RecycStoreId"].ToString())); //退回仓库 int PostType = int.Parse(function.CheckInt(data["PostType"].ToString())); //寄回方式(1 邮寄 2 送货上门) string ErpName = data["ErpName"].ToString(); //快递名称 string ErpCode = data["ErpCode"].ToString(); //快递单号 int BrandId = int.Parse(function.CheckInt(data["BrandId"].ToString())); //机具品牌 string SnList = data["SnList"].ToString(); //机具Sn列表 string[] Sns = SnList.Split(','); string checks = RedisDbconn.Instance.Get("CheckRecyMachineAdd:" + UserId); if (checks == "1") { return new AppResultJson() { Status = "-1", Info = "请勿重复操作" }; } RedisDbconn.Instance.Set("CheckRecyMachineAdd:" + UserId, "1"); RedisDbconn.Instance.SetExpire("CheckRecyMachineAdd:" + UserId, 10); Dictionary Obj = new Dictionary(); RecycMachineOrder query = new RecycMachineOrder(); RecycMachineOrderPos querys = new RecycMachineOrderPos(); var store = maindb.StoreHouse.FirstOrDefault(m => m.Id == RecycStoreId) ?? new StoreHouse(); var user = maindb.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users(); var brand = maindb.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts(); var PosInfo = ""; query = maindb.RecycMachineOrder.Add(new RecycMachineOrder() { CreateDate = DateTime.Now, //创建时间 Sort = Sns.Length,//订单包含机具数 QueryCount = 0,//订单机具完成数 UserId = UserId, //创客 RecycOrderNo = "JJHS" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8), RecycStoreId = RecycStoreId, //退回仓库 SeoTitle = store.UserId.ToString(),//寄回仓库所属创客Id PostType = PostType, //寄回方式 ErpName = ErpName, //快递名称 ErpCode = ErpCode, //快递单号 BrandId = BrandId, //机具品牌 }).Entity; maindb.SaveChanges(); foreach (var item in Sns) { PosInfo += brand.Name + ":" + item + "," + "
"; var pos = maindb.PosMachinesTwo.FirstOrDefault(m => m.Status > -1 && m.BrandId == BrandId && m.PosSn == item) ?? new PosMachinesTwo(); pos.RecycStatus = 99;//机具回收状态设为待处理 querys = maindb.RecycMachineOrderPos.Add(new RecycMachineOrderPos() { CreateDate = DateTime.Now, //创建时间 OrderId = query.Id,//订单Id BrandId = BrandId, //机具品牌 SnNo = item,//机具Sn }).Entity; maindb.SaveChanges(); } RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal() { UserId = store.UserId, //创客 Title = "机具回收通知", //标题 Content = "
" + PosInfo + " ",//内容 Summary = "您收到来自创客" + user.MakerCode + "机具回收订单,请打开仓库管理及时处理!", CreateDate = DateTime.Now, })); return new AppResultJson() { Status = "1", Info = "成功", Data = Obj }; } #endregion #region 创客-过期机具回收-回收分仓列表 [Authorize] public JsonResult StoreInfoList(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); List> dataList = StoreInfoListDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList }); } public List> StoreInfoListDo(string value) { JsonData data = JsonMapper.ToObject(value); int BrandId = int.Parse(function.CheckInt(data["BrandId"].ToString())); //机具品牌 string KeyWord = data["KeyWord"].ToString(); //搜索关键词 int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString())); int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString())); List> dataList = new List>(); var strBrandId = BrandId.ToString(); IQueryable query = maindb.StoreHouse.Where(m => m.Status > 0 && m.Sort == 0 && m.BrandId == strBrandId); query = query.OrderByDescending(m => m.Sort).ThenByDescending(m => m.Id); if (!string.IsNullOrEmpty(KeyWord)) { query = query.Where(m => m.StoreName.Contains(KeyWord)); } if (PageNum == 1) { query = query.Take(PageSize); } else { int skipNum = PageSize * (PageNum - 1); query = query.Skip(skipNum).Take(PageSize); } var mydata = query.ToList(); foreach (var subdata in mydata) { Dictionary curData = new Dictionary(); var user = maindb.Users.FirstOrDefault(m => m.Id == subdata.UserId) ?? new Users(); curData.Add("Id", subdata.Id); //仓库Id curData.Add("BrandId", subdata.BrandId); //仓库品牌 curData.Add("Name", subdata.StoreName); //仓库名称 curData.Add("Address", subdata.Address); //仓库地址 curData.Add("UserName", user.RealName); //仓库所属人 curData.Add("userMobile", user.Mobile); //仓库所属人手机号 dataList.Add(curData); } return dataList; } #endregion #region 创客-过期机具回收-撤回申请 [Authorize] public JsonResult Cancel(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); AppResultJson result = CancelDo(value); return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data }); } public AppResultJson CancelDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客 Dictionary Obj = new Dictionary(); string SnIds = data["SnIds"].ToString(); //机具Id string[] strids = SnIds.Split(','); string checks = RedisDbconn.Instance.Get("CheckRecyMachineCancel:" + UserId); if (checks == "1") { return new AppResultJson() { Status = "-1", Info = "请勿重复操作" }; } RedisDbconn.Instance.Set("CheckRecyMachineCancel:" + UserId, "1"); RedisDbconn.Instance.SetExpire("CheckRecyMachineCancel:" + UserId, 10); var user = maindb.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users(); var PosInfo = ""; foreach (var item in strids) { var Id = int.Parse(item); var pos = maindb.PosMachinesTwo.FirstOrDefault(m => m.Status > -1 && m.Id == Id && m.BindingState == 0 && m.ActivationState == 0 && m.RecycStatus == 99) ?? new PosMachinesTwo(); var recy = maindb.RecycMachineOrderPos.FirstOrDefault(m => m.Status == 0 && m.SnNo == pos.PosSn) ?? new RecycMachineOrderPos(); if (recy.Id == 0 || pos.Id == 0) { return new AppResultJson() { Status = "-1", Info = "机具" + pos.PosSn + "不满足撤回条件" }; } var brand = maindb.KqProducts.FirstOrDefault(m => m.Id == pos.BrandId) ?? new KqProducts(); PosInfo += brand.Name + ":" + pos.PosSn + "," + "
"; var recyOrder = maindb.RecycMachineOrder.FirstOrDefault(m => m.Id == recy.OrderId) ?? new RecycMachineOrder(); pos.RecycStatus = 0;//变更机具回收状态 pos.UpdateDate = DateTime.Now; recy.Status = -1;//变更机具回收记录状态 recy.UpdateDate = DateTime.Now; recy.CancelDate = DateTime.Now; recyOrder.UpdateDate = DateTime.Now;//变更机具回收订单时间 recyOrder.CancelDate = DateTime.Now;//变更机具回收订单时间 recyOrder.QueryCount += 1;//添加订单机具完成数 } maindb.SaveChanges(); RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal() { UserId = UserId, //创客 Title = "机具回收撤回通知", //标题 Content = "
" + PosInfo + " ",//内容 Summary = "您的部分过期回收机具已被您撤回,请查看!", CreateDate = DateTime.Now, })); return new AppResultJson() { Status = "1", Info = "撤回成功", Data = Obj }; } #endregion #region 创客-过期机具回收-机具寄回记录 [Authorize] public JsonResult List(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); List> dataList = ListDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList }); } public List> ListDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客 int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString())); int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString())); List> dataList = new List>(); IQueryable query = maindb.RecycMachineOrder.Where(m => m.Status >= -1);//Status(-1 撤回 0 待处理 1 已确认 2 驳回) if (!string.IsNullOrEmpty(data["UserId"].ToString())) { query = query.Where(m => m.UserId == UserId); } int TotalCount = query.Count(); query = query.OrderByDescending(m => m.CreateDate).ThenByDescending(m => m.Id); if (PageNum == 1) { query = query.Take(PageSize); } else { int skipNum = PageSize * (PageNum - 1); query = query.Skip(skipNum).Take(PageSize); } var mydata = query.ToList(); foreach (var subdata in mydata) { Dictionary curData = new Dictionary(); curData.Add("RecycStoreId", subdata.RecycStoreId); //退回仓库 Dictionary UserInfo = new Dictionary(); StoreHouse StoreHouseData = maindb.StoreHouse.FirstOrDefault(m => m.Id == subdata.RecycStoreId) ?? new StoreHouse(); var user = maindb.Users.FirstOrDefault(m => m.Id == StoreHouseData.UserId) ?? new Users(); UserInfo.Add("UserName", user.RealName); //仓库所属人 UserInfo.Add("UserMobile", user.Mobile); //仓库所属人手机号 UserInfo.Add("StoreName", StoreHouseData.StoreName); //仓库名称 UserInfo.Add("Address", StoreHouseData.Address); //仓库地址 curData.Add("UserInfo", UserInfo); curData.Add("RecycOrderNo", subdata.RecycOrderNo); //申请单号 if (subdata.PostType == 1) { curData.Add("PostType", subdata.PostType); //寄回方式(1 邮寄 2 送货上门) curData.Add("ErpCode", subdata.ErpCode); //快递单号 } if (subdata.PostType == 2) { curData.Add("PostType", subdata.PostType); //寄回方式(1 邮寄 2 送货上门) } curData.Add("CreateDate", subdata.CreateDate == null ? "" : subdata.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //CreateDate curData.Add("UpdateDate", subdata.UpdateDate == null ? "" : subdata.UpdateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //最后操作时间 curData.Add("BrandId", subdata.BrandId); //机具品牌 var brandInfo = maindb.KqProducts.FirstOrDefault(m => m.Id == subdata.BrandId) ?? new KqProducts(); curData.Add("BrandName", brandInfo.Name); //品牌名称 var recycMachineOrderPos = maindb.RecycMachineOrderPos.Where(m => m.OrderId == subdata.Id).ToList(); var count = recycMachineOrderPos.Count(); curData.Add("Count", count); //数量 List> SnLists = new List>(); foreach (var item in recycMachineOrderPos) { var posMachinesTwo = maindb.PosMachinesTwo.FirstOrDefault(m => m.Status > -1 && m.BindingState == 1 && m.ActivationState == 1 && m.PosSn == item.SnNo) ?? new PosMachinesTwo(); Dictionary SnList = new Dictionary(); if (posMachinesTwo.Id == 0) { SnList.Add("Status", item.Status); SnList.Add("SnNo", item.SnNo); SnLists.Add(SnList); } } curData.Add("SnList", SnLists); dataList.Add(curData); } return dataList; } #endregion #region 创客-过期机具回收-可回收机具数 [Authorize] public JsonResult UserPosCount(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); Dictionary Obj = UserPosCounDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj }); } public Dictionary UserPosCounDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客Id Dictionary Obj = new Dictionary(); var time = DateTime.Parse(DateTime.Now.AddDays(-10).ToString("yyyy-MM-dd 00:00:00"));//过期限制时间 var Count = maindb.PosMachinesTwo.Where(m => m.Status > -1 && m.ScanQrTrade == 999 && m.BuyUserId == UserId && m.BindingState == 0 && m.ActivationState == 0 && m.RecycEndDate < time && m.RecycStatus == 0).Count(); Obj.Add("Count", Count); return Obj; } #endregion #region 仓库-过期机具回收-订单数 [Authorize] public JsonResult StorePosCount(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); Dictionary Obj = StorePosCountDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj }); } public Dictionary StorePosCountDo(string value) { JsonData data = JsonMapper.ToObject(value); string UserId = data["UserId"].ToString(); //创客Id Dictionary Obj = new Dictionary(); var Count = maindb.RecycMachineOrder.Where(m => m.SeoTitle == UserId && m.Sort != m.QueryCount).Count(); Obj.Add("Count", Count); return Obj; } #endregion #region 创客-过期机具回收-过期机具预扣款 [Authorize] public JsonResult ChargeList(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); Dictionary Obj = new Dictionary(); List> dataList = ChargeListDo(value, out Obj); return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList, Other = Obj }); } public List> ChargeListDo(string value, out Dictionary Other) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客Id int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString())); int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString())); List> dataList = new List>(); var userAccount = maindb.UserAccount.FirstOrDefault(m => m.Id == UserId) ?? new UserAccount(); var query = maindb.ToChargeBackRecord.Where(m => m.Status == 0 && m.UserId == UserId).OrderByDescending(m => m.Id).ToList(); foreach (var item in query) { Dictionary dataInfo = new Dictionary(); dataInfo.Add("ChargeAmount", item.ChargeAmount); dataInfo.Add("ChargeType", item.ChargeType); dataInfo.Add("CreateDate", item.CreateDate); dataInfo.Add("Remark", item.Remark); dataList.Add(dataInfo); } Dictionary Obj = new Dictionary(); Obj.Add("BalanceAmount", userAccount.BalanceAmount);//余额 Obj.Add("ToChargeAmount", userAccount.ToChargeAmount);//预扣款金额 Other = Obj; dataList = dataList.Skip((PageNum - 1) * PageSize).Take(PageSize).ToList();//分页的重点 return dataList; } #endregion #region 创客-过期机具回收--待回收机具品牌 [Authorize] public JsonResult RecycPosBrandList(string value) { value = DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); List> dataList = RecycPosBrandListDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList }); } public List> RecycPosBrandListDo(string value) { JsonData data = JsonMapper.ToObject(value); int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客Id int PageSize = int.Parse(function.CheckInt(data["PageSize"].ToString())); int PageNum = int.Parse(function.CheckInt(data["PageNum"].ToString())); List> dataList = new List>(); var time = DateTime.Now.AddDays(-10).ToString("yyyy-MM-dd 00:00:00");//过期限制时间 DataTable dt = OtherMySqlConn.dtable("SELECT BrandId FROM PosMachinesTwo WHERE `Status`>-1 AND ScanQrTrade=999 AND BuyUserId>0 AND BuyUserId=" + UserId + " AND BindingState=0 AND ActivationState=0 AND RecycEndDate <'" + time + "' GROUP BY BrandId");//消息推送创客 var brandInfo = maindb.KqProducts.ToList(); foreach (DataRow item in dt.Rows) { int BrandId = int.Parse(item["BrandId"].ToString()); var brand = brandInfo.FirstOrDefault(m => m.Id == BrandId); Dictionary dataInfo = new Dictionary(); dataInfo.Add("Id", brand.Id); dataInfo.Add("Name", brand.Name); dataList.Add(dataInfo); } return dataList; } #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 } }