示例#1
0
        public ActionResult FastSet()
        {
            FastConfig FastConfig = Entity.FastConfig.FirstOrDefault();

            ViewBag.FastConfig  = FastConfig;
            ViewBag.FastSetSave = this.checkPower("FastSetSave");
            return(View());
        }
示例#2
0
        public void FastSetSave(FastConfig FastConfig)
        {
            FastConfig.UserCost = FastConfig.UserCost / 1000;
            FastConfig baseFastConfig = Entity.FastConfig.FirstOrDefault();

            baseFastConfig = Request.ConvertRequestToModel <FastConfig>(baseFastConfig, FastConfig);
            Entity.SaveChanges();
            Response.Redirect("/Manage/SysSet/FastSet.html");
        }
        public void Execute(IJobExecutionContext context)
        {
            string JobName = "FastProfit";
            string CanRun  = ConfigurationManager.AppSettings["Run" + JobName].ToString();

            if (CanRun == "true")
            {
                if (!IsRun)
                {
                    LokFuEntity Entity = new LokFuEntity();
                    IsRun = true;
                    try
                    {
                        Log.Write(JobName + "任务开始执行!");
                        //-------------------------------------------------------
                        #region 任务主体
                        FastConfig FastConfig = Entity.FastConfig.FirstOrNew();
                        DateTime   eDate      = DateTime.Now.AddSeconds(-10);
                        //只读取用户结算10s后的数据
                        //用户已结算成功,且结算时间小于10秒前,分润方式为自动分润,代理商未分润
                        IList <FastOrder> List = Entity.FastOrder.Where(n => n.AgentWay == 1 && n.AgentState == 0 && n.UserState == 1 && n.UserTime < eDate).ToList();
                        if (FastConfig.AgentWay == 1)
                        {
                            foreach (var p in List)
                            {
                                p.PayAgent(Entity, 1);
                            }
                        }
                        else
                        {
                            Log.WriteLog("当前为人工结算!", JobName);
                        }
                        #endregion
                        //-------------------------------------------------------
                        Log.Write(JobName + "任务执行结束![共计" + List.Count + "条]");
                    }
                    catch (Exception Ex)
                    {
                        Log.Write(JobName + "任务执行过程出错!", Ex);
                    }
                    IsRun = false;
                }
                else
                {
                    Log.Write(JobName + "任务还在执行中!");
                }
            }
        }
示例#4
0
        public static FastUser AddMer(FastUser FastUser, FastConfig FastConfig, LokFuEntity Entity)
        {
            if (FastUser.Card.IsNullOrEmpty())
            {
                //未绑定银行卡
                return(FastUser);
            }
            //批量处理所有接口
            IList <FastPayWay> FastPayWayList = Entity.FastPayWay.Where(n => n.State == 1).OrderBy(n => n.Sort).ToList();

            foreach (var p in FastPayWayList)
            {
                try
                {
                    AddMer(FastUser, p, FastConfig, Entity);
                }
                catch (Exception e)
                {
                    Utils.WriteLog("/FastPay/AddMer" + e.Message + e.StackTrace, "bug", "API");
                }
            }
            return(FastUser);
        }
示例#5
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (!Data.IsNullOrEmpty())
            {
                JObject json = new JObject();
                try
                {
                    json = (JObject)JsonConvert.DeserializeObject(Data);
                }
                catch (Exception Ex)
                {
                    Log.Write("[Receipt]:", "【Data】" + Data, Ex);
                }
                if (json == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                var Users = new Users();
                Users = JsonToObject.ConvertJsonToModel(Users, json);
                Users BaseUsers = Entity.Users.FirstOrDefault(o => o.Token == Users.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;
                //}

                //获取直通车配置及用户直通车配置
                bool     IsBindingFast = true;
                FastUser FastUser      = Entity.FastUser.FirstOrDefault(n => n.UId == BaseUsers.Id);
                if (FastUser == null)
                {
                    //开通帐户
                    FastUser          = new FastUser();
                    FastUser.UId      = BaseUsers.Id;
                    FastUser.TrueName = BaseUsers.TrueName;
                    FastUser.CardId   = BaseUsers.CardId;
                    FastUser.AddTime  = DateTime.Now;
                    Entity.FastUser.AddObject(FastUser);
                    Entity.SaveChanges();
                }

                if (FastUser.Card.IsNullOrEmpty())
                {
                    IsBindingFast = false;
                }
                else
                {
                    FastConfig FastConfig = Entity.FastConfig.FirstOrNew();
                    //===========================================================
                    //这里要处理商户入驻
                    BusFastPay.AddMer(FastUser, FastConfig, this.Entity);
                    //===========================================================
                }

                var result = new Receipt2Model();

                result.FastUser = new FastUserModel()
                {
                    card = FastUser.Card,
                    bank = FastUser.Bank,
                    bin  = FastUser.Bin,
                };
                List <PayWayModel> PayWayModelList = new List <PayWayModel>();
                SysSet             SysSet          = Entity.SysSet.FirstOrDefault();

                #region 整合数据
                DateTime now = new DateTime(1990, 01, 01, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);

                #region 交易通道
                var SCquery = Entity.SysControl.Where(o => AllowTag.Contains(o.Tag) && (o.State == 1 || o.State == 2) && ((((now >= o.STime && now <= o.ETime && o.STime < o.ETime) || ((now >= o.STime || now <= o.ETime) && o.STime > o.ETime)) && o.TimeType == 1) || o.TimeType == 0));
                if (SysSet.LagEntry == 0)
                {
                    SCquery = SCquery.Where(o => o.LagEntryNum == 0);
                }
                List <SysControl> SysControlList  = SCquery.OrderBy(o => o.Sort).ToList();
                string            UserPayCashName = "UserPay_" + BaseUsers.Id.ToString() + "_" + Equipment.RqType;
                List <UserPay>    UserPayList     = null;

                if (HasCache)
                {
                    UserPayList = CacheBuilder.EntityCache.Get(UserPayCashName, null) as List <UserPay>;
                    if (UserPayList == null)
                    {
                        UserPayList = Entity.UserPay.Where(n => n.UId == BaseUsers.Id).ToList();
                        CacheBuilder.EntityCache.Remove(UserPayCashName, null);
                        CacheBuilder.EntityCache.Add(UserPayCashName, UserPayList, DateTime.Now.AddHours(1), null);
                    }
                }
                else
                {
                    UserPayList = Entity.UserPay.Where(n => n.UId == BaseUsers.Id).ToList();
                }

                SysControlList.ForEach(o =>
                {
                    var PayWayModel = new PayWayModel()
                    {
                        id          = o.Id,
                        name        = o.CName,
                        cost        = o.LagEntryDay > 0 ? 0m : (decimal)UserPayList.Where(x => x.PId == o.PayWay).Select(x => x.Cost).FirstOrNew(),
                        s_num       = o.SNum,
                        e_num       = o.ENum,
                        state       = o.State,
                        sort        = o.Sort,
                        tag         = o.Tag,
                        lagentryday = o.LagEntryDay,
                        paywaytype  = 1,
                        cash        = 0,
                        payway      = o.PayWay,
                    };
                    PayWayModelList.Add(PayWayModel);
                });
                #endregion

                #region 直通车通道
                if (IsBindingFast)
                {
                    List <FastPayWay>  FastPayWayList      = Entity.FastPayWay.Where(o => o.State == 1 && o.ManE == 0 && ((now >= o.STime && now <= o.ETime && o.TimeType == 1) || o.TimeType == 0)).OrderBy(o => o.Sort).ToList();
                    string             FastUserPayCashName = "FastUserPay_" + BaseUsers.Id.ToString() + "_" + Equipment.RqType;
                    List <FastUserPay> FastUserPayList     = null;
                    if (HasCache)
                    {
                        FastUserPayList = CacheBuilder.EntityCache.Get(FastUserPayCashName, null) as List <FastUserPay>;
                        if (FastUserPayList == null)
                        {
                            FastUserPayList = Entity.FastUserPay.Where(n => n.UId == BaseUsers.Id).ToList();
                            CacheBuilder.EntityCache.Remove(FastUserPayCashName, null);
                            CacheBuilder.EntityCache.Add(FastUserPayCashName, FastUserPayList, DateTime.Now.AddHours(1), null);
                        }
                    }
                    else
                    {
                        FastUserPayList = Entity.FastUserPay.Where(n => n.UId == BaseUsers.Id).ToList();
                    }

                    FastPayWayList.ForEach(o =>
                    {
                        var tempList = new List <PayWayModel>();
                        if (o.HasAliPay == 1)
                        {
                            tempList.Add(new PayWayModel()
                            {
                                tag = "Alipay", name = "支付宝" + o.ShowName, s_num = o.SNum2, e_num = o.ENum2, payway = 1
                            });
                        }
                        if (o.HasWeiXin == 1)
                        {
                            tempList.Add(new PayWayModel()
                            {
                                tag = "WeiXin", name = "微信" + o.ShowName, s_num = o.SNum, e_num = o.ENum, payway = 2
                            });
                        }
                        if (o.HasBank == 1)
                        {
                            tempList.Add(new PayWayModel()
                            {
                                tag = "RecMoneyLocal", name = "银联" + o.ShowName, s_num = o.BankSNum, e_num = o.BankENum, payway = 3
                            });
                        }
                        foreach (var item in tempList)
                        {
                            FastUserPay FastUserPay = FastUserPayList.FirstOrNew(x => x.PayWay == o.Id);
                            item.id = o.Id;
                            //2017-11-12 通道支持微信/支付宝/银联不同费率
                            if (item.payway == 1)
                            {
                                item.cost = FastUserPay.UserCost2;
                            }
                            if (item.payway == 2)
                            {
                                item.cost = FastUserPay.UserCost;
                            }
                            if (item.payway == 3)
                            {
                                item.cost = FastUserPay.UserCost3;
                            }
                            item.cash = FastUserPay.UserCash;

                            item.state      = o.State;
                            item.sort       = o.Sort;
                            item.paywaytype = 2;

                            if (o.GroupType == "D0")
                            {
                                item.lagentryday = 0;
                            }
                            else if (o.GroupType == "T1")
                            {
                                item.lagentryday = 1;
                            }
                        }
                        ;
                        PayWayModelList.AddRange(tempList);
                    });
                }
                #endregion

                PayWayModelList = PayWayModelList.OrderBy(n => n.sort).ToList();//排序
                //一条通道都没有的情况处理
                //if (PayWayModelList.Count == 0)
                //{
                //    var none = new PayWayModel()
                //    {
                //        cash = 2,
                //        cost = 0.006m,
                //        s_num = 1000,
                //        e_num = 20000,
                //        id = 99999,
                //        lagentryday = 0,
                //        payway = 0,
                //        paywaytype = 2,
                //        sort = 0,
                //        tag = "RecMoneyLocal",
                //        state = 0,
                //        name = "银联",

                //    };
                //    PayWayModelList.Add(none);
                //}

                result.UserPay = PayWayModelList;
                #endregion

                DataObj.Data = JsonConvert.SerializeObject(result);
                DataObj.Code = "0000";
                DataObj.OutString();
            }
        }
示例#6
0
        public static FastUser AddMer(FastUser FastUser, FastPayWay FastPayWay, FastConfig FastConfig, LokFuEntity Entity)
        {
            if (FastUser.Card.IsNullOrEmpty())
            {
                //未绑定银行卡
                return(FastUser);
            }
            FastUserPay FastUserPay = Entity.FastUserPay.FirstOrDefault(n => n.UId == FastUser.UId && n.PayWay == FastPayWay.Id);

            if (FastUserPay == null)
            {
                FastUserPay        = new FastUserPay();
                FastUserPay.UId    = FastUser.UId;
                FastUserPay.PayWay = FastPayWay.Id;
                if (FastPayWay.DllName == "HFPay")
                {
                    //不需要一户一码直接开通商户
                    FastUserPay.MerId     = "HFPay" + FastUserPay.UId.ToString();
                    FastUserPay.MerState  = 1;
                    FastUserPay.CardState = 1;
                    FastUserPay.BusiState = 1;
                }
                else
                {
                    FastUserPay.MerId     = "";
                    FastUserPay.MerState  = 2; //状态 0锁定 1正常 2待提交 3审核中 4审核失败
                    FastUserPay.CardState = 2; //状态 0锁定 1正常 2待提交 3审核中 4审核失败
                    FastUserPay.BusiState = 2; //状态 1正常 2待提交 3审核中 4审核失败
                }
                FastUserPay.CardName = FastUser.TrueName;
                FastUserPay.Bank     = FastUser.Bank;
                FastUserPay.Card     = FastUser.Card;
                FastUserPay.Bin      = FastUser.Bin;
                //2017-11-22 修改成取通道配置,且分别计算微信/支付宝/银联
                //FastUserPay.UserCost = FastConfig.UserCost;
                FastUserPay.UserCost  = FastPayWay.InCost;
                FastUserPay.UserCost2 = FastPayWay.InCost2;
                FastUserPay.UserCost3 = FastPayWay.InCost3;


                if (FastPayWay.GroupType == "T1")
                {
                    FastUserPay.UserCash = 0;
                }
                else
                {
                    FastUserPay.UserCash = FastConfig.UserCash;
                }
                FastUserPay.AddTime = DateTime.Now;
                Entity.FastUserPay.AddObject(FastUserPay);
                Entity.SaveChanges();
            }
            else
            {
                bool Save = false;
                if (FastUserPay.CardName != FastUser.TrueName)
                {
                    FastUserPay.CardName = FastUser.TrueName;
                    Save = true;
                }
                if (FastUserPay.Bank != FastUser.Bank)
                {
                    FastUserPay.Bank = FastUser.Bank;
                    Save             = true;
                }
                if (FastUserPay.Card != FastUser.Card)
                {
                    FastUserPay.Card = FastUser.Card;
                    Save             = true;
                }
                if (FastUserPay.Bin != FastUser.Bin)
                {
                    FastUserPay.Bin = FastUser.Bin;
                    Save            = true;
                }
                if (Save)
                {
                    Entity.SaveChanges();
                }
            }
            string[] PayConfigArr = FastPayWay.QueryArray.Split(',');
            if (FastPayWay.DllName == "HFJSPay")
            {
                #region 结算系统
                if (PayConfigArr.Length == 3)
                {
                    string Code       = PayConfigArr[0];
                    string CodeKey    = PayConfigArr[1];
                    string PayWayCode = PayConfigArr[2];
                    #region 进件
                    if (FastUserPay.MerState == 2 || FastUserPay.MerState == 4)
                    {
                        UserCard UserCard = Entity.UserCard.FirstOrNew(n => n.Card == FastUserPay.Card && n.UId == FastUser.UId);
                        string   Mobile   = UserCard.Mobile;
                        Users    Users    = Entity.Users.FirstOrNew(n => n.Id == FastUser.UId);
                        if (Mobile.IsNullOrEmpty())
                        {
                            Mobile = Users.UserName;
                        }
                        fastuseraddModel model = new fastuseraddModel()
                        {
                            code          = Code,
                            mchid         = "HF" + Users.Id.ToString(),
                            mchname       = Users.NeekName,
                            truename      = Users.TrueName,
                            cardno        = Users.CardId,
                            accountcard   = UserCard.Card,
                            accountbin    = UserCard.Bin,
                            accountmobile = UserCard.Mobile
                        };
                        fastuserResult fastuserResult = HFJSTools.fastuseradd(model, CodeKey);
                        if (fastuserResult.respcode == "00")
                        {
                            bool   RunTrue = true;
                            string Msg     = "";
                            if (fastuserResult.respmsg == "存在相同外部商户号")
                            {
                                //这里面要修改一下结算卡
                                fastuseraddModel modelEdit = new fastuseraddModel()
                                {
                                    code          = Code,
                                    merid         = fastuserResult.merid,
                                    cardno        = Users.CardId,
                                    accountcard   = UserCard.Card,
                                    accountbin    = UserCard.Bin,
                                    accountmobile = UserCard.Mobile
                                };
                                fastuserResult fastuserresult = HFJSTools.fastuseredit(modelEdit, CodeKey);
                                if (fastuserresult.respcode != "00")
                                {
                                    Msg     = fastuserresult.respmsg;
                                    RunTrue = false;
                                }
                            }
                            if (RunTrue)
                            {
                                if (fastuserResult.state == 1)
                                {
                                    FastUserPay.MerState  = 1;
                                    FastUserPay.CardState = 1;//这里已绑定结算卡
                                    FastUserPay.MerId     = fastuserResult.merid;
                                    FastUserPay.MerKey    = fastuserResult.merkey;
                                }
                                else if (fastuserResult.state == 2)
                                {
                                    FastUserPay.MerId    = fastuserResult.merid;
                                    FastUserPay.MerKey   = fastuserResult.merkey;
                                    FastUserPay.MerState = 3;
                                }
                                else
                                {
                                    FastUserPay.MerState = 4;
                                    FastUserPay.MerMsg   = fastuserResult.respcode + "[" + fastuserResult.respmsg + "]";
                                }
                            }
                            else
                            {
                                FastUserPay.MerState = 4;
                                FastUserPay.MerMsg   = Msg;
                            }
                        }
                        else
                        {
                            FastUserPay.MerState = 4;
                            FastUserPay.MerMsg   = fastuserResult.respcode + "[" + fastuserResult.respmsg + "]";
                        }
                        Entity.SaveChanges();
                    }
                    #endregion
                    #region 开通道
                    if (FastUserPay.MerState == 1 && (FastUserPay.BusiState == 2 || FastUserPay.BusiState == 4))
                    {
                        decimal Cost  = FastPayWay.InCost3;//刷卡手续费
                        Users   Users = Entity.Users.FirstOrNew(n => n.Id == FastUser.UId);
                        if (Users.IsVip == 1)
                        {
                            Cost = 0.005M;
                            FastUserPay.UserCost3 = 0.005M;
                        }
                        decimal            Cash = FastConfig.UserCash;//还款手续费
                        userspayopenbModel userspayopenbModel = new userspayopenbModel()
                        {
                            merid      = FastUserPay.MerId,
                            paywaycode = PayWayCode,
                            code       = Code,
                            bankcost   = Cost,
                            //surcharge = 0,
                            cash        = Cash,
                            bankcostmin = 0,
                            bankcostmax = 9999999
                        };
                        fastuserResult fastuserResult = HFJSTools.userspayopen(userspayopenbModel, CodeKey);
                        if (fastuserResult.respcode == "00")
                        {
                            if (fastuserResult.state == 1)
                            {
                                FastUserPay.BusiState = 1;
                            }
                            else
                            {
                                FastUserPay.BusiState = 4;
                                FastUserPay.BusiMsg   = fastuserResult.respcode + "[" + fastuserResult.respmsg + "]";
                            }
                        }
                        else
                        {
                            FastUserPay.BusiState = 4;
                            FastUserPay.BusiMsg   = fastuserResult.respcode + "[" + fastuserResult.respmsg + "]";
                        }
                        Entity.SaveChanges();
                    }

                    #endregion
                }
                #endregion
            }
            return(FastUser);
        }
        /// <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);
        }
示例#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("[CardReg]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            Card Card = new Card();

            Card = JsonToObject.ConvertJsonToModel(Card, json);

            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Card.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;
            }
            Card = Entity.Card.FirstOrDefault(n => n.Code == Card.Code && n.PasWd == Card.PasWd && n.Auto == 1);
            if (Card == null)
            {
                DataObj.OutError("5003");
                return;
            }
            if (Card.State != 1)
            {
                string StateStr = string.Empty;
                switch (Card.State)
                {
                case 2:
                    StateStr = "已授权";
                    break;

                case 3:
                    StateStr = "已使用";
                    break;

                case 0:
                    StateStr = "已失效";
                    break;
                }

                DataObj.Msg = "激活码" + StateStr;
                DataObj.OutError("5003");
                return;
            }
            if (Card.AId.IsNullOrEmpty())
            {
                DataObj.OutError("5002");
                return;
            }
            if (Card.AdminId.IsNullOrEmpty())
            {
                DataObj.OutError("5002");
                return;
            }
            Card.State        = 2;//使用中
            Card.PUId         = baseUsers.Id;
            baseUsers.Agent   = Card.AId;
            baseUsers.CardNum = Card.Code;
            baseUsers.IsVip   = 1;

            //修改到app费率
            IList <UserPay> UserPayList = Entity.UserPay.Where(o => o.UId == baseUsers.Id).ToList();

            foreach (var temp in UserPayList)
            {
                if (temp.Cost > 0.005)
                {
                    temp.Cost = 0.005;
                }
            }
            // Entity.SaveChanges();


            //修改用户通道费率

            FastUserPay FastUserPay = Entity.FastUserPay.FirstOrDefault(o => o.UId == baseUsers.Id && o.BusiState == 1 && o.MerState == 1 && o.CardState == 1);

            if (FastUserPay != null)
            {
                FastPayWay         FastPayWay         = Entity.FastPayWay.FirstOrNew(o => o.State == 1);
                FastConfig         FastConfig         = Entity.FastConfig.FirstOrNew();
                decimal            Cost               = 0.005M;              //费率
                decimal            Cash               = FastConfig.UserCash; //手续费
                string[]           PayConfigArr       = FastPayWay.QueryArray.Split(',');
                string             Code               = PayConfigArr[0];
                string             CodeKey            = PayConfigArr[1];
                string             PayWayCode         = PayConfigArr[2];
                userspayopenbModel userspayopenbModel = new userspayopenbModel()
                {
                    merid      = FastUserPay.MerId,
                    paywaycode = PayWayCode,
                    code       = Code,
                    bankcost   = Cost,
                    //surcharge = 0,
                    cash        = Cash,
                    bankcostmin = 1.2M,
                    bankcostmax = 9999999
                };
                fastuserResult fastuserResult = HFJSTools.userspayedit(userspayopenbModel, CodeKey);
                if (fastuserResult.respcode == "00")
                {
                    if (fastuserResult.state == 1)
                    {
                        FastUserPay.BusiState = 1;
                        FastUserPay.BusiMsg   = fastuserResult.respcode + "升级Vip[" + fastuserResult.respmsg + "]";
                        FastUserPay.UserCost3 = 0.005M;
                    }
                    else
                    {
                        FastUserPay.BusiState = 4;
                        FastUserPay.BusiMsg   = fastuserResult.respcode + "升级Vip[" + fastuserResult.respmsg + "]";
                    }
                }
                else
                {
                    FastUserPay.BusiState = 4;
                    FastUserPay.BusiMsg   = fastuserResult.respcode + "升级Vip[" + fastuserResult.respmsg + "]";
                }
            }
            Entity.SaveChanges();
            DataObj.Data = baseUsers.ToString();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
        public ActionResult MyQrCode(string act = "")
        {
            if (!IsLokFu)
            {
                ViewBag.ErrorMsg = "请在钱包中打开链接!";
                return(View("Error"));
            }
            if (BasicUsers == null)
            {
                ViewBag.ErrorMsg = "用户未登录或登录异常!";
                return(View("Error"));
            }
            if (BasicUsers.Id.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "用户未登录或登录异常!";
                return(View("Error"));
            }
            if (BasicUsers.State != 1)//用户被锁定
            {
                ViewBag.ErrorMsg = "您的帐户被锁定!";
                return(View("Error"));
            }
            if (BasicUsers.CardStae != 2)//未实名认证
            {
                ViewBag.ErrorMsg = "您未实名认证!";
                return(View("Error"));
            }
            //if (baseUsers.MiBao != 1)//未设置支付密码
            //{}
            //==========================================================================================
            //获取直通车配置及用户直通车配置
            FastUser FastUser = Entity.FastUser.FirstOrDefault(n => n.UId == BasicUsers.Id);

            if (FastUser == null)
            {
                //开通帐户
                FastUser          = new FastUser();
                FastUser.UId      = BasicUsers.Id;
                FastUser.TrueName = BasicUsers.TrueName;
                FastUser.CardId   = BasicUsers.CardId;
                FastUser.AddTime  = DateTime.Now;
                Entity.FastUser.AddObject(FastUser);
                Entity.SaveChanges();
            }
            ViewBag.FastUser = FastUser;
            if (FastUser.Card.IsNullOrEmpty() || act == "setbank")
            {
                //未绑卡
                IList <UserCard> UserCardList = Entity.UserCard.Where(n => n.UId == BasicUsers.Id && n.Type == 1).ToList();
                if (UserCardList.Count < 1)
                {
                    return(View("MyBankNull"));
                }
                ViewBag.UserCardList = UserCardList;
                ViewBag.Act          = act;
                return(View("MyBank"));
            }
            ViewBag.FastConfig = Entity.FastConfig.FirstOrNew();

            ViewBag.Code = BasicUsers.FastCode();

            FastConfig FastConfig = Entity.FastConfig.FirstOrNew();

            //===========================================================
            //这里要处理商户入驻
            BusFastPay.AddMer(FastUser, FastConfig, this.Entity);
            //===========================================================
            return(View());
        }
        public ActionResult Index(Users Users, string SetCashType = "D0")
        {
            if (!Users.Id.IsNullOrEmpty())
            {
                Users = Entity.Users.FirstOrNew(n => n.Id == Users.Id);
            }
            //if (!IsLokFu && !IsAlipayBrowser && !IsWeiXinBrowser)
            //{
            //    ViewBag.ErrorMsg = "请使用微信或支付宝扫码!";
            //    return View("Error");
            //}
            if (Users == null)
            {
                ViewBag.ErrorMsg = "商户信息异常!";
                return(View("Error"));
            }
            if (Users.Id.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "商户信息异常!";
                return(View("Error"));
            }
            if (Users.State != 1)//用户被锁定
            {
                ViewBag.ErrorMsg = "商户状态异常!";
                return(View("Error"));
            }
            if (Users.CardStae != 2)//未实名认证
            {
                ViewBag.ErrorMsg = "商户未认证,不能收款!";
                return(View("Error"));
            }
            ViewBag.Users = Users;
            FastUser FastUser = Entity.FastUser.FirstOrDefault(n => n.UId == Users.Id);

            if (FastUser == null)
            {
                ViewBag.ErrorMsg = "商户未开通!";
                return(View("Error"));
            }
            ViewBag.FastUser = FastUser;
            FastConfig FastConfig = Entity.FastConfig.FirstOrNew();

            //===========================================================
            //处理有哪些通道
            IList <FastPayWay> FastPayWayList = Entity.FastPayWay.Where(n => n.State == 1 && n.ManE == 0).OrderBy(n => n.Sort).ToList();

            if (!SetCashType.IsNullOrEmpty())
            {
                FastPayWayList = FastPayWayList.Where(n => n.GroupType == SetCashType).ToList();
            }
            if (FastPayWayList == null)
            {
                ViewBag.ErrorMsg = "暂无可用通道!";
                return(View("Error"));
            }
            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)
            {
                ViewBag.ErrorMsg = "暂无可用通道!";
                return(View("Error"));
            }
            IList <FastPayWay> WxList   = PayWayList.Where(n => n.HasWeiXin == 1).ToList();
            IList <FastPayWay> AliList  = PayWayList.Where(n => n.HasAliPay == 1).ToList();
            IList <FastPayWay> BankList = PayWayList.Where(n => n.HasBank == 1).ToList();
            IList <FastPayWay> List     = new List <FastPayWay>();

            if (WxList.Count > 0)
            {
                FastPayWay Wx = new FastPayWay();
                Wx.Id        = 2;
                Wx.GroupType = "weixin";
                Wx.DllName   = "微信支付";
                Wx.SNum      = WxList.OrderBy(n => n.SNum).FirstOrDefault().SNum;
                Wx.ENum      = WxList.OrderByDescending(n => n.ENum).FirstOrDefault().ENum;
                List.Add(Wx);
            }
            if (AliList.Count > 0)
            {
                FastPayWay Ali = new FastPayWay();
                Ali.Id        = 1;
                Ali.GroupType = "alipay";
                Ali.DllName   = "支付宝支付";
                Ali.SNum      = AliList.OrderBy(n => n.SNum2).FirstOrDefault().SNum2;
                Ali.ENum      = AliList.OrderByDescending(n => n.ENum2).FirstOrDefault().ENum2;
                List.Add(Ali);
            }
            if (BankList.Count > 0)
            {
                //收银台暂不开放银联
                //FastPayWay Bank = new FastPayWay();
                //Bank.Id = 3;
                //Bank.GroupType = "bank";
                //Bank.DllName = "银行卡支付";
                //Bank.SNum = BankList.OrderBy(n => n.BankSNum).FirstOrDefault().BankSNum;
                //Bank.ENum = BankList.OrderByDescending(n => n.BankENum).FirstOrDefault().BankENum;
                //List.Add(Bank);
            }
            ViewBag.FastPayWayList = List;
            //===========================================================
            //这里要处理商户入驻
            BusFastPay.AddMer(FastUser, FastConfig, this.Entity);
            //===========================================================
            //处理自选商户
            //Users.SetPayName = Users.NeekName;
            //Users.CanOpenMer = 0;
            return(View());
        }
        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("[FastOrders]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }

            Users Users = new Users();

            Users = JsonToObject.ConvertJsonToModel(Users, json);

            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Users.Token);

            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }

            var model = new FastOrderIndexModel();

            //获取直通车配置及用户直通车配置
            FastUser FastUser = Entity.FastUser.FirstOrDefault(n => n.UId == baseUsers.Id);

            if (FastUser == null)
            {
                //开通帐户
                FastUser          = new FastUser();
                FastUser.UId      = baseUsers.Id;
                FastUser.TrueName = baseUsers.TrueName;
                FastUser.CardId   = baseUsers.CardId;
                FastUser.AddTime  = DateTime.Now;
                Entity.FastUser.AddObject(FastUser);
                Entity.SaveChanges();
            }

            if (FastUser.Card.IsNullOrEmpty())
            {
                //未绑卡
                IList <UserCard> UserCardList = Entity.UserCard.Where(n => n.UId == baseUsers.Id && n.Type == 1 && n.State == 1).ToList();
                if (UserCardList.Count < 1)
                {
                    DataObj.OutError("2099");
                    return;
                }
            }

            FastConfig FastConfig = Entity.FastConfig.FirstOrNew();

            //===========================================================
            //这里要处理商户入驻
            BusFastPay.AddMer(FastUser, FastConfig, this.Entity);
            //===========================================================

            var BasicBank = Entity.BasicBank.FirstOrNew(o => o.Name == FastUser.Bank);

            model.bank     = FastUser.Bank ?? string.Empty;
            model.uid      = FastUser.UId;
            model.card     = FastUser.Card ?? string.Empty;
            model.bin      = FastUser.Bin ?? string.Empty;
            model.bid      = BasicBank.Id;
            model.caption1 = "使用收付直通车直接结算到银行卡,无需提现,交易手续费为0.49%+2元.";
            model.caption2 = "每天9:00-21:00实时到账,其它时间交易为T+1到账";

            DataObj.Data = JsonConvert.SerializeObject(model);
            DataObj.Code = "0000";
            DataObj.OutString();
        }