Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        public bool Complete(viviapi.Model.Finance.Withdraw model)
        {
            int rowsAffected = 0;

            SqlParameter[] parameters =
            {
                new SqlParameter("@tranno",  SqlDbType.VarChar,  30),
                new SqlParameter("@tax",     SqlDbType.Decimal,   9),
                new SqlParameter("@charges", SqlDbType.Decimal,   9),
                new SqlParameter("@paytime", SqlDbType.DateTime, 8)
            };

            parameters[0].Value = model.Tranno;

            parameters[1].Value = model.Tax;
            parameters[2].Value = model.Charges;
            parameters[3].Value = DateTime.Now;

            DbHelperSQL.RunProcedure("proc_withdraw_complete", parameters, out rowsAffected);
            if (rowsAffected > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public viviapi.Model.Finance.Withdraw GetModel(string tranno)
        {
            SqlParameter[] parameters =
            {
                new SqlParameter("@tranno", SqlDbType.VarChar, 30)
            };
            parameters[0].Value = tranno;

            var     model = new viviapi.Model.Finance.Withdraw();
            DataSet ds    = DbHelperSQL.RunProcedure("proc_withdraw_GetModelbytranno", parameters, "ds");

            if (ds.Tables[0].Rows.Count > 0)
            {
                return(DataRowToModel(ds.Tables[0].Rows[0]));
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public viviapi.Model.Finance.Withdraw GetModel(int id)
        {
            SqlParameter[] parameters =
            {
                new SqlParameter("@id", SqlDbType.Int, 4)
            };
            parameters[0].Value = id;

            var     model = new viviapi.Model.Finance.Withdraw();
            DataSet ds    = DbHelperSQL.RunProcedure("proc_withdraw_getModel", parameters, "ds");

            if (ds.Tables[0].Rows.Count > 0)
            {
                return(DataRowToModel(ds.Tables[0].Rows[0]));
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        private void WithdrawApply()
        {
            string msg = "";

            try
            {
                if (!SettleSettings.OpenWithdraw)
                {
                    msg = SettleSettings.ColseWithdrawReason;
                }
                else
                {
                    //提现金额
                    decimal          dwithdrawAmt = 0M, charges = 0M;
                    TocashSchemeInfo scheme = null;

                    string withdrawAmt = txtApplyMoney.Value.ToLower();
                    string safepass    = txtcashpwd.Text;

                    if (string.IsNullOrEmpty(withdrawAmt))
                    {
                        msg = "请输入您要提现的金额";
                    }
                    else if (!decimal.TryParse(withdrawAmt, out dwithdrawAmt))
                    {
                        msg = "请输入您正确的金额";
                    }
                    else if (string.IsNullOrEmpty(safepass))
                    {
                        msg = "请输入您的提现密码";
                    }
                    else if (Cryptography.MD5(safepass) != CurrentUser.Password2)
                    {
                        msg = "提现密码不正确";
                    }
                    else
                    {
                        scheme = TocashScheme.GetModelByUser(1, UserId);

                        if (scheme == null)
                        {
                            msg = "未设置提现方案,请联系客服人员!";
                        }
                        else
                        {
                            #region 比较余额
                            //账户可用余额
                            decimal balanceAmt = viviapi.BLL.User.UsersAmt.GetUserAvailableBalance(UserId);

                            if (dwithdrawAmt > balanceAmt)
                            {
                                msg = "余额不足,请修改提现金额";
                            }
                            else if (dwithdrawAmt < scheme.minamtlimitofeach)
                            {
                                msg = "您的提现金额小于最低提现金额限制.";
                            }
                            else if (dwithdrawAmt > scheme.maxamtlimitofeach)
                            {
                                msg = "您的提现金额大于最大提现金额限制.";
                            }
                            else
                            {
                                int todaytimes = viviapi.BLL.Finance.Withdraw.Instance.GetUserDaySettledTimes(UserId,
                                                                                                              FormatConvertor.DateTimeToDateString(DateTime.Now));

                                if (todaytimes >= scheme.dailymaxtimes)
                                {
                                    msg = "您今天的提现次数已达到最多限制,请明天再试。";
                                }
                                else
                                {
                                    decimal todayAmt = viviapi.BLL.Finance.Withdraw.Instance.GetUserDaySettledAmt(UserId,
                                                                                                                  FormatConvertor.DateTimeToDateString(DateTime.Now));

                                    if (todayAmt + dwithdrawAmt >= scheme.dailymaxamt)
                                    {
                                        msg = string.Format("您今天的提现将超过最大限额,你最多还可提现{0:f2}", scheme.dailymaxamt - todayAmt);
                                    }
                                }
                            }

                            if (string.IsNullOrEmpty(msg))
                            {
                                #region 计算手续费
                                charges = scheme.chargerate * dwithdrawAmt;
                                if (scheme.lowerLimit > 0)
                                {
                                    if (charges < scheme.lowerAmt)
                                    {
                                        charges = scheme.lowerAmt;
                                    }
                                }
                                if (scheme.upperLimit > 0)
                                {
                                    if (charges > scheme.upperAmt)
                                    {
                                        charges = scheme.upperAmt;
                                    }
                                }
                                #endregion

                                if (charges >= dwithdrawAmt)
                                {
                                    msg = "余额不足";
                                }
                            }
                            #endregion

                            if (string.IsNullOrEmpty(msg))
                            {
                                #region 保存记录
                                var acctBLL           = new viviapi.BLL.User.SettlementAccount();
                                var settlementAccount = acctBLL.GetModel(this.UserId);

                                if (settlementAccount != null)
                                {
                                    var itemInfo = new Withdraw()
                                    {
                                        Tranno  = viviapi.BLL.Finance.Withdraw.Instance.GenerateOrderId(),
                                        Addtime = DateTime.Now,
                                        Amount  = dwithdrawAmt,
                                        Charges = charges,
                                        Paytime = DateTime.Now,
                                        Status  = WithdrawStatus.Auditing,
                                        Tax     = 0M,
                                        Userid  = UserId,


                                        BankCode  = settlementAccount.BankCode,
                                        PayeeBank = settlementAccount.PayeeBank,

                                        ProvinceCode = settlementAccount.ProvinceCode,
                                        BankProvince = settlementAccount.BankProvince,

                                        CityCode     = settlementAccount.CityCode,
                                        BankCity     = settlementAccount.BankCity,
                                        Payeeaddress = settlementAccount.BankAddress,


                                        PayeeName  = settlementAccount.PayeeName,
                                        AccoutType = settlementAccount.AccoutType,
                                        Account    = settlementAccount.Account,
                                        Paytype    = settlementAccount.Pmode,
                                        Settmode   = WithdrawMode.Manual,
                                        Required   = DateTime.Now.AddHours(2),
                                        Suppstatus = 0
                                    };

                                    if (DateTime.Now.Hour > 16)
                                    {
                                        itemInfo.Required = DateTime.Now.AddDays(1);
                                    }

                                    if (scheme.vaiInterface > 0)
                                    {
                                        itemInfo.SuppId     = chnlBLL.GetSupplier(itemInfo.BankCode);
                                        itemInfo.Suppstatus = 1;
                                    }

                                    int result = viviapi.BLL.Finance.Withdraw.Instance.Apply(itemInfo);
                                    itemInfo.ID = result;
                                    if (result > 0)
                                    {
                                        msg = "提现成功";

                                        #region 通过接口提现
                                        if (itemInfo.Suppstatus == 1 &&
                                            itemInfo.SuppId > 0 &&
                                            scheme.tranRequiredAudit == 0)
                                        {
                                            bool audit = viviapi.BLL.Finance.Withdraw.Instance.Audit(itemInfo.Tranno
                                                                                                     , DateTime.Now.ToString("yyyyMMddHHmmssfff")
                                                                                                     , 1
                                                                                                     , "自动确认");

                                            if (audit)
                                            {
                                                viviapi.ETAPI.Common.Withdrawal.InitDistribution(itemInfo);
                                            }
                                        }
                                        #endregion
                                    }
                                    else
                                    {
                                        msg = "提现失败";
                                    }
                                }
                                else
                                {
                                    msg = "未设置结算账户";
                                }



                                #endregion
                            }
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                msg = exception.Message;
            }

            lblMessage.Text = msg;

            string email     = System.Web.Configuration.WebConfigurationManager.AppSettings["SysEmail"];
            string useNotice = System.Web.Configuration.WebConfigurationManager.AppSettings["UseEmailNotice"];
            if (useNotice == "1")
            {
                var emailcom = new EmailSender(email
                                               , "提现通知"
                                               , "ID为" + UserId + "的用户正在申请提现,操作状态:" + msg
                                               , true
                                               , System.Text.Encoding.GetEncoding("gbk"));
                emailcom.Send();
            }
        }
Exemplo n.º 5
0
        /// <summary>
        ///  增加一条数据
        /// </summary>
        public int Add(viviapi.Model.Finance.Withdraw model)
        {
            int rowsAffected;

            SqlParameter[] parameters =
            {
                new SqlParameter("@id",           SqlDbType.Int,         4),
                new SqlParameter("@tranno",       SqlDbType.VarChar,    30),
                new SqlParameter("@settmode",     SqlDbType.TinyInt,     1),
                new SqlParameter("@userid",       SqlDbType.Int,         4),
                new SqlParameter("@amount",       SqlDbType.Decimal,     9),
                new SqlParameter("@status",       SqlDbType.Int,         4),
                new SqlParameter("@suppId",       SqlDbType.Int,         4),
                new SqlParameter("@suppstatus",   SqlDbType.TinyInt,     1),
                new SqlParameter("@addtime",      SqlDbType.DateTime),
                new SqlParameter("@required",     SqlDbType.DateTime),
                new SqlParameter("@paytime",      SqlDbType.DateTime),
                new SqlParameter("@tax",          SqlDbType.Decimal,     9),
                new SqlParameter("@charges",      SqlDbType.Decimal,     9),
                new SqlParameter("@apptype",      SqlDbType.TinyInt,     1),
                new SqlParameter("@Paytype",      SqlDbType.Int,         4),
                new SqlParameter("@bankCode",     SqlDbType.VarChar,    50),
                new SqlParameter("@PayeeBank",    SqlDbType.VarChar,    50),
                new SqlParameter("@provinceCode", SqlDbType.VarChar,    50),
                new SqlParameter("@bankProvince", SqlDbType.VarChar,    50),
                new SqlParameter("@cityCode",     SqlDbType.VarChar,    50),
                new SqlParameter("@bankCity",     SqlDbType.VarChar,    50),
                new SqlParameter("@payeeName",    SqlDbType.VarChar,    50),
                new SqlParameter("@Payeeaddress", SqlDbType.VarChar,   100),
                new SqlParameter("@accoutType",   SqlDbType.TinyInt,     1),
                new SqlParameter("@account",      SqlDbType.VarChar,    30),
                new SqlParameter("@batchNo",      SqlDbType.VarChar, 30)
            };
            parameters[0].Direction = ParameterDirection.Output;
            parameters[1].Value     = model.Tranno;
            parameters[2].Value     = model.Settmode;
            parameters[3].Value     = model.Userid;
            parameters[4].Value     = model.Amount;
            parameters[5].Value     = model.Status;
            parameters[6].Value     = model.SuppId;
            parameters[7].Value     = model.Suppstatus;
            parameters[8].Value     = model.Addtime;
            parameters[9].Value     = model.Required;
            parameters[10].Value    = model.Paytime;
            parameters[11].Value    = model.Tax;
            parameters[12].Value    = model.Charges;
            parameters[13].Value    = model.Apptype;
            parameters[14].Value    = model.Paytype;
            parameters[15].Value    = model.BankCode;
            parameters[16].Value    = model.PayeeBank;
            parameters[17].Value    = model.ProvinceCode;
            parameters[18].Value    = model.BankProvince;
            parameters[19].Value    = model.CityCode;
            parameters[20].Value    = model.BankCity;
            parameters[21].Value    = model.PayeeName;
            parameters[22].Value    = model.Payeeaddress;
            parameters[23].Value    = model.AccoutType;
            parameters[24].Value    = model.Account;
            parameters[25].Value    = model.BatchNo;

            DbHelperSQL.RunProcedure("withdraw_ADD", parameters, out rowsAffected);
            return((int)parameters[0].Value);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public viviapi.Model.Finance.Withdraw DataRowToModel(DataRow row)
        {
            var model = new viviapi.Model.Finance.Withdraw();

            if (row != null)
            {
                if (row["id"] != null && row["id"].ToString() != "")
                {
                    model.ID = int.Parse(row["id"].ToString());
                }
                if (row["tranno"] != null)
                {
                    model.Tranno = row["tranno"].ToString();
                }
                if (row["settmode"] != null && row["settmode"].ToString() != "")
                {
                    model.Settmode = (WithdrawMode)int.Parse(row["settmode"].ToString());
                }
                if (row["userid"] != null && row["userid"].ToString() != "")
                {
                    model.Userid = int.Parse(row["userid"].ToString());
                }
                if (row["amount"] != null && row["amount"].ToString() != "")
                {
                    model.Amount = decimal.Parse(row["amount"].ToString());
                }
                if (row["status"] != null && row["status"].ToString() != "")
                {
                    model.Status = (WithdrawStatus)int.Parse(row["status"].ToString());
                }
                if (row["suppId"] != null && row["suppId"].ToString() != "")
                {
                    model.SuppId = int.Parse(row["suppId"].ToString());
                }
                if (row["suppstatus"] != null && row["suppstatus"].ToString() != "")
                {
                    model.Suppstatus = int.Parse(row["suppstatus"].ToString());
                }
                if (row["addtime"] != null && row["addtime"].ToString() != "")
                {
                    model.Addtime = DateTime.Parse(row["addtime"].ToString());
                }
                if (row["required"] != null && row["required"].ToString() != "")
                {
                    model.Required = DateTime.Parse(row["required"].ToString());
                }
                if (row["paytime"] != null && row["paytime"].ToString() != "")
                {
                    model.Paytime = DateTime.Parse(row["paytime"].ToString());
                }
                if (row["tax"] != null && row["tax"].ToString() != "")
                {
                    model.Tax = decimal.Parse(row["tax"].ToString());
                }
                if (row["charges"] != null && row["charges"].ToString() != "")
                {
                    model.Charges = decimal.Parse(row["charges"].ToString());
                }
                if (row["apptype"] != null && row["apptype"].ToString() != "")
                {
                    model.Apptype = int.Parse(row["apptype"].ToString());
                }
                if (row["Paytype"] != null && row["Paytype"].ToString() != "")
                {
                    model.Paytype = int.Parse(row["Paytype"].ToString());
                }
                if (row["bankCode"] != null)
                {
                    model.BankCode = row["bankCode"].ToString();
                }
                if (row["PayeeBank"] != null)
                {
                    model.PayeeBank = row["PayeeBank"].ToString();
                }
                if (row["provinceCode"] != null)
                {
                    model.ProvinceCode = row["provinceCode"].ToString();
                }
                if (row["bankProvince"] != null)
                {
                    model.BankProvince = row["bankProvince"].ToString();
                }
                if (row["cityCode"] != null)
                {
                    model.CityCode = row["cityCode"].ToString();
                }
                if (row["bankCity"] != null)
                {
                    model.BankCity = row["bankCity"].ToString();
                }
                if (row["payeeName"] != null)
                {
                    model.PayeeName = row["payeeName"].ToString();
                }
                if (row["Payeeaddress"] != null)
                {
                    model.Payeeaddress = row["Payeeaddress"].ToString();
                }
                if (row["accoutType"] != null && row["accoutType"].ToString() != "")
                {
                    model.AccoutType = int.Parse(row["accoutType"].ToString());
                }
                if (row["account"] != null)
                {
                    model.Account = row["account"].ToString();
                }
                if (row["batchNo"] != null)
                {
                    model.BatchNo = row["batchNo"].ToString();
                }
            }
            return(model);
        }
Exemplo n.º 7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="settleAmt"></param>
        string Settle(int userId, decimal settleAmt)
        {
            string result = "";

            var userInfo          = viviapi.BLL.User.UsersAmt.GetModel(userId);
            var scheme            = viviapi.BLL.Finance.TocashScheme.GetModelByUser(1, userId);
            var settlementAccount = acctBLL.GetModel(userId);

            if (scheme == null)
            {
                result = "提现方案未设置";
            }
            else if (userInfo == null)
            {
                result = "用户不存在或者余额不够";
            }
            else if (settleAmt <= 0M)
            {
                result = "请输入正确的金额";
            }
            else if (settleAmt > userInfo.Balance - userInfo.Freeze - userInfo.Unpayment)
            {
                result = "结算金额大于余额 操作有误";
            }
            else
            {
                decimal charges = 0M;

                #region 计算手续费
                charges = scheme.chargerate * settleAmt;
                if (scheme.lowerLimit > 0)
                {
                    if (charges < scheme.lowerAmt)
                    {
                        charges = scheme.lowerAmt;
                    }
                }
                if (scheme.upperLimit > 0)
                {
                    if (charges > scheme.upperAmt)
                    {
                        charges = scheme.upperAmt;
                    }
                }
                #endregion

                if (settleAmt > charges)
                {
                    var itemInfo = new viviapi.Model.Finance.Withdraw()
                    {
                        Tranno  = viviapi.BLL.Finance.Withdraw.Instance.GenerateOrderId(),
                        Addtime = DateTime.Now,
                        Amount  = settleAmt,
                        Charges = charges,
                        Paytime = DateTime.Now,
                        Status  = WithdrawStatus.Auditing,
                        Tax     = 0M,
                        Userid  = userId,

                        BankCode  = settlementAccount.BankCode,
                        PayeeBank = settlementAccount.PayeeBank,

                        ProvinceCode = settlementAccount.ProvinceCode,
                        BankProvince = settlementAccount.BankProvince,

                        CityCode     = settlementAccount.CityCode,
                        BankCity     = settlementAccount.BankCity,
                        Payeeaddress = settlementAccount.BankAddress,

                        PayeeName  = settlementAccount.PayeeName,
                        AccoutType = settlementAccount.AccoutType,
                        Account    = settlementAccount.Account,
                        Paytype    = settlementAccount.Pmode,
                        Settmode   = WithdrawMode.System,
                        Required   = DateTime.Now.AddHours(2),
                        Suppstatus = 0
                    };

                    if (DateTime.Now.Hour > 16)
                    {
                        itemInfo.Required = DateTime.Now.AddDays(1);
                    }

                    if (scheme.vaiInterface > 0)
                    {
                        itemInfo.SuppId     = chnlBLL.GetSupplier(itemInfo.BankCode);
                        itemInfo.Suppstatus = 1;
                    }


                    int itemid = viviapi.BLL.Finance.Withdraw.Instance.Apply(itemInfo);
                    itemInfo.ID = itemid;
                    if (itemid > 0)
                    {
                        result = "提现成功";
                    }
                    else
                    {
                        result = "提现失败";
                    }
                }
                else
                {
                    result = "金额太小";
                }
            }
            return(result);
        }