/* * 机具激活限制信息 */ using System; using System.Web; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using MySystem.Models; using Library; using LitJson; using MySystemLib; using System.Text.RegularExpressions; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Net; using System.Net.Security; using System.IO; namespace MySystem.Areas.Admin.Controllers { [Area("Admin")] [Route("Admin/[controller]/[action]")] public class SysToolsController : BaseController { public SysToolsController(IHttpContextAccessor accessor, ILogger logger, IOptions setting) : base(accessor, logger, setting) { } #region 关联上下级 public IActionResult RelationForUser(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string RelationForUserDo(string MakerCode, string ParentMakerCode, int IsTeam = 1) { if (string.IsNullOrEmpty(MakerCode)) { return "请输入创客编号"; } if (string.IsNullOrEmpty(ParentMakerCode)) { return "请输入上级创客编号"; } MakerCode = MakerCode.ToUpper(); ParentMakerCode = ParentMakerCode.ToUpper(); Users puser = db.Users.FirstOrDefault(m => m.MakerCode == ParentMakerCode); if (puser != null) { Users user = db.Users.FirstOrDefault(m => m.MakerCode == MakerCode); if (user != null) { user.ParentUserId = puser.Id; user.ParentNav = puser.ParentNav + "," + puser.Id + ","; if (IsTeam == 1) { RelationForUserSub(db, user.Id, user); } db.SaveChanges(); function.WriteLog(DateTime.Now.ToString() + ":下级:" + MakerCode + ", 上级:" + ParentMakerCode, "换线日志"); return "success"; } return "创客编号不存在"; } return "上级创客编号不存在"; } private void RelationForUserSub(WebCMSEntities dbnew, int ParentUserId, Users puser) { var subusers = dbnew.Users.Select(m => new { m.Id, m.ParentUserId, m.ParentNav }).Where(m => m.ParentUserId == ParentUserId).ToList(); foreach (var subuser in subusers) { Users user = dbnew.Users.FirstOrDefault(m => m.Id == subuser.Id); if (user != null) { user.ParentUserId = puser.Id; user.ParentNav = puser.ParentNav + "," + puser.Id + ","; RelationForUserSub(dbnew, user.Id, user); } } } #endregion #region 机具补录 public IActionResult CheckMachine(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string CheckMachineDo(string MakerCode, string PosSn, string MerNo = "", int AddActPrize = 0, int IsPre = 0, int IsSend = 0) { if (string.IsNullOrEmpty(MakerCode)) { return "请输入创客编号"; } if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN"; } PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn); KqProducts kqProducts = db.KqProducts.FirstOrDefault(m => m.Id == pos.BrandId); if (pos == null) { return "机具SN不存在"; } Users user = db.Users.FirstOrDefault(m => m.MakerCode == MakerCode); if (user == null) { return "创客编号不存在"; } if (IsPre == 1) { if (pos.BuyUserId == 0) { pos.BuyUserId = user.Id; } if (pos.UserId == 0) { pos.UserId = user.Id; } } if (pos.BindingState == 0) { SpModels.BindRecord bind = spdb.BindRecord.FirstOrDefault(m => m.MerSnNo == PosSn); if (bind != null) { pos.BindingState = 1; pos.BindingTime = bind.CreateTime; db.SaveChanges(); MerNo = bind.MerNo; } } decimal CreditTrade = 0; string BindingTime = pos.BindingTime == null ? DateTime.Now.AddMonths(-1).ToString("yyyyMM") : pos.BindingTime.Value.ToString("yyyyMM"); string SpTradeRecordId = function.ReadInstance("/PublicParams/SpTradeRecordId" + BindingTime + ".txt"); int StartId = int.Parse(function.CheckInt(SpTradeRecordId)); bool check = spdb.TradeRecord.Any(m => m.Id > StartId && m.TradeSnNo == pos.PosSn); if (check) { if (pos.BrandId == 1) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "1" && m.SerEntryMode != "N" && m.MerNo.StartsWith("M700")).Sum(m => m.TradeAmount) / 100; } else if (pos.BrandId == 2) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "2").Sum(m => m.TradeAmount); } else if (pos.BrandId == 3) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "1" && m.SerEntryMode != "N" && m.MerNo.StartsWith("M900")).Sum(m => m.TradeAmount) / 100; } else if (pos.BrandId == 4 || pos.BrandId == 5) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "4").Sum(m => m.TradeAmount) / 100; } else if (pos.BrandId == 6) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "6").Sum(m => m.TradeAmount) / 100; } else if (pos.BrandId == 7) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "7" && m.TradeStatus == "00").Sum(m => m.TradeAmount) / 100; } else if (pos.BrandId == 8) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "8").Sum(m => m.TradeAmount) / 100; } else if (pos.BrandId == 9) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "9").Sum(m => m.TradeAmount) / 100; } pos.CreditTrade = CreditTrade; db.SaveChanges(); StatTradeAmount(pos.PosSn, StartId); } if (AddActPrize == 1) { if (pos.BuyUserId == 0) { return "机具未划拨,无法补录激活奖励"; } if (string.IsNullOrEmpty(pos.SeoKeyword) || pos.SeoKeyword == "0") { bool has = spdb.ActivateRecord.Any(m => m.SnNo == pos.PosSn); if (has) { SpModels.ActivateRecord chkAct = spdb.ActivateRecord.Where(m => m.SnNo == pos.PosSn).OrderByDescending(m => m.Id).FirstOrDefault() ?? new SpModels.ActivateRecord(); pos.SeoKeyword = chkAct.SeoTitle; db.SaveChanges(); } } if (pos.BindingTime != null && pos.ActivationTime != null) { TimeSpan ts = pos.ActivationTime.Value - pos.BindingTime.Value; if (ts.TotalDays <= 30 || SysUserName == "admin") { AddAct(pos.Id); } } } decimal CheckMoney = 1000; if (pos.BrandId == 6) { CheckMoney = 5000; } if (pos.BuyUserId > 0) { if (pos.CreditTrade < CheckMoney) { return "该机具贷记卡累计交易不足" + CheckMoney; } if (pos.BindingTime != null && pos.ActivationTime != null) { TimeSpan ts = pos.ActivationTime.Value - pos.BindingTime.Value; if (ts.TotalDays > 30 && SysUserName != "admin") { return "机具划拨后已超过30天"; } } if (pos.CreditTrade >= CheckMoney && pos.ActivationState == 0) { pos.ActivationState = 1; pos.ActivationTime = DateTime.Now; PosMerchantInfo mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if (pos.ActivationState == 1 && mer != null) { mer.ActiveStatus = 1; mer.MerStandardDate = DateTime.Now; } } else if (pos.CreditTrade >= CheckMoney && pos.ActivationState == 1) { if (AddActPrize == 1) { if (IsSend == 1) { RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal() { UserId = pos.BuyUserId, //接收创客 MsgType = 2, Title = "补录成功通知", //标题 Summary = "您的 " + kqProducts.Name + " SN:" + pos.PosSn + "已经成功补录,请查收。", CreateDate = DateTime.Now, })); } return "激活奖励已补录"; } else { return "数据正常,无需补录"; } } db.SaveChanges(); return "success"; } pos.UserId = user.Id; pos.BuyUserId = user.Id; if (pos.CreditTrade >= CheckMoney && pos.ActivationState == 0 && (pos.BindingTime > DateTime.Now.AddDays(-30) || SysUserName == "admin")) { // pos.IsPurchase = 0; pos.ActivationState = 1; pos.ActivationTime = DateTime.Now; } PosMerchantInfo merchant = new PosMerchantInfo(); if (!string.IsNullOrEmpty(MerNo)) { merchant = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == MerNo); if (merchant == null) { int TopUserId = 0; if (!string.IsNullOrEmpty(user.ParentNav)) { TopUserId = int.Parse(user.ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]); } SpModels.BindRecord bind = spdb.BindRecord.FirstOrDefault(m => m.MerNo == MerNo); if (bind == null) { return "该机具尚未绑定"; } SpModels.Merchants Mer = spdb.Merchants.FirstOrDefault(m => m.MerNo == MerNo); if (Mer == null) { return "该机具尚未绑定"; } PosMerchantInfo add = db.PosMerchantInfo.Add(new PosMerchantInfo() { CreateDate = Mer.CreateTime, UpdateDate = Mer.UpdateTime, TopUserId = TopUserId, MerUserType = user.MerchantType, BrandId = int.Parse(Mer.ProductType), SnStoreId = pos.StoreId, SnType = pos.PosSnType, UserId = user.Id, MgrName = Mer.AgentName, MerStatus = 1, KqSnNo = Mer.SnNo, KqMerNo = Mer.MerNo, MerIdcardNo = Mer.MerIdcardNo, MerRealName = Mer.MerRealName, MerchantMobile = Mer.MerMobile, MerchantName = Mer.MerName, MerchantNo = Mer.MerNo, }).Entity; MachineForMerNo forMerNo = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == Mer.MerNo); if (forMerNo == null) { forMerNo = db.MachineForMerNo.Add(new MachineForMerNo() { MerNo = Mer.MerNo, SnId = pos.Id, }).Entity; } else { forMerNo.SnId = pos.Id; } } } else { if (pos.BindMerchantId > 0) { merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); } else { return "找不到机具所属商户"; } } merchant.UserId = user.Id; if (pos.ActivationState == 1) { merchant.ActiveStatus = 1; merchant.MerStandardDate = DateTime.Now; } if (pos.BindMerchantId == 0) { pos.BindMerchantId = merchant.Id; } // var makerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode(); // var prePos = db.PreSendStockDetail.FirstOrDefault(m => m.ToUserId == makerCode.UserId && m.SnId == pos.Id && m.CreateDate < DateTime.Now.AddDays(-30) && m.AuthFlag == 1 && m.ApplyFlag == 0) ?? new PreSendStockDetail(); // if (makerCode.UserId > 0 && prePos.Id > 0) // { // if (prePos.CreateDate <= DateTime.Now.AddDays(-30)) // { // var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == prePos.BrandId); // var amount = 0; // if (brandInfo.Name.Contains("电签")) // { // amount = 200; // } // if (brandInfo.Name.Contains("大POS")) // { // amount = 300; // } // var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == makerCode.UserId) ?? new UserAccount(); // if (userAccount.Id > 0) // { // userAccount.SmallStoreDeposit -= amount; // var add = db.UserAccountRecord.Add(new UserAccountRecord() // { // CreateDate = DateTime.Now, // Remark = "小分仓押金退还", // ChangeType = 65, // BeforeBalanceAmount = userAccount.SmallStoreDeposit + amount, //变更前小分仓押金 // AfterBalanceAmount = userAccount.SmallStoreDeposit, //变更后小分仓押金 // ChangeAmount = amount,//变动金额 // UserId = userAccount.Id, // }).Entity; // db.SaveChanges(); // } // } // } db.SaveChanges(); function.WriteLog(DateTime.Now.ToString() + "\n" + SysUserName + "\nMakerCode:" + MakerCode + ", PosSn:" + PosSn + ", MerNo:" + MerNo + ", AddActPrize:" + AddActPrize + ", IsPre:" + IsPre, "机具补录日志"); return "success"; } public IActionResult CheckMachine2(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string CheckMachine2Do(string MakerCode, string PosSn, string MerNo = "", int AddActPrize = 0) { if (string.IsNullOrEmpty(MakerCode)) { return "请输入创客编号"; } if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN"; } PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn); if (pos == null) { return "机具SN不存在"; } Users user = db.Users.FirstOrDefault(m => m.MakerCode == MakerCode); if (user == null) { return "创客编号不存在"; } if (pos.BindingState == 0) { SpModels.BindRecord bind = spdb.BindRecord.FirstOrDefault(m => m.MerSnNo == PosSn); if (bind != null) { pos.BindingState = 1; pos.BindingTime = bind.CreateTime; db.SaveChanges(); MerNo = bind.MerNo; } } decimal CreditTrade = 0; bool check = spdb.TradeRecord.Any(m => m.TradeSnNo == pos.PosSn); if (check) { string BindingTime = pos.BindingTime == null ? DateTime.Now.AddMonths(-1).ToString("yyyyMM") : pos.BindingTime.Value.ToString("yyyyMM"); string SpTradeRecordId = function.ReadInstance("/PublicParams/SpTradeRecordId" + BindingTime + ".txt"); int StartId = int.Parse(function.CheckInt(SpTradeRecordId)); if (pos.BrandId == 1) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "1" && m.SerEntryMode != "N" && m.MerNo.StartsWith("M700")).Sum(m => m.TradeAmount) / 100; } else if (pos.BrandId == 2) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "2").Sum(m => m.TradeAmount); } else if (pos.BrandId == 3) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "1" && m.SerEntryMode != "N" && m.MerNo.StartsWith("M900")).Sum(m => m.TradeAmount) / 100; } else if (pos.BrandId == 4 || pos.BrandId == 5) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "4").Sum(m => m.TradeAmount) / 100; } else if (pos.BrandId == 6) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "6").Sum(m => m.TradeAmount) / 100; } else if (pos.BrandId == 8) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "8").Sum(m => m.TradeAmount) / 100; } else if (pos.BrandId == 9) { CreditTrade = spdb.TradeRecord.Where(m => m.Id > StartId && m.TradeSnNo == pos.PosSn && m.ProductType == "9").Sum(m => m.TradeAmount) / 100; } pos.CreditTrade = CreditTrade; db.SaveChanges(); StatTradeAmount(pos.PosSn); } if (AddActPrize == 1) { if (string.IsNullOrEmpty(pos.SeoKeyword) || pos.SeoKeyword == "0") { bool has = spdb.ActivateRecord.Any(m => m.SnNo == pos.PosSn); if (has) { SpModels.ActivateRecord chkAct = spdb.ActivateRecord.Where(m => m.SnNo == pos.PosSn).OrderByDescending(m => m.Id).FirstOrDefault() ?? new SpModels.ActivateRecord(); pos.SeoKeyword = chkAct.SeoTitle; db.SaveChanges(); } } AddAct(pos.Id); } if (pos.BuyUserId > 0) { if (pos.CreditTrade < 1000) { // pos.IsPurchase = 99; db.SaveChanges(); return "该机具贷记卡累计交易不足1000"; } if (pos.CreditTrade >= 1000 && pos.ActivationState == 0) { // pos.IsPurchase = 0; pos.ActivationState = 1; pos.ActivationTime = DateTime.Now; PosMerchantInfo mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if (pos.ActivationState == 1 && mer != null) { mer.ActiveStatus = 1; mer.MerStandardDate = DateTime.Now; } } else if (pos.CreditTrade >= 1000 && pos.ActivationState == 1) { if (AddActPrize == 1) { return "激活奖励已补录"; } else { return "数据正常,无需补录"; } } db.SaveChanges(); return "success"; } pos.UserId = user.Id; pos.BuyUserId = user.Id; // if (pos.CreditTrade < 1000) // { // pos.IsPurchase = 99; // } if (pos.CreditTrade >= 1000 && pos.ActivationState == 0) { // pos.IsPurchase = 0; pos.ActivationState = 1; pos.ActivationTime = DateTime.Now; } PosMerchantInfo merchant = new PosMerchantInfo(); if (!string.IsNullOrEmpty(MerNo)) { merchant = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == MerNo); if (merchant == null) { int TopUserId = 0; if (!string.IsNullOrEmpty(user.ParentNav)) { TopUserId = int.Parse(user.ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]); } SpModels.BindRecord bind = spdb.BindRecord.FirstOrDefault(m => m.MerNo == MerNo); if (bind == null) { return "该机具尚未绑定"; } SpModels.Merchants Mer = spdb.Merchants.FirstOrDefault(m => m.MerNo == MerNo); if (Mer == null) { return "该机具尚未绑定"; } PosMerchantInfo add = db.PosMerchantInfo.Add(new PosMerchantInfo() { CreateDate = Mer.CreateTime, UpdateDate = Mer.UpdateTime, TopUserId = TopUserId, MerUserType = user.MerchantType, BrandId = int.Parse(Mer.ProductType), SnStoreId = pos.StoreId, SnType = pos.PosSnType, UserId = user.Id, MgrName = Mer.AgentName, MerStatus = 1, KqSnNo = Mer.SnNo, KqMerNo = Mer.MerNo, MerIdcardNo = Mer.MerIdcardNo, MerRealName = Mer.MerRealName, MerchantMobile = Mer.MerMobile, MerchantName = Mer.MerName, MerchantNo = Mer.MerNo, }).Entity; MachineForMerNo forMerNo = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == Mer.MerNo); if (forMerNo == null) { forMerNo = db.MachineForMerNo.Add(new MachineForMerNo() { MerNo = Mer.MerNo, SnId = pos.Id, }).Entity; } else { forMerNo.SnId = pos.Id; } } } else { if (pos.BindMerchantId > 0) { merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); } else { return "找不到机具所属商户"; } } merchant.UserId = user.Id; if (pos.ActivationState == 1) { merchant.ActiveStatus = 1; merchant.MerStandardDate = DateTime.Now; } if (pos.BindMerchantId == 0) { pos.BindMerchantId = merchant.Id; } db.SaveChanges(); return "success"; } public void AddAct(int posid = 0) { WebCMSEntities db = new WebCMSEntities(); PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.ActivationState == 1 && !string.IsNullOrEmpty(m.SeoKeyword) && m.Id == posid); if (pos != null) { // PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId && !string.IsNullOrEmpty(m.MerIdcardNo)); PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if (merchant != null) { // PosMerchantOtherInfo otherInfo = db.PosMerchantOtherInfo.FirstOrDefault(m => m.CertId == merchant.MerIdcardNo && m.PrizeFlag1 == 0); // if (otherInfo != null) // { // otherInfo.PrizeFlag1 = 1; // db.SaveChanges(); string ParentNav = ""; Users user = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId); if (user != null) { int GetUserId = user.Id; ParentNav = user.ParentNav; int TopUserId = 1; if (!string.IsNullOrEmpty(ParentNav)) { string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(','); if (ParentNavList.Length > 1) { TopUserId = int.Parse(ParentNavList[1]); } else if (ParentNavList.Length == 1) { TopUserId = int.Parse(ParentNavList[0]); } } List prizes = new List(); decimal ActPrize = decimal.Parse(function.CheckNum(pos.SeoKeyword)); if (pos.BrandId == 1 || pos.BrandId == 3 || pos.BrandId == 4 || pos.BrandId == 5 || pos.BrandId == 6 || pos.BrandId == 8 || pos.BrandId == 9) { ActPrize = ActPrize / 100; } if (ActPrize > 0) { if (ActPrize == 99) { ActPrize = 100; } else if (ActPrize == 199) { ActPrize = 200; } else if (ActPrize == 299) { ActPrize = 300; } else if (ActPrize == 249) { ActPrize = 260; } prizes.Add(ActPrize); if (pos.BrandId == 6 && pos.ActivationState == 1 && pos.CreditTrade >= 10000 && pos.BindingTime > DateTime.Now.AddDays(-60)) { prizes.Add(40); } } else if (pos.BrandId == 6 && ActPrize == 0) { prizes.Add(50); } foreach (decimal prize in prizes) { int ChangeType = prize == 40 ? 12 : 0; bool check = db.ActiveReward.Any(m => m.KqSnNo == pos.PosSn && m.RewardAmount == prize); if (!check) { Users machineUser = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); db.ActiveReward.Add(new ActiveReward() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = GetUserId, //创客 MerchantId = pos.BindMerchantId, //商户 StandardDate = pos.ActivationTime, //达标日期 RewardAmount = prize, //奖励金额 BrandId = pos.BrandId, //品牌 UserNav = ParentNav, //创客父级 DirectBuddyNo = merchant.UserId, //商户直属创客 KqMerNo = merchant.KqMerNo, //渠道商户编号 KqSnNo = pos.PosSn, //渠道SN号 SnType = pos.PosSnType, //机具类型 SnApplyUserId = pos.BuyUserId, //机具申请创客 ActType = 0, //激活类型 SnStoreId = pos.StoreId, //SN仓库 RewardTips = "激活奖励", //奖励描述 Remark = "激活奖励", //备注 ActDate = pos.ActivationTime, //激活时间 TopUserId = TopUserId, //顶级创客 SeoTitle = machineUser.RealName, }); db.SaveChanges(); string IdBrand = GetUserId + "_" + pos.BrandId; UserMachineData userData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand); if (userData == null) { userData = db.UserMachineData.Add(new UserMachineData() { IdBrand = IdBrand, }).Entity; db.SaveChanges(); } userData.ActProfit += prize; db.SaveChanges(); UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == GetUserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = GetUserId, UserId = GetUserId, }).Entity; db.SaveChanges(); } decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额 decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额 decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.BalanceAmount += prize; account.TotalAmount += prize; decimal AfterTotalAmount = account.TotalAmount; //变更后总金额 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = GetUserId, //创客 ChangeType = ChangeType, //变动类型 ProductType = pos.BrandId, //产品类型 ChangeAmount = prize, //变更金额 BeforeTotalAmount = BeforeTotalAmount, //变更前总金额 AfterTotalAmount = AfterTotalAmount, //变更后总金额 BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 }).Entity; db.SaveChanges(); RedisDbconn.Instance.Set("UserAccount:" + GetUserId, account); string dateString = pos.ActivationTime.Value.ToString("yyyyMMdd"); string monthString = pos.ActivationTime.Value.ToString("yyyyMM"); // 激活奖励列表 List dates = RedisDbconn.Instance.GetList("ActiveRewardDay:" + GetUserId + ":" + pos.BrandId); if (!dates.Contains(dateString)) { RedisDbconn.Instance.AddList("ActiveRewardDay:" + GetUserId + ":" + pos.BrandId, dateString); } RedisDbconn.Instance.AddNumber("ActiveRewardAmt:" + GetUserId + ":" + pos.BrandId + ":" + dateString, prize); List months = RedisDbconn.Instance.GetList("ActiveRewardMonth:" + GetUserId + ":" + pos.BrandId); if (!months.Contains(monthString)) { RedisDbconn.Instance.AddList("ActiveRewardMonth:" + GetUserId + ":" + pos.BrandId, monthString); } RedisDbconn.Instance.AddNumber("ActiveRewardAmt:" + GetUserId + ":" + pos.BrandId + ":" + monthString, prize); // 激活奖励详情 List actPrizeList = RedisDbconn.Instance.GetList("ActiveRewardDetail:" + GetUserId + ":" + pos.BrandId + ":" + dateString); if (!actPrizeList.Contains(pos.BindMerchantId)) { RedisDbconn.Instance.AddList("ActiveRewardDetail:" + GetUserId + ":" + pos.BrandId + ":" + dateString, pos.BindMerchantId); } RedisDbconn.Instance.AddNumber("ActiveRewardAmt:mer:" + pos.BindMerchantId + ":" + pos.BrandId + ":" + dateString, prize); //收支明细 RedisDbconn.Instance.AddList("UserAccountRecord:" + GetUserId + ":1:" + monthString, userAccountRecord); RedisDbconn.Instance.AddNumber("UserAccount:" + GetUserId + ":1:" + monthString, prize); } } } // } } } db.Dispose(); } //重置交易额 public void StatTradeAmount(string PosSn, int StartId = 0) { DateTime start = DateTime.Parse(DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00"); if (DateTime.Now.Day == 1) { start = DateTime.Parse(DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-01 00:00:00"); } DateTime end = DateTime.Now; SycnSpTradeService.Instance.Start(PosSn, start, end, StartId); RedisDbconn.Instance.AddList("ResetTradeAmountList", PosSn); } #endregion #region 设置商户代理 public IActionResult SetMerAgent(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string SetMerAgentDo(string MakerCode, string PosSn, string MerNo, int IsSend = 0) { if (string.IsNullOrEmpty(MakerCode)) { return "请输入创客编号"; } if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN"; } if (string.IsNullOrEmpty(MerNo)) { return "请输入商户编号"; } PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn); KqProducts kqProducts = db.KqProducts.FirstOrDefault(m => m.Id == pos.BrandId); if (pos == null) { return "机具SN不存在"; } Users user = db.Users.FirstOrDefault(m => m.MakerCode == MakerCode); if (user == null) { return "创客编号不存在"; } PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == MerNo); if (merchant == null) { return "商户编号不存在"; } pos.SeoTitle = user.Id.ToString(); pos.UserId = user.Id; if (pos.BindMerchantId == 0) { pos.BindMerchantId = merchant.Id; if (IsSend == 1) { RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal() { UserId = pos.BuyUserId, //接收创客 MsgType = 2, Title = "商户型代理设置成功", //标题 Summary = "您的 " + kqProducts.Name + " SN:" + pos.PosSn + "已经成功给下级代理" + user.RealName + "" + MakerCode + ",设置为商户型代理,设置成功后的新增交易的分润归商户型代理所有", CreateDate = DateTime.Now, })); } } user.MerchantType = 1; merchant.UserId = user.Id; merchant.MerUserType = 1; db.SetMerchantTypeRecord.Add(new SetMerchantTypeRecord() { CreateDate = DateTime.Now, IsRecyc = (ulong)pos.IsPurchase, CreditAmount = pos.CreditTrade, PosSnType = pos.PosSnType, ActDate = pos.ActivationTime, BindDate = pos.BindingTime, ActStatus = (ulong)pos.ActivationState, BindStatus = (ulong)pos.BindingState, MerNo = MerNo, PosSn = pos.PosSn, Note = "后台设置商户型创客", ToUserId = user.Id, FromUserId = pos.BuyUserId, }); db.SaveChanges(); return "success"; } #endregion #region 取消商户代理 public IActionResult CancelMerAgent(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string CancelMerAgentDo(string MakerCode, string PosSn, int IsSend = 0) { if (string.IsNullOrEmpty(MakerCode)) { return "请输入创客编号"; } if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN"; } PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn); KqProducts kqProducts = db.KqProducts.FirstOrDefault(m => m.Id == pos.BrandId); if (pos == null) { return "机具SN不存在"; } Users user = db.Users.FirstOrDefault(m => m.MakerCode == MakerCode); if (user == null) { return "创客编号不存在"; } PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == PosSn); pos.UserId = pos.BuyUserId; merchant.UserId = pos.BuyUserId; merchant.MerUserType = 0; user.MerchantType = 0; db.SaveChanges(); if (pos.BindMerchantId == 0) { pos.BindMerchantId = merchant.Id; if (IsSend == 1) { RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal() { UserId = pos.BuyUserId, //接收创客 MsgType = 2, Title = "商户型代理取消成功", //标题 Summary = "您的 " + kqProducts.Name + " SN:" + pos.PosSn + "已给下级代理" + user.RealName + "" + MakerCode + "取消成功", CreateDate = DateTime.Now, })); } } string text = string.Format("取消商户代理,创客编号: " + user.MakerCode + ",机具SN:" + pos.PosSn + ",操作人:" + SysRealName + ",Time:" + DateTime.Now + ""); function.WriteLog(text, "CancelMerAgent");//取消商户型代理日志 return "success"; } #endregion #region 查看SP原始数据日志 public IActionResult SeeSpLog(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } #endregion #region 查询机具信息 public IActionResult SeeSnDetail(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string SeeSnDetailDo(string PosSn) { if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN"; } PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn); if (pos == null) { return "机具SN不存在"; } if (pos.Status == -1) { Users posUsers = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); decimal Deposits = decimal.Parse(function.CheckNum(pos.SeoKeyword)); if (pos.BrandId != 2 && pos.BrandId != 7) { Deposits = Deposits / 100; } string DepositGets = "未领取"; string DepositUsers = ""; ActiveReward rewards = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.RewardAmount != 40) ?? new ActiveReward(); if (rewards.Id > 0) { Users user = db.Users.FirstOrDefault(m => m.Id == rewards.UserId) ?? new Users(); DepositGets = "已领取"; DepositUsers = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName; // DepositUsers = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile; } string ActiveTimes = rewards.CreateDate == null ? "" : rewards.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); var storeInfo = db.StoreHouse.FirstOrDefault(m => m.Id == pos.StoreId) ?? new StoreHouse(); string results = "该机具为故障机" + "\n"; results += "所在仓库:" + storeInfo.StoreNo + "\n"; results += "仓库名称:" + storeInfo.StoreName + "\n"; results += "押金返现实际返现对象:" + DepositUsers + "\n"; results += "押金:" + Deposits + "\n"; results += "是否返现:" + DepositGets + ",领取时间:" + ActiveTimes + "\n"; return results; } string merInfo = ""; string merName = ""; PosMerchantInfo mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if (mer != null) { merInfo = mer.KqMerNo; merName = mer.MerchantName; } else { merInfo = "未找到商户"; } StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == pos.StoreId) ?? new StoreHouse(); Users posUser = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); Users posSubUser = db.Users.FirstOrDefault(m => m.Id == pos.UserId) ?? new Users(); int TopUserId = 0; if (!string.IsNullOrEmpty(posUser.ParentNav)) { string[] ParentNavs = posUser.ParentNav.Trim(',').Replace(",,", ",").Split(','); if (ParentNavs.Length > 1) { TopUserId = int.Parse(ParentNavs[1]); } if (ParentNavs.Length == 1) { TopUserId = int.Parse(ParentNavs[0]); } } Users posTopUser = db.Users.FirstOrDefault(m => m.Id == TopUserId) ?? new Users(); string bindResult = "", bindTime = ""; if (pos.BindingState == 0) { SpModels.BindRecord bind = spdb.BindRecord.FirstOrDefault(m => m.MerSnNo == pos.PosSn); if (bind != null) { if (bind.Status != 1) { bindResult = "执行中"; } } else { bindResult = "未绑定"; } } else { bindResult = "已绑定"; bindTime = pos.BindingTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); } string activeResult = "", activeTime = ""; if (pos.ActivationState == 0) { if (pos.CreditTrade < 1000) { activeResult = "未刷满1000"; } else if (pos.TransferTime == null) { activeResult = "未激活, 需补录"; } } else { activeResult = "已激活"; activeTime = pos.ActivationTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); } string tradeAmount = pos.CreditTrade.ToString(); decimal Deposit = decimal.Parse(function.CheckNum(pos.SeoKeyword)); if (pos.BrandId != 2 && pos.BrandId != 7) { Deposit = Deposit / 100; } string DepositGet = "未领取"; string DepositUser = ""; string DepositToUser = ""; decimal headAmount = 0; decimal footAmount = 0; ActiveReward reward = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.RewardAmount != 40) ?? new ActiveReward(); if (reward.Id > 0) { Users user = db.Users.FirstOrDefault(m => m.Id == reward.UserId) ?? new Users(); DepositGet = "已领取"; DepositUser = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName; // DepositUser = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile; var fAmount = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.ActType == 0); if (fAmount != null) { headAmount = fAmount.RewardAmount; } var lAmount = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.ActType == 1); if (lAmount != null) { footAmount = lAmount.RewardAmount; } } string DepositGet6 = "未领取"; string DepositUser6 = ""; ActiveReward lisreward = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.BrandId == 6 && m.RewardAmount == 40) ?? new ActiveReward(); if (lisreward.Id > 0) { Users user = db.Users.FirstOrDefault(m => m.Id == lisreward.UserId) ?? new Users(); DepositGet6 = "已领取"; DepositUser6 = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName; // DepositUser6 = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile; } string FluxGet6 = "未领取"; string FluxUser6 = ""; FluxProfitDetail flux = db.FluxProfitDetail.FirstOrDefault(m => m.SnNo == pos.PosSn) ?? new FluxProfitDetail(); if (flux.Id > 0) { Users user = db.Users.FirstOrDefault(m => m.Id == flux.UserId) ?? new Users(); FluxGet6 = "已领取(领取时间:" + flux.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") + ")"; FluxUser6 = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName; // FluxUser6 = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile; } Users touser = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); DepositToUser = "创客编号:" + touser.MakerCode + ",姓名:" + touser.RealName; // DepositToUser = "创客编号:" + touser.MakerCode + ",姓名:" + touser.RealName + ",手机号:" + touser.Mobile; string OpenUser10 = "未领取"; string OpenUser20 = "未领取"; string Leader10 = "未领取"; string YYZX5 = "未领取"; var OpenRewardDetail = db.OpenRewardDetail.Where(m => m.SnNo == pos.PosSn).ToList(); OpenRewardDetail openreward = OpenRewardDetail.FirstOrDefault(m => m.CreditRewardAmount == 20) ?? new OpenRewardDetail(); if (openreward.Id > 0) { Users user = db.Users.FirstOrDefault(m => m.Id == openreward.UserId) ?? new Users(); OpenUser20 = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName; // OpenUser20 = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile; } openreward = OpenRewardDetail.FirstOrDefault(m => m.CreditRewardAmount == 10) ?? new OpenRewardDetail(); if (openreward.Id > 0) { Users user = db.Users.FirstOrDefault(m => m.Id == openreward.UserId) ?? new Users(); OpenUser10 = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName; // OpenUser10 = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile; } var leader10 = db.UserAccountRecord.FirstOrDefault(m => m.QueryCount == pos.Id && m.ChangeType == 116) ?? new UserAccountRecord(); if (leader10.Id > 0) { Users user = db.Users.FirstOrDefault(m => m.Id == leader10.UserId) ?? new Users(); Leader10 = "金额:" + leader10.ChangeAmount + ",创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",发奖时间:" + leader10.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); // Leader10 = "金额:" + leader10.ChangeAmount + ",创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile; } var yyzx5 = db.UserAccountRecord.FirstOrDefault(m => m.QueryCount == pos.Id && m.ChangeType == 121) ?? new UserAccountRecord(); if (yyzx5.Id > 0) { Users user = db.Users.FirstOrDefault(m => m.Id == yyzx5.UserId) ?? new Users(); YYZX5 = "金额:" + yyzx5.ChangeAmount + ",创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",发奖时间:" + yyzx5.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); // YYZX5 = "金额:" + yyzx5.ChangeAmount + ",创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile; } MachineApply apply = db.MachineApply.FirstOrDefault(m => m.SwapSnExpand.Contains(pos.PosSn)) ?? new MachineApply(); Orders applyorder = db.Orders.FirstOrDefault(m => m.Id == apply.QueryCount) ?? new Orders(); MachineChangeDetail change = db.MachineChangeDetail.FirstOrDefault(m => m.OutSnNo == pos.PosSn) ?? new MachineChangeDetail(); string RecycFlag = pos.IsPurchase == 1 ? "已申请循环" : "未申请循环"; string SendStatus = applyorder.SendStatus == 1 ? "已发货" : "未发货"; string ApplyDate = apply.CreateDate == null ? "" : apply.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); string SendDate = applyorder.SendDate == null ? "" : applyorder.SendDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); string CreateDate = pos.CreateDate == null ? "" : pos.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); string TransferTime = pos.TransferTime == null ? "" : pos.TransferTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); string RecycEndDate = pos.RecycEndDate == null ? "" : pos.RecycEndDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); string ActiveTime = reward.CreateDate == null ? "" : reward.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); string ActiveTime6 = lisreward.CreateDate == null ? "" : lisreward.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); string result = ""; result += "机器持有人顶级:创客编号:" + posTopUser.MakerCode + ",姓名:" + posTopUser.RealName + "\n"; result += "\n"; result += "机具SN:" + pos.PosSn + "\n"; string PosSnType = pos.PosSnType == 0 ? "兑换机" : "循环机"; result += "机具类型:" + PosSnType + "\n"; result += "商户编号:" + merInfo + ",商户姓名:" + merName + "\n"; result += "商户型机器/直拓机器:创客编号:" + posSubUser.MakerCode + ",姓名:" + posSubUser.RealName + "\n"; // result += "商户型机器/直拓机器:创客编号:" + posSubUser.MakerCode + ",姓名:" + posSubUser.RealName + ",手机号:" + posSubUser.Mobile + "\n"; if (change.Id > 0) { result += "换机来源机具SN:" + change.BackSnNo + "\n"; } result += "机具所属人:创客编号:" + posUser.MakerCode + ",姓名:" + posUser.RealName + "\n"; // result += "机具所属人:创客编号:" + posUser.MakerCode + ",姓名:" + posUser.RealName + ",手机号:" + posUser.Mobile + "\n"; // result += "机器持有人顶级:创客编号:" + posTopUser.MakerCode + ",姓名:" + posTopUser.RealName + ",手机号:" + posTopUser.Mobile + "\n"; result += "机器所属仓库:仓库编号:" + store.StoreNo + ",仓库名称:" + store.StoreName + "\n"; if (pos.PreUserId > 0) { Users smallStoreUser = db.Users.FirstOrDefault(m => m.Id == pos.PreUserId) ?? new Users(); PreSendStockDetail preSend = db.PreSendStockDetail.FirstOrDefault(m => m.SnId == pos.Id && m.ToUserId == pos.PreUserId && m.Status == 1) ?? new PreSendStockDetail(); string preSendDate = preSend.CreateDate == null ? "" : preSend.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); result += "机具所属小分仓:创客编号:" + smallStoreUser.MakerCode + ",姓名:" + smallStoreUser.RealName + ",预发时间:" + preSendDate + "\n"; // result += "机具所属小分仓:创客编号:" + smallStoreUser.MakerCode + ",姓名:" + smallStoreUser.RealName + ",手机号:" + smallStoreUser.Mobile + ",预发时间:" + preSendDate + "\n"; } else { result += "机具所属小分仓:暂无小分仓\n"; } result += "入库时间:" + CreateDate + "\n"; result += "循环到期时间:" + RecycEndDate + "\n"; result += "划拨时间:" + TransferTime + "\n"; result += "绑定状态:" + bindResult + "(绑定时间:" + bindTime + ")\n"; result += "激活状态:" + activeResult + "(激活时间:" + activeTime + ")\n"; result += "贷记卡(总)交易额:" + tradeAmount + "\n"; result += "是否循环:" + RecycFlag + ",申请循环时间:" + ApplyDate + "\n"; result += "申请循环后的SN:" + applyorder.SnNos + "\n"; result += "是否发货:" + SendStatus + ",发货时间:" + SendDate + "\n"; result += "押金:" + Deposit + "\n"; result += "是否返现:" + DepositGet + ",领取时间:" + ActiveTime + "\n"; result += "返现金额:" + headAmount + " " + " " + footAmount + "\n"; result += "押金返现应返现对象:" + DepositToUser + "\n"; result += "押金返现实际返现对象:" + DepositUser + "\n"; if (pos.BrandId == 6) { result += "立刷10000奖励:" + DepositGet6 + ",领取时间:" + ActiveTime6 + "\n"; result += "立刷10000奖励发放人:" + DepositUser6 + "\n"; } result += "流量费:" + FluxGet6 + "\n"; result += "流量费发放对象:" + FluxUser6 + "\n"; result += "开机奖20:" + OpenUser20 + "\n"; // result += "开机奖10:" + OpenUser10 + "\n"; result += "盟主奖:" + Leader10 + "\n"; result += "运营中心奖:" + YYZX5 + "\n"; return result; } //解析金控日志 // public decimal CheckLog(DateTime startDate, string PosSn) // { // bool op = true; // decimal result = 0; // DateTime today = DateTime.Now; // int i = 0; // while (op) // { // DateTime check = DateTime.Parse(startDate.ToString("yyyy-MM-dd") + " 00:00:00").AddDays(i); // if (check <= today) // { // string source = function.GetWebRequest("http://sp.kexiaoshuang.com/api/test/GetLog?date=" + check.Year + "-" + check.Month + "-" + check.Day); // MatchCollection mc = Regex.Matches(source, "{.*?2022年飞天系列-小宝电签.*?}"); //激活 // foreach (Match sub in mc) // { // string content = sub.Value; // JsonData jsonObj = JsonMapper.ToObject(content); // decimal serviceAmount = decimal.Parse(jsonObj["serviceAmount"].ToString()); // string posSnCheck = jsonObj["posSn"].ToString(); // if (posSnCheck == PosSn && serviceAmount > 0) // { // result = serviceAmount / 100; // op = false; // } // } // } // else // { // op = false; // } // i += 1; // } // return result; // } #endregion #region 生成机具兑换码 public IActionResult MakeCoupons(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string MakeCouponsDo(int Kind, int Number) { DateTime checkTime = DateTime.Parse("1900-01-01"); string checkTimeString = RedisDbconn.Instance.Get("MakerCouponsQueueCheckTime"); if (!string.IsNullOrEmpty(checkTimeString)) { checkTime = DateTime.Parse(checkTimeString); } if (checkTime.AddHours(1) < DateTime.Now) { RedisDbconn.Instance.Set("MakerCouponsQueueCheckTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); RedisDbconn.Instance.AddList("MakerCouponsQueue:" + Kind, Number); return "生成程序已执行"; } return "请稍后再试"; } #endregion #region 导出没有刷满1000的机具 public IActionResult ExportPos(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public JsonResult ExportPosDo() { WebCMSEntities db = new WebCMSEntities(); List poses = db.PosMachinesTwo.Where(m => m.CreditTrade < 1000 && m.BindingState == 1).ToList(); int total = poses.Count; int index = 0; List> list = new List>(); foreach (PosMachinesTwo pos in poses) { index += 1; PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId) ?? new PosMerchantInfo(); Users user = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); Users puser = db.Users.FirstOrDefault(m => m.Id == user.ParentUserId) ?? new Users(); Users ppuser = db.Users.FirstOrDefault(m => m.Id == puser.ParentUserId) ?? new Users(); Dictionary item = new Dictionary(); string TopRealName = ""; string TopMakerCode = ""; string TopMobile = ""; string ParentNav = user.ParentNav; if (!string.IsNullOrEmpty(ParentNav)) { string[] navlist = ParentNav.Trim(',').Replace(",,", ",").Split(','); if (navlist.Length > 1) { int TopId = int.Parse(function.CheckInt(navlist[1])); Users tuser = db.Users.FirstOrDefault(m => m.Id == TopId) ?? new Users(); TopRealName = tuser.RealName; TopMakerCode = tuser.MakerCode; TopMobile = tuser.Mobile; } } item.Add("TopRealName", TopRealName); //顶级姓名 item.Add("TopMakerCode", TopMakerCode); //顶级编号 item.Add("UpUpRealName", ppuser.RealName); //上上级姓名 item.Add("UpRealName", puser.RealName); //上级姓名 item.Add("RealName", user.RealName); //代理姓名 item.Add("MakerCode", user.MakerCode); //代理编号 item.Add("Mobile", user.Mobile); //代理手机号 item.Add("MerchantName", merchant.MerchantName); //客户姓名 item.Add("MerchantMobile", merchant.MerchantMobile); //客户电话 item.Add("OpenTime", pos.BindingTime == null ? "" : pos.BindingTime.Value.ToString("yyyy-MM-dd HH:mm:ss")); //开机日期 item.Add("Sn", pos.PosSn); //SN list.Add(item); RedisDbconn.Instance.Set("ExportPosCheck", index + " / " + total); } db.Dispose(); Dictionary result = new Dictionary(); result.Add("Status", "1"); result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx"); result.Add("Obj", list); Dictionary ReturnFields = new Dictionary(); ReturnFields.Add("TopRealName", "顶级姓名"); //顶级姓名 ReturnFields.Add("TopMakerCode", "顶级编号"); //顶级编号 ReturnFields.Add("UpUpRealName", "上上级姓名"); //上上级姓名 ReturnFields.Add("UpRealName", "上级姓名"); //上级姓名 ReturnFields.Add("RealName", "代理姓名"); //代理姓名 ReturnFields.Add("MakerCode", "代理编号"); //代理编号 ReturnFields.Add("Mobile", "代理手机号"); //代理手机号 ReturnFields.Add("MerchantName", "客户姓名"); //客户姓名 ReturnFields.Add("MerchantMobile", "客户电话"); //客户电话 ReturnFields.Add("OpenTime", "开机日期"); //开机日期 ReturnFields.Add("Sn", "SN"); //SN result.Add("Fields", ReturnFields); RedisDbconn.Instance.Set("ExportPosCheck", "finish"); return Json(result); } public string ExportPosCheck() { string content = RedisDbconn.Instance.Get("ExportPosCheck"); if (content == "finish") { RedisDbconn.Instance.Clear("ExportPosCheck"); } return content; } #endregion #region 更换机具 public IActionResult ChangePos(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string ChangePosDo(string OldSn, string NewSn, string BackStoreNo, string OutStoreNo, string MerNo = "", int IsSend = 0) { if (string.IsNullOrEmpty(OldSn)) { return "请输入原机具SN"; } if (string.IsNullOrEmpty(NewSn)) { return "请输入新机具SN"; } string[] OldSnList = OldSn.Split('\n'); string[] NewSnList = NewSn.Split('\n'); if (OldSnList.Length != NewSnList.Length) { return "原机具SN数量和新机具SN数量不一致"; } WebCMSEntities db = new WebCMSEntities(); PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == OldSn); StoreForCode storeForBack = db.StoreForCode.FirstOrDefault(m => m.Code == BackStoreNo) ?? new StoreForCode(); StoreForCode storeForOut = db.StoreForCode.FirstOrDefault(m => m.Code == OutStoreNo) ?? new StoreForCode(); StoreHouse BackStore = db.StoreHouse.FirstOrDefault(m => m.Id == storeForBack.StoreId) ?? new StoreHouse(); StoreHouse OutStore = db.StoreHouse.FirstOrDefault(m => m.Id == storeForOut.StoreId) ?? new StoreHouse(); string ChangeNo = "BMC" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(3); KqProducts oldPosBrand = new KqProducts(); KqProducts newPosBrand = new KqProducts(); MachineChange add = db.MachineChange.Add(new MachineChange() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, CreateMan = SysUserName + "-" + SysRealName, ChangeNo = ChangeNo, //转换单号 UserId = 0, //创客 ChangeTime = DateTime.Now, //转换时间 BackStoreId = BackStore.Id, //退回仓库 BackStoreName = BackStore.StoreName, //退回仓库名称 Remark = "机具更换", //订单备注 BackStoreUserId = BackStore.UserId, //退回仓库归属人 OutProductType = int.Parse(OutStore.BrandId), //出库产品类型 OutProductName = OutStore.ProductName, //出库产品名称 OutStoreId = OutStore.Id, //出库仓库 OutStoreName = OutStore.StoreName, //出库仓库名称 OutStoreAreas = OutStore.Areas, //出库仓库所在地区 OutStoreAddress = OutStore.Address, //出库仓库地址 OutStoreManager = "", //出库仓库联系人 OutStoreManagerMobile = OutStore.ManageMobile, //出库仓库联系人手机号 }).Entity; db.SaveChanges(); int BackProductType = 0; string BackProductName = ""; string ChangeDeviceName = ""; string ChangeSnExpand = ""; for (int i = 0; i < OldSnList.Length; i++) { string OldSnNum = OldSnList[i]; string NewSnNum = NewSnList[i]; MachineForSnNo oldForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == OldSnNum) ?? new MachineForSnNo(); MachineForSnNo newForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == NewSnNum) ?? new MachineForSnNo(); PosMachinesTwo oldpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == oldForSnNo.SnId); if (oldpos == null) { return "原机具SN不正确"; } // if (oldpos.BindingState != 1) // { // return "原机具未绑定"; // } PosMachinesTwo newpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == newForSnNo.SnId && m.PreUserId == 0);//添加新机是否为预发机判断 if (newpos == null) { return "新机具SN不正确或不满足条件"; } oldPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == oldpos.BrandId) ?? new KqProducts(); newPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == newpos.BrandId) ?? new KqProducts(); PosMerchantInfo merchant = new PosMerchantInfo(); if (!string.IsNullOrEmpty(MerNo)) { merchant = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == MerNo) ?? new PosMerchantInfo(); } else { merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == oldpos.BindMerchantId) ?? new PosMerchantInfo(); } newpos.BindMerchantId = merchant.Id; newpos.BuyUserId = oldpos.BuyUserId; newpos.UserId = oldpos.UserId; newpos.RecycEndDate = oldpos.RecycEndDate; newpos.ScanQrTrade = oldpos.ScanQrTrade; newpos.DebitCardTrade = oldpos.DebitCardTrade; newpos.CreditTrade = oldpos.CreditTrade; newpos.PosSnType = oldpos.PosSnType; newpos.TransferTime = oldpos.TransferTime; newpos.IsPurchase = oldpos.IsPurchase; newpos.BindingState = oldpos.BindingState; newpos.ActivationState = oldpos.ActivationState; newpos.BindingTime = oldpos.BindingTime; newpos.ActivationTime = oldpos.ActivationTime; newpos.IsFirst = oldpos.IsFirst; // bool checkActReward = db.ActiveReward.Any(m => m.KqMerNo == merchant.KqMerNo); // if (!checkActReward) // { newpos.SeoKeyword = oldpos.SeoKeyword; newpos.PrizeParams = oldpos.PrizeParams; newpos.LeaderUserId = oldpos.LeaderUserId; // } // oldpos.BuyUserId = 0; // oldpos.UserId = 0; oldpos.Status = -1; //对应调整客小爽企业版数据 var posInfo = db.BusinessPartnerPos.FirstOrDefault(m => m.PosId == oldpos.Id); if (posInfo != null) { posInfo.PosSn = newpos.PosSn; posInfo.PosId = newpos.Id; db.SaveChanges(); } MachineForMerNo forMerNo = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == merchant.KqMerNo); if (forMerNo != null) { forMerNo.SnId = newpos.Id; } merchant.KqSnNo = NewSn; merchant.ActiveStatus = newpos.ActivationState; merchant.MerStandardDate = newpos.ActivationTime; db.MachineChangeDetail.Add(new MachineChangeDetail() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, CreateMan = SysUserName + "-" + SysRealName, ChangeNo = ChangeNo, //订单号 ChangeId = add.Id, //订单Id BackProductType = oldpos.BrandId, //退回产品类型 BackProductName = oldPosBrand.Name, //退回产品名称 UserId = 0, //创客 BackSnNo = oldpos.PosSn, //设备SN编号 OutProductType = newpos.BrandId, //出库产品类型 OutProductName = newPosBrand.Name, //出库产品名称 OutSnNo = newpos.PosSn, //出库设备SN编号 OutSnType = newpos.PosSnType, //出库SN机具类型 Remark = "机具更换", //备注 BackSnType = oldpos.PosSnType, //退回SN机具类型 }); db.SaveChanges(); BackProductType = oldpos.BrandId; BackProductName = newPosBrand.Name; ChangeDeviceName = oldpos.DeviceName; ChangeSnExpand += oldpos.PosSn + "\n"; PublicFunction.SycnMachineCount(oldpos.BuyUserId, oldpos.BrandId); } add.BackProductType = BackProductType; //退回产品类型 add.BackProductName = BackProductName; //退回产品名称 add.ChangeDeviceName = ChangeDeviceName; //转换机具名称 add.ChangeDeviceNum = OldSnList.Length; //转换机具数量 add.ChangeSnExpand = ChangeSnExpand; //机具SN BackStore.LaveNum += OldSnList.Length; //退回仓库库存 OutStore.LaveNum -= OldSnList.Length; //出货仓库库存 db.SaveChanges(); db.Dispose(); if (IsSend == 1) { RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal() { UserId = pos.BuyUserId, //接收创客 MsgType = 2, Title = "换绑成功通知", //标题 Summary = "您的 " + oldPosBrand.Name + " SN:" + OldSn + "已经成功为客户换绑为" + newPosBrand.Name + "SN:" + NewSn + "请告知客户进行绑定。", CreateDate = DateTime.Now, })); } return "success"; } #endregion #region 坏机换新 public IActionResult ChangeBadPos(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string ChangeBadPosDo(string ChangeType, string MakerCode, string StoreCode, string OldSn, string NewSn, string FromStoreNo, string BackStoreNo, int IsSend = 0) { string[] OldSnList; string[] NewSnList; decimal amount = 0; //创客坏机换新 if (ChangeType == "0") { if (string.IsNullOrEmpty(MakerCode)) { return "请输入创客编号"; } if (string.IsNullOrEmpty(OldSn)) { return "请输入坏机SN"; } if (string.IsNullOrEmpty(NewSn)) { return "请输入新机SN"; } if (string.IsNullOrEmpty(FromStoreNo)) { return "请输入新机发货仓库编号"; } if (string.IsNullOrEmpty(BackStoreNo)) { return "请输入坏机退回仓库编号"; } OldSnList = OldSn.Split('\n'); NewSnList = NewSn.Split('\n'); if (OldSnList.Length != NewSnList.Length) { return "原机具SN数量和新机具SN数量不一致"; } for (int i = 0; i < OldSnList.Length; i++) { string OldSnNum = OldSnList[i]; string NewSnNum = NewSnList[i]; UserForMakerCode userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode(); StoreForCode storeForCodeFrom = db.StoreForCode.FirstOrDefault(m => m.Code == FromStoreNo) ?? new StoreForCode(); if (storeForCodeFrom.StoreId == 0) { return "您输入的新机发货仓库编号不存在"; } StoreForCode storeForCodeBack = db.StoreForCode.FirstOrDefault(m => m.Code == BackStoreNo) ?? new StoreForCode(); if (storeForCodeBack.StoreId == 0) { return "您输入的坏机退回仓库编号不存在"; } MachineForSnNo oldForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == OldSnNum) ?? new MachineForSnNo(); MachineForSnNo newForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == NewSnNum) ?? new MachineForSnNo(); PosMachinesTwo oldpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == oldForSnNo.SnId && m.BindingState == 0 && m.BuyUserId == userForMakerCode.UserId) ?? new PosMachinesTwo(); if (oldpos.Id == 0) { return "您输入的坏机SN不存在或者不在" + MakerCode + "名下"; } PosMachinesTwo newpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == newForSnNo.SnId && m.BindingState == 0 && m.PreUserId == 0) ?? new PosMachinesTwo(); if (newpos.Id == 0) { return "您输入的新机SN不存在或不满足条件"; } StoreHouse storeFrom = db.StoreHouse.FirstOrDefault(m => m.Id == storeForCodeFrom.StoreId); if (Convert.ToInt32(storeFrom.BrandId) != Convert.ToInt32(newpos.BrandId)) { return "您输入的新机发货仓库不符新机机具对应品牌"; } if (newpos.StoreId != storeFrom.Id) { return "您输入的新机SN不在新机发货仓库"; } StoreHouse storeBack = db.StoreHouse.FirstOrDefault(m => m.Id == storeForCodeBack.StoreId); if (Convert.ToInt32(storeBack.BrandId) != Convert.ToInt32(oldpos.BrandId)) { return "您输入的坏机退回仓库不符坏机机具对应品牌"; } if (Convert.ToInt32(storeBack.BrandId) != Convert.ToInt32(storeFrom.BrandId)) { return "您输入的新机发货仓库和坏机退回仓库品牌类型不同"; } var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == oldpos.BrandId) ?? new KqProducts(); if (brandInfo.Name.Contains("大POS")) { amount = 300; } if (brandInfo.Name.Contains("电签")) { amount = 200; } // var storeUserAcount = db.UserAccount.FirstOrDefault(m => m.Id == store.UserId) ?? new UserAccount(); var storeFromUserAcount = db.UserAccount.FirstOrDefault(m => m.Id == storeFrom.UserId) ?? new UserAccount(); var storeBackUserAcount = db.UserAccount.FirstOrDefault(m => m.Id == storeBack.UserId) ?? new UserAccount(); // storeUserAcount.ValidAmount += amount; storeFromUserAcount.ValidAmount += amount; storeBackUserAcount.ValidAmount -= amount; newpos.BuyUserId = oldpos.BuyUserId; newpos.UserId = oldpos.UserId; newpos.RecycEndDate = oldpos.RecycEndDate; newpos.ScanQrTrade = oldpos.ScanQrTrade; newpos.DebitCardTrade = oldpos.DebitCardTrade; newpos.CreditTrade = oldpos.CreditTrade; newpos.PosSnType = oldpos.PosSnType; newpos.TransferTime = oldpos.TransferTime; newpos.IsPurchase = oldpos.IsPurchase; newpos.BindingState = oldpos.BindingState; newpos.ActivationState = oldpos.ActivationState; newpos.BindingTime = oldpos.BindingTime; newpos.ActivationTime = oldpos.ActivationTime; newpos.IsFirst = oldpos.IsFirst; newpos.SeoKeyword = oldpos.SeoKeyword; newpos.PrizeParams = oldpos.PrizeParams; newpos.LeaderUserId = oldpos.LeaderUserId; newpos.BindMerchantId = oldpos.BindMerchantId; newpos.StoreId = oldpos.StoreId; newpos.UserId = oldpos.UserId; newpos.PreUserId = oldpos.PreUserId; oldpos.StoreId = storeBack.Id; oldpos.QueryCount = 0; oldpos.UpdateDate = null; oldpos.ActivityList = null; oldpos.SeoKeyword = null; oldpos.SeoDescription = null; oldpos.OrderId = 0; oldpos.RecycEndDate = null; oldpos.RecycBackCount = 0; oldpos.PrizeParams = null; oldpos.ScanQrTrade = 0; oldpos.BindMerchantId = 0; oldpos.CreditTrade = 0; oldpos.DebitCardTrade = 0; oldpos.IsVip = 0; oldpos.UserNav = null; oldpos.TransferTime = null; oldpos.IsPurchase = 0; oldpos.Detail = null; oldpos.BindingTime = null; oldpos.BindingState = 0; oldpos.ActivationTime = null; oldpos.ActivationState = 0; oldpos.LeaderUserId = 0; oldpos.PreUserId = 0; oldpos.IsFirst = 0; oldpos.DownFeeMan = null; oldpos.DownFeeFlag = 0; oldpos.DownFeeDate = null; oldpos.UpFeeMan = null; oldpos.UpFeeFlag = 0; oldpos.UpFeeDate = null; oldpos.OpReserve1 = 0; oldpos.OpReserve2 = 0; oldpos.OpReserve3 = 0; oldpos.OpId = 0; oldpos.RecycStartDate = null; oldpos.SourcePosSn = null; oldpos.BuyUserId = 0; oldpos.UserId = 0; oldpos.Status = -1; PublicFunction.ClearPosHistory(db, oldpos.PosSn); //清除机具历史记录 db.SaveChanges(); PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == newpos.BindMerchantId); if (merchant != null) { merchant.KqSnNo = newpos.PosSn; merchant.ActiveStatus = newpos.ActivationState; } db.SaveChanges(); BrokenMachineChange add = db.BrokenMachineChange.Add(new BrokenMachineChange() { CreateDate = DateTime.Now, CreateMan = SysUserName + "-" + SysRealName, ChangeNo = "BPC" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(3), //转换单号 OutStoreId = storeFrom.Id, BackStoreId = storeBack.Id, OutProductType = newpos.BrandId, BackProductType = oldpos.BrandId, UserId = userForMakerCode.UserId, //创客 }).Entity; db.SaveChanges(); BrokenMachineChangeDetail adds = db.BrokenMachineChangeDetail.Add(new BrokenMachineChangeDetail() { CreateDate = DateTime.Now, CreateMan = SysUserName + "-" + SysRealName, OutSnNo = OldSnNum, BackSnNo = NewSnNum, ChangeNo = add.ChangeNo, //转换单号 ChangeId = add.Id, //转换记录Id UserId = add.UserId, //创客 }).Entity; db.SaveChanges(); var oldPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == oldpos.BrandId) ?? new KqProducts(); if (IsSend == 1) { RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal() { UserId = userForMakerCode.UserId, //接收创客 MsgType = 2, Title = "坏机换新成功通知", //标题 Summary = "您的坏机 " + oldPosBrand.Name + " SN:" + OldSnNum + "已经成功为您换为" + oldPosBrand.Name + "SN:" + NewSnNum + "。", CreateDate = DateTime.Now, })); } } } //仓库坏机换新 else { if (string.IsNullOrEmpty(StoreCode)) { return "请输入仓库编号"; } if (string.IsNullOrEmpty(OldSn)) { return "请输入坏机SN"; } if (string.IsNullOrEmpty(NewSn)) { return "请输入新机SN"; } if (string.IsNullOrEmpty(FromStoreNo)) { return "请输入新机发货仓库编号"; } if (string.IsNullOrEmpty(BackStoreNo)) { return "请输入坏机退回仓库编号"; } OldSnList = OldSn.Split('\n'); NewSnList = NewSn.Split('\n'); if (OldSnList.Length != NewSnList.Length) { return "原机具SN数量和新机具SN数量不一致"; } for (int i = 0; i < OldSnList.Length; i++) { string OldSnNum = OldSnList[i]; string NewSnNum = NewSnList[i]; StoreHouse store = new StoreHouse(); StoreForCode storeForBadCode = db.StoreForCode.FirstOrDefault(m => m.Code == StoreCode) ?? new StoreForCode(); if (storeForBadCode.StoreId > 0) { store = db.StoreHouse.FirstOrDefault(m => m.Id == storeForBadCode.StoreId); } StoreForCode storeForCodeFrom = db.StoreForCode.FirstOrDefault(m => m.Code == FromStoreNo) ?? new StoreForCode(); if (storeForCodeFrom.StoreId == 0) { return "您输入的新机发货仓库编号不存在"; } StoreForCode storeForCodeBack = db.StoreForCode.FirstOrDefault(m => m.Code == BackStoreNo) ?? new StoreForCode(); if (storeForCodeBack.StoreId == 0) { return "您输入的坏机退回仓库编号不存在"; } MachineForSnNo oldForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == OldSnNum) ?? new MachineForSnNo(); MachineForSnNo newForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == NewSnNum) ?? new MachineForSnNo(); PosMachinesTwo oldpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == oldForSnNo.SnId && m.BindingState == 0 && m.StoreId == storeForBadCode.StoreId) ?? new PosMachinesTwo(); if (oldpos.Id == 0) { return "您输入的坏机SN不存在或者不在仓库" + StoreCode + "中"; } PosMachinesTwo newpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == newForSnNo.SnId && m.BindingState == 0 && m.PreUserId == 0) ?? new PosMachinesTwo(); if (newpos.Id == 0) { return "您输入的新机SN不存在或不满足条件"; } StoreHouse storeFrom = db.StoreHouse.FirstOrDefault(m => m.Id == storeForCodeFrom.StoreId); if (Convert.ToInt32(storeFrom.BrandId) != Convert.ToInt32(oldpos.BrandId)) { return "您输入的新机发货仓库不符新机机具对应品牌"; } if (newpos.StoreId != storeFrom.Id) { return "您输入的新机SN不在新机发货仓库"; } StoreHouse storeBack = db.StoreHouse.FirstOrDefault(m => m.Id == storeForCodeBack.StoreId); if (Convert.ToInt32(storeBack.BrandId) != Convert.ToInt32(oldpos.BrandId)) { return "您输入的坏机退回仓库不符坏机机具对应品牌"; } var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == oldpos.BrandId) ?? new KqProducts(); if (brandInfo.Name.Contains("大POS")) { amount = 300; } if (brandInfo.Name.Contains("电签")) { amount = 200; } var storeUserAcount = db.UserAccount.FirstOrDefault(m => m.Id == store.UserId) ?? new UserAccount(); var storeFromUserAcount = db.UserAccount.FirstOrDefault(m => m.Id == storeFrom.UserId) ?? new UserAccount(); var storeBackUserAcount = db.UserAccount.FirstOrDefault(m => m.Id == storeBack.UserId) ?? new UserAccount(); // storeUserAcount.ValidAmount += amount; storeFromUserAcount.ValidAmount += amount; storeBackUserAcount.ValidAmount -= amount; newpos.StoreId = oldpos.StoreId; newpos.BuyUserId = oldpos.BuyUserId; newpos.UserId = oldpos.UserId; newpos.LeaderUserId = oldpos.LeaderUserId; newpos.PreUserId = oldpos.PreUserId; newpos.IsFirst = oldpos.IsFirst; newpos.TransferTime = oldpos.TransferTime; oldpos.StoreId = storeBack.Id; oldpos.QueryCount = 0; oldpos.UpdateDate = null; oldpos.ActivityList = null; oldpos.SeoKeyword = null; oldpos.SeoDescription = null; oldpos.OrderId = 0; oldpos.RecycEndDate = null; oldpos.RecycBackCount = 0; oldpos.PrizeParams = null; oldpos.ScanQrTrade = 0; oldpos.BindMerchantId = 0; oldpos.CreditTrade = 0; oldpos.DebitCardTrade = 0; oldpos.IsVip = 0; oldpos.UserNav = null; oldpos.TransferTime = null; oldpos.IsPurchase = 0; oldpos.Detail = null; oldpos.BindingTime = null; oldpos.BindingState = 0; oldpos.ActivationTime = null; oldpos.ActivationState = 0; oldpos.LeaderUserId = 0; oldpos.PreUserId = 0; oldpos.IsFirst = 0; oldpos.DownFeeMan = null; oldpos.DownFeeFlag = 0; oldpos.DownFeeDate = null; oldpos.UpFeeMan = null; oldpos.UpFeeFlag = 0; oldpos.UpFeeDate = null; oldpos.OpReserve1 = 0; oldpos.OpReserve2 = 0; oldpos.OpReserve3 = 0; oldpos.OpId = 0; oldpos.RecycStartDate = null; oldpos.SourcePosSn = null; oldpos.BuyUserId = 0; oldpos.UserId = 0; oldpos.Status = -1; PublicFunction.ClearPosHistory(db, oldpos.PosSn); //清除机具历史记录 db.SaveChanges(); BrokenMachineChange add = db.BrokenMachineChange.Add(new BrokenMachineChange() { CreateDate = DateTime.Now, CreateMan = SysUserName + "-" + SysRealName, ChangeNo = "BPC" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(3), //转换单号 OutStoreId = storeFrom.Id, BackStoreId = storeBack.Id, OutProductType = newpos.BrandId, BackProductType = oldpos.BrandId, UserId = store.UserId, //创客 }).Entity; db.SaveChanges(); BrokenMachineChangeDetail adds = db.BrokenMachineChangeDetail.Add(new BrokenMachineChangeDetail() { CreateDate = DateTime.Now, CreateMan = SysUserName + "-" + SysRealName, OutSnNo = OldSnNum, BackSnNo = NewSnNum, ChangeNo = add.ChangeNo, //转换单号 ChangeId = add.Id, //转换记录Id UserId = add.UserId, //创客 }).Entity; db.SaveChanges(); var oldPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == oldpos.BrandId) ?? new KqProducts(); if (IsSend == 1) { RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal() { UserId = store.UserId, //接收创客 MsgType = 2, Title = "坏机换新成功通知", //标题 Summary = "您的坏机 " + oldPosBrand.Name + " SN:" + OldSnNum + "已经成功为您换为" + oldPosBrand.Name + "SN:" + NewSnNum + "。", CreateDate = DateTime.Now, })); } } } // for (int i = 0; i < OldSnList.Length; i++) // { // string OldSnNum = OldSnList[i]; // string NewSnNum = NewSnList[i]; // StoreForCode storeForCode = db.StoreForCode.FirstOrDefault(m => m.Code == BackStoreNo) ?? new StoreForCode(); // MachineForSnNo oldForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == OldSnNum) ?? new MachineForSnNo(); // MachineForSnNo newForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == NewSnNum) ?? new MachineForSnNo(); // StoreHouse oldStore = new StoreHouse(); // PosMachinesTwo oldpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == oldForSnNo.SnId && m.BindingState == 0); // if (storeForCode.StoreId > 0) // { // StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == storeForCode.StoreId); // if (Convert.ToInt32(store.BrandId) != Convert.ToInt32(oldpos.BrandId)) // { // return "您输入的仓库不符机具对应品牌"; // } // oldStore = db.StoreHouse.FirstOrDefault(m => m.Id == oldpos.StoreId); // oldpos.Status = -1; // oldpos.StoreId = store.Id; // } // if (oldpos == null) // { // return "原机具SN不正确或者不符合换机条件"; // } // PosMachinesTwo newpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == newForSnNo.SnId && m.BuyUserId == 0 && m.UserId == 0 && m.BindingState == 0); // if (newpos == null) // { // return "新机具SN不正确或者不为仓库机"; // } // if (oldpos.BrandId != newpos.BrandId) // { // return "新机具和旧机具品牌不相同"; // } // var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == newpos.BrandId) ?? new KqProducts(); // if (brandInfo.Name.Contains("大POS")) // { // amount = 300; // } // if (brandInfo.Name.Contains("电签")) // { // amount = 200; // } // var storehouse = db.StoreHouse.FirstOrDefault(m => m.Id == newpos.StoreId) ?? new StoreHouse(); // storehouse.LaveNum -= 1; // var userAcount = db.UserAccount.FirstOrDefault(m => m.Id == storehouse.UserId) ?? new UserAccount(); // if (oldpos.StoreId != newpos.StoreId) // { // userAcount.ValidAmount += amount; // newpos.StoreId = oldpos.StoreId; // newpos.BuyUserId = oldpos.BuyUserId; // newpos.UserId = oldpos.UserId; // newpos.LeaderUserId = oldpos.LeaderUserId; // newpos.PreUserId = oldpos.PreUserId; // newpos.IsFirst = oldpos.IsFirst; // newpos.TransferTime = oldpos.TransferTime; // } // else // { // newpos.BuyUserId = oldpos.BuyUserId; // newpos.UserId = oldpos.UserId; // newpos.LeaderUserId = oldpos.LeaderUserId; // newpos.PreUserId = oldpos.PreUserId; // newpos.IsFirst = oldpos.IsFirst; // newpos.TransferTime = oldpos.TransferTime; // } // db.SaveChanges(); // var oldPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == oldpos.BrandId) ?? new KqProducts(); // var newPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == newpos.BrandId) ?? new KqProducts(); // var UserId = 0; // if (oldpos.BuyUserId == 0) // { // UserId = oldStore.UserId; // } // else // { // UserId = oldpos.BuyUserId; // } // BrokenMachineChange add = db.BrokenMachineChange.Add(new BrokenMachineChange() // { // CreateDate = DateTime.Now, // CreateMan = SysUserName + "-" + SysRealName, // ChangeNo = "BPC" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(3), //转换单号 // UserId = UserId, //创客 // }).Entity; // db.SaveChanges(); // BrokenMachineChangeDetail adds = db.BrokenMachineChangeDetail.Add(new BrokenMachineChangeDetail() // { // CreateDate = DateTime.Now, // CreateMan = SysUserName + "-" + SysRealName, // OutSnNo = OldSnNum, // BackSnNo = NewSnNum, // ChangeNo = add.ChangeNo, //转换单号 // ChangeId = add.Id, //转换记录Id // UserId = add.UserId, //创客 // }).Entity; // db.SaveChanges(); // if (IsSend == 1) // { // RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal() // { // UserId = UserId, //接收创客 // MsgType = 2, // Title = "坏机换新成功通知", //标题 // Summary = "您的坏机 " + oldPosBrand.Name + " SN:" + OldSn + "已经成功为您换为" + newPosBrand.Name + "SN:" + NewSn + "。", // CreateDate = DateTime.Now, // })); // } // } return "success"; } #endregion #region 机具解绑 public IActionResult Unbind(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string UnbindDo(string PosSn, string MakerCode, string MerNo, int IsSend = 0) { if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN"; } if (string.IsNullOrEmpty(MakerCode)) { return "请输入创客编号"; } MachineForSnNo forSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn); if (forSnNo == null) { return "机具SN不存在"; } PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == forSnNo.SnId); if (pos == null) { return "机具SN不存在"; } if (string.IsNullOrEmpty(MerNo) && pos.BrandId != 1 && pos.BrandId != 3) { return "请输入商户编号"; } UserForMakerCode forMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode); if (forMakerCode == null) { return "创客不存在"; } MachineForMerNo forMerNo = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == MerNo); if (forMerNo == null && pos.BrandId != 1 && pos.BrandId != 3) { return "商户编号不存在"; } if (pos.BuyUserId != forMakerCode.UserId) { return "机具SN和创客不匹配"; } if (pos.ActivationState == 1) { return "机具已激活,不能解绑"; } if (pos.BuyUserId == 0) { return "机具是仓库机,不支持解绑"; } if (pos.BindingState == 0) { return "机具未绑定,不支持解绑"; } if (pos.BindingTime < DateTime.Now.AddDays(-30) && SysUserName != "admin") { return "机具绑定已超过30天,不支持解绑"; } if (pos.CreditTrade > 0 || !string.IsNullOrEmpty(pos.SeoKeyword)) { return "该机具已交易,无法解绑"; } if (forMerNo != null) { PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if (merchant != null) { //机具解绑删除客小爽企业版对应数据 var merInfo = db.BusinessPartnerMerchant.FirstOrDefault(m => m.MerchantId == merchant.Id); if (merInfo != null) { db.BusinessPartnerMerchant.Remove(merInfo); } var posInfo = db.BusinessPartnerPos.FirstOrDefault(m => m.PosId == pos.Id); if (posInfo != null) { db.BusinessPartnerPos.Remove(posInfo); } db.PosMerchantInfo.Remove(merchant); } db.MachineForMerNo.Remove(forMerNo); db.SaveChanges(); } db.MachineUnBind.Add(new MachineUnBind() { CreateDate = DateTime.Now, SeoTitle = SysUserName + "-" + SysRealName, MerchantId = pos.BindMerchantId, AuditDate = DateTime.Now, AuditDesc = "平台操作解绑", AuditStatus = 1, SnNo = pos.PosSn, BrandId = pos.BrandId, UserId = pos.BuyUserId, ApplyNo = "U" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8), }); pos.BindMerchantId = 0; pos.BindingState = 0; pos.BindingTime = DateTime.Parse("1900-01-01"); pos.UserId = pos.BuyUserId; string IdBrand = pos.BuyUserId + "_" + pos.BrandId; db.SaveChanges(); PublicFunction.SycnMachineCount(pos.BuyUserId, pos.BrandId); if (IsSend == 1) { RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal() { UserId = pos.BuyUserId, //接收创客 MsgType = 2, Title = "解绑成功通知", //标题 Summary = "" + PosSn + "机具已成功解绑,当前机具如需绑定同一客户请再2个工作日后再进行绑定,直接绑定会导致数控异常,相关损失由您本人承担。", CreateDate = DateTime.Now, })); } return "success"; } #endregion #region 通过券码修改盟主标记 public IActionResult ChangeSignQuan(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string ChangeSignQuanDo(string Coupons, string MakerCode) { if (string.IsNullOrEmpty(Coupons)) { return "请输入机具券码,多个券码用回车分隔"; } if (string.IsNullOrEmpty(MakerCode)) { return "请输入创客编号"; } UserForMakerCode forMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode); if (forMakerCode == null) { return "创客不存在"; } string[] SnList = Coupons.Split('\n'); foreach (var item in SnList) { var coupos = db.PosCoupons.FirstOrDefault(m => m.ExchangeCode == item && m.LeaderUserId == 0); if (coupos == null) { return "机具券不存在"; } else { coupos.LeaderUserId = forMakerCode.UserId; } } db.SaveChanges(); return "success"; } #endregion #region 通过机具SN修改盟主标记 public IActionResult ChangeSignSn(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string ChangeSignSnDo(string PosSn, string MakerCode) { if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN,多个SN用回车分隔"; } if (string.IsNullOrEmpty(MakerCode)) { return "请输入创客编号"; } UserForMakerCode forMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode); if (forMakerCode == null) { return "创客不存在"; } string[] SnList = PosSn.Split('\n'); foreach (var item in SnList) { var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == item && m.LeaderUserId == 0); if (pos == null) { return "该机具不存在"; } else { pos.LeaderUserId = forMakerCode.UserId; } } db.SaveChanges(); return "success"; } #endregion #region 机具循环列表 /// /// 根据条件查询机具循环列表 /// /// public IActionResult Loop(string right, string SwapSnExpand, string SnNos) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; ViewBag.SwapSnExpand = SwapSnExpand; ViewBag.SnNos = SnNos; return View(); } #endregion #region 根据条件查询机具循环列表 /// /// 机具循环列表 /// /// public IActionResult LoopData(string SwapSnExpand, string SnNos, int page = 1, int limit = 30) { Dictionary Fields = new Dictionary(); Fields.Add("SwapSnExpand", "1"); //申请机具SN Fields.Add("SnNos", "1"); //发货机具SN List> dataList = new List>(); if (!string.IsNullOrEmpty(SwapSnExpand)) { var apply = db.MachineApply.FirstOrDefault(m => m.Status > -1 && m.SwapSnExpand.Contains(SwapSnExpand)) ?? new MachineApply(); var order = db.Orders.FirstOrDefault(m => m.Id == apply.QueryCount) ?? new Orders(); var user = db.Users.FirstOrDefault(m => m.Id == apply.UserId) ?? new Users(); string[] SnNoList = function.CheckNull(apply.SwapSnExpand).TrimEnd('\n').Split('\n'); string[] OrderSnNo = function.CheckNull(order.SnNos).Split(','); for (int i = 0; i < SnNoList.Length; i++) { Dictionary data = new Dictionary(); data["ApplyNo"] = apply.ApplyNo; data["OrderNo"] = order.OrderNo; data["MakerCode"] = user.MakerCode; data["RealName"] = user.RealName; if (SnNoList.Length > i) { string SourceSn = SnNoList[i].Split(':')[0]; data["ComeSn"] = SnNoList[i]; data["ComeSnParam"] = SourceSn; MachineForSnNo machineFor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SourceSn) ?? new MachineForSnNo(); PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineFor.SnId) ?? new PosMachinesTwo(); if (pos.LeaderUserId > 0) { Users leader = db.Users.FirstOrDefault(m => m.Id == pos.LeaderUserId) ?? new Users(); data["ComeSnMakerCode"] = leader.MakerCode; data["ComeSnRealName"] = leader.RealName; } } if (OrderSnNo.Length > i) { string SendSn = OrderSnNo[i]; data["SendSn"] = OrderSnNo[i]; MachineForSnNo machineFor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SendSn) ?? new MachineForSnNo(); PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineFor.SnId) ?? new PosMachinesTwo(); if (pos.LeaderUserId > 0) { Users leader = db.Users.FirstOrDefault(m => m.Id == pos.LeaderUserId) ?? new Users(); data["SendSnMakerCode"] = leader.MakerCode; data["SendSnRealName"] = leader.RealName; } } data["CreateDate"] = apply.CreateDate == null ? "" : apply.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); data["Status"] = order.Status == 2 ? "已发货" : "未发货"; dataList.Add(data); } } else if (!string.IsNullOrEmpty(SnNos)) { var order = db.Orders.FirstOrDefault(m => m.Status > -1 && m.SnNos.Contains(SnNos)) ?? new Orders(); var apply = db.MachineApply.FirstOrDefault(m => m.Id == order.Sort) ?? new MachineApply(); var user = db.Users.FirstOrDefault(m => m.Id == apply.UserId) ?? new Users(); string[] SnNoList = function.CheckNull(apply.SwapSnExpand).TrimEnd('\n').Split('\n'); string[] OrderSnNo = function.CheckNull(order.SnNos).Split(','); for (int i = 0; i < OrderSnNo.Length; i++) { Dictionary data = new Dictionary(); data["ApplyNo"] = apply.ApplyNo; data["OrderNo"] = order.OrderNo; data["MakerCode"] = user.MakerCode; data["RealName"] = user.RealName; if (SnNoList.Length > i) { string SourceSn = SnNoList[i].Split(':')[0]; data["ComeSn"] = SnNoList[i]; data["ComeSnParam"] = SourceSn; MachineForSnNo machineFor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SourceSn) ?? new MachineForSnNo(); PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineFor.SnId) ?? new PosMachinesTwo(); if (pos.LeaderUserId > 0) { Users leader = db.Users.FirstOrDefault(m => m.Id == pos.LeaderUserId) ?? new Users(); data["ComeSnMakerCode"] = leader.MakerCode; data["ComeSnRealName"] = leader.RealName; } } if (OrderSnNo.Length > i) { string SendSn = OrderSnNo[i]; data["SendSn"] = OrderSnNo[i]; MachineForSnNo machineFor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SendSn) ?? new MachineForSnNo(); PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineFor.SnId) ?? new PosMachinesTwo(); if (pos.LeaderUserId > 0) { Users leader = db.Users.FirstOrDefault(m => m.Id == pos.LeaderUserId) ?? new Users(); data["SendSnMakerCode"] = leader.MakerCode; data["SendSnRealName"] = leader.RealName; } } data["CreateDate"] = apply.CreateDate == null ? "" : apply.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); data["Status"] = order.Status == 2 ? "已发货" : "未发货"; dataList.Add(data); } } Dictionary obj = new Dictionary(); obj.Add("code", 0); obj.Add("msg", ""); obj.Add("count", dataList.Count); obj.Add("data", dataList); return Json(obj); } #endregion #region 查询机具循环 /// /// 根据条件查询机具来源机具和券码 /// /// public IActionResult SourceLoop(string right, string SnNos) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; ViewBag.SnNos = SnNos; return View(); } #endregion #region 根据条件查询机具来源机具和券码 /// /// 机具循环列表 /// /// public string SourceLoopData(string SnNo, int page = 1, int limit = 30) { var result = ""; var machineForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo(); var pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId) ?? new PosMachinesTwo(); if (pos.Id == 0) { return "机具:" + SnNo + "不存在"; } else { var stattime = pos.RecycStartDate == null ? "" : pos.RecycStartDate.Value.ToString("yyyy-MM-dd hh:mm:ss"); var endtime = pos.RecycEndDate == null ? "" : pos.RecycEndDate.Value.ToString("yyyy-MM-dd hh:mm:ss"); result += "循环开始时间:" + stattime + "\n"; result += "循环结束时间:" + endtime + "\n"; result += "来源机具/券:" + pos.SourcePosSn + "\n"; } return result; } #endregion #region 查询创客直推奖 public IActionResult Prize100(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public Dictionary Prize100Do(string MakerCode) { Dictionary dic = new Dictionary(); string result = ""; UserForMakerCode forMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode); if (forMakerCode == null) { result += "创客编号不存在\n"; dic.Add("code", "1"); dic.Add("result", result); return dic; } int OrderCount = db.Orders.Count(m => m.UserId == forMakerCode.UserId && m.PayStatus == 1 && m.TotalPrice == 600); if (OrderCount == 0) { result += "该创客未下单\n"; dic.Add("code", "1"); dic.Add("result", result); return dic; } if (OrderCount > 1) { result += "该创客已不是首笔下单\n"; dic.Add("code", "1"); dic.Add("result", result); return dic; } Orders order = db.Orders.FirstOrDefault(m => m.UserId == forMakerCode.UserId && m.PayStatus == 1 && m.TotalPrice == 600) ?? new Orders(); if (order.PayStatus < 1) { result += "未付款\n"; dic.Add("code", "1"); dic.Add("result", result); return dic; } Users user = db.Users.FirstOrDefault(m => m.Id == order.UserId) ?? new Users(); Users puser = db.Users.FirstOrDefault(m => m.Id == user.ParentUserId) ?? new Users(); result += "订单号:" + order.OrderNo + "\n"; result += "下单创客\n创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile + "\n"; result += "上级创客\n创客编号:" + puser.MakerCode + ",姓名:" + puser.RealName + ",手机号:" + puser.Mobile + "\n"; int machineCount = db.PosMachinesTwo.Count(m => m.UserId == puser.Id && m.PosSnType == 0); //判断是否拥有3台兑换机 int ActiveCount = db.PosMachinesTwo.Count(m => m.UserId == puser.Id && m.ActivationState == 1); //判断是否拥有3台激活机(不限购买或赠送) if (machineCount + ActiveCount >= 3) { string IsGet = "未发放"; int ToUserId = 0; UserAccountRecord item = db.UserAccountRecord.FirstOrDefault(m => m.QueryCount == order.Id && m.ChangeType == 112); if (item == null) { DateTime start = order.PayDate.Value.AddMinutes(-2); DateTime end = order.PayDate.Value.AddMinutes(2); item = db.UserAccountRecord.FirstOrDefault(m => m.UserId == puser.Id && m.ChangeType == 112 && m.ChangeAmount == 100 && m.CreateDate >= start && m.CreateDate <= end); } if (item != null) { IsGet = "已发放(发放时间:" + item.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") + ")"; ToUserId = item.UserId; dic.Add("code", "1"); } else { dic.Add("id", order.Id.ToString()); dic.Add("code", "0"); } Users touser = db.Users.FirstOrDefault(m => m.Id == ToUserId) ?? new Users(); result += "是否发放:" + IsGet + "\n"; result += "应该发放对象\n创客编号:" + puser.MakerCode + ",姓名:" + puser.RealName + ",手机号:" + puser.Mobile + "\n"; result += "实际发放对象\n创客编号:" + touser.MakerCode + ",姓名:" + touser.RealName + ",手机号:" + touser.Mobile + "\n"; } else { result += "上级创客未满足条件\n兑换机:" + machineCount + "台,激活机:" + ActiveCount + "台\n"; dic.Add("code", "1"); } dic.Add("result", result); return dic; } public string AddPrize100(int Id) { Orders order = db.Orders.FirstOrDefault(m => m.Id == Id); if (order != null) { //机具券逻辑 OrderProduct pro = db.OrderProduct.FirstOrDefault(m => m.OrderId == Id); if (pro != null) { //推荐下单奖励 if (pro.ProductId == 10 || pro.ProductId == 11) { int OrderId = order.Id; bool checkPrize = db.UserAccountRecord.Any(m => m.QueryCount == OrderId && m.ChangeType == 112); if (!checkPrize) { Users user = db.Users.FirstOrDefault(m => m.Id == order.UserId); if (user != null) { bool directPrize = false; //直推奖标记 int ParentUserId = user.ParentUserId; // List proids = new List(); // proids.Add(10); // proids.Add(11); while (ParentUserId > 0) { Users puser = db.Users.FirstOrDefault(m => m.Id == ParentUserId) ?? new Users(); int machineCount = db.PosMachinesTwo.Count(m => m.UserId == ParentUserId && m.PosSnType == 0); //判断是否拥有3台兑换机 int ActiveCount = db.PosMachinesTwo.Count(m => m.UserId == ParentUserId && m.ActivationState == 1); //判断是否拥有3台激活机(不限购买或赠送) int couponCount = db.PosCoupons.Count(m => m.UserId == ParentUserId && m.IsUse == 0); //判断是否拥有3张券 if ((machineCount + ActiveCount + couponCount >= 3 || puser.LeaderLevel > 0) && !directPrize) { DirectPrize(db, order.Id, ParentUserId, pro.ProductCount); directPrize = true; db.SaveChanges(); return "发放成功"; } ParentUserId = puser.ParentUserId; } } } return "已发放,请勿重复发放"; } } } return "操作失败"; } public void DirectPrize(WebCMSEntities db, int OrderId, int UserId, int Count = 1) { UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = UserId, UserId = UserId, }).Entity; db.SaveChanges(); } decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额 decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额 decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.BalanceAmount += 100 * Count; account.TotalAmount += 100 * Count; decimal AfterTotalAmount = account.TotalAmount; //变更后总金额 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = UserId, //创客 ChangeType = 112, //变动类型 ChangeAmount = 100 * Count, //变更金额 BeforeTotalAmount = BeforeTotalAmount, //变更前总金额 AfterTotalAmount = AfterTotalAmount, //变更后总金额 BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 QueryCount = OrderId, }).Entity; db.SaveChanges(); } #endregion #region 查询机具开机奖 public IActionResult OpenPrize(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public Dictionary OpenPrizeDo(string PosSn) { Dictionary dic = new Dictionary(); string result = ""; PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn); if (pos == null) { result += "机具SN号不存在\n"; dic.Add("code", "1"); dic.Add("result", result); return dic; } if (pos.BindingState == 0) { result += "机具未绑定\n"; dic.Add("code", "1"); dic.Add("result", result); return dic; } if (pos.ActivationState == 0) { result += "机具未激活\n"; dic.Add("code", "1"); dic.Add("result", result); return dic; } PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if (merchant == null) { result += "商户不存在\n"; dic.Add("code", "1"); dic.Add("result", result); return dic; } Users buyuser = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); result += "机具号:" + PosSn + "\n"; result += "机具所属人:\n创客编号:" + buyuser.MakerCode + ",姓名:" + buyuser.RealName + ",手机号:" + buyuser.Mobile + "\n"; result += "商户信息\n商户编号:" + merchant.KqMerNo + ",姓名:" + merchant.MerchantName + ",手机号:" + merchant.MerchantMobile + "\n"; string OpenUser10 = "未领取"; string OpenUser20 = "未领取"; var OpenRewardDetail = db.OpenRewardDetail.Where(m => m.SnNo == pos.PosSn).ToList(); OpenRewardDetail openreward = OpenRewardDetail.FirstOrDefault(m => m.CreditRewardAmount == 20) ?? new OpenRewardDetail(); if (openreward.Id > 0) { Users user = db.Users.FirstOrDefault(m => m.Id == openreward.UserId) ?? new Users(); OpenUser20 = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile; } openreward = OpenRewardDetail.FirstOrDefault(m => m.CreditRewardAmount == 10) ?? new OpenRewardDetail(); if (openreward.Id > 0) { Users user = db.Users.FirstOrDefault(m => m.Id == openreward.UserId) ?? new Users(); OpenUser10 = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile; } result += "开机奖20:" + OpenUser20 + "\n"; // result += "开机奖10:" + OpenUser10 + "\n"; dic.Add("id", pos.Id.ToString()); dic.Add("code", "0"); dic.Add("result", result); return dic; } public string AddOpenPrize(int Id) { PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == Id && m.ActivationState == 1); if (pos == null) { return "机具未激活"; } if (pos.BindingTime <= pos.TransferTime) { return "补录机,不能补发开机奖"; } // if (pos.BindingTime < DateTime.Now.AddDays(-30)) // { // return "绑定已超过30天"; // } decimal ActPrize = decimal.Parse(function.CheckNum(pos.SeoKeyword)); if (ActPrize == 0) { return "机具无押金"; } PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if (merchant == null) { return "商户不存在"; } bool check = db.OpenRewardDetail.Any(m => m.SnNo == pos.PosSn); if (check) { return "开机奖励已发放,请勿重复操作"; } // 从机具所属人上级开始分开机奖励 Users user = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId); if (user != null) { if (!string.IsNullOrEmpty(user.ParentNav)) { decimal Prize = 20; List PrizeFlag = new List(); string[] ParentNavs = user.ParentNav.Trim(',').Replace(",,", ",").Split(','); for (int i = ParentNavs.Length - 1; i >= 0; i--) { int UserId = int.Parse(ParentNavs[i]); Users puser = db.Users.FirstOrDefault(m => m.Id == UserId && m.AuthFlag == 1); if (puser != null && Prize > 0) { int machineCount = db.PosMachinesTwo.Count(m => m.BuyUserId == puser.Id && m.PosSnType == 0); //判断是否拥有3台兑换机 int ActiveCount = db.PosMachinesTwo.Count(m => m.BuyUserId == puser.Id && m.ActivationState == 1); //判断是否拥有3台激活机(不限购买或赠送) int couponCount = db.PosCoupons.Count(m => m.UserId == puser.Id && m.IsUse == 0); //判断是否拥有3张券 if (machineCount + ActiveCount + couponCount >= 3) { int pTopUserId = 0; if (!string.IsNullOrEmpty(puser.ParentNav)) { pTopUserId = int.Parse(puser.ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]); } Users machineUser = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); OpenRewardDetail detail = db.OpenRewardDetail.Add(new OpenRewardDetail() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, TradeMonth = DateTime.Now.ToString("yyyyMM"), //交易月 TradeDate = pos.ActivationTime, //达标日期 UserId = puser.Id, //创客 BrandId = pos.BrandId, //品牌 ProductName = RelationClass.GetKqProductBrandInfo(pos.BrandId), //产品名称 MerchantId = pos.BindMerchantId, //商户 DirectUserId = merchant.UserId, //商户直属人 SnNo = pos.PosSn, //SN号 MerNo = merchant.KqMerNo, //渠道商户号 SnType = pos.PosSnType, //机具类型 StandardDate = pos.ActivationTime, //商户的激活日期 SnStoreId = pos.StoreId, //SN仓库 MerBuddyType = puser.MerchantType, //商户创客类型 RewardType = 1, //奖励类型 1-开机直接奖励,2-开机间接奖励 RewardTips = "开机奖励", //奖励描述 CreditTradeAmt = pos.CreditTrade, //贷记卡交易总金额 DebitTradeAmt = pos.DebitCardTrade, //借记卡交易总金额 CreditRewardAmount = Prize, //贷记卡交易奖励金额 RewardDesc = "开机奖励", //奖励描述 TopUserId = pTopUserId, //顶级创客 SeoTitle = machineUser.RealName, }).Entity; db.OpenReward.Add(new OpenReward() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, TradeMonth = DateTime.Now.ToString("yyyyMM"), //交易月 TradeDate = DateTime.Now, //达标日期 UserId = puser.Id, //创客 BrandId = pos.BrandId, //品牌 RewardType = 2, //奖励类型 CreditTradeAmt = pos.CreditTrade, //贷记卡交易总金额 DebitTradeAmt = pos.DebitCardTrade, //借记卡交易总金额 CreditRewardAmount = Prize, //贷记卡交易奖励金额 RewardDesc = "开机奖励", //奖励描述 TopUserId = pTopUserId, //顶级创客 }); string IdBrand = puser.Id + "_" + pos.BrandId; UserMachineData userData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand); if (userData == null) { userData = db.UserMachineData.Add(new UserMachineData() { IdBrand = IdBrand, }).Entity; db.SaveChanges(); } userData.OpenProfit += Prize; db.SaveChanges(); //账户入库 UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = puser.Id, UserId = puser.Id, }).Entity; db.SaveChanges(); } //收支明细入库 decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额 decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额 decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.BalanceAmount += Prize; account.TotalAmount += Prize; decimal AfterTotalAmount = account.TotalAmount; //变更后总金额 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = puser.Id, //创客 ChangeType = 50, //变动类型 ProductType = pos.BrandId, //产品类型 ChangeAmount = Prize, //变更金额 BeforeTotalAmount = BeforeTotalAmount, //变更前总金额 AfterTotalAmount = AfterTotalAmount, //变更后总金额 BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 }).Entity; db.SaveChanges(); RedisDbconn.Instance.Set("UserAccount:" + puser.Id, account); string dateString = DateTime.Now.ToString("yyyyMMdd"); string monthString = DateTime.Now.ToString("yyyyMM"); // 开机奖励列表 List dates = RedisDbconn.Instance.GetList("OpenRewardDay:" + puser.Id + ":" + pos.BrandId); if (!dates.Contains(dateString)) { RedisDbconn.Instance.AddList("OpenRewardDay:" + puser.Id + ":" + pos.BrandId, dateString); } RedisDbconn.Instance.AddNumber("OpenRewardAmt:" + puser.Id + ":" + pos.BrandId + ":" + dateString, Prize); List months = RedisDbconn.Instance.GetList("OpenRewardMonth:" + puser.Id + ":" + pos.BrandId); if (!months.Contains(monthString)) { RedisDbconn.Instance.AddList("OpenRewardMonth:" + puser.Id + ":" + pos.BrandId, monthString); } RedisDbconn.Instance.AddNumber("OpenRewardAmt:" + puser.Id + ":" + pos.BrandId + ":" + monthString, Prize); // 开机奖励详情 RedisDbconn.Instance.AddList("OpenRewardDetail:" + puser.Id + ":" + pos.BrandId + ":" + dateString, detail); //收支明细 RedisDbconn.Instance.AddList("UserAccountRecord:" + puser.Id + ":1:" + monthString, userAccountRecord); RedisDbconn.Instance.AddNumber("UserAccount:" + puser.Id + ":1:" + monthString, Prize); Prize = 0; PrizeFlag.Add(Prize.ToString("f0")); } } } string result = ""; // if (!PrizeFlag.Contains("20")) // { // result += "20元奖励未发,请检查上级是否满足条件\n"; // } // if (!PrizeFlag.Contains("10")) // { // result += "10元奖励未发,请检查上级是否满足条件\n"; // } if (string.IsNullOrEmpty(result)) { return "发放成功"; } return result; } } db.Dispose(); return "操作失败"; } #endregion #region 查询机具流量费分佣 public IActionResult FluxPrize(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public Dictionary FluxPrizeDo(string PosSn) { Dictionary dic = new Dictionary(); string result = ""; PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn); if (pos == null) { result += "机具SN号不存在\n"; dic.Add("code", "1"); dic.Add("result", result); return dic; } if (pos.BindingState == 0) { result += "机具未绑定\n"; dic.Add("code", "1"); dic.Add("result", result); return dic; } if (pos.ActivationState == 0) { result += "机具未激活\n"; dic.Add("code", "1"); dic.Add("result", result); return dic; } PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if (merchant == null) { result += "商户不存在\n"; dic.Add("code", "1"); dic.Add("result", result); return dic; } Users buyuser = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); result += "机具号:" + PosSn + "\n"; result += "机具所属人:\n创客编号:" + buyuser.MakerCode + ",姓名:" + buyuser.RealName + ",手机号:" + buyuser.Mobile + "\n"; result += "商户信息\n商户编号:" + merchant.KqMerNo + ",姓名:" + merchant.MerchantName + ",手机号:" + merchant.MerchantMobile + "\n"; string FluxGet6 = "未领取"; string FluxUser6 = ""; FluxProfitDetail flux = db.FluxProfitDetail.FirstOrDefault(m => m.SnNo == pos.PosSn) ?? new FluxProfitDetail(); if (flux.Id > 0) { Users user = db.Users.FirstOrDefault(m => m.Id == flux.UserId) ?? new Users(); FluxGet6 = "已领取(金额:" + flux.FluxFeeAmt + ",领取时间:" + flux.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") + ")"; FluxUser6 = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile; } result += "流量费:" + FluxGet6 + "\n"; result += "流量费发放对象:" + FluxUser6 + "\n"; dic.Add("id", pos.Id.ToString()); dic.Add("code", "0"); dic.Add("result", result); return dic; } public string AddFluxPrize(int Id) { PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == Id && m.ActivationState == 1); if (pos == null) { return "机具未激活"; } // if (pos.BindingTime < DateTime.Now.AddDays(-30)) // { // return "绑定已超过30天"; // } decimal ActPrize = decimal.Parse(function.CheckNum(pos.SeoKeyword)); if (ActPrize == 0) { return "机具无押金"; } PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if (merchant == null) { return "商户不存在"; } if (pos.BrandId == 6) { return "立刷不支持流量费分佣"; } if (decimal.Parse(function.CheckNum(pos.SeoKeyword)) <= 0) { return "无押金机,不支持流量费分佣"; } bool check = db.FluxProfitDetail.Any(m => m.MerNo == merchant.KqMerNo); if (check) { return "流量费奖励已发放,请勿重复操作"; } SpModels.TradeFluxRecord trade = spdb.TradeFluxRecord.FirstOrDefault(m => m.TradeSnNo == pos.PosSn); if (trade != null) { try { string OrderNo = trade.TradeSerialNo; //单号 DateTime TradeDate = trade.CreateDate.Value; string TradeMonth = TradeDate.ToString("yyyyMM"); decimal FeeAmount = trade.FeeAmount; //流量费 if (trade.ProductType == "1" || trade.ProductType == "4" || trade.ProductType == "6" || trade.ProductType == "8" || trade.ProductType == "9") { FeeAmount = FeeAmount / 100; } string TradeSnNo = trade.TradeSnNo; //机具SN decimal FluxProfit = 0; if (trade.ProductType == "1" && FeeAmount == 60) { FluxProfit = 24; } else if (trade.ProductType == "7" && FeeAmount == 46) { FluxProfit = 10; } else if (trade.ProductType != "1" && FeeAmount == 48) { FluxProfit = 12; } if (FluxProfit > 0) { Users user = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); int GetUserId = user.Id; int TopUserId = 0; string ParentNav = user.ParentNav; if (!string.IsNullOrEmpty(ParentNav)) { string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(','); if (ParentNavList.Length > 1) { TopUserId = int.Parse(ParentNavList[1]); } else if (ParentNavList.Length == 1) { TopUserId = int.Parse(ParentNavList[0]); } } FluxProfitSummary fluxProfit = db.FluxProfitSummary.FirstOrDefault(m => m.UserId == GetUserId && m.BrandId == pos.BrandId && m.TradeMonth == TradeMonth); if (fluxProfit == null) { fluxProfit = db.FluxProfitSummary.Add(new FluxProfitSummary() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = GetUserId, //创客 BrandId = pos.BrandId, TopUserId = TopUserId, //顶级创客 TradeMonth = TradeMonth, //交易月 MerUserType = user.MerchantType, //商户创客类型 Remark = "流量卡分佣", //备注 }).Entity; db.SaveChanges(); } fluxProfit.FluxProfitAmt += FluxProfit; //流量分润总金额 db.FluxProfitDetail.Add(new FluxProfitDetail() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, RecordNo = OrderNo, //单号 TradeDate = TradeDate.ToString("yyyyMMdd"), //交易日期 TradeTime = TradeDate.ToString("HHmmss"), //交易时间 TradeMonth = TradeMonth, //交易月 UserId = GetUserId, //创客 MerchantId = pos.BindMerchantId, //商户 MerchantUserId = pos.UserId, //商户直属人 MerNo = merchant.KqMerNo, //渠道商户编号 SnNo = pos.PosSn, //渠道SN号 FluxOrderNo = OrderNo, //流量扣费单号 TradeOrderNo = OrderNo, //交易流水号 TradeAmt = trade.TradeAmount, //商户交易额 FluxFeeAmt = FeeAmount, //流量费 FluxProfitAmt = FluxProfit, //流量分润总金额 PosType = pos.PosSnType.ToString(), //POS类型 Remark = "流量卡分佣", //备注 BrandId = pos.BrandId, //品牌 TopUserId = TopUserId, //顶级创客 MerUserType = user.MerchantType, //商户创客类型 }); string IdBrand = user.Id + "_" + pos.BrandId; UserMachineData userData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand); if (userData == null) { userData = db.UserMachineData.Add(new UserMachineData() { IdBrand = IdBrand, }).Entity; db.SaveChanges(); } userData.FluxProfit += FluxProfit; db.SaveChanges(); UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == GetUserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = GetUserId, UserId = GetUserId, }).Entity; db.SaveChanges(); } decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额 decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额 decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.BalanceAmount += FluxProfit; account.TotalAmount += FluxProfit; decimal AfterTotalAmount = account.TotalAmount; //变更后总金额 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = GetUserId, //创客 ChangeType = 60, //变动类型 ProductType = pos.BrandId, //产品类型 ChangeAmount = FluxProfit, //变更金额 BeforeTotalAmount = BeforeTotalAmount, //变更前总金额 AfterTotalAmount = AfterTotalAmount, //变更后总金额 BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 }).Entity; db.SaveChanges(); spdb.Dispose(); db.Dispose(); return "发放成功"; } } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + "\n$" + trade.Id + "$\n" + ex.ToString(), "流量卡分佣异常"); } } spdb.Dispose(); db.Dispose(); return "操作失败"; } #endregion #region 设置立刷费率 public IActionResult LisFee(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string LisFeeDo(string PosSns, decimal Fee, string Kind, string Fix) { if (string.IsNullOrEmpty(PosSns)) { return "请输入机具号"; } string result = SysUserName + "设置\n"; string[] PosSnList = PosSns.Split('\n'); int total = PosSnList.Length; int index = 0; foreach (string SubPosSn in PosSnList) { index += 1; string PosSn = SubPosSn.Replace("\r", ""); result += PosSn + ":" + Fee + "\n"; if (Kind == "M5") { result += SetLiSFee(PosSn, Fee) + "\n"; } else if (Kind == "N1") { result += SetLiSDeposit(PosSn, (int)Fee); } RedisDbconn.Instance.Set("LisFeeProcess:" + SysId, index + " / " + total); } result += "\n\n"; function.WriteLog(result, "设置立刷费率"); return result; } public string LisFeeProcess() { return RedisDbconn.Instance.Get("LisFeeProcess:" + SysId); } #region 立刷 string LiSAgentId = "50814834"; string LiSPrivateKey = "MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDTdeLXqQmfVJM/ATVnq+TdhgpKKPp3hXcuY2s9qrN1Uws7I7jqnq/gfoBHBWBu/PnQp/z65okBoz4PEpWzJYZDF4csgh3E45He46ialNzUlOPWv6yLzgQPHuneq2pXOb7dbN4kZx+g3nEbBjH+/P9xp+lU3HCwjNxIFSr3EyBAQf2HgvNqh70u9T13fGVx3Jtd2xbIKYhvGNPH9ZCGiZNiCy+m+F+TKywgKK/xify1KQgR6otVUOVIGYvPYlXAgLJM2/V54166KX1UUFMsKRj4Kt2j4GqoHzDfRk9ibYJ/8iSDGX4+WH5+8mq/raqA77VcAD+bMrt3Bm59XmaWtjZwDY1zh5sP5jEaxu4lde2xZD80kQ6p1ZydpqnjmWm6NKXSz8j85gRkTQqNALKNANnJb6f1Yy30WirnrhMkqU2dqBzzXxtk3k/2zv9BENjYs1igrRYpwX3QRx87aTOrIk/PO6cxMaWl249LPigah0OqVyIg5yOvtnUCdU12OqaVELIw5GnZ7rTRn3tAsJ+u1om+3XktbN3GUEpw5RWAT3UAsAU7Vxt9xPCss+JXF+ogXYgo9QpEjanXOfLo5KPv2CkBuzy87d85OId71gXpYcbp0zbKz5eXKZanVP9pwn43jqiPkqtam8N1TLCCmZ4t2cd+gpW2CX/+W7bmc25HJtRPuwIDAQABAoICAE7B9GfwTGYsYN8xewuOySH8n255jrffXMFJRBLmtgo3kNJI/sFbsxPA6dQJ253a2MxvFNj57gNPInkIqfrcOgJZC/52w9GmFJlYX16bnRgMEEPWhdRYOcjL8bz+SRANsNnVh3M1eWE4GBZBm3NmFVnmeRAjPlFzVUP/pk35sKReL6g+DJ0by0lnC6qqCTp8ON2fEQAh/++o5o/uFRMWwG7ezbO5hBdTGA8uOEGU7CspChlqKtTu2UaeRSVLcbbN+BqKPgZUud5KP6Scei3TbLpZdM1pczAE1fYCwORe9yDiNdkiMJPV798mOL4FV6DIJtsKOKZ8Ibg2DAbjlwABA4rQsgBUAA4Nj+skqLE7gGnJViHzKw87zve+v3CV9NEldHV7g2a78yKye489vlmmxcLj+Ln5O/Y3OQnDwsO8mVua5Ddyp26N88oB1wW62VLUn68ePclDd3Bdub/ayiBqFOqA0cTlqI5Dvz0rqrK9dkq4Ij295EK3OfYHCjuoHN+mJP0K0+o+5ItPXu7KWRz/Bf+KPneAAgvTRaDMww+HpfbcM6sxfiZqVE0yGux39i6wjEOCcIbfO8O7wgCEk4GE/98Z6/+lp1NEaQLHcu24FlUeCgThTVaJsmcY9aHB+jFn11yBiJ6+N+RYONWto0xLDyt71qM5KXEEngYambCK8D0JAoIBAQD5tYwpTNfcessxPcYAXkdJWNAP3/8kwz97rFi9gZYsxhZJ/JCU8TUCYlpJDf91mCe0i7uayGb3FbtzoWEwHxKL4DdlL47ZaaGA2dIVNMkxksXDehEE6/bVRAcFH1fT9mZr7uB2uX1YjesFRKEEd3UXpfKSPwtm3QUQz7P7WxzL0CWpfC11vAK2biCG72inE3MelCw/z1Y7M7oo2fyflObMPKkqyuy5NGtZ5t9xpMvLaZrOzJkYbwPaIqxIvISg9rxilZhjMhIFHOW8xM0lVHMEkk2NrwwsMihxFmDaUohZf0GiyYzNEEVBmVEhAZSOV5d1JlWYQStyvDas195/IHjNAoIBAQDYyakyJbbEhgcLSrmXKtJY584y6SYFE1mOZKKkON2EfDpAlwFmJYV26dWiPb77mUsf1HUU/aIT6sfZsrh6axvs0rqqp5ltIr6AzXnJce590EMJnASWLTAdhYXK6e5Y1W8AhylP4LzZk/dy4LOaF09pMi3ugogFFJAWV8j/cv2niUsCXg/I6cQz/Co6cwVhBzOnAMIjdvZbJ2ONJ1Jy/4yS17DBFRyHxMbGVPckXEVodjZ73TAfUQIM83Z8YILxyym2d2f7lvuCyT+ZjmpEJQztdxPO8qT9MaROs4c/qVjJZndoTZ3z4i2eke9Bf3Qcd6Bfy6jPq/r73hl0w0kBo4qnAoIBAQCC8fgZJEnCPcZWAR3WzZm2VdNtr7n9TkH5GazDW7QjsJC5pa8v27k/kdHko2mGAg84N1pe1Z5hDc1p2oO7l1/DaAXEkwbm7eSaTB9FrZOf4mbAlj9chFzBA1ZnEkOdTIXzLaYZvDWF/Y30CkQhsn79srEcjeDtxRNF+JVaRzI3kuRdF1hDeB84CVIXUG5hxupEa9E0eQawLvT9PSqjiJLrIRhY72bpzBpLX61my9NuzOc4cMQLsxOjDTGpRuqJ+jlZvTbXNceLVNcIgW9OlxVlnU778IKCnp7khqatdkA4JmqF8gla86BNwRdxJoH/juFGtp6GJA6jsR0+0EjGA4I1AoIBAGl2ITNeGX2dXgvmPEcH8/CARFWMCozpjuWwm1acu1baQFRvoaSZmEXzF5SnySMIvf0sFBE0GgbqbnK/ePNE6/7XvSuMAR2Qi3CJhTe0jzrxd8tS9QBB12hlLmM6TlM08Z0mI7jSMcz/KJ/gJD9QG7enS6T+J0GhcT8NUaDDxhYcujram384CdToVXq9vd4n7L7PpaIvG0XY8ZsXiAqduzssZrZnmMuLtM+DQf+US8e3ymWTgveZJxA52GhFYy5RkWdMy28fUheb467GE3g3NgTHqwFAFXd/ENmgiKk1rxW7HVfGepLMczjy8ZvBbzDyGTjBEMyGc8DXmTauUfPUJX0CggEBAKEWyNHhEBcEfW6ppPYsaKTlIquA2Chr15KsZcSFOMIcsF/6D7TDZg2NPDYFmlALF/cdqDjRIAP/v5IMRiu3UtHyfDbRyEHx0prvucFMY0HyX9VOJnticwTb39awHi/uFJLs7txERw89eJFcLaxRRRRSpPq3PCalGFpC2i8HXsPnv3gyt+bfE92h6E2YTyP41NYmcuuXkyWM83s11YSC9ZgeilbJuvdajePHrtIAxy8cny+yTBcbnJnWw1yHtzWCA5FAw5OWSaeotbWaFEAHaOW1VG9e1I54pgmVTc5n+WixsgH1fpiz04ojlWRWRyP7hqS+GbAyGgg00KyErRrPcwc="; string LiSReqUrl = "https://openapi.jlpay.com/access/charge/"; //请求url public string LiSSign(string data) { var rsa = RSA.Create(); var key = Convert.FromBase64String(LiSPrivateKey); var content = Encoding.UTF8.GetBytes(data); rsa.ImportPkcs8PrivateKey(key, out _); var result = rsa.SignData(content, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); return Convert.ToBase64String(result); } // 设置费率 public string SetLiSFee(string sn, decimal serviceFee) { Dictionary dic = new Dictionary(); dic.Add("agentId", LiSAgentId); dic.Add("deviceSn", sn); List> feeList = new List>(); Dictionary item = new Dictionary(); item.Add("feeCalcType", "M5"); item.Add("fixed", "0"); item.Add("rate", serviceFee); feeList.Add(item); dic.Add("feeList", feeList); dic.Add("signMethod", "02"); string content = LiSAgentId + sn + "M50" + serviceFee + "02"; string signstr = LiSSign(content); dic.Add("signData", signstr); string req = Newtonsoft.Json.JsonConvert.SerializeObject(dic); string result = function.PostWebRequest(LiSReqUrl + "FEE003", req, new Dictionary(), "application/json"); return result; } // 设置押金 public string SetLiSDeposit(string sn, int serviceFee) { serviceFee = serviceFee * 100; Dictionary dic = new Dictionary(); dic.Add("agentId", LiSAgentId); dic.Add("deviceSn", sn); List> feeList = new List>(); Dictionary item = new Dictionary(); item.Add("feeCalcType", "N1"); item.Add("fixed", "1"); item.Add("rate", serviceFee); feeList.Add(item); dic.Add("feeList", feeList); dic.Add("signMethod", "02"); string content = LiSAgentId + sn + "N11" + serviceFee + "02"; string signstr = LiSSign(content); dic.Add("signData", signstr); string req = Newtonsoft.Json.JsonConvert.SerializeObject(dic); string result = function.PostWebRequest(LiSReqUrl + "FEE003", req, new Dictionary(), "application/json"); return result; } #endregion #endregion #region 查询商户型创客设置信息 public IActionResult SeeMerchantType(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string SeeMerchantTypeDo(string PosSn) { if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN或者创客编号"; } SetMerchantTypeRecord pos = new SetMerchantTypeRecord(); if (PosSn.StartsWith("K")) { UserForMakerCode userfor = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == PosSn) ?? new UserForMakerCode(); bool check = db.SetMerchantTypeRecord.Any(m => m.ToUserId == userfor.UserId); if (check) { pos = db.SetMerchantTypeRecord.Where(m => m.ToUserId == userfor.UserId).OrderByDescending(m => m.Id).FirstOrDefault() ?? new SetMerchantTypeRecord(); } } else { bool check = db.SetMerchantTypeRecord.Any(m => m.PosSn == PosSn); if (check) { pos = db.SetMerchantTypeRecord.Where(m => m.PosSn == PosSn).OrderByDescending(m => m.Id).FirstOrDefault() ?? new SetMerchantTypeRecord(); } } if (pos.Id == 0) { return "查无信息"; } Users setUser = db.Users.FirstOrDefault(m => m.Id == pos.FromUserId) ?? new Users(); Users toUser = db.Users.FirstOrDefault(m => m.Id == pos.ToUserId) ?? new Users(); string CreateDate = pos.CreateDate == null ? "" : pos.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); string bindTime = pos.BindDate == null ? "" : pos.BindDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); string activeTime = pos.ActDate == null ? "" : pos.ActDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); string bindResult = pos.BindStatus == 1 ? "已绑定" : "未绑定"; string activeResult = pos.ActStatus == 1 ? "已激活" : "未激活"; string RecycFlag = pos.IsRecyc == 1 ? "已循环" : "未循环"; string result = ""; result += "机具SN:" + pos.PosSn + "\n"; result += "操作人:创客编号:" + setUser.MakerCode + ",姓名:" + setUser.RealName + ",手机号:" + setUser.Mobile + "\n"; result += "操作对象:创客编号:" + toUser.MakerCode + ",姓名:" + toUser.RealName + ",手机号:" + toUser.Mobile + "\n"; result += "商户编号:" + pos.MerNo + "\n"; result += "操作时间:" + pos.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") + "\n"; result += "绑定状态:" + bindResult + "(绑定时间:" + bindTime + ")\n"; result += "激活状态:" + activeResult + "(激活时间:" + activeTime + ")\n"; result += "贷记卡交易额:" + pos.CreditAmount + "\n"; result += "是否循环:" + RecycFlag + "\n"; return result; } #endregion #region 三要素验证 public IActionResult CheckThreeElements(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string CheckThreeElementsDo(string bankcard, string idcard, string name) { var host = "https://bankcard3c.shumaidata.com"; var path = "/bankcard3c"; var method = "GET"; var appcode = "8e5704921ca3422f80f0deb935a7ddc6"; if (string.IsNullOrEmpty(bankcard)) { return "结算银行卡号"; } if (string.IsNullOrEmpty(idcard)) { return "身份证号"; } if (string.IsNullOrEmpty(name)) { return "真实姓名"; } String querys = "bankcard=" + bankcard + "&idcard=" + idcard + "&name=" + name; function.WriteLog(DateTime.Now.ToString(), "验证三要素日志"); function.WriteLog(querys, "验证三要素日志"); String bodys = ""; String url = host + path; HttpWebRequest httpRequest = null; HttpWebResponse httpResponse = null; if (0 < querys.Length) { url = url + "?" + querys; } if (host.Contains("https://")) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url)); } else { httpRequest = (HttpWebRequest)WebRequest.Create(url); } httpRequest.Method = method; httpRequest.Headers.Add("Authorization", "APPCODE " + appcode); if (0 < bodys.Length) { byte[] data = Encoding.UTF8.GetBytes(bodys); using (Stream stream = httpRequest.GetRequestStream()) { stream.Write(data, 0, data.Length); } } try { httpResponse = (HttpWebResponse)httpRequest.GetResponse(); } catch (WebException ex) { httpResponse = (HttpWebResponse)ex.Response; } Stream st = httpResponse.GetResponseStream(); StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8")); string result = reader.ReadToEnd(); JsonData jsonObj = JsonMapper.ToObject(result); result = jsonObj["data"]["desc"].ToString(); function.WriteLog(result, "验证三要素日志"); function.WriteLog("\n\n", "验证三要素日志"); return result; } #endregion #region 四要素验证 public IActionResult CheckFourElements(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string CheckFourElementsDo(string bankcard, string idcard, string mobile, string name) { var host = "https://bankcard4c.shumaidata.com"; var path = "/bankcard4c"; var method = "GET"; var appcode = "8e5704921ca3422f80f0deb935a7ddc6"; if (string.IsNullOrEmpty(bankcard)) { return "请输入结算银行卡号"; } if (string.IsNullOrEmpty(idcard)) { return "请输入身份证号"; } if (string.IsNullOrEmpty(mobile)) { return "请输入银行预留手机号"; } if (string.IsNullOrEmpty(name)) { return "请输入真实姓名"; } String querys = "bankcard=" + bankcard + "&idcard=" + idcard + "&mobile=" + mobile + "&name=" + name; function.WriteLog(DateTime.Now.ToString(), "验证四要素日志"); function.WriteLog(querys, "验证四要素日志"); String bodys = ""; String url = host + path; HttpWebRequest httpRequest = null; HttpWebResponse httpResponse = null; if (0 < querys.Length) { url = url + "?" + querys; } if (host.Contains("https://")) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url)); } else { httpRequest = (HttpWebRequest)WebRequest.Create(url); } httpRequest.Method = method; httpRequest.Headers.Add("Authorization", "APPCODE " + appcode); if (0 < bodys.Length) { byte[] data = Encoding.UTF8.GetBytes(bodys); using (Stream stream = httpRequest.GetRequestStream()) { stream.Write(data, 0, data.Length); } } try { httpResponse = (HttpWebResponse)httpRequest.GetResponse(); } catch (WebException ex) { httpResponse = (HttpWebResponse)ex.Response; } Stream st = httpResponse.GetResponseStream(); StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8")); string result = reader.ReadToEnd(); JsonData jsonObj = JsonMapper.ToObject(result); result = jsonObj["data"]["desc"].ToString(); function.WriteLog(result, "验证四要素日志"); function.WriteLog("\n\n", "验证四要素日志"); return result; } #endregion public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; } #region 根据机具号同步商户激活状态 public IActionResult SyncMerchantStatus(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string SyncMerchantStatusDo(string PosSn) { if (string.IsNullOrEmpty(PosSn)) { return "请输入机具号"; } var pos = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn) ?? new MachineForSnNo(); var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == pos.SnId) ?? new PosMachinesTwo(); var posMerchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == posInfo.BindMerchantId) ?? new PosMerchantInfo(); if (posInfo.Id == 0) { return "机具" + PosSn + "不存在"; } if (posMerchant.Id == 0) { return "机具绑定商户不存在"; } else { posMerchant.ActiveStatus = 1; posMerchant.UpdateDate = DateTime.Now; posMerchant.MerStandardDate = posInfo.ActivationTime; function.WriteLog(DateTime.Now.ToString() + ":请求参数," + PosSn + ":" + SysUserName + "-" + SysRealName, "根据机具号同步商户激活状态"); db.SaveChanges(); } return "success"; } #endregion #region 根据机具号补发开机奖励 public IActionResult PosRewardReissued(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string PosRewardReissuedDo(string PosSn) { if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN"; } string[] PosSnList = PosSn.Replace("\r", "").Split('\n'); var PosId = ""; var error = ""; foreach (var item in PosSnList) { var pos = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == item) ?? new MachineForSnNo(); var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == pos.SnId) ?? new PosMachinesTwo(); bool checkExist = db.OpenRewardDetail.Any(m => m.SnNo == item); if (checkExist) { error += "以下操作失败" + item + ',' + "该机具开机奖励已发,请勿再次操作" + '\n'; } else { if (posInfo.Id > 0) { PosId += posInfo.Id + ","; } } } if (!string.IsNullOrEmpty(error)) { return "Warning|" + error; } PosId = PosId.TrimEnd(','); function.WriteLog(DateTime.Now.ToString() + ":请求参数," + PosId + ":" + SysUserName + "-" + SysRealName, "根据机具号补发开机奖励"); RedisDbconn.Instance.AddList("OpenRewardQueue", PosId); return "success"; } #endregion #region 根据机具号设置费率 public IActionResult SetPosFee(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string SetPosFeeDo(string PosSn, string FeeType) { if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN"; } if (string.IsNullOrEmpty(FeeType)) { return "请输入选择费率"; } if (FeeType == "0") { FeeType = "0.6"; } if (FeeType == "1") { FeeType = "0.63"; } string[] PosSnList = PosSn.Split('\n'); var PosId = ""; var RecordId = ""; var error = ""; foreach (var item in PosSnList) { var pos = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == item) ?? new MachineForSnNo(); var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == pos.SnId) ?? new PosMachinesTwo(); if (posInfo.Id > 0) { var query = db.PosMachinesFeeChangeRecord.Add(new PosMachinesFeeChangeRecord() { Sort = posInfo.BrandId, CreateDate = DateTime.Now, PosId = posInfo.Id, PosSn = posInfo.PosSn, PosUserId = posInfo.UserId, MerchantId = posInfo.BindMerchantId, UserId = posInfo.UserId, ChangeFee = decimal.Parse(FeeType), }).Entity; db.SaveChanges(); PosId += posInfo.Id + ","; RecordId += query.Id + ","; } else { error += "机具" + PosSn + "不存在"; } } if (!string.IsNullOrEmpty(error)) { return "Warning|" + error; } PosId = PosId.TrimEnd(','); function.WriteLog(DateTime.Now.ToString() + ":请求参数," + PosId + ":" + SysUserName + "-" + SysRealName, "根据机具号设置费率"); string data = "{\"RecordId\":\"" + RecordId + "\",\"PosId\":\"" + PosId + "\",\"Fee\": \"" + FeeType + "\",\"Kind\": \"2\",\"OpMan\": \"系统\"}"; RedisDbconn.Instance.AddList("SetDepositPostQueue", data); return "success"; } #endregion #region 根据机具号、商户号、商户姓名关联商户和机具信息 public IActionResult RelationPosAndMerchant(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string RelationPosAndMerchantDo(string PosSn, string MerchantNo, string MerchantName) { if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN"; } if (string.IsNullOrEmpty(MerchantNo)) { return "请输入商户编号"; } if (string.IsNullOrEmpty(MerchantName)) { return "请输入商户姓名"; } var query = PosSn + "," + MerchantNo + "," + MerchantName; var posMerchant = db.PosMerchantInfo.FirstOrDefault(m => m.MerchantNo == MerchantNo && m.MerchantName == MerchantName) ?? new PosMerchantInfo(); var machineForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == posMerchant.KqSnNo) ?? new MachineForSnNo(); var pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId) ?? new PosMachinesTwo(); if (posMerchant.Id == 0) { return "商户" + MerchantNo + "不存在"; } else if (pos.Id == 0) { return "机具" + PosSn + "不存在"; } else { pos.BindMerchantId = posMerchant.Id; db.SaveChanges(); function.WriteLog(DateTime.Now.ToString() + ":请求参数," + query + ":" + SysUserName + "-" + SysRealName, "根据机具号、商户号、商户姓名关联"); } return "success"; } #endregion #region 设置商户信息 public IActionResult SetMerchantInfo(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string SetMerchantInfoDo(string PosSn, string MerchantNo, string MerchantName, string MerIdcardNo, string MerchantMobile) { if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN"; } if (string.IsNullOrEmpty(MerchantNo)) { return "请输入商户编号"; } if (string.IsNullOrEmpty(MerchantName)) { return "请输入商户姓名"; } if (string.IsNullOrEmpty(MerIdcardNo)) { return "请输入商户身份证号"; } if (string.IsNullOrEmpty(MerchantMobile)) { return "请输入商户手机号"; } var posMerchant = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == MerchantNo && m.KqSnNo == PosSn && m.MerchantName.StartsWith(MerchantName.Substring(0, 1))) ?? new PosMerchantInfo(); var query = ""; query += "修改前:" + posMerchant.KqSnNo + "," + posMerchant.MerchantNo + "," + posMerchant.MerchantName + "," + posMerchant.MerIdcardNo + "," + posMerchant.MerchantMobile; query += "修改后:" + PosSn + "," + MerchantNo + "," + MerchantName + "," + MerIdcardNo + "," + MerchantMobile; if (posMerchant.Id == 0) { return "商户" + MerchantNo + "不存在或不在" + MerchantName + "名下"; } else { posMerchant.MerIdcardNo = MerIdcardNo; posMerchant.MerchantName = MerchantName; posMerchant.MerchantMobile = MerchantMobile; db.SaveChanges(); function.WriteLog(DateTime.Now.ToString() + ":请求参数," + query + ":" + SysUserName + "-" + SysRealName, "设置商户信息"); } return "success"; } #endregion #region 认证创客 public IActionResult AuthMaker(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string AuthMakerDo(string MakerCode, string RealName, string CertId, string BackCard, string BackName) { if (string.IsNullOrEmpty(MakerCode)) { return "请输入创客编号"; } if (string.IsNullOrEmpty(RealName)) { return "请输入真实姓名"; } if (string.IsNullOrEmpty(CertId)) { return "请输入身份证号"; } if (string.IsNullOrEmpty(BackCard)) { return "请输入银行卡号"; } if (string.IsNullOrEmpty(BackName)) { return "请输入银行名称"; } var query = MakerCode + "," + RealName + "," + CertId + "," + BackCard + "," + BackName; var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode(); var userInfo = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId) ?? new Users(); if (userInfo.AuthFlag == 1) { return "已认证"; } else { userInfo.UpdateDate = DateTime.Now; userInfo.RealName = RealName; userInfo.AuthFlag = 1; if (userInfo.AuthDate == null) { userInfo.AuthDate = DateTime.Now; } userInfo.CertId = CertId; userInfo.SettleBankCardNo = BackCard; userInfo.SettleBankCardName = BackName; db.SaveChanges(); function.WriteLog(DateTime.Now.ToString() + ":请求参数," + query + ":" + SysUserName + "-" + SysRealName, "认证创客"); } return "success"; } #endregion #region 划拨创客机具 public IActionResult TransferPos(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string TransferPosDo(string PosSn, string FromMakerCode, string ToMakerCode) { if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN"; } if (string.IsNullOrEmpty(FromMakerCode)) { return "请输入机具来源创客编号"; } if (string.IsNullOrEmpty(ToMakerCode)) { return "请输入划拨对象创客编号"; } var query = PosSn + "," + FromMakerCode + "," + ToMakerCode; var machineForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn) ?? new MachineForSnNo(); var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId) ?? new PosMachinesTwo(); if (posInfo.Id == 0) { return "机具" + PosSn + "不存在"; } var user = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == FromMakerCode) ?? new UserForMakerCode(); var tuser = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == ToMakerCode) ?? new UserForMakerCode(); var fUserId = db.Users.FirstOrDefault(m => m.Id == user.UserId) ?? new Users(); if (fUserId.Id == 0) { return "来源创客" + FromMakerCode + "不存在"; } var tUserId = db.Users.FirstOrDefault(m => m.Id == tuser.UserId) ?? new Users(); if (tUserId.Id == 0) { return "划拨创客" + ToMakerCode + "不存在"; } if (posInfo.BindingState == 0) { if (posInfo.UserId == 0 || posInfo.BuyUserId == posInfo.UserId) { posInfo.BuyUserId = tUserId.Id; posInfo.UserId = tUserId.Id; } else { posInfo.BuyUserId = tUserId.Id; } var fUserPos = db.UserMachineData.FirstOrDefault(m => m.IdBrand == fUserId.Id + "_" + posInfo.BrandId) ?? new UserMachineData(); var tUserPos = db.UserMachineData.FirstOrDefault(m => m.IdBrand == tUserId.Id + "_" + posInfo.BrandId) ?? new UserMachineData(); fUserPos.TotalMachineCount -= 1; fUserPos.UnBindCount -= 1; tUserPos.TotalMachineCount += 1; tUserPos.UnBindCount += 1; db.SaveChanges(); function.WriteLog(DateTime.Now.ToString() + ":请求参数," + query + ":" + SysUserName + "-" + SysRealName, "划拨创客机具"); } else { return "机具" + PosSn + "已使用"; } return "success"; } #endregion #region 还原提现订单状态 public IActionResult RestoreStatus(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string RestoreStatusDo(string OrderNo) { if (string.IsNullOrEmpty(OrderNo)) { return "请输入提现订单编号"; } string[] OrderNoList = OrderNo.Replace("\r", "").Split('\n'); var error = ""; foreach (var item in OrderNoList) { var cash = db.UserCashRecord.FirstOrDefault(m => m.CashOrderNo == item) ?? new UserCashRecord(); if (cash.Id > 0) { cash.QueryCount = 0; cash.Status = 0; db.SaveChanges(); } else { error += "订单" + item + "不存在" + '\n'; } } if (!string.IsNullOrEmpty(error)) { return "Warning|" + error; } return "success"; } #endregion #region 查询创客循环资格 public IActionResult SeeUserLoop(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string SeeUserLoopDo(string MakerCode) { var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode(); var user = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId) ?? new Users(); var pos = db.PosMachinesTwo.Where(m => m.Status > -1 && m.BuyUserId == user.Id).ToList(); var brandList = db.KqProducts.ToList(); var info = ""; foreach (var item in brandList) { var brand = item.Name; //已过期 var overdue = pos.Count(m => m.RecycEndDate < DateTime.Now && m.BrandId == item.Id && m.PosSnType == 0); //可申请 var use = pos.Count(m => m.IsPurchase == 0 && m.RecycEndDate > DateTime.Now && m.BrandId == item.Id && m.PosSnType == 0); //已使用 // var used = pos.Count(m => m.IsPurchase == 1 && m.BrandId == item.Id && m.PosSnType == 0); // info += "品牌:" + brand + ",已过期:" + overdue + ",可申请:" + use + ",已使用:" + used + "\n"; info += "品牌:" + brand + ",已过期:" + overdue + ",可申请:" + use + "\n"; } return info; } #endregion #region 提交到代付排除的创客名单 public IActionResult CashWithoutUser(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } public string CashWithoutUserDo(string Content) { CustomTagSet set = db.CustomTagSet.FirstOrDefault(m => m.Tags == "CashWithoutUser"); if (set == null) { set = db.CustomTagSet.Add(new CustomTagSet() { Tags = "CashWithoutUser", Title = "提交到代付排除的创客名单" }).Entity; db.SaveChanges(); } set.Contents = Content; db.SaveChanges(); db.Dispose(); return "success"; } #endregion #region 坏机回仓 public IActionResult BadPosToStore(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string BadPosToStoreDo(string OldSn) { string[] OldSnList; OldSnList = OldSn.Replace("\r", "").Split('\n'); string error = ""; for (int i = 0; i < OldSnList.Length; i++) { string OldSnNum = OldSnList[i]; MachineForSnNo oldForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == OldSnNum) ?? new MachineForSnNo(); PosMachinesTwo oldpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == oldForSnNo.SnId) ?? new PosMachinesTwo(); var store = db.StoreHouse.FirstOrDefault(m => m.Id == oldpos.StoreId) ?? new StoreHouse(); if (store.UserId != 142237)//判断是否是属于坏机仓的机具 { error += "以下操作失败" + OldSnNum + ',' + "该机具不在坏机仓或不存在" + '\n'; } oldpos.Status = 1; oldpos.QueryCount = 0; oldpos.UpdateDate = null; oldpos.ActivityList = null; oldpos.SeoKeyword = null; oldpos.SeoDescription = null; oldpos.OrderId = 0; oldpos.RecycEndDate = null; oldpos.RecycBackCount = 0; oldpos.PrizeParams = null; oldpos.ScanQrTrade = 0; oldpos.BindMerchantId = 0; oldpos.CreditTrade = 0; oldpos.DebitCardTrade = 0; oldpos.IsVip = 0; oldpos.UserNav = null; oldpos.TransferTime = null; oldpos.IsPurchase = 0; oldpos.Detail = null; oldpos.BindingTime = null; oldpos.BindingState = 0; oldpos.ActivationTime = null; oldpos.ActivationState = 0; oldpos.LeaderUserId = 0; oldpos.PreUserId = 0; oldpos.IsFirst = 0; oldpos.DownFeeMan = null; oldpos.DownFeeFlag = 0; oldpos.DownFeeDate = null; oldpos.UpFeeMan = null; oldpos.UpFeeFlag = 0; oldpos.UpFeeDate = null; oldpos.OpReserve1 = 0; oldpos.OpReserve2 = 0; oldpos.OpReserve3 = 0; oldpos.OpId = 0; oldpos.RecycStartDate = null; oldpos.SourcePosSn = null; oldpos.BuyUserId = 0; oldpos.UserId = 0; PublicFunction.ClearPosHistory(db, oldpos.PosSn); //清除机具历史记录 } if (!string.IsNullOrEmpty(error)) { return "Warning|" + error; } db.SaveChanges(); return "success"; } #endregion #region 划拨创客机具券 public IActionResult TransferPosCoupon(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } public string TransferPosCouponDo(string PosCouponCodes, string FromMakerCode, string ToMakerCode, string LeaderMakerCode = "") { if (string.IsNullOrEmpty(PosCouponCodes)) { return "请输入机具券码"; } if (string.IsNullOrEmpty(FromMakerCode)) { return "请输入机具来源创客编号"; } if (string.IsNullOrEmpty(ToMakerCode)) { return "请输入划拨对象创客编号"; } var user = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == FromMakerCode) ?? new UserForMakerCode(); var tuser = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == ToMakerCode) ?? new UserForMakerCode(); var fUserId = db.Users.FirstOrDefault(m => m.Id == user.UserId) ?? new Users(); if (fUserId.Id == 0) { return "来源创客" + FromMakerCode + "不存在"; } var tUserId = db.Users.FirstOrDefault(m => m.Id == tuser.UserId) ?? new Users(); if (tUserId.Id == 0) { return "划拨创客" + ToMakerCode + "不存在"; } int LeaderUserId = 0; if (!string.IsNullOrEmpty(LeaderMakerCode)) { UserForMakerCode leaderuser = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == LeaderMakerCode) ?? new UserForMakerCode(); Users LeaderUserItem = db.Users.FirstOrDefault(m => m.Id == leaderuser.UserId) ?? new Users(); if (LeaderUserItem.Id == 0) { return "大盟主创客编号" + LeaderMakerCode + "不存在"; } LeaderUserId = leaderuser.UserId; } var query = PosCouponCodes + "\n" + FromMakerCode + "," + ToMakerCode; string[] PosCouponList = PosCouponCodes.Replace("\r", "").Replace("\n", ",").Split(','); foreach (string PosCouponCode in PosCouponList) { PosCoupons item = db.PosCoupons.FirstOrDefault(m => m.ExchangeCode == PosCouponCode) ?? new PosCoupons(); if (item.UserId != fUserId.Id) { return "机具券" + PosCouponCode + "不在创客" + FromMakerCode + "名下"; } if (item.Id == 0) { return "机具券" + PosCouponCode + "不存在"; } if (item.IsUse == 1) { return "机具券" + PosCouponCode + "已使用"; } item.UserId = tUserId.Id; if (LeaderUserId > 0 && item.LeaderUserId == 0) { item.LeaderUserId = LeaderUserId; } } db.SaveChanges(); db.Dispose(); return "success"; } #endregion #region 机具回仓退款 public IActionResult RefundPosFee(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string RefundPosFeeDo(string PosSn, string BackStoreNo, int IsBack = 0) { if (string.IsNullOrEmpty(PosSn)) { return "请输入机具SN"; } if (IsBack == 1) { if (string.IsNullOrEmpty(BackStoreNo)) { return "请输入仓库编号"; } } string[] PosSnList = PosSn.Replace("\r", "").Split('\n'); WebCMSEntities db = new WebCMSEntities(); DateTime time = DateTime.Parse(DateTime.Now.ToString(("yyyy-MM-dd") + " 00:00:00")); var endTime = time.AddDays(20 - time.Day).AddDays(-60); StoreForCode storeForBack = new StoreForCode(); StoreHouse BackStore = new StoreHouse(); foreach (var item in PosSnList) { MachineForSnNo machineForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == item) ?? new MachineForSnNo(); if (machineForSnNo.SnId == 0) { return "未找到机具" + item + "关联数据"; } PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId && m.Status > -1 && m.RecycEndDate < endTime && m.BindingState == 0) ?? new PosMachinesTwo(); if (pos.Id == 0) { return "机具" + item + "不存在或者不满足条件"; } if (IsBack == 1) { storeForBack = db.StoreForCode.FirstOrDefault(m => m.Code == BackStoreNo) ?? new StoreForCode(); if (storeForBack.StoreId == 0) { return "未找到" + BackStoreNo + "关联数据"; } BackStore = db.StoreHouse.FirstOrDefault(m => m.Status > -1 && m.Id == storeForBack.StoreId && m.BrandId == pos.BrandId.ToString()) ?? new StoreHouse(); if (BackStore.Id == 0) { return "仓库" + BackStoreNo + "不存在或与机具品牌不符"; } } var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == BackStore.UserId) ?? new UserAccount(); var refundUserAccount = db.UserAccount.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new UserAccount(); var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == pos.BrandId) ?? new KqProducts(); var amount = 0; if (brandInfo.Name.Contains("电签")) { amount = 200; } if (brandInfo.Name.Contains("大POS")) { amount = 300; } if (IsBack == 1) { userAccount.ValidAmount -= amount;//扣减分仓可用额度 StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange() { CreateDate = DateTime.Now, CreateMan = SysUserName, StoreId = pos.StoreId, //出货仓库 BrandId = pos.BrandId, //产品类型 ProductName = RelationClass.GetKqProductBrandInfo(pos.BrandId), //产品名称 TransType = 5, //交易类型 SnNo = item, //SN编号 StockOpDirect = 0, //库存操作方向 SnStatus = 1, //SN状态 DeviceVendor = pos.DeviceName, //设备厂商 DeviceModel = pos.DeviceKind, //设备型号 DeviceType = pos.DeviceType, //设备类型 FromUserId = pos.BuyUserId, //来源创客 ToRemark = "过期机具回仓退款", //入库备注 ToStoreId = BackStore.Id, //退货收货仓库 SourceStoreId = pos.SourceStoreId, //源仓库编号 BrandType = pos.DeviceType, //品牌类型 }).Entity; string ChangeNo = "HCTK"; int StoreStockChangeId = stockchange.Id; string StoreStockChangeIdString = StoreStockChangeId.ToString(); for (int j = 0; j < 18 - StoreStockChangeId.ToString().Length; j++) { StoreStockChangeIdString = "0" + StoreStockChangeIdString; } ChangeNo += StoreStockChangeIdString; stockchange.ChangeNo = ChangeNo; //交易流水编号 db.StoreChangeHistory.Add(new StoreChangeHistory() { CreateDate = DateTime.Now, BrandId = pos.BrandId, //产品类型 ChangeRecordNo = ChangeNo, //变更记录单号 TransType = 5, //交易类型 SnNo = item, //SN编号 SnType = pos.PosSnType, //SN机具类型 StockOpDirect = 0, //库存操作方向 DeviceVendor = pos.DeviceName, //设备厂商 DeviceModel = pos.DeviceKind, //设备型号 DeviceType = pos.DeviceType, //设备类型 FromUserId = pos.BuyUserId, //来源创客 ToRemark = "过期机具回仓退款", //入库备注 SourceStoreId = pos.SourceStoreId, //源仓库 StoreId = pos.StoreId, //出货仓库 }); db.MachineReturn.Add(new MachineReturn() { CreateDate = DateTime.Now, Operator = SysUserName + "_" + SysRealName,//操作人 BrandId = pos.BrandId, //产品类型 DeviceSnNos = pos.PosSn, ToStoreId = BackStore.Id, ApplyNo = ChangeNo, //变更记录单号 UserId = pos.BuyUserId, //来源创客 Remark = "过期机具回仓退款", //入库备注 }); if (pos.ScanQrTrade > 0) { decimal ChangeAmount = 0; decimal BeforeBalanceAmount = 0; decimal AfterBalanceAmount = 0; if (pos.ScanQrTrade == 999) { refundUserAccount.BalanceAmount += amount;//退还创客机具货款 BeforeBalanceAmount = refundUserAccount.BalanceAmount; AfterBalanceAmount = refundUserAccount.BalanceAmount + pos.ScanQrTrade; ChangeAmount = amount; } else { refundUserAccount.BalanceAmount += pos.ScanQrTrade;//退还创客机具货款 BeforeBalanceAmount = refundUserAccount.BalanceAmount; AfterBalanceAmount = refundUserAccount.BalanceAmount + pos.ScanQrTrade; ChangeAmount = pos.ScanQrTrade; } db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = pos.BuyUserId, //创客 ChangeType = 126, //变动类型(机具货款退还) ProductType = 0, //产品类型 ChangeAmount = ChangeAmount, //变更金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 }); } var bInfo = BackStore.UserId + "_" + pos.BrandId; var userMachineData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == bInfo) ?? new UserMachineData(); userMachineData.TotalMachineCount += 1; userMachineData.UnBindCount += 1; BackStore.LaveNum += 1; BackStore.TotalNum += 1; var fInfo = pos.BuyUserId + "_" + pos.BrandId; var userMachineDatas = db.UserMachineData.FirstOrDefault(m => m.IdBrand == fInfo) ?? new UserMachineData(); userMachineDatas.TotalMachineCount -= 1; userMachineDatas.UnBindCount -= 1; pos.StoreId = BackStore.Id;//变更机具所属仓库,重置为仓库机 pos.Status = 1; 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; PublicFunction.ClearPosHistory(db, pos.PosSn); //清除机具历史记录 } else { if (pos.ScanQrTrade > 0) { decimal ChangeAmount = 0; decimal BeforeBalanceAmount = 0; decimal AfterBalanceAmount = 0; if (pos.ScanQrTrade == 999) { refundUserAccount.BalanceAmount += amount;//退还创客机具货款 BeforeBalanceAmount = refundUserAccount.BalanceAmount; AfterBalanceAmount = refundUserAccount.BalanceAmount + pos.ScanQrTrade; ChangeAmount = amount; } else { refundUserAccount.BalanceAmount += pos.ScanQrTrade;//退还创客机具货款 BeforeBalanceAmount = refundUserAccount.BalanceAmount; AfterBalanceAmount = refundUserAccount.BalanceAmount + pos.ScanQrTrade; ChangeAmount = pos.ScanQrTrade; } pos.ScanQrTrade = 0; db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = pos.BuyUserId, //创客 ChangeType = 126, //变动类型(机具货款退还) ProductType = 0, //产品类型 ChangeAmount = ChangeAmount, //变更金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 }); } } } db.SaveChanges(); return "success"; } #endregion #region 添加商户信息 public IActionResult AddMerchantnfo(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } [HttpPost] public string AddMerchantnfoDo(string PosSn, string MerSn) { if (string.IsNullOrEmpty(PosSn)) { return "请输入机具号"; } if (string.IsNullOrEmpty(MerSn)) { return "请输入商户号"; } var machineForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn) ?? new MachineForSnNo(); var pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId) ?? new PosMachinesTwo(); var merchantInfo = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId) ?? new PosMerchantInfo(); if (machineForSnNo.SnId == 0) { return "未找到机具" + PosSn + "关联数据"; } if (pos.Id == 0) { return "未找到机具" + PosSn; } if (merchantInfo.Id > 0) { return "机具" + PosSn + "以经存在绑定商户"; } var spInfo = spdb.BindRecord.FirstOrDefault(m => m.MerNo == MerSn && m.MerSnNo == PosSn) ?? new SpModels.BindRecord(); if (spInfo.Id > 0) { var MerUserType = 0; var ActiveStatus = 0; if (pos.BuyUserId != pos.UserId) { MerUserType = 1; } if (string.IsNullOrEmpty(pos.ActivationTime.ToString())) { ActiveStatus = 1; } PosMerchantInfo posMerchantInfo = db.PosMerchantInfo.Add(new PosMerchantInfo() { CreateDate = pos.BindingTime, TopUserId = 1, BrandId = pos.BrandId, SnStoreId = pos.StoreId, MerStandardDate = pos.ActivationTime, SnType = pos.PosSnType, MerUserType = MerUserType, UserId = pos.UserId, ActiveStatus = ActiveStatus, MerStatus = 1, KqSnNo = PosSn, KqMerNo = MerSn, MerIdcardNo = spInfo.SeoKeyword, MerchantMobile = spInfo.MerNewSnNo, MerchantName = spInfo.MerName, MerchantNo = spInfo.MerNo, }).Entity; db.SaveChanges(); string text = string.Format("设置商户信息,机具Sn: " + PosSn + ",商户编号: " + MerSn + ",操作人:" + SysUserName + "_" + SysRealName + ",时间:" + DateTime.Now + ""); function.WriteLog(text, "设置商户信息"); } return "success"; } #endregion } }