public ActionResult PostCashProcessing(V_UserCash_Bank model)
        {
            Response.BufferOutput = true;
            StringBuilder strz     = new StringBuilder();
            int           state    = 0;
            M_CashAudit   mc       = new M_CashAudit();
            string        retUrl   = Utils.GetRe_url("admin/UserCash/RePostCashProcessing");
            string        bgRetUrl = Utils.GetRe_url("admin/Thirdparty/BgCashProcessing");
            bool          res      = BusinessLogicHelper.postCashHelper(model, ref state, ref mc, retUrl, bgRetUrl);

            if (!res && state == 0)
            {
                return(Content(StringAlert.Alert("取现强制未通过!", "/admin/UserCash/CashProcessing?UserCashId=" + model.UserCashId)));
            }
            if (res)
            {
                strz.Append(" <form id=\"formauto\" name=\"formauto\"  action=\"" + Utils.GetChinapnrUrl() + "\" method=\"post\">");
                strz.Append("<input id=\"Version\"  name=\"Version\"  type=\"hidden\"  value=\"" + mc.Version + "\" />");
                strz.Append("<input id=\"CmdId\"  name=\"CmdId\"    type=\"hidden\"  value=\"" + mc.CmdId + "\" />");
                strz.Append("<input id=\"MerCustId\" name=\"MerCustId\"   type=\"hidden\"  value=\"" + mc.MerCustId + "\" />");
                strz.Append("<input id=\"OrdId\" name=\"OrdId\" type=\"hidden\"  value=\"" + mc.OrdId + "\" />");
                strz.Append("<input id=\"UsrCustId\" name=\"UsrCustId\" type=\"hidden\"  value=\"" + mc.UsrCustId + "\" />");
                strz.Append("<input id=\"TransAmt\" name=\"TransAmt\" type=\"hidden\"  value=\"" + mc.TransAmt + "\" />");
                strz.Append("<input id=\"AuditFlag\"  name=\"AuditFlag\" type=\"hidden\"  value=\"" + mc.AuditFlag + "\" />");
                strz.Append("<input id=\"RetUrl\" name=\"RetUrl\" type=\"hidden\"  value=\"" + mc.RetUrl + "\" />");
                strz.Append("<input id=\"BgRetUrl\" name=\"BgRetUrl\" type=\"hidden\"  value=\"" + mc.BgRetUrl + "\" />");
                strz.Append("<input id=\"MerPriv\" name=\"MerPriv\" type=\"hidden\"  value=\"" + mc.MerPriv + "\" />");
                strz.Append("<input id=\"ChkValue\" name=\"ChkValue\" type=\"hidden\"  value=\"" + mc.ChkValue + "\" />");
                strz.Append(" </form>");
                strz.Append("<script type=\"text/javascript\">document.getElementById('formauto').submit();</script>");
                LogInfo.WriteLog("提交参数表单:" + strz.ToString());
            }
            ViewBag.state = state;
            ViewBag.strz  = strz;
            return(View());
        }
        /// <summary>
        /// 提现自动审核
        /// </summary>
        /// <param name="UsrCustId"></param>
        /// <param name="retUrl"></param>
        /// <param name="bgRetUrl"></param>
        public static void AutoCheckCash(string UsrCustId, string retUrl, string bgRetUrl)
        {
            chuangtouEntities ef = new chuangtouEntities();
            var user             = ef.hx_member_table.Where(c => c.UsrCustId == UsrCustId).FirstOrDefault();

            if (user == null)
            {
                LogInfo.WriteLog("用户提现,自动审核异常:用户不存在!UsrCustID为:" + UsrCustId);
                return;
            }
            var userCash = ef.hx_td_UserCash.Where(c => c.registerid == user.registerid && (c.OrdIdState == 0 || c.OrdIdState == 1)).OrderByDescending(c => c.UserCashId).FirstOrDefault();

            if (userCash == null)
            {
                LogInfo.WriteLog("用户提现,自动审核异常:用户提现记录不存在!registerid为:" + user.registerid);
                return;
            }
            var model = ef.V_UserCash_Bank.Where(p => p.UserCashId == userCash.UserCashId).SingleOrDefault();

            if (model == null)
            {
                LogInfo.WriteLog("用户提现,自动审核异常:用户提现记录不存在!UserCashId为:" + userCash.UserCashId);
                return;
            }

            V_UserCash_Bank vub = new V_UserCash_Bank()
            {
                available_balance = model.available_balance,
                OrdIdState        = 1,//model.OrdIdState,//审核通过
                UsrCustId         = model.UsrCustId,
                BankName          = model.BankName,
                FeeAmt            = model.FeeAmt,
                FeeObjFlag        = model.FeeObjFlag,
                mobile            = model.mobile,
                OpenAcctId        = model.OpenAcctId,
                OpenBankId        = model.OpenBankId,
                OperTime          = model.OperTime,
                OrdId             = model.OrdId,
                OrdIdTime         = model.OrdIdTime,
                realname          = model.realname,
                Reason            = model.Reason,
                registerid        = model.registerid,
                Remarks           = model.Remarks,
                TransAmt          = model.TransAmt,
                TransState        = model.TransState,
                UserCashId        = model.UserCashId,
                useridentity      = model.useridentity,
                username          = model.username,
                usertypes         = model.usertypes
            };

            StringBuilder strz  = new StringBuilder();
            int           state = 0;
            M_CashAudit   mc    = new M_CashAudit();
            //string retUrl = Utils.GetRe_url("admin/UserCash/RePostCashProcessing");
            //string bgRetUrl = Utils.GetRe_url("admin/Thirdparty/BgCashProcessing");
            bool postRes = postCashHelper(vub, ref state, ref mc, retUrl, bgRetUrl);

            if (!postRes && state == 0)
            {
                //return Content(StringAlert.Alert("取现强制未通过!", "/admin/UserCash/CashProcessing?UserCashId=" + model.UserCashId));
            }
            else if (postRes)
            {
                string        url        = Utils.GetChinapnrUrl();
                StringBuilder strBuilder = new StringBuilder();
                strBuilder.AppendFormat("Version={0}", mc.Version);
                strBuilder.AppendFormat("&CmdId={0}", mc.CmdId);
                strBuilder.AppendFormat("&MerCustId={0}", mc.MerCustId);
                strBuilder.AppendFormat("&OrdId={0}", mc.OrdId);
                strBuilder.AppendFormat("&UsrCustId={0}", mc.UsrCustId);
                strBuilder.AppendFormat("&TransAmt={0}", mc.TransAmt);
                strBuilder.AppendFormat("&AuditFlag={0}", mc.AuditFlag);
                strBuilder.AppendFormat("&RetUrl={0}", mc.RetUrl);
                strBuilder.AppendFormat("&BgRetUrl={0}", mc.BgRetUrl);
                strBuilder.AppendFormat("&MerPriv={0}", mc.MerPriv);
                strBuilder.AppendFormat("&ChkValue={0}", mc.ChkValue);

                string html = Http.Post(url, strBuilder.ToString());

                Dictionary <string, string> resdic = new Dictionary <string, string>();
                string reg   = "<input name=.*/>";
                Regex  regex = new Regex(reg);
                var    macs  = regex.Matches(html);
                foreach (Match mac in macs)
                {
                    string[] input = mac.Value.Replace("'", "\"").Split('\"');
                    resdic.Add(input[1], input[7]);
                }
                ReCashAudit m = new ReCashAudit()
                {
                    AuditFlag  = resdic["AuditFlag"],
                    BgRetUrl   = resdic["BgRetUrl"],
                    MerCustId  = resdic["MerCustId"],
                    ChkValue   = resdic["ChkValue"],
                    CmdId      = resdic["CmdId"],
                    FeeAcctId  = resdic["FeeAcctId"],
                    FeeAmt     = resdic["FeeAmt"],
                    FeeCustId  = resdic["FeeCustId"],
                    MerPriv    = resdic["MerPriv"],
                    OpenAcctId = resdic["OpenAcctId"],
                    OpenBankId = resdic["OpenBankId"],
                    OrdId      = resdic["OrdId"],
                    RespCode   = resdic["RespCode"],
                    RespDesc   = resdic["RespDesc"],
                    RetUrl     = resdic["RetUrl"],
                    TransAmt   = resdic["TransAmt"],
                    UsrCustId  = resdic["UsrCustId"]
                };
                LogInfo.WriteLog("自动审核审核数据回调:" + JsonConvert.SerializeObject(m));
                RePostCashHelper(m);
            }
        }
        public ActionResult CashProcessingMore(string str)
        {
            string json = "";

            if (string.IsNullOrEmpty(str))
            {
                json = @"{""ret"":0,""msg"":""参数错误""}";
            }
            string strCount = "";

            string bid = str;

            string[] s = bid.Split(new char[] { ',' });

            string sqllist = "";

            for (int i = 0; i < s.Length; i++)
            {
                sqllist = sqllist + "'" + s[i] + "',";
            }

            if (sqllist.Contains(","))
            {
                bid = Utils.ClearLastChar(sqllist);
            }

            int orstate = 1;

            sqllist  = " select registerid,UserCashId,OrdId,OrdIdState,TransAmt,BankName,OpenBankId,OpenAcctId,UsrCustId,realname,Reason,Remarks,available_balance from V_UserCash_Bank ";
            sqllist += " where  UserCashId in (" + bid + ")";
            DataTable dt = DbHelperSQL.GET_DataTable_List(sqllist);

            int succ = 0, lost = 0;

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                M_CashAudit mc = new M_CashAudit();
                mc.Version   = "10";
                mc.CmdId     = "CashAudit";
                mc.MerCustId = Utils.GetMerCustID();
                mc.OrdId     = dt.Rows[i]["OrdId"].ToString();
                mc.UsrCustId = dt.Rows[i]["UsrCustId"].ToString();
                mc.TransAmt  = dt.Rows[i]["TransAmt"].ToString();

                //判定用户在审核期间内把卡号 移除或取消绑定 或 绑定 状态等于0
                string bindCardSql = " SELECT * FROM hx_UsrBindCardC WHERE UsrCustId='{0}' AND OpenAcctId='{1}'  ";
                bindCardSql = string.Format(bindCardSql, dt.Rows[i]["UsrCustId"].ToString(), dt.Rows[i]["OpenAcctId"].ToString());
                DataTable bcDt = DbHelperSQL.GET_DataTable_List(bindCardSql);
                if (bcDt == null || bcDt.Rows.Count == 0)
                {
                    orstate = 4;
                }

                if (orstate == 4)
                {
                    mc.AuditFlag = "R";
                }
                else
                {
                    mc.AuditFlag = "S";
                }

                // mc.BgRetUrl = "";
                mc.BgRetUrl = Utils.GetRe_url("admin/Thirdparty/BgCashProcessing");

                mc.MerPriv = "chuanglitou";

                StringBuilder chkVal = new StringBuilder();
                chkVal.Append(mc.Version);
                chkVal.Append(mc.CmdId);
                chkVal.Append(mc.MerCustId);
                chkVal.Append(mc.OrdId);
                chkVal.Append(mc.UsrCustId);
                chkVal.Append(mc.TransAmt);
                chkVal.Append(mc.AuditFlag);
                // chkVal.Append(mc.RetUrl);
                chkVal.Append(mc.BgRetUrl);
                chkVal.Append(mc.MerPriv);

                string chkv = chkVal.ToString();

                LogInfo.WriteLog("批量取现审核chkv字符:" + chkv);

                //私钥文件的位置(这里是放在了站点的根目录下)
                string merKeyFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetMerPr();
                //需要指定提交字符串的长度
                int           len        = Encoding.UTF8.GetBytes(chkv).Length;
                StringBuilder sbChkValue = new StringBuilder(256);
                //加签
                int strer = DllInterop.SignMsg(Utils.GetMerId(), merKeyFile, chkv, len, sbChkValue);
                mc.ChkValue = sbChkValue.ToString();

                LogInfo.WriteLog("批量取现审核提交信息:" + FastJSON.toJOSN(mc));

                using (var client = new WebClient())
                {
                    var values = new NameValueCollection();
                    values.Add("Version", mc.Version);
                    values.Add("CmdId", mc.CmdId);
                    values.Add("MerCustId", mc.MerCustId);
                    values.Add("OrdId", mc.OrdId);
                    values.Add("UsrCustId", mc.UsrCustId);
                    values.Add("TransAmt", mc.TransAmt);
                    values.Add("AuditFlag", mc.AuditFlag);
                    values.Add("BgRetUrl", mc.BgRetUrl);
                    values.Add("MerPriv", mc.MerPriv);
                    values.Add("ChkValue", mc.ChkValue);

                    string url = Utils.GetChinapnrUrl();
                    //同步发送form表单请求
                    byte[] result = client.UploadValues(url, "POST", values);
                    var    retStr = Encoding.UTF8.GetString(result);
                    //  Response.Write(retStr);

                    //   LogInfo.WriteLog("批量取现审同步form表单请求" + retStr);

                    ReCashAudit ReCa = new ReCashAudit();

                    var Re = (ReCashAudit)FastJSON.ToObject(retStr, ReCa);

                    LogInfo.WriteLog("批量取现审返回报文:" + FastJSON.toJOSN(Re));



                    StringBuilder builder = new StringBuilder();
                    builder.Append(Re.CmdId);
                    builder.Append(Re.RespCode);
                    builder.Append(Re.MerCustId);
                    builder.Append(Re.OrdId);
                    builder.Append(Re.UsrCustId);
                    builder.Append(Re.TransAmt);
                    builder.Append(Re.OpenAcctId);
                    builder.Append(Re.OpenBankId);
                    builder.Append(Re.AuditFlag);
                    builder.Append(HttpUtility.UrlDecode(Re.BgRetUrl));
                    builder.Append(Re.MerPriv);

                    var msg = builder.ToString();

                    LogInfo.WriteLog("批量取现审验签文明:" + msg);
                    //验签
                    string pgPubkFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetPgPubk();
                    int    ret        = DllInterop.VeriSignMsg(pgPubkFile, msg, msg.Length, Re.ChkValue);



                    LogInfo.WriteLog("批量取现审验签 ret= " + ret.ToString());

                    if (ret == 0)
                    {
                        //更新数据库
                        string sql = "";

                        if (orstate == 1)
                        {
                            sql = "update hx_td_UserCash set Remarks='' where  UserCashId=" + dt.Rows[i]["UserCashId"].ToString();
                            DbHelperSQL.RunSql(sql);
                        }
                        else if (orstate == 3)
                        {
                            sql = "update hx_td_UserCash set Remarks='',OrdIdState=3 ,OperTime='" + DateTime.Now.ToString() + "' where  UserCashId=" + dt.Rows[i]["UserCashId"].ToString();
                            DbHelperSQL.RunSql(sql);
                        }
                        else if (orstate == 4)
                        {
                            //  sql = "update hx_td_UserCash set Remarks='" + Utils.CheckSQLHtml(model.Remarks) + "', Reason='" + Utils.CheckSQLHtml(model.Reason) + "',OrdIdState=4 ,OperTime='" + DateTime.Now.ToString() + "'  where  UserCashId=" + UserCashId.ToString();
                            // sql += ";update  hx_member_table set available_balance=available_balance+" + dt.Rows[0]["TransAmt"].ToString() + ",frozen_sum=frozen_sum-" + dt.Rows[0]["TransAmt"].ToString() + " where registerid=" + dt.Rows[0]["registerid"].ToString();
                            //  DbHelperSQL.RunSql(sql);

                            // return Content(StringAlert.Alert("取现未通过,金额已退还!", "/admin/UserCash/CashProcessing?UserCashId=" + model.UserCashId));
                        }


                        if (Re.RespCode == "000" || Re.RespCode == "999" || Re.RespCode == "406")
                        {
                            string cachename = Re.OrdId + "Cash" + Re.UsrCustId + Re.TransAmt.ToString();

                            if (Utils.GeTThirdCache(cachename) == 0)
                            {
                                Utils.SetThirdCache(cachename);

                                //提现成功后,得多事务处理账户金额,流水等
                                B_usercenter            BUC = new B_usercenter();
                                M_Capital_account_water aw  = new M_Capital_account_water();
                                if (BUC.Su_CashProcessing(Re, aw) > 0)
                                {
                                    strCount += Re.OrdId + " 取款审核成功<br /> ";
                                    LogInfo.WriteLog("后台取款审核成功:" + str);
                                    succ = succ + 1;
                                }
                                else
                                {
                                    lost      = lost + 1;
                                    strCount += Re.OrdId + " 取款审核失败<br /> ";
                                    LogInfo.WriteLog("后台取款审核事误操作失败");
                                }
                            }
                        }
                        else
                        {
                            lost      = lost + 1;
                            strCount += Re.OrdId + " 取款审核失败 (" + Re.RespCode + ")<br /> ";
                            LogInfo.WriteLog("后台提现失败" + Re.RespCode);
                        }
                    }
                    else
                    {
                        //  Response.Write(Re.UsrCustId + "取款审核验签失败  原因: " + Re.RespDesc + " <br>");
                    }
                }
            }
            json = @"{""ret"":1,""msg"":""<div style='margin: 9px;line-height:20px;'>批量复核操作成功 RR</div>"" }";
            string sfd = succ.ToString() + "笔成功, " + lost.ToString() + "失败<br />" + strCount + " ";

            json = json.Replace("RR", sfd);
            return(Content(json, "text/json"));
        }
        /// <summary>
        /// 后台审核逻辑
        /// </summary>
        /// <param name="model"></param>
        /// <param name="state"></param>
        /// <param name="mc"></param>
        /// <param name="RetUrl"></param>
        /// <param name="BgRetUrl"></param>
        /// <returns></returns>
        public static bool postCashHelper(V_UserCash_Bank model, ref int state, ref M_CashAudit mc, string RetUrl, string BgRetUrl)
        {
            int    UserCashId = model.UserCashId;
            int    orstate    = int.Parse(model.OrdIdState.ToString());
            string sql        = " select registerid,OrdId,OrdIdState,TransAmt,BankName,OpenBankId,OpenAcctId,UsrCustId,realname,Reason,Remarks,available_balance from V_UserCash_Bank where UserCashId=" + UserCashId.ToString();

            DataTable dt          = DbHelperSQL.GET_DataTable_List(sql);
            bool      isExistCard = true;

            state = 0;
            if (dt != null && dt.Rows.Count > 0)
            {
                if (orstate == 5)//强制审核不通过,用于处理异常情况
                {
                    sql = "update hx_td_UserCash set Remarks='" + Utils.CheckSQLHtml(model.Remarks) + "', Reason='" + Utils.CheckSQLHtml(model.Reason) + "',OrdIdState=4 ,OperTime='" + DateTime.Now.ToString() + "'  where  UserCashId=" + UserCashId.ToString();
                    DbHelperSQL.RunSql(sql);
                    return(false); //Content(StringAlert.Alert("取现强制未通过!", "/admin/UserCash/CashProcessing?UserCashId=" + model.UserCashId));
                }

                //判定用户在审核期间内把卡号 移除或取消绑定 或 绑定 状态等于0
                string bindCardSql = " SELECT * FROM hx_UsrBindCardC WHERE UsrCustId='{0}' AND OpenAcctId='{1}'  ";
                bindCardSql = string.Format(bindCardSql, dt.Rows[0]["UsrCustId"].ToString(), model.OpenAcctId);
                DataTable bcDt = DbHelperSQL.GET_DataTable_List(bindCardSql);
                if (bcDt == null || bcDt.Rows.Count == 0)
                {
                    orstate     = 4;
                    isExistCard = false;
                }
                if (orstate == 1 || orstate == 4)
                {
                    //审核接口
                    state        = 1;
                    mc           = new M_CashAudit();
                    mc.Version   = "10";
                    mc.CmdId     = "CashAudit";
                    mc.MerCustId = Utils.GetMerCustID();
                    mc.OrdId     = dt.Rows[0]["OrdId"].ToString();
                    mc.UsrCustId = dt.Rows[0]["UsrCustId"].ToString();
                    mc.TransAmt  = dt.Rows[0]["TransAmt"].ToString();
                    if (orstate == 4)
                    {
                        mc.AuditFlag = "R";
                    }
                    else
                    {
                        mc.AuditFlag = "S";
                    }
                    //  mc.RetUrl =  "http://localhost:17745/admin/UserCash/RePostCashProcessing";
                    // mc.BgRetUrl = Utils.GetRe_url("111admin/Thirdparty/BgCashProcessing");
                    mc.RetUrl   = RetUrl;   //Utils.GetRe_url("admin/UserCash/RePostCashProcessing");
                    mc.BgRetUrl = BgRetUrl; // Utils.GetRe_url("admin/Thirdparty/BgCashProcessing");
                    mc.MerPriv  = "chuanglitou";
                    StringBuilder chkVal = new StringBuilder();
                    chkVal.Append(mc.Version);
                    chkVal.Append(mc.CmdId);
                    chkVal.Append(mc.MerCustId);
                    chkVal.Append(mc.OrdId);
                    chkVal.Append(mc.UsrCustId);
                    chkVal.Append(mc.TransAmt);
                    chkVal.Append(mc.AuditFlag);
                    chkVal.Append(mc.RetUrl);
                    chkVal.Append(mc.BgRetUrl);
                    chkVal.Append(mc.MerPriv);

                    string chkv = chkVal.ToString();
                    LogInfo.WriteLog("取现审核chkv字符:" + chkv);
                    //私钥文件的位置(这里是放在了站点的根目录下)
                    string merKeyFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetMerPr();
                    //需要指定提交字符串的长度
                    int           len        = Encoding.UTF8.GetBytes(chkv).Length;
                    StringBuilder sbChkValue = new StringBuilder(256);
                    //加签
                    int str = DllInterop.SignMsg(Utils.GetMerId(), merKeyFile, chkv, len, sbChkValue);
                    mc.ChkValue = sbChkValue.ToString();
                    if (str == 0)
                    {
                        //更新数据库
                        string sql1 = "";
                        if (orstate == 1)
                        {
                            sql = "update hx_td_UserCash set Remarks='" + Utils.CheckSQLHtml(model.Remarks) + "' where  UserCashId=" + UserCashId.ToString();
                            DbHelperSQL.RunSql(sql);
                        }
                        else if (orstate == 3)
                        {
                            sql = "update hx_td_UserCash set Remarks='" + Utils.CheckSQLHtml(model.Remarks) + "',OrdIdState=3 ,OperTime='" + DateTime.Now.ToString() + "' where  UserCashId=" + UserCashId.ToString();
                            DbHelperSQL.RunSql(sql);
                        }
                        else if (orstate == 4)
                        {
                            if (!isExistCard)
                            {
                                List <string> strList = new List <string>();
                                StringBuilder strSql  = new StringBuilder();
                                strSql.Append("insert into hx_Capital_account_water(");
                                strSql.Append("membertable_registerid,income,expenditure,time_of_occurrence,account_balance,types_Finance,createtime,keyid,remarks)");
                                strSql.Append(" values (");
                                strSql.Append("" + Convert.ToInt32(dt.Rows[0]["registerid"].ToString()) + "," + Convert.ToDecimal("0") + "," + Convert.ToDecimal("0") + ",'" + DateTime.Now.ToString() + "'," + (Convert.ToDecimal(dt.Rows[0]["available_balance"])) + "," + (int)EnumTypesFinance.提现卡不存在 + ",'" + DateTime.Now.ToString() + "','0','提现未通过')");
                                strList.Add(strSql.ToString());
                                var i = DbHelperSQL.ExecuteSqlTran(strList);
                                strSql.Clear();
                            }
                        }
                        return(true);
                    }
                }
                else
                {
                    // return Content(StringAlert.Alert("验签失败!", "/admin/UserCash/CashProcessing?UserCashId=" + model.UserCashId));
                }
            }
            return(false);
        }