Ejemplo n.º 1
0
        public HttpResponseMessage SetPay([FromBody] PayModel payModel)
        {
            var user                 = (UserBase)_workContext.CurrentUser;
            var broker               = new BrokerEntity {
            };
            var BrokeAccount         = new BrokeAccountEntity {
            };
            var BrokerWithdraw       = new BrokerWithdrawEntity {
            };
            var BrokerWithDrawDetail = new BrokerWithdrawDetailEntity {
            };

            //var condition = new BrokerWithdrawDetailSearchCondition
            //{
            //    BrokerWithdraw = payModel.Id
            //};
            if (user == null)
            {
                //broker = _brokerService.GetBrokerByUserId(user.Id); //获取当前经纪人
                //if (broker == null)
                //{
                return(PageHelper.toJson(PageHelper.ReturnValue(false, "获取用户失败,请检查是否登陆")));
                //}
            }

            if (string.IsNullOrEmpty(payModel.Id))
            {
                return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据不能为空")));
            }
            //根据经纪人提现ID查询经纪人体现信息
            BrokerWithdraw = _brokerwithdrawService.GetBrokerWithdrawById(Convert.ToInt32(payModel.Id));
            // 判断提现状态,如果状态为一,则表示已经提现
            if (BrokerWithdraw.State == 1)
            {
                return(PageHelper.toJson(PageHelper.ReturnValue(false, "财务已经打款")));
            }
            ////////////////////////////////////////////////////////////////////////////////////////////////
            //if (string.IsNullOrEmpty(payModel.Ids))
            //{
            //    return PageHelper.toJson(PageHelper.ReturnValue(false, "数据不能为空"));
            //}
            //if (string.IsNullOrEmpty(payModel.BrokeAccountId))
            //{
            //    return PageHelper.toJson(PageHelper.ReturnValue(false,"数据不能为空"));
            //}
            //构建查询实体
            var seach = new BrokerWithdrawDetailSearchCondition
            {
                OrderBy        = EnumBrokerWithdrawDetailSearchOrderBy.OrderByTime,
                BrokerWithdraw = _brokerwithdrawService.GetBrokerWithdrawById(Convert.ToInt32(payModel.Id)),
            };
            var list = _brokerwithdrawDetailService.GetBrokerWithdrawDetailsByCondition(seach).Select(b => new
            {
                b.Id,
                b.Withdrawnum,
                b.BrokeAccount_Id,
                b.Withdrawtime,
                b.Type,
                b.BrokerWithdraw.WithdrawDesc,
                b.BrokerWithdraw.BankCard.Num,
            }).ToList().Select(a => new
            {
                a.Id,
                a.Withdrawnum,
                a.BrokeAccount_Id,
                a.Type,
                a.Num,
                WithdrawDesc = a.WithdrawDesc,
                Withdrawtime = a.Withdrawtime.ToString("yyy-MM-dd"),
            });

            foreach (var p in list)
            {
                if (p == null)
                {
                    return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据错误")));
                }
                if (Convert.ToInt32(p.Type) == 0)
                {
                    var blModel = new BLPayEntity
                    {
                        Name         = payModel.Name,
                        Describe     = payModel.Describe,
                        BankCard     = p.Num,
                        Accountantid = user.Id,
                        Amount       = p.Withdrawnum,
                        Adduser      = user.Id,
                        Upuser       = user.Id,
                        Addtime      = DateTime.Now,
                        Uptime       = DateTime.Now,
                    };
                    _blPayService.Create(blModel);
                }
                if (Convert.ToInt32(p.Type) == 1)
                {
                    var breModel = new BRECPayEntity
                    {
                        Name         = payModel.Name,
                        Describe     = payModel.Describe,
                        BankCard     = p.Num,
                        Accountantid = user.Id,
                        Amount       = p.Withdrawnum,
                        Adduser      = user.Id,
                        Upuser       = user.Id,
                        Addtime      = DateTime.Now,
                        Uptime       = DateTime.Now,
                    };
                    _brecPayService.Create(breModel);
                }
                BrokeAccount        = _brokerAcountService.GetBrokeAccountById(p.BrokeAccount_Id.Id);
                BrokeAccount.State  = 1;
                BrokeAccount.Uptime = DateTime.Now;
                BrokeAccount.Upuser = user.Id;
                _brokerAcountService.Update(BrokeAccount);
            }
            //string[] strBrokeAccountId = payModel.BrokeAccountId.Split(',');
            //foreach (var BrokeAccountId in strBrokeAccountId)
            //{
            //    if (string.IsNullOrEmpty(BrokeAccountId))
            //    {
            //        return PageHelper.toJson(PageHelper.ReturnValue(false, "数据错误"));
            //    }
            //    BrokeAccount = _brokerAcountService.GetBrokeAccountById(Convert.ToInt32(BrokeAccountId));
            //    if (BrokeAccount.State == 1)
            //    {
            //        break;
            //    }
            //}
            //string[] strIds = payModel.Ids.Split(',');
            //foreach (var id in strIds)
            //{
            //    if(string.IsNullOrEmpty(id))
            //    {
            //        break;
            //    }
            //    var model = _brokerwithdrawDetailService.GetBrokerWithdrawDetailById(Convert.ToInt32(id));
            //    if (Convert.ToInt32(model.Type) == 0)
            //    {
            //        var blModel = new BLPayEntity
            //        {
            //            Name = payModel.Name,
            //            Describe = payModel.Describe,
            //            BankCard = Convert.ToInt32(model.BankCard.Num),
            //            Accountantid = broker.Id,
            //            Amount = model.Withdrawnum,
            //            Adduser = broker.Id,
            //            Upuser = broker.Id,
            //            Addtime = DateTime.Now,
            //            Uptime = DateTime.Now,
            //        };
            //        _blPayService.Create(blModel);
            //    }
            //    if (Convert.ToInt32(model.Type) == 1)
            //    {
            //        var breModel = new BRECPayEntity
            //        {
            //            Name = payModel.Name,
            //            Describe = payModel.Describe,
            //            BankCard = Convert.ToInt32(model.BankCard.Num),
            //            Accountantid = broker.Id,
            //            Amount = model.Withdrawnum,
            //            Adduser = broker.Id,
            //            Upuser = broker.Id,
            //            Addtime = DateTime.Now,
            //            Uptime = DateTime.Now,
            //        };
            //        _brecPayService.Create(breModel);
            //    }

            //}
            BrokerWithdraw.State = 1;
            //BrokerWithdraw.AccAccountantId.UserId = user.Id;
            BrokerWithdraw.Uptime       = DateTime.Now;
            BrokerWithdraw.Upuser       = user.Id;
            BrokerWithdraw.WithdrawDesc = payModel.Describe;
            BrokerWithdraw.BankSn       = payModel.BankSn;
            _brokerwithdrawService.Update(BrokerWithdraw);

            return(PageHelper.toJson(PageHelper.ReturnValue(true, "打款成功")));
        }
        public HttpResponseMessage AddBrokerWithdrawDetail([FromBody] AddMoneyEntity MoneyEntity)
        {
            int     bankId        = 0; //银行Id
            decimal withdrawMoney = 0; //提现金额

            if (string.IsNullOrEmpty(MoneyEntity.Bank) || string.IsNullOrEmpty(MoneyEntity.Ids) || string.IsNullOrEmpty(MoneyEntity.Hidm) || string.IsNullOrEmpty(MoneyEntity.MobileYzm) || string.IsNullOrEmpty(MoneyEntity.Money))
            {
                return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据验证错误")));
            }
            if (!Int32.TryParse(MoneyEntity.Bank, out bankId))
            {
                return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据验证错误")));
            }

            //if (!Int32.TryParse(MoneyEntity.Money, out withdrawMoney))
            //{
            //    return PageHelper.toJson(PageHelper.ReturnValue(false, "数据验证错误"));
            //}
            //else
            //{
            //    if (withdrawMoney <= 0)
            //    {
            //        return PageHelper.toJson(PageHelper.ReturnValue(false, "提现金额必须大于零"));
            //    }
            //}


            #region 验证码判断 解密
            var      strDes  = EncrypHelper.Decrypt(MoneyEntity.Hidm, "Hos2xNLrgfaYFY2MKuFf3g=="); //解密
            string[] str     = strDes.Split('$');
            string   source  = str[0];                                                             //获取验证码
            DateTime date    = Convert.ToDateTime(str[1]);                                         //获取发送验证码的时间
            DateTime dateNow = Convert.ToDateTime(DateTime.Now.ToLongTimeString());                //获取当前时间
            TimeSpan ts      = dateNow.Subtract(date);
            double   secMinu = ts.TotalMinutes;                                                    //得到发送时间与现在时间的时间间隔分钟数
            if (secMinu > 3)                                                                       //发送时间与接受时间是否大于3分钟
            {
                return(PageHelper.toJson(PageHelper.ReturnValue(false, "你已超过时间验证,请重新发送验证码!")));
            }
            else
            {
                if (MoneyEntity.MobileYzm != source)//判断验证码是否一致
                {
                    return(PageHelper.toJson(PageHelper.ReturnValue(false, "验证码错误,请重新发送!")));
                }
            }

            #endregion


            //非空验证

            var user = (UserBase)_workContext.CurrentUser;
            if (user != null)
            {
                var broker = _brokerService.GetBrokerByUserId(user.Id);//获取当前经纪人
                if (broker != null)
                {
                    //根据对应的经纪人账户明细Ids 添加到提现主表 附表中去
                    if (!string.IsNullOrEmpty(MoneyEntity.Ids))
                    {
                        var bankCard = _bankcardService.GetBankCardById(Convert.ToInt32(MoneyEntity.Bank));
                        if (bankCard.Broker.Id != broker.Id)
                        {
                            return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据验证错误")));
                        }


                        List <BrokerWithdrawDetailEntity> listBrokerWithDetail = new List <BrokerWithdrawDetailEntity>(); //提现明细List
                        var brokerWithdraw = new BrokerWithdrawEntity                                                     //提现主表
                        {
                            Addtime      = DateTime.Now,
                            Adduser      = broker.Id,
                            BankCard     = bankCard,
                            BankSn       = "",
                            Broker       = broker,
                            State        = 0,
                            Uptime       = DateTime.Now,
                            Upuser       = broker.Id,
                            WithdrawDesc = "",
                            WithdrawTime = DateTime.Now,
                        };

                        try
                        {
                            foreach (var p in MoneyEntity.Ids.Split(','))
                            {
                                if (string.IsNullOrEmpty(p))
                                {
                                    continue;
                                }
                                var broaccount = _brokeaccountService.GetBrokeAccountById(Convert.ToInt32(p)); //获取该笔账户
                                if (broaccount.Broker.Id != broker.Id)                                         //判断该笔账户金额是否是当前这个经纪人
                                {
                                    return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据验证错误")));
                                }
                                else
                                {
                                    withdrawMoney += broaccount.Balancenum;//提现总金额

                                    var bwithdrawDetail = new BrokerWithdrawDetailEntity
                                    {
                                        BankCard        = bankCard,
                                        Withdrawnum     = Convert.ToDecimal(broaccount.Balancenum),
                                        Withdrawtime    = DateTime.Now,
                                        Broker          = broker,
                                        Uptime          = DateTime.Now,
                                        Addtime         = DateTime.Now,
                                        Adduser         = broker.Id,
                                        Upuser          = broker.Id,
                                        Type            = broaccount.Type.ToString(),
                                        BrokeAccount_Id = broaccount
                                    };
                                    listBrokerWithDetail.Add(bwithdrawDetail);
                                }
                            }
                            //更新提现总金额
                            brokerWithdraw.WithdrawTotalNum = withdrawMoney;

                            brokerWithdraw = _brokerwithdrawService.Create(brokerWithdraw); //添加到提现主表

                            foreach (var browithdetail in listBrokerWithDetail)             //添加到提现附表
                            {
                                browithdetail.BrokerWithdraw = brokerWithdraw;

                                _brokerwithdrawdetailService.Create(browithdetail);

                                //更改账户表中 状态
                                var brokeraccount = browithdetail.BrokeAccount_Id;
                                brokeraccount.State = -1;
                                _brokeaccountService.Update(brokeraccount);
                            }
                            //更新到经纪人表中 可用金额
                            broker.Amount = Convert.ToDecimal(GetBrokerAmount());
                            _brokerService.Update(broker);

                            return(PageHelper.toJson(PageHelper.ReturnValue(true, "提现申请成功!")));
                        }
                        catch
                        {
                            return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据验证错误")));
                        }
                    }
                    else
                    {
                        return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据验证错误")));
                    }



                    #region 以前的逻辑
                    //decimal getMoney = Convert.ToDecimal(GetBrokerAmount());//计算得到的剩余总金额
                    //decimal syMoney = 0;//剩余金额
                    //// 提现金额逻辑判断(账户金额表 和提现表相减 跟经纪人表中‘提现金额’字段一致)

                    //if (Convert.ToDecimal(MoneyEntity.Money) > getMoney)
                    //{
                    //    return PageHelper.toJson(PageHelper.ReturnValue(false, "账户余额不足,不能提现"));
                    //}
                    //syMoney = getMoney - Convert.ToDecimal(MoneyEntity.Money);

                    ////将剩余金额更新到经纪人表中金额字段
                    ////broker.Amount = syMoney;
                    ////_brokerService.Update(broker);


                    ////更新到提现表中
                    //var entity = new BrokerWithdrawDetailEntity
                    //{
                    //    BankCard = _bankcardService.GetBankCardById(Convert.ToInt32(MoneyEntity.Bank)),
                    //    Withdrawnum = Convert.ToDecimal(MoneyEntity.Money),
                    //    Withdrawtime = DateTime.Now,
                    //    Broker = broker,
                    //    Uptime = DateTime.Now,
                    //    Addtime = DateTime.Now,
                    //    Adduser = broker.Id,
                    //    Upuser = broker.Id,
                    //    Type = "0"
                    //};

                    //try
                    //{
                    //    if (_brokerwithdrawdetailService.Create(entity) != null)
                    //    {
                    //        return PageHelper.toJson(PageHelper.ReturnValue(true, entity.Id.ToString()));
                    //    }
                    //}
                    //catch
                    //{
                    //    return PageHelper.toJson(PageHelper.ReturnValue(false, "数据添加失败!"));
                    //}

                    #endregion
                }
            }
            return(PageHelper.toJson(PageHelper.ReturnValue(false, "获取用户失败,请检查是否登陆")));
        }