/// <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); } }
/// <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); } }
/// <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); } }
/// <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(); } }
/// <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); }
/// <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); }
/// <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); }