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

            JobOrders = JsonToObject.ConvertJsonToModel(JobOrders, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);
            if (UserTrack.X.IsNullOrEmpty() || UserTrack.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }

            Users Users = new Users();

            Users = JsonToObject.ConvertJsonToModel(Users, json);
            #region 初始化与校验
            if (JobOrders.TNum.IsNullOrEmpty() || JobOrders.CardId.IsNullOrEmpty() || Users.PayPwd.IsNullOrEmpty() || Users.Token.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            #region 用户验证
            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.MiBao != 1)//未设置支付密码
            {
                DataObj.OutError("2008");
                return;
            }
            if (baseUsers.PayLock == 1)//密码错误太多次锁定
            {
                DataObj.OutError("2050");
                return;
            }
            //这里是执行指纹解锁
            bool IfCheckOk = true;
            if (Users.PayPwd.Substring(0, 3) == "HF_")
            {
                string PassWord = Users.PayPwd;
                PassWord = PassWord.Replace("HF_", "");
                string token = baseUsers.Token;
                token = token + "GoodPay";
                string Md5Token = token.GetMD5().ToUpper();
                string Pass     = Md5Token.Substring(0, 4) + Md5Token.Substring(Md5Token.Length - 4, 4);
                if (Pass != PassWord)
                {
                    IfCheckOk = false;
                }
            }
            else if (baseUsers.PayPwd != Users.PayPwd.GetPayMD5())
            {
                //原支付密码错误
                IfCheckOk = false;
            }
            if (!IfCheckOk)
            {
                //付密码错误
                SysSet SysSet = Entity.SysSet.FirstOrNew();
                //系统统一修改标识SAME002
                baseUsers.PayErr++;
                if (baseUsers.PayErr >= SysSet.PayLock)
                {
                    baseUsers.PayLock = 1;
                }
                Entity.SaveChanges();
                Users Out = new Users();
                Out.PayErr   = SysSet.PayLock - baseUsers.PayErr;
                Out.Cols     = "PayErr";
                DataObj.Data = Out.OutJson();
                DataObj.Code = "2010";
                if (Out.PayErr == 0)
                {
                    DataObj.Msg = "支付密码不正确,请明日再试或取回支付密码";
                }
                else
                {
                    DataObj.Msg = "支付密码不正确,您还可以尝试" + Out.PayErr + "次";
                }
                DataObj.OutString();
                return;
            }
            baseUsers.PayErr = 0;
            #endregion

            JobOrders baseJobOrders = this.Entity.JobOrders.Where(o => o.TNum == JobOrders.TNum && o.UId == baseUsers.Id).FirstOrDefault();
            if (baseJobOrders == null)
            {
                DataObj.OutError("1001");
                return;
            }
            if (baseJobOrders.State != 1)
            {
                DataObj.OutError("1001");
                return;
            }
            JobItem FirstJobItem = this.Entity.JobItem.Where(o => o.TNum == baseJobOrders.TNum && o.RunType == 1).OrderBy(o => o.RunTime).FirstOrDefault();
            if (FirstJobItem == null)
            {
                DataObj.OutError("1001");
                return;
            }
            FirstJobItem.UserCardId = JobOrders.CardId;
            FirstJobItem.RunedTime  = DateTime.Now;
            FirstJobItem.State      = 2;//按Job的流程,这里需设置执行中才能进入支付
            this.Entity.SaveChanges();
            #endregion
            //=======================================
            UserTrack.ENo        = DataObj.ENo;
            UserTrack.OPType     = "支付还款订单";
            UserTrack.GPSAddress = UserTrack.GPSAddress;
            UserTrack.GPSX       = UserTrack.X;
            UserTrack.GPSY       = UserTrack.Y;
            UserTrack.UserName   = FirstJobItem.TNum;
            UserTrack.UId        = baseUsers.Id;
            UserTrack.SeavGPSLog(Entity);
            //=======================================
            FirstJobItem = FirstJobItem.Pay(Entity);
            //0取消 1待执行 2执行中 3执行完成 4执行失败
            if (FirstJobItem.State == 3)
            {
                FirstJobItem.RunTime = DateTime.Now;
                Entity.SaveChanges();
                DataObj.OutError("0000");
            }
            else if (FirstJobItem.State == 2)
            {
                DataObj.OutError("6028");
            }
            else
            {
                //DataObj.Msg = FirstJobItem.Remark;
                DataObj.OutError("6027");
            }
        }