/// <summary> /// 开通代理获取代理的对应的分润比例 /// </summary> /// <param name="tier">用户对应的相差层级</param> /// <param name="Entity"></param> /// <returns></returns> public static decimal GetAgentSplit(this SysAgent SysAgent, int tier, LokFuEntity Entity) { decimal Split = 0; SysMoneySet SysMoneySet = Entity.SysMoneySet.FirstOrNew(); if (tier == 1) { Split = SysMoneySet.AgentSplit0; } else if (tier == 2) { Split = SysMoneySet.AgentSplit1; } else if (tier == 3) { Split = SysMoneySet.AgentSplit2; } else if (tier == 4) { Split = SysMoneySet.AgentSplit3; } else if (tier == 5) { Split = SysMoneySet.AgentSplit4; } else if (tier == 6) { Split = SysMoneySet.AgentSplit5; } return(Split); }
public void Post() { SysMoneySet SysMoneySet = Entity.SysMoneySet.FirstOrNew(); string Path = HttpContext.Current.Server.MapPath("/UpLoadFiles/AgentPrice/Agent.png"); DaiLi DaiLi = new DaiLi(); DaiLi.imageurl = SysImgPath + "/UpLoadFiles/AgentPrice/Agent.png"; System.Drawing.Image originalImage = System.Drawing.Image.FromFile(Path); DaiLi.height = originalImage.Height; DaiLi.width = originalImage.Width; List <AgentsInfo> list = new List <AgentsInfo>(); AgentsInfo info = new AgentsInfo(); info.tier = 5; info.name = "渠道商"; info.agentprice = SysMoneySet.AgentPrice5; list.Add(info); info = new AgentsInfo(); info.tier = 6; info.name = "分销商"; info.agentprice = SysMoneySet.AgentPrice6; list.Add(info); DaiLi.agentspricelist = list; //SysMoneySet.AgentPricesList = "[{\"tier\":\"5\",\"agentprice\":\"" + SysMoneySet.AgentPrice5 + "\"},{\"tier\":\"6\",\"agentprice\":\"" + SysMoneySet.AgentPrice6 + "\"}]"; //SysMoneySet.AgentPricesList = JsonConvert.SerializeObject(list); //SysMoneySet.Cols = "ImageUrl,AgentPricesList,Width,Height"; DataObj.Data = JsonConvert.SerializeObject(DaiLi); DataObj.Code = "0000"; DataObj.OutString(); }
/// <summary> /// 卡管家交易获取代理的对应的分润比例 /// </summary> /// <param name="SL"></param> /// <param name="Entity"></param> /// <returns></returns> public static decimal GetJobSplit(this SysAgent SysAgent, int tier, LokFuEntity Entity) { decimal Split = 0; SysMoneySet SysMoneySet = Entity.SysMoneySet.FirstOrNew(); if (tier == 1) { Split = SysMoneySet.JobSplitA1; } else if (tier == 2) { Split = SysMoneySet.JobSplitA2; } else if (tier == 3) { Split = SysMoneySet.JobSplitA3; } else if (tier == 4) { Split = SysMoneySet.JobSplitA4; } else if (tier == 5) { Split = SysMoneySet.JobSplitA5; } else if (tier == 6) { Split = SysMoneySet.JobSplitA6; } return(Split); }
public object AgentSplitSetSave(SysMoneySet SysMoneySet) { SysMoneySet.AgentSplit0 = SysMoneySet.AgentSplit0 / 100; SysMoneySet.AgentSplit1 = SysMoneySet.AgentSplit1 / 100; SysMoneySet.AgentSplit2 = SysMoneySet.AgentSplit2 / 100; SysMoneySet.AgentSplit3 = SysMoneySet.AgentSplit3 / 100; SysMoneySet.AgentSplit4 = SysMoneySet.AgentSplit4 / 100; SysMoneySet.AgentSplit5 = SysMoneySet.AgentSplit5 / 100; SysMoneySet.SameAgent = SysMoneySet.SameAgent / 100; SysMoneySet baseSysMoneySet = Entity.SysMoneySet.FirstOrNew(); baseSysMoneySet = Request.ConvertRequestToModel <SysMoneySet>(baseSysMoneySet, SysMoneySet); Entity.SaveChanges(); Response.Redirect("/Manage/SysMoneySet/AgentSplitSet.html"); return(null); }
public object JobSplitSetSave(SysMoneySet SysMoneySet) { SysMoneySet.JobSplitA1 = SysMoneySet.JobSplitA1 / 10000; SysMoneySet.JobSplitA2 = SysMoneySet.JobSplitA2 / 10000; SysMoneySet.JobSplitA3 = SysMoneySet.JobSplitA3 / 10000; SysMoneySet.JobSplitA4 = SysMoneySet.JobSplitA4 / 10000; SysMoneySet.JobSplitA5 = SysMoneySet.JobSplitA5 / 10000; SysMoneySet.JobSplitA6 = SysMoneySet.JobSplitA6 / 10000; SysMoneySet.JobSplitU0 = SysMoneySet.JobSplitU0 / 10000; SysMoneySet.JobSplitU1 = SysMoneySet.JobSplitU1 / 10000; SysMoneySet.JobSplitU2 = SysMoneySet.JobSplitU2 / 10000; SysMoneySet baseSysMoneySet = Entity.SysMoneySet.FirstOrNew(); baseSysMoneySet = Request.ConvertRequestToModel <SysMoneySet>(baseSysMoneySet, SysMoneySet); Entity.SaveChanges(); Response.Redirect("/Manage/SysMoneySet/JobSplitSet.html"); return(null); }
//直通车交易分润 public static decimal GetUsersSplit(this Users U, LokFuEntity Entity, int Tier) { decimal split = 0; SysMoneySet SysMoneySet = Entity.SysMoneySet.FirstOrNew(); if (Tier == 1) { split = SysMoneySet.PaySplitU0; } else if (Tier == 2) { split = SysMoneySet.PaySplitU1; } else if (Tier == 3) { split = SysMoneySet.PaySplitU2; } return(split); }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[UsersLogin]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } //JObject pp = (JObject)p; Users Users = new Users(); Users = JsonToObject.ConvertJsonToModel(Users, json); if (Users.UserName.IsNullOrEmpty() || Users.PassWord.IsNullOrEmpty()) { // DataObj.OutError("1000"); return; } else { Users.PassWord = Users.PassWord.GetMD5(); } byte LoginType = Users.LoginType; if (LoginType.IsNullOrEmpty()) { LoginType = 0; } Users baseUsers = Entity.Users.Where(n => n.UserName == Users.UserName).FirstOrDefault(); if (baseUsers == null)//用户不存在 { DataObj.OutError("2001"); return; } if (baseUsers.State != 1) { DataObj.OutError("2003"); return; } if (baseUsers.LoginLock == 1)//临时锁定 { DataObj.OutError("2103"); return; } if (baseUsers.PassWord != Users.PassWord) { SysSet SysSet = Entity.SysSet.FirstOrNew(); //系统统一修改标识SAME001 baseUsers.LoginErr++; if (baseUsers.LoginErr >= SysSet.LoginLock) { baseUsers.LoginLock = 1; } Entity.SaveChanges(); Users Out = new Users(); Out.LoginErr = SysSet.LoginLock - baseUsers.LoginErr; Out.Cols = "LoginErr"; DataObj.Data = Out.OutJson(); DataObj.Code = "2002"; if (Out.LoginErr == 0) { DataObj.Msg = "帐号或密码不正确,请明日再试或取回登录密码"; } else { DataObj.Msg = "帐号或密码不正确,您还可以尝试" + Out.LoginErr + "次"; } DataObj.OutString(); return; } if (LoginType == 0) { //清除登录设置与用户关系 Entity.ExecuteStoreCommand("Update Users Set Eno='' Where Eno='" + DataObj.ENo + "'"); } DateTime now = DateTime.Now; Guid Gid = Guid.NewGuid(); string mdstr = baseUsers.Id + "|" + baseUsers.UserName + "|" + Gid.ToString() + "|" + now.ToString(); string taken = mdstr.GetMD5(); if (LoginType == 0) { baseUsers.Token = taken; } else { baseUsers.PrintToken = string.Format("Print|{0}", taken); } baseUsers.LoginErr = 0; baseUsers.ENo = DataObj.ENo;//设置标识 Entity.SaveChanges(); int BankNum = Entity.UserCard.Count(n => n.UId == baseUsers.Id && n.State == 1); baseUsers.BankNum = BankNum; if (baseUsers.Pic.IsNullOrEmpty()) { baseUsers.Pic = "none.png"; } baseUsers.Pic = Utils.ImageUrl("UsersPic", baseUsers.Pic, AppImgPath); baseUsers.CardPic = Utils.ImageUrl("Users", baseUsers.CardPic, AppImgPath); baseUsers.CardFace = Utils.ImageUrl("Users", baseUsers.CardFace, AppImgPath); baseUsers.CardBack = Utils.ImageUrl("Users", baseUsers.CardBack, AppImgPath); string CashName = "UsersAgentTel" + baseUsers.Agent.ToString(); if (HasCache) { baseUsers.AgentTel = CacheBuilder.EntityCache.Get(CashName, null) as string; } if (baseUsers.AgentTel.IsNullOrEmpty()) { if (!baseUsers.Agent.IsNullOrEmpty()) { SysAgent SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent); baseUsers.AgentTel = SysAgent.Tel; } if (baseUsers.AgentTel.IsNullOrEmpty()) { SysSet SysSet = Entity.SysSet.FirstOrNew(); baseUsers.AgentTel = SysSet.Tel; } if (HasCache && !baseUsers.AgentTel.IsNullOrEmpty()) { CacheBuilder.EntityCache.Remove(CashName, null); CacheBuilder.EntityCache.Add(CashName, baseUsers.AgentTel, DateTime.Now.AddMinutes(60), null); } } CashName = "UsersMsgCount" + baseUsers.Id.ToString(); string count = string.Empty; if (HasCache) { count = CacheBuilder.EntityCache.Get(CashName, null) as string; } if (count == string.Empty || count == null) { string uid = string.Format(",{0},", baseUsers.Id); int Count = Entity.MsgUser.Count(n => (n.UId == baseUsers.Id && n.State == 1) || (n.UId == 0 && !n.ReadUsers.Contains(uid) && !n.DeleteUsers.Contains(uid) && n.AddTime > baseUsers.AddTime && (n.SendUsers.Contains(uid) || n.SendUsers == null || n.SendUsers == ""))); baseUsers.MsgCount = Count; count = Count.ToString(); if (HasCache) { CacheBuilder.EntityCache.Remove(CashName, null); CacheBuilder.EntityCache.Add(CashName, count, DateTime.Now.AddMinutes(6), null); } } else { baseUsers.MsgCount = Int32.Parse(count); } //AutoCashBank,AutoBank CashName = "UsersAutoBank" + baseUsers.Id.ToString(); string AutoBank = string.Empty; if (!Users.AutoCashBank.IsNullOrEmpty() && Users.AutoCash == 1) { if (HasCache) { AutoBank = CacheBuilder.EntityCache.Get(CashName, null) as string; } if (AutoBank.IsNullOrEmpty()) { UserCard UserCard = Entity.UserCard.FirstOrDefault(n => n.Id == Users.AutoCashBank && n.UId == Users.Id && n.State == 1); if (UserCard != null) { AutoBank = UserCard.Card; if (HasCache) { CacheBuilder.EntityCache.Remove(CashName, null); CacheBuilder.EntityCache.Add(CashName, AutoBank, DateTime.Now.AddMinutes(1), null); } } } } baseUsers.AutoBank = AutoBank; if (baseUsers.Amount < 0) { baseUsers.Amount = 0; } var BaoConfig = Entity.BaoConfig.FirstOrNew(); baseUsers.GetCost = BaoConfig.GetCost; baseUsers.YearPer = BaoConfig.YearPer; if (baseUsers.CardTrueName.IsNullOrEmpty() && baseUsers.CardType == 1) { baseUsers.IsAnewUpImg = 1; } SysMoneySet moneyset = Entity.SysMoneySet.FirstOrNew(); baseUsers.VipPrice = moneyset.VipPrice; baseUsers.Cols = "Id,UserName,NeekName,TrueName,Mobile,QQ,Email,Address,Amount,Frozen,CardId,Pic,CardStae,CardFace,CardBack,CardPic,MiBao,Token,CardNum,CardRemark,BankNum,MsgCount,AgentTel,YYOpenState,InTypeMobile,InTypePC,T0Times,T1Times,AutoBao,AutoCash,AutoCashMoney,AutoCashBank,AutoBank,GetCost,YearPer,YAmount,AllRec,LastRec,IsAnewUpImg,IsVip,VipPrice"; DataObj.Data = baseUsers.OutJson(); DataObj.Code = "0000"; DataObj.OutString(); }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[OrderPayConfig]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } VIPOrder VIPOrder = new VIPOrder(); VIPOrder = JsonToObject.ConvertJsonToModel(VIPOrder, json); UserTrack UserTrack = new UserTrack(); UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json); if (VIPOrder.X.IsNullOrEmpty() || VIPOrder.Y.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } //获取用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == VIPOrder.Token); if (baseUsers == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (baseUsers.State != 1)//用户被锁定 { DataObj.OutError("2003"); return; } if (baseUsers.CardStae != 2)//未实名认证 { DataObj.OutError("2006"); return; } if (baseUsers.MiBao != 1)//未设置支付密码 { DataObj.OutError("2008"); return; } if (baseUsers.IsVip == 1)//是VIP不能再生成 { DataObj.OutError("9001"); return; } //获取分支机构信息 SysAgent SysAgent = new SysAgent(); if (!baseUsers.Agent.IsNullOrEmpty()) { SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent); } VIPOrder.UId = baseUsers.Id; //VIPOrder.Agent = baseUsers.Agent; //PayConfigOrder.AId = baseUsers.AId; SysMoneySet SysMoneySet = Entity.SysMoneySet.FirstOrNew(); VIPOrder.Amoney = SysMoneySet.VipPrice; VIPOrder.VName = "升级VIP"; VIPOrder.State = 1; VIPOrder.PayState = 0; VIPOrder.AddTime = DateTime.Now; //这里是利润计算========== //利润舍位 VIPOrder.SplitMoney = 0; VIPOrder.SplitState = 0; VIPOrder.Poundage = 0; VIPOrder.HFGet = 0; VIPOrder.PayWay = 15; VIPOrder.Days = 99999999; VIPOrder.UserState = 0; VIPOrder.Agent = baseUsers.Agent; VIPOrder.SameGet = 0; //写入订单总表 Orders Orders = new Orders(); Orders.UId = VIPOrder.UId; Orders.TName = "VIP升级"; Orders.PayType = 0; Orders.PayName = "升级VIP"; Orders.RUId = 0; Orders.RName = string.Empty; Orders.TType = 6; Orders.TState = 1; Orders.Amoney = VIPOrder.Amoney; Orders.Poundage = VIPOrder.Poundage; Orders.AddTime = DateTime.Now; Orders.PayState = 0; Orders.PayWay = 15; Orders.Agent = baseUsers.Agent; Orders.AgentState = 0; Orders.AId = baseUsers.AId; Orders.FId = 0; string OrderAddress = VIPOrder.OrderAddress; if (OrderAddress.IsNullOrEmpty()) { OrderAddress = Utils.GetAddressByGPS(VIPOrder.X, VIPOrder.Y); } Orders.OrderAddress = OrderAddress; Orders.X = VIPOrder.X; Orders.Y = VIPOrder.Y; Entity.Orders.AddObject(Orders); Entity.SaveChanges(); Entity.Refresh(RefreshMode.StoreWins, Orders); VIPOrder.TNum = Orders.TNum; Entity.VIPOrder.AddObject(VIPOrder); Entity.SaveChanges(); //======================================= UserTrack.ENo = DataObj.ENo; UserTrack.OPType = Orders.PayName; UserTrack.UserName = Orders.TNum; UserTrack.GPSAddress = Orders.OrderAddress; UserTrack.GPSX = Orders.X; UserTrack.GPSY = Orders.Y; Orders.SeavGPSLog(UserTrack, Entity); //======================================= Orders.SendMsg(Entity);//发送消息类 //======================================= Orders.Cols = "TNum,PayId,Amoney,PayState"; string TNum = Orders.TNum; string Sign = (TNum + "NewPay").GetMD5().Substring(8, 8); //Orders.PayId = PayPath + "/pay/" + TNum + ".html?sign=" + Sign; Orders.PayId = PayPath + "/mobile/orders/GoPay.html?sign=" + Sign + "&tnum=" + TNum; //======================================= #region 走结算中心 //获取最佳支付通道 //IList<PayConfig> PayConfigList = Entity.PayConfig.Where(n => n.State == 1).OrderBy(n => n.Cost).ToList(); //IList<SysControl> SysControlList = Entity.SysControl.OrderBy(n => n.Sort).ToList();//SysControl //IList<SysControl> SCList = new List<SysControl>(); //IList<PayConfig> PCList = new List<PayConfig>(); //foreach (var p in SysControlList) //{ // SysControl T = p.ChkState(); // if (T.State == 1) // { // SCList.Add(p); // } //} //foreach (var p in PayConfigList) //{ // SysControl T = SCList.FirstOrDefault(n => n.PayWay == p.Id); // if (T != null) // { // if (VIPOrder.Amoney >= (decimal)T.SNum && VIPOrder.Amoney <= (decimal)T.ENum) // { // PCList.Add(p); // } // } //} //IList<PayConfig> CashList = PCList.Where(n => n.GroupType == "Cash").OrderBy(n => n.Cost).ToList(); //IList<PayConfig> BankList = PCList.Where(n => n.GroupType == "Bank").OrderBy(n => n.Cost).ToList(); //IList<PayConfig> WxList = PCList.Where(n => n.GroupType == "WeiXin").OrderBy(n => n.Cost).ToList(); //IList<PayConfig> AliList = PCList.Where(n => n.GroupType == "AliPay").OrderBy(n => n.Cost).ToList(); //IList<PayConfig> List = new List<PayConfig>(); //if (CashList.Count > 0) //{ // PayConfig Cash = new PayConfig(); // Cash.GroupType = "Cash"; // Cash.Name = "余额支付"; // Cash.State = 1; // Cash.Cols = "Name,GroupType,State"; // List.Add(Cash); //} //if (BankList.Count > 0) //{ // PayConfig Bank = new PayConfig(); // Bank.GroupType = "Bank"; // Bank.Name = "银联支付"; // Bank.State = 1; // Bank.Cols = "Name,GroupType,State"; // List.Add(Bank); //} //if (WxList.Count > 0) //{ // PayConfig Wx = new PayConfig(); // Wx.GroupType = "WeiXin"; // Wx.Name = "微信支付"; // Wx.State = 0; // Wx.Cols = "Name,GroupType,State"; // List.Add(Wx); //} //if (AliList.Count > 0) //{ // PayConfig Ali = new PayConfig(); // Ali.GroupType = "AliPay"; // Ali.Name = "支付宝支付"; // Ali.State = 1; // Ali.Cols = "Name,GroupType,State"; // List.Add(Ali); //} //string PCString = List.EntityToJson(); //JArray PCJson = (JArray)JsonConvert.DeserializeObject(PCString); //Orders.PayConfig = PCJson; //Orders.Cols += ",PayConfig"; #endregion //Orders.paycon DataObj.Data = Orders.OutJson(); DataObj.Code = "0000"; DataObj.OutString(); }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[FastOrderController]:", "【Data】" + Data, Ex); json = null; } if (json == null) { DataObj.OutError("1000"); return; } FastOrder InFastOrder = new FastOrder(); InFastOrder = JsonToObject.ConvertJsonToModel(InFastOrder, json); UserTrack UserTrack = new UserTrack(); UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json); if (InFastOrder.Id == 99999) { DataObj.Msg = "当前通道维护中,建议您开通收款到银行卡功能,享受更多收款通道"; DataObj.OutError("1000"); return; } if (InFastOrder.CashType.IsNullOrEmpty()) { InFastOrder.CashType = "D0"; //DataObj.OutError("1000"); //return; } decimal Amount = InFastOrder.Amoney; byte payway = InFastOrder.OType; if (Amount <= 0) { DataObj.OutError("1000"); return; } if (payway != 1 && payway != 2 && payway != 3) { DataObj.Msg = "你当前版本不支持该交易,请等待新版本发布及升级!"; DataObj.OutError("1000"); return; } Users Users = Entity.Users.FirstOrDefault(n => n.Token == InFastOrder.Token); #region 用户 if (Users == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (Users.State != 1)//用户被锁定 { DataObj.OutError("2003"); return; } if (Users.CardStae != 2)//未实名认证 { DataObj.OutError("2006"); return; } if (Amount.IsNullOrEmpty() || payway.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } #endregion FastUser FastUser = Entity.FastUser.FirstOrDefault(o => o.UId == Users.Id); if (FastUser == null) { DataObj.OutError("2070"); return; } #region 取通道 IList <FastPayWay> FastPayWayList = null; if (InFastOrder.Id.IsNullOrEmpty()) { //这是旧逻辑,有一些旧版还在用 if (payway == 1) { FastPayWayList = Entity.FastPayWay.Where(n => n.State == 1 && n.SNum2 < Amount && n.ENum2 >= Amount && n.HasAliPay == 1).OrderBy(n => n.Sort).ToList(); } else if (payway == 2) { FastPayWayList = Entity.FastPayWay.Where(n => n.State == 1 && n.SNum < Amount && n.ENum >= Amount && n.HasWeiXin == 1).OrderBy(n => n.Sort).ToList(); } else if (payway == 3) { FastPayWayList = Entity.FastPayWay.Where(n => n.State == 1 && n.BankSNum < Amount && n.BankENum >= Amount && n.HasBank == 1).OrderBy(n => n.Sort).ToList(); } else { DataObj.OutError("1000"); return; } } else { var query = Entity.FastPayWay.Where(n => n.Id == InFastOrder.Id && n.State == 1); if (payway == 1) { query = query.Where(o => o.HasAliPay == 1 && o.SNum2 <= Amount && o.ENum2 >= Amount); } else if (payway == 2) { query = query.Where(o => o.HasWeiXin == 1 && o.SNum <= Amount && o.ENum >= Amount); } else if (payway == 3) { query = query.Where(o => o.HasBank == 1 && o.BankSNum <= Amount && o.BankENum >= Amount); } FastPayWayList = query.ToList(); } #endregion if (FastPayWayList.Count < 1) { DataObj.OutError("2079"); return; } #region 通道验证及商户进件信息验证 FastPayWay FastPayWay = null; FastUserPay FastUserPay = null; IList <FastPayWay> PayWayList = new List <FastPayWay>(); foreach (var p in FastPayWayList) { if (p.TimeType == 1)//限制时间,模式1 { DateTime STime = p.STime; DateTime ETime = p.ETime; DateTime NowSTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + STime.ToString("HH:mm:ss")); DateTime NowETime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + ETime.ToString("HH:mm:ss")); if (NowSTime <= DateTime.Now && DateTime.Now <= NowETime) { //当前时间允许交易 PayWayList.Add(p); } } else { PayWayList.Add(p); } } if (PayWayList.Count < 1) { DataObj.OutError("2071"); return; } foreach (var p in PayWayList) { FastUserPay temp = Entity.FastUserPay.FirstOrDefault(n => n.UId == Users.Id && n.PayWay == p.Id && n.MerState == 1 && n.CardState == 1 && n.BusiState == 1); if (temp != null) { FastPayWay = p; FastUserPay = temp; break; } } if (FastUserPay == null) { DataObj.OutError("2072"); return; } if (FastPayWay == null) { DataObj.OutError("2073"); return; } #endregion string[] PayConfigArr = FastPayWay.QueryArray.Split(','); #region 验证配置 if (FastPayWay.DllName == "HFPay") { if (PayConfigArr.Length != 3) { DataObj.OutError("2074"); return; } } if (FastPayWay.DllName == "HFJSPay") { if (PayConfigArr.Length != 3) { DataObj.OutError("2074"); return; } } #endregion decimal UserCost = 0;//用户 decimal BankCost = 0; decimal BankMin = 0; decimal BankMax = 0; decimal AgentCost = 0; //代理 if (payway == 1) { //支付宝 UserCost = FastUserPay.UserCost2; BankCost = FastPayWay.BankCost2; BankMin = FastPayWay.MinCost2; BankMax = FastPayWay.MaxCost2; AgentCost = FastPayWay.Cost2; } if (payway == 2)//微信 { UserCost = FastUserPay.UserCost; BankCost = FastPayWay.BankCost; BankMin = FastPayWay.MinCost; BankMax = FastPayWay.MaxCost; AgentCost = FastPayWay.Cost; } if (payway == 3)//银联 { UserCost = FastUserPay.UserCost3; BankCost = FastPayWay.BankCost3; BankMin = FastPayWay.MinCost3; BankMax = FastPayWay.MaxCost3; AgentCost = FastPayWay.Cost3; } #region 创建交易 //=======================生成订单=========================== SysAgent SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == Users.Agent); IList <SysAgent> SysAgentList = SysAgent.GetAgentsById(Entity); SysAgent TopAgent = SysAgentList.FirstOrNew(); FastOrder FastOrder = new FastOrder(); FastOrder.ComeWay = 1; FastOrder.UId = Users.Id; FastOrder.Agent = SysAgent.Id; FastOrder.PayId = string.Empty; FastOrder.OType = payway; FastOrder.PayWay = FastPayWay.Id; FastOrder.CashType = InFastOrder.CashType; FastOrder.Amoney = Amount; //用户手续费 decimal Poundage = Amount * UserCost + FastUserPay.UserCash; Poundage = Poundage.Ceiling(); FastOrder.Poundage = Poundage; //用户最终金额 FastOrder.PayMoney = FastOrder.Amoney - FastOrder.Poundage; if (FastOrder.PayMoney < 0) { DataObj.OutError("2076"); return; } FastOrder.UserRate = UserCost; FastOrder.AgentRate = AgentCost; FastOrder.SysRate = BankCost; FastOrder.UserCash = FastUserPay.UserCash; FastOrder.SysCash = FastPayWay.Cash; FastOrder.SameGet = 0; //计算手续费差 SysMoneySet SysMoneySet = Entity.SysMoneySet.FirstOrNew(); decimal PaySplit = 0;//代理商费率 PaySplit = SysAgent.GetSplit(TopAgent.Tier, Entity); decimal PayGet = Amount * PaySplit; PayGet = PayGet.Floor(); //一级代理利润 decimal AgentPayGet = PayGet; AgentPayGet = AgentPayGet.Floor(); FastOrder.AgentPayGet = 0; string AgentPath = "|"; string Split = "|"; decimal MyGet = PayGet; foreach (var p in SysAgentList) { PaySplit = SysAgent.GetSplit(p.Tier, Entity); AgentPath += p.Id + "|"; MyGet = Amount * PaySplit;//各级代理分润 MyGet = MyGet.Floor(); Split += MyGet.ToString("F2") + "|"; } FastOrder.AgentPath = AgentPath; FastOrder.Split = Split; decimal BankMoney = Amount * BankCost; if (BankMoney < BankMin) { BankMoney = BankMin; } if (BankMoney > BankMax) { BankMoney = BankMax; } BankMoney = BankMoney.Floor(); //用户手续费(含代付手续费)-代付分润-银行手续费-银行代付成本 decimal HFGet = Poundage - AgentPayGet - BankMoney - FastPayWay.Cash; FastOrder.HFGet = HFGet; FastOrder.State = 1; FastOrder.AddTime = DateTime.Now; FastOrder.PayState = 0; FastOrder.AgentState = 0; FastOrder.UserState = 0; FastOrder.CardName = FastUserPay.CardName; FastOrder.Bank = FastUserPay.Bank; FastOrder.Card = FastUserPay.Card; FastOrder.Bin = FastUserPay.Bin; Entity.FastOrder.AddObject(FastOrder); Entity.SaveChanges(); Entity.Refresh(RefreshMode.StoreWins, FastOrder); #endregion //======================================= UserTrack.ENo = DataObj.ENo; UserTrack.OPType = "到银行卡交易"; UserTrack.UserName = FastOrder.TNum; UserTrack.UId = FastOrder.UId; UserTrack.SeavGPSLog(Entity); //======================================= //=======================分润记录=========================== MyGet = PayGet; int tier = 1; foreach (var p in SysAgentList) { PaySplit = SysAgent.GetSplit(p.Tier, Entity); MyGet = Amount * PaySplit;//各级代理分润 MyGet = MyGet.Floor(); FastSplit FastSplit = new FastSplit(); FastSplit.Tnum = FastOrder.TNum; FastSplit.Profit = MyGet; FastSplit.AgentId = p.Id; FastSplit.Tier = p.Tier; FastSplit.AddTime = DateTime.Now; Entity.FastSplit.AddObject(FastSplit); tier++; } Entity.SaveChanges(); //=======================请求接口开始=========================== if (FastOrder.OType == 1 || FastOrder.OType == 2) { if (FastPayWay.DllName == "HFPay") { string NoticeUrl = NoticePath + "/PayCenter/HFPay/FastNotice.html";//后台通过地址 #region 微信&支付宝 string Action = ""; if (FastOrder.OType == 1) { Action = "AliSao"; } else if (FastOrder.OType == 2) { Action = "WxSao"; } //提交结算中心 string merId = PayConfigArr[0]; //商户号 string merKey = PayConfigArr[1]; //商户密钥 string PayWay = PayConfigArr[2]; //绑定通道 decimal money = FastOrder.Amoney * 100; string OrderMoney = money.ToString("F0");//金额,以分为单 string PostJson = "{\"action\":\"" + Action + "\",\"txnamt\":\"" + OrderMoney + "\",\"merid\":\"" + merId + "\",\"payway\":\"" + PayWay + "\",\"orderid\":\"" + FastOrder.TNum + "\",\"backurl\":\"" + NoticeUrl + "\"}"; string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8"); string Sign = (DataBase64 + merKey).GetMD5(); DataBase64 = HttpUtility.UrlEncode(DataBase64); string PostData = string.Format("req={0}&sign={1}", DataBase64, Sign); string HF_Url = "https://api.zhifujiekou.com/api/mpgateway"; string Ret = Utils.PostRequest(HF_Url, PostData, "utf-8"); JObject JS = new JObject(); try { JS = (JObject)JsonConvert.DeserializeObject(Ret); } catch (Exception) { FastOrder.State = 0; FastOrder.Remark = "数据请求出错"; Entity.SaveChanges(); JS = null; } if (JS != null) { string resp = JS["resp"].ToString(); Ret = LokFuEncode.Base64Decode(resp, "utf-8"); try { JS = (JObject)JsonConvert.DeserializeObject(Ret); } catch (Exception Ex) { FastOrder.State = 0; FastOrder.Remark = "JSON加载出错"; Entity.SaveChanges(); JS = null; } if (JS != null) { string respcode = JS["respcode"].ToString(); if (respcode != "00") { string respmsg = JS["respmsg"].ToString(); FastOrder.State = 0; FastOrder.Remark = respmsg; Entity.SaveChanges(); } else { if (JS["formaction"] == null) { FastOrder.State = 0; FastOrder.Remark = "接口没有返回二维码"; Entity.SaveChanges(); } else { string BankNum = JS["queryid"].ToString(); string qr_code = JS["formaction"].ToString(); FastOrder.PayId = qr_code; FastOrder.Trade = BankNum; Entity.SaveChanges(); } } } } #endregion } } else if (FastOrder.OType == 3) { if (FastPayWay.DllName == "HFPay" || FastPayWay.DllName == "HFJSPay") { #region //银联不用请求第三方,直接生成链接 FastOrder.PayId = PayPath + "/paycenter/pay-" + FastOrder.Id + ".html?sign=" + ((FastOrder.Id * 100 + 99) + "Pay").GetMD5().Substring(8, 8); Entity.SaveChanges(); #endregion } } if (FastOrder.State == 1) { if (FastOrder.PayState == 1) { if (FastOrder.UserState == 1) { FastOrder.State = 3; } else { FastOrder.State = 2; } } else { FastOrder.State = 1; } } else { FastOrder.State = 0; DataObj.OutError("1005"); return; } FastOrder.Cols = "TNum,PayId,Amoney,Poundage,State"; DataObj.Data = FastOrder.OutJson(); DataObj.Code = "0000"; DataObj.OutString(); }
/// <summary> /// 订单分润/分润退款 /// </summary> /// <param name="O"></param> /// <param name="Entity"></param> /// <param name="Type">1分润入帐 2分润退款</param> /// <returns></returns> public static FastOrder PayAgent(this FastOrder O, LokFuEntity Entity, int Type) { FastConfig FastConfig = Entity.FastConfig.FirstOrNew(); if (FastConfig.AgentWay != 1) { return(O); } if (O.Agent.IsNullOrEmpty()) {//代理商没有情况下 return(O); } //if (O.AgentPayGet.IsNullOrEmpty()) //{ // //没有佣金 // //直接标识为已结算 // O.AgentState = 1; // O.AgentTime = DateTime.Now; // Entity.SaveChanges(); // return O; //} if (Type != 1)//类型不对 { return(O); } Users OrderUser = Entity.Users.FirstOrDefault(n => n.Id == O.UId);//读取订单用户 if (Type == 1) { string TypeString = "收付直通车"; #region 结算 if (O.AgentState != 0) {//已结算,不能重复结算 return(O); } O.AgentState = 1; O.AgentTime = DateTime.Now; Entity.SaveChanges(); //获取各级代理商 SysAgent SysAgent = new SysAgent(); SysAgent.Id = O.Agent; IList <SysAgent> SysAgentList = SysAgent.GetAgentsById(Entity); decimal AIdPayGet = (decimal)O.AgentPayGet; // decimal sumpayget = 0; int tier = 1; foreach (var p in SysAgentList) { if (p.State == 1) { decimal PayGet = SysAgent.GetSplit(p.Tier, Entity); AIdPayGet = O.Amoney * PayGet; //当前级总佣金,需获取是否有下级拆分他的佣金 AIdPayGet = AIdPayGet.Floor(); decimal AIdPayGetNext = 0; //定义下一级佣金 if (tier < SysAgentList.Count) { //不是最后一级,需计算下级拆分金额 SysAgent SysAgentNext = SysAgentList.Skip(tier).Take(1).FirstOrDefault(); if (SysAgentNext != null) { if (SysAgentNext.State == 1) {//下级状态有效时才计算,如关闭了则不正计算下级 decimal PayGetNext = SysAgent.GetSplit(SysAgentNext.Tier, Entity); AIdPayGetNext = O.Amoney * PayGetNext; AIdPayGetNext = AIdPayGetNext.Floor(); } } } decimal AIdPayGetMy = AIdPayGet - AIdPayGetNext; //当前级所能得到真实佣金 decimal UsersGetAll = 0; //定义所有用户佣金 //最后一级代理商 处理用户分润 #region 最后一级代理商 处理用户分润 if (tier == SysAgentList.Count) { //获取各级分润配置 SysSet SysSet = Entity.SysSet.FirstOrNew(); int MaxLevel = SysSet.GlobaPromoteMaxLevel; //有用户分润,开始执行用户分润 Users Users = new Users(); Users.Id = O.UId; //获取用户各级关系,最大级不超过用户配置级数。返回数据包含当前用户,当前用户级数标识Tier为0 IList <Users> UsersList = Users.GetUsersById(Entity, MaxLevel); int UsersTier = 1; foreach (var U in UsersList.Where(n => n.Tier > 0 && n.State == 1)) { //UsersGetAll //UserPromoteGet UserPromoteGet = UserPromoteGetList.FirstOrDefault(n => n.PromoteLevel == U.Tier); //if (UserPromoteGet != null) //{ decimal PromoteGet = Users.GetUsersSplit(Entity, U.Tier); decimal UsersGet = O.Amoney * PromoteGet; UsersGet = UsersGet.Floor(); if (UsersTier == 1) { UsersGetAll = UsersGet; } //UsersGetSum += UsersGet; if (UsersTier < UsersList.Count) { //不是最后一级,需计算下级拆分金额 byte nexttier = (byte)(U.Tier + 1); Users UsersNext = UsersList.FirstOrDefault(o => o.Tier == nexttier); if (UsersNext != null) { if (UsersNext.State == 1) { //下级状态有效时才计算,如关闭了则不正计算下级 decimal PayGetNext = Users.GetUsersSplit(Entity, UsersNext.Tier); decimal UserPayGetNext = O.Amoney * PayGetNext; UserPayGetNext = UserPayGetNext.Floor(); //减掉下级用户的金额 UsersGet = UsersGet - UserPayGetNext; } } } if (UsersGet > 0) { //帐户变动记录 string Remark = string.Format("{0}[{1}]", TypeString, O.TNum); string SP_Ret = Entity.SP_UsersMoney(U.Id, O.TNum, UsersGet, 8, Remark, 0); if (SP_Ret != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", U.Id, O.TNum, 8, UsersGet, SP_Ret), "SP_UsersMoney"); } //记录清分记录 OrderProfitLog OPL = new OrderProfitLog(); OPL.AddTime = DateTime.Now; OPL.UId = U.Id; OPL.Agent = 0; OPL.TNum = O.TNum; OPL.LogType = 1; OPL.Tier = U.Tier; OPL.Profit = UsersGet; OPL.Amoney = O.Amoney; OPL.OrderType = 21; OPL.UserName = OrderUser.UserName; Entity.OrderProfitLog.AddObject(OPL); //=====增加统计记录===== ShareTotal ShareTotal = Entity.ShareTotal.FirstOrDefault(n => n.UId == U.Id && n.Tier == U.Tier); if (ShareTotal == null) { ShareTotal = new ShareTotal(); ShareTotal.UId = U.Id; ShareTotal.AddTime = DateTime.Now; ShareTotal.ShareNum = 0; ShareTotal.Amount = O.Amoney; ShareTotal.Profit = UsersGet; ShareTotal.Tier = U.Tier; Entity.ShareTotal.AddObject(ShareTotal); } else { ShareTotal.Amount += O.Amoney; ShareTotal.Profit += UsersGet; } sumpayget = sumpayget + UsersGet; } UsersTier++; // } } } #endregion //20160704 Lin 增加统计用户拆分多少,最后一级代理金额减掉这部分金额即可。 //解决用户分剩下钱规系统逻辑问题 AIdPayGetMy = AIdPayGetMy - UsersGetAll; #region 最后一级代理商 处理同级分润 if (tier == SysAgentList.Count) { if (!p.SameAgent.IsNullOrEmpty() && AIdPayGet > 0) { SysMoneySet SysMoneySet = Entity.SysMoneySet.FirstOrNew(); decimal SameMoney = AIdPayGet * SysMoneySet.SameAgent; SameMoney = SameMoney.Floor(); SysAgent SameSysAgent = Entity.SysAgent.FirstOrNew(o => o.Id == p.SameAgent); if (SameSysAgent.State == 1 && !SameSysAgent.MyUId.IsNullOrEmpty()) { //帐户变动记录 string Remark = string.Format("{0}[{1}]", "直通车同级分润", O.TNum); string SP_Ret = Entity.SP_UsersMoney(SameSysAgent.MyUId, O.TNum, SameMoney, 8, Remark, 0); if (SP_Ret != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", SameSysAgent.MyUId, O.TNum, 8, SameMoney, SP_Ret), "SP_UsersMoney"); } //记录清分记录 OrderProfitLog OPL = new OrderProfitLog(); OPL.AddTime = DateTime.Now; OPL.UId = SameSysAgent.MyUId; OPL.Agent = SameSysAgent.Id; OPL.TNum = O.TNum; OPL.LogType = 3; OPL.Tier = p.Tier; OPL.Profit = SameMoney; OPL.Amoney = O.Amoney; OPL.OrderType = 21; OPL.UserName = OrderUser.UserName; Entity.OrderProfitLog.AddObject(OPL); O.SameGet = SameMoney; } } } #endregion if (!p.MyUId.IsNullOrEmpty() && AIdPayGetMy > 0)//某一级未绑定钱包,钱留给系统^-^ { //获取钱包信息 //为了减少系统开销,这里不读取用户信息——By Lin //Users Users = Entity.Users.FirstOrDefault(n => n.Id == p.MyUId); if (p.MyUId > 0) { //帐户变动记录 string Remark = string.Format("{0}[{1}]", TypeString, O.TNum); string SP_Ret = Entity.SP_UsersMoney(p.MyUId, O.TNum, AIdPayGetMy, 8, Remark, 0); if (SP_Ret != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", p.MyUId, O.TNum, 8, AIdPayGetMy, SP_Ret), "SP_UsersMoney"); } //记录清分记录 OrderProfitLog OPL = new OrderProfitLog(); OPL.AddTime = DateTime.Now; OPL.UId = p.MyUId; OPL.Agent = p.Id; OPL.TNum = O.TNum; OPL.LogType = 2; OPL.Tier = p.Tier; OPL.Profit = AIdPayGetMy; OPL.Amoney = O.Amoney; OPL.OrderType = 21; OPL.UserName = OrderUser.UserName; Entity.OrderProfitLog.AddObject(OPL); sumpayget = sumpayget + AIdPayGetMy; } } } tier++; } Entity.SaveChanges(); //统计所有分润 //decimal Profit = 0; //if (Entity.OrderProfitLog.Count(n => n.TNum == O.TNum) > 0) //{ // Profit = Entity.OrderProfitLog.Where(n => n.TNum == O.TNum).Sum(n => n.Profit);//是否会为空的情况 //} O.AgentPayGet = sumpayget;//记录总佣金支出,以便总系统计算利润 O.AgentState = 1; Entity.SaveChanges(); #endregion } if (Type == 2) { //没有退款,分润也不需要写 } return(O); }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[UsersInfo]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } //JObject pp = (JObject)p; Users Users = new Users(); Users = JsonToObject.ConvertJsonToModel(Users, json); if (Users.Token.IsNullOrEmpty()) { // DataObj.OutError("1000"); return; } Users = Entity.Users.FirstOrDefault(n => n.Token == Users.Token); if (Users == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (Users.State != 1) { DataObj.OutError("2003"); return; } //=========================================================== if (!Equipment.SoftVer.IsNullOrEmpty()) { Version v1 = new Version(Equipment.SoftVer);//当前版本 Version v2 = new Version("1.0"); SysAgent SysAgent = new SysAgent(); bool IsTeiPai = false; //-------------------------------------------------------- //判断是否是贴牌 if (!Users.Id.IsNullOrEmpty()) { SysAgent = Entity.SysAgent.FirstOrDefault(n => n.Id == Users.Agent && n.State == 1); if (SysAgent != null) { SysAgent = SysAgent.GetTopAgent(Entity); if (SysAgent != null) { if (SysAgent.IsTeiPai == 1) { IsTeiPai = true; } } } } //-------------------------------------------------------- if (Equipment.RqType.ToLower() == "apple") { //苹果 if (!IsTeiPai)//好付 { v2 = new Version("8.0.1"); } else//贴牌 { v2 = new Version("6.0.0"); } } else if (Equipment.RqType.ToLower() == "android") { //安卓 if (!IsTeiPai)//好付 { v2 = new Version("8.0.2"); } else //贴牌 { v2 = new Version("6.0.0"); } } if (v1 >= v2) { if (Users.IfCanIn == 0) { //已经是最新版 Users.IfCanIn = 1; Users.AutoBao = 0; Entity.SaveChanges(); } } } //=========================================================== Users.AgentTel = ""; string CashName = "UsersAgentTel" + Users.Agent.ToString(); if (HasCache) { Users.AgentTel = CacheBuilder.EntityCache.Get(CashName, null) as string; } if (Users.AgentTel.IsNullOrEmpty()) { if (!Users.Agent.IsNullOrEmpty()) { SysAgent SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == Users.Agent); Users.AgentTel = SysAgent.Tel; } if (Users.AgentTel.IsNullOrEmpty()) { SysSet SysSet = Entity.SysSet.FirstOrNew(); Users.AgentTel = SysSet.Tel; } if (HasCache && !Users.AgentTel.IsNullOrEmpty()) { CacheBuilder.EntityCache.Remove(CashName, null); CacheBuilder.EntityCache.Add(CashName, Users.AgentTel, DateTime.Now.AddMinutes(60), null); } } if (Users.Pic.IsNullOrEmpty()) { Users.Pic = "none.png"; } Users.Pic = Utils.ImageUrl("UsersPic", Users.Pic, AppImgPath); Users.CardPic = Utils.ImageUrl("Users", Users.CardPic, AppImgPath); Users.CardFace = Utils.ImageUrl("Users", Users.CardFace, AppImgPath); Users.CardBack = Utils.ImageUrl("Users", Users.CardBack, AppImgPath); int BankNum = Entity.UserCard.Count(n => n.UId == Users.Id && n.State == 1 && n.Type == 1); Users.BankNum = BankNum; CashName = "UsersMsgCount" + Users.Id.ToString(); string count = string.Empty; if (HasCache) { count = CacheBuilder.EntityCache.Get(CashName, null) as string; } if (count == string.Empty || count == null) { string uid = string.Format(",{0},", Users.Id); int Count = Entity.MsgUser.Count(n => (n.UId == Users.Id && n.State == 1) || (n.UId == 0 && !n.ReadUsers.Contains(uid) && !n.DeleteUsers.Contains(uid) && n.AddTime > Users.AddTime && (n.SendUsers.Contains(uid) || n.SendUsers == null || n.SendUsers == "") && n.State > 0)); Users.MsgCount = Count; count = Count.ToString(); if (HasCache) { CacheBuilder.EntityCache.Remove(CashName, null); CacheBuilder.EntityCache.Add(CashName, count, DateTime.Now.AddMinutes(6), null); } } else { Users.MsgCount = Int32.Parse(count); } //AutoCashBank,AutoBank CashName = "UsersAutoBank" + Users.Id.ToString(); string AutoBank = string.Empty; if (!Users.AutoCashBank.IsNullOrEmpty() && Users.AutoCash == 1) { if (HasCache) { AutoBank = CacheBuilder.EntityCache.Get(CashName, null) as string; } if (AutoBank.IsNullOrEmpty()) { UserCard UserCard = Entity.UserCard.FirstOrDefault(n => n.Id == Users.AutoCashBank && n.UId == Users.Id && n.State == 1); if (UserCard != null) { AutoBank = UserCard.Card; if (HasCache) { CacheBuilder.EntityCache.Remove(CashName, null); CacheBuilder.EntityCache.Add(CashName, AutoBank, DateTime.Now.AddMinutes(1), null); } } } } Users.AutoBank = AutoBank; if (Users.Amount < 0) { Users.Amount = 0; } //输出格式化钱 Users.Amount = Users.Amount.Floor(); Users.Frozen = Users.Frozen.Floor(); var BaoConfig = Entity.BaoConfig.FirstOrNew(); Users.GetCost = BaoConfig.GetCost; Users.YearPer = BaoConfig.YearPer; if (Users.CardPic.IsNullOrEmpty() && Users.CardType == 1) { Users.IsAnewUpImg = 1; } SysMoneySet SysMoneySet = Entity.SysMoneySet.FirstOrNew(); Users.VipPrice = SysMoneySet.VipPrice; //Users.Cols = "Id,UserName,NeekName,TrueName,Mobile,QQ,Email,Address,Amount,Frozen,CardId,Pic,CardStae,CardFace,CardBack,CardPic,MiBao,CardNum"; Users.Cols = "Id,UserName,NeekName,TrueName,Mobile,QQ,Email,Address,Amount,Frozen,CardId,Pic,CardStae,CardFace,CardBack,CardPic,MiBao,Token,CardNum,CardRemark,BankNum,MsgCount,AgentTel,YYOpenState,InTypeMobile,InTypePC,T0Times,T1Times,AutoBao,AutoCash,AutoCashMoney,AutoCashBank,AutoBank,GetCost,YearPer,YAmount,AllRec,LastRec,IsAnewUpImg,IsVip,VipPrice"; DataObj.Data = Users.OutJson(); DataObj.Code = "0000"; DataObj.OutString(); }
/// <summary> /// 分润 /// </summary> /// <param name="O"></param> /// <param name="Entity"></param> /// <returns></returns> public static JobOrders PayAgent(this JobOrders JobOrders, LokFuEntity Entity) { SysSet SysSet = Entity.SysSet.FirstOrNew(); if (JobOrders.AgentId.IsNullOrEmpty()) {//代理商没有情况下 return(JobOrders); } //if (JobOrders.AgentGet.IsNullOrEmpty()) //{//没有佣金 // return JobOrders; //} Users OrderUser = Entity.Users.FirstOrDefault(n => n.Id == JobOrders.UId);//读取订单用户 #region 结算 if (JobOrders.AgentState != 0) {//已结算,不能重复结算 return(JobOrders); } JobOrders.AgentState = 1; Entity.SaveChanges(); //获取各级代理商 SysAgent SysAgent = new SysAgent(); SysAgent.Id = JobOrders.AgentId; IList <SysAgent> SysAgentList = SysAgent.GetAgentsById(Entity); decimal AIdPayGet = 0; //总佣金 decimal AgengtGet = 0; //分润 decimal Amount = JobOrders.TotalMoney - JobOrders.Poundage; int tier = 1; foreach (var p in SysAgentList) { if (p.State == 1) { decimal PayGet = SysAgent.GetJobSplit(p.Tier, Entity); AIdPayGet = Amount * PayGet;//当前级总佣金,需获取是否有下级拆分他的佣金 AIdPayGet = AIdPayGet.Floor(); decimal AIdPayGetNext = 0;//定义下一级佣金 if (tier < SysAgentList.Count) { //不是最后一级,需计算下级拆分金额 SysAgent SysAgentNext = SysAgentList.Skip(tier).Take(1).FirstOrDefault(); if (SysAgentNext != null) { if (SysAgentNext.State == 1) {//下级状态有效时才计算,如关闭了则不正计算下级 decimal PayGetNext = SysAgent.GetJobSplit(SysAgentNext.Tier, Entity); AIdPayGetNext = Amount * PayGetNext; AIdPayGetNext = AIdPayGetNext.Floor(); } } } decimal AIdPayGetMy = AIdPayGet - AIdPayGetNext; //当前级所能得到真实佣金 decimal UsersGetAll = 0; //定义所有用户佣金 //最后一级代理商 处理用户分润 #region 最后一级代理商 处理用户分润 if (tier == SysAgentList.Count) { int MaxLevel = SysSet.GlobaPromoteMaxLevel; //有用户分润,开始执行用户分润 Users Users = new Users(); Users.Id = JobOrders.UId; //获取用户各级关系,最大级不超过用户配置级数。返回数据包含当前用户,当前用户级数标识Tier为0 IList <Users> UsersList = Users.GetUsersById(Entity, MaxLevel); int UsersTier = 1; foreach (var U in UsersList.Where(n => n.Tier > 0 && n.State == 1)) { //UsersGetAll //UserPromoteGet UserPromoteGet = UserPromoteGetList.FirstOrDefault(n => n.PromoteLevel == U.Tier); //if (UserPromoteGet != null) //{ decimal PromoteGet = Users.GetUsersJobSplit(Entity, U.Tier); decimal UsersGet = Amount * PromoteGet; UsersGet = UsersGet.Floor(); if (UsersTier == 1) { UsersGetAll = UsersGet; } //UsersGetSum += UsersGet; if (UsersTier < UsersList.Count) { //不是最后一级,需计算下级拆分金额 byte nexttier = (byte)(U.Tier + 1); Users UsersNext = UsersList.FirstOrDefault(o => o.Tier == nexttier); if (UsersNext != null) { if (UsersNext.State == 1) {//下级状态有效时才计算,如关闭了则不正计算下级 decimal PayGetNext = Users.GetUsersJobSplit(Entity, UsersNext.Tier); decimal UserPayGetNext = Amount * PayGetNext; UserPayGetNext = UserPayGetNext.Floor(); //减掉下级用户的金额 UsersGet = UsersGet - UserPayGetNext; } } } if (UsersGet > 0) { //帐户变动记录 string Remark = string.Format("{0}[{1}]", "卡管家分润", JobOrders.TNum); string SP_Ret = Entity.SP_UsersMoney(U.Id, JobOrders.TNum, UsersGet, 8, Remark, 0); if (SP_Ret != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", U.Id, JobOrders.TNum, 8, UsersGet, SP_Ret), "SP_UsersMoney"); } //记录清分记录 OrderProfitLog OPL = new OrderProfitLog(); OPL.AddTime = DateTime.Now; OPL.UId = U.Id; OPL.Agent = 0; OPL.TNum = JobOrders.TNum; OPL.LogType = 1; OPL.Tier = U.Tier; OPL.Profit = UsersGet; OPL.Amoney = Amount; OPL.OrderType = 31; OPL.UserName = OrderUser.UserName; Entity.OrderProfitLog.AddObject(OPL); //=====增加统计记录===== //ShareTotal ShareTotal = Entity.ShareTotal.FirstOrDefault(n => n.UId == U.Id && n.Tier == U.Tier); //if (ShareTotal == null) //{ // ShareTotal = new ShareTotal(); // ShareTotal.UId = U.Id; // ShareTotal.AddTime = DateTime.Now; // ShareTotal.ShareNum = 0; // ShareTotal.Amount = JobOrders.Amount; // ShareTotal.Profit = UsersGet; // ShareTotal.Tier = U.Tier; // Entity.ShareTotal.AddObject(ShareTotal); //} //else //{ // ShareTotal.Amount += JobOrders.Amount; // ShareTotal.Profit += UsersGet; //} AgengtGet = AgengtGet + UsersGet; } UsersTier++; // } } } #endregion //20160704 Lin 增加统计用户拆分多少,最后一级代理金额减掉这部分金额即可。 //解决用户分剩下钱规系统逻辑问题 AIdPayGetMy = AIdPayGetMy - UsersGetAll; #region 最后一级代理商 处理同级分润 if (tier == SysAgentList.Count) { if (!p.SameAgent.IsNullOrEmpty() && AIdPayGet > 0) { SysMoneySet SysMoneySet = Entity.SysMoneySet.FirstOrNew(); decimal SameMoney = AIdPayGet * SysMoneySet.SameAgent; SameMoney = SameMoney.Floor(); SysAgent SameSysAgent = Entity.SysAgent.FirstOrNew(o => o.Id == p.SameAgent); if (SameSysAgent.State == 1 && !SameSysAgent.MyUId.IsNullOrEmpty()) { //帐户变动记录 string Remark = string.Format("{0}[{1}]", "卡管家同级分润", JobOrders.TNum); string SP_Ret = Entity.SP_UsersMoney(SameSysAgent.MyUId, JobOrders.TNum, SameMoney, 8, Remark, 0); if (SP_Ret != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", SameSysAgent.MyUId, JobOrders.TNum, 8, SameMoney, SP_Ret), "SP_UsersMoney"); } //记录清分记录 OrderProfitLog OPL = new OrderProfitLog(); OPL.AddTime = DateTime.Now; OPL.UId = SameSysAgent.MyUId; OPL.Agent = SameSysAgent.Id; OPL.TNum = JobOrders.TNum; OPL.LogType = 3; OPL.Tier = p.Tier; OPL.Profit = SameMoney; OPL.Amoney = Amount; OPL.OrderType = 31; OPL.UserName = OrderUser.UserName; Entity.OrderProfitLog.AddObject(OPL); JobOrders.SameGet = SameMoney; } } } #endregion if (!p.MyUId.IsNullOrEmpty() && AIdPayGetMy > 0)//某一级未绑定钱包,钱留给系统^-^ { //获取钱包信息 //为了减少系统开销,这里不读取用户信息——By Lin //Users Users = Entity.Users.FirstOrDefault(n => n.Id == p.MyUId); if (p.MyUId > 0) { //帐户变动记录 string Remark = string.Format("{0}[{1}]", "卡管家分润", JobOrders.TNum); string SP_Ret = Entity.SP_UsersMoney(p.MyUId, JobOrders.TNum, AIdPayGetMy, 8, Remark, 0); if (SP_Ret != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", p.MyUId, JobOrders.TNum, 8, AIdPayGetMy, SP_Ret), "SP_UsersMoney"); } //记录清分记录 OrderProfitLog OPL = new OrderProfitLog(); OPL.AddTime = DateTime.Now; OPL.UId = p.MyUId; OPL.Agent = p.Id; OPL.TNum = JobOrders.TNum; OPL.LogType = 2; OPL.Tier = p.Tier; OPL.Profit = AIdPayGetMy; OPL.Amoney = Amount; OPL.OrderType = 31; OPL.UserName = OrderUser.UserName; Entity.OrderProfitLog.AddObject(OPL); AgengtGet = AgengtGet + AIdPayGetMy; } } } tier++; } Entity.SaveChanges(); //统计所有分润 //decimal Profit = 0; //if (Entity.OrderProfitLog.Count(n => n.TNum == JobOrders.TNum) > 0) //{ // Profit = Entity.OrderProfitLog.Where(n => n.TNum == JobOrders.TNum).Sum(n => n.Profit);//是否会为空的情况 //} JobOrders.AgentGet = AgengtGet;//记录总佣金支出,以便总系统计算利润 decimal RunGet = Entity.JobItem.Where(o => o.TNum == JobOrders.TNum && o.RunType == 1).Sum(o => o.RunGet); JobOrders.HFGet = JobOrders.Poundage - AgengtGet - RunGet - JobOrders.CashGet; JobOrders.AgentTime = DateTime.Now; Entity.SaveChanges(); #endregion return(JobOrders); }