/// <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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        //直通车交易分润
        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();
        }
Example #8
0
        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();
        }
Example #9
0
        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);
        }