123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814 |
- 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<BaseController> logger, IOptions<Setting> 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<string, object> Obj = new Dictionary<string, object>();
- List<Dictionary<string, object>> dataList = StoreListDo(value, out Obj);
- return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList, Other = Obj });
- }
- public List<Dictionary<string, object>> StoreListDo(string value, out Dictionary<string, object> 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<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
- IQueryable<RecycMachineOrder> 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<int> 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<string, object> curData = new Dictionary<string, object>();
- 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<Dictionary<string, object>> SnLists = new List<Dictionary<string, object>>();
- 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<string, object> SnList = new Dictionary<string, object>();
- 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<string, object> Obj = new Dictionary<string, object>();
- 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<Dictionary<string, object>> dataList = DetailDo(value);
- return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList });
- }
- public List<Dictionary<string, object>> 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<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
- 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<string, object> curData = new Dictionary<string, object>();
- 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<string, object> SnList = new Dictionary<string, object>();
- 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<string>("CheckConfirmRecyc:" + OrderId);
- if (checks == "1")
- {
- return new AppResultJson() { Status = "-1", Info = "请勿重复操作" };
- }
- RedisDbconn.Instance.Set("CheckConfirmRecyc:" + OrderId, "1");
- RedisDbconn.Instance.SetExpire("CheckConfirmRecyc:" + OrderId, 10);
- Dictionary<string, object> Obj = new Dictionary<string, object>();
- 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<string>("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<string, object> Obj = new Dictionary<string, object>();
- 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 + "," + "<br/>";
- 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 = "<div class='f16'>" + PosInfo + "</ div > ",//内容
- 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<string>("CheckRecyMachineAdd:" + UserId);
- if (checks == "1")
- {
- return new AppResultJson() { Status = "-1", Info = "请勿重复操作" };
- }
- RedisDbconn.Instance.Set("CheckRecyMachineAdd:" + UserId, "1");
- RedisDbconn.Instance.SetExpire("CheckRecyMachineAdd:" + UserId, 10);
- Dictionary<string, object> Obj = new Dictionary<string, object>();
- 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 + "," + "<br/>";
- 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 = "<div class='f16'>" + PosInfo + "</ div > ",//内容
- 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<Dictionary<string, object>> dataList = StoreInfoListDo(value);
- return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList });
- }
- public List<Dictionary<string, object>> 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<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
- var strBrandId = BrandId.ToString();
- IQueryable<StoreHouse> 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<string, object> curData = new Dictionary<string, object>();
- 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<string, object> Obj = new Dictionary<string, object>();
- string SnIds = data["SnIds"].ToString(); //机具Id
- string[] strids = SnIds.Split(',');
- string checks = RedisDbconn.Instance.Get<string>("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 + "," + "<br/>";
- 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 = "<div class='f16'>" + PosInfo + "</ div > ",//内容
- 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<Dictionary<string, object>> dataList = ListDo(value);
- return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList });
- }
- public List<Dictionary<string, object>> 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<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
- IQueryable<RecycMachineOrder> 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<string, object> curData = new Dictionary<string, object>();
- curData.Add("RecycStoreId", subdata.RecycStoreId); //退回仓库
- Dictionary<string, object> UserInfo = new Dictionary<string, object>();
- 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<Dictionary<string, object>> SnLists = new List<Dictionary<string, object>>();
- 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<string, object> SnList = new Dictionary<string, object>();
- 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<string, object> Obj = UserPosCounDo(value);
- return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
- }
- public Dictionary<string, object> UserPosCounDo(string value)
- {
- JsonData data = JsonMapper.ToObject(value);
- int UserId = int.Parse(function.CheckInt(data["UserId"].ToString())); //创客Id
- Dictionary<string, object> Obj = new Dictionary<string, object>();
- 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<string, object> Obj = StorePosCountDo(value);
- return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
- }
- public Dictionary<string, object> StorePosCountDo(string value)
- {
- JsonData data = JsonMapper.ToObject(value);
- string UserId = data["UserId"].ToString(); //创客Id
- Dictionary<string, object> Obj = new Dictionary<string, object>();
- 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<string, object> Obj = new Dictionary<string, object>();
- List<Dictionary<string, object>> dataList = ChargeListDo(value, out Obj);
- return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList, Other = Obj });
- }
- public List<Dictionary<string, object>> ChargeListDo(string value, out Dictionary<string, object> 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<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
- 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<string, object> dataInfo = new Dictionary<string, object>();
- dataInfo.Add("ChargeAmount", item.ChargeAmount);
- dataInfo.Add("ChargeType", item.ChargeType);
- dataInfo.Add("CreateDate", item.CreateDate);
- dataInfo.Add("Remark", item.Remark);
- dataList.Add(dataInfo);
- }
- Dictionary<string, object> Obj = new Dictionary<string, object>();
- 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<Dictionary<string, object>> dataList = RecycPosBrandListDo(value);
- return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList });
- }
- public List<Dictionary<string, object>> 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<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
- 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<string, object> dataInfo = new Dictionary<string, object>();
- dataInfo.Add("Id", brand.Id);
- dataInfo.Add("Name", brand.Name);
- dataList.Add(dataInfo);
- }
- return dataList;
- }
- #endregion
- #region 检查签名是否合法,合法返回1,不合法返回提示信息
- /// <summary>
- /// 检查签名是否合法,合法返回1,不合法返回提示信息
- /// </summary>
- /// <param name="value">请求的参数(json字符串)</param>
- /// <param name="signField">要签名的字段</param>
- /// <returns></returns>
- private string CheckSign(string value, string[] signField)
- {
- JsonData json = JsonMapper.ToObject(value);
- Dictionary<string, string> dic = new Dictionary<string, string>();
- 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
- }
- }
|