示例#1
0
        /// <summary>
        /// Add or update entities from a JArray of changes during a PATCH.
        /// </summary>
        /// <param name="entityCollection">Collection of entities:  New entities will be added to this collection.</param>
        /// <param name="changeArray">JArray of changes.</param>
        protected void AddUpdateFromJArray <T1>(ICollection <T1> entityCollection, JArray changeArray) where T1 : class, IEntity
        {
            if (changeArray == null)
            {
                return;
            }

            foreach (JObject jobject in changeArray)
            {
                T1 entity = jobject.ToObject <T1>();
                if (entity != null)
                {
                    T1 foundEntity = null;
                    if (entity.Id != Guid.Empty)
                    {
                        foundEntity = unitOfWork.GetById <T1>(entity.Id);
                    }
                    if (foundEntity != null)
                    {
                        // The entity already exists.
                        UpdateFromJObject(foundEntity, jobject);
                    }
                    else
                    {
                        // The entity doesn't exist - either the ID was empty, or it's a new ID.
                        unitOfWork.Insert(entity);
                        entityCollection?.Add(entity);
                        BusinessLogicHelper.GetBusinessLogic <T1>(unitOfWork)?.Validate(entity);
                    }
                }
            }
        }
示例#2
0
        /// <summary>
        /// 复核 汇付通知页
        /// </summary>
        /// <returns></returns>
        public ActionResult RePostCashProcessing()
        {
            ReCashAudit m = new ReCashAudit();

            m.CmdId      = DNTRequest.GetString("CmdId");
            m.RespCode   = DNTRequest.GetString("RespCode");
            m.RespDesc   = HttpUtility.UrlDecode(DNTRequest.GetString("RespDesc"));
            m.MerCustId  = DNTRequest.GetString("MerCustId");
            m.OrdId      = DNTRequest.GetString("OrdId");
            m.UsrCustId  = DNTRequest.GetString("UsrCustId");
            m.TransAmt   = DNTRequest.GetString("TransAmt");
            m.OpenAcctId = DNTRequest.GetString("OpenAcctId");
            m.OpenBankId = DNTRequest.GetString("OpenBankId");
            m.AuditFlag  = DNTRequest.GetString("AuditFlag");
            m.FeeAmt     = DNTRequest.GetString("FeeAmt");
            m.FeeCustId  = DNTRequest.GetString("FeeCustId");
            m.FeeAcctId  = DNTRequest.GetString("FeeAcctId");
            m.RetUrl     = DNTRequest.GetString("RetUrl");
            m.BgRetUrl   = DNTRequest.GetString("BgRetUrl");
            m.MerPriv    = DNTRequest.GetString("MerPriv");
            m.ChkValue   = DNTRequest.GetString("ChkValue");

            LogInfo.WriteLog("取现审核返回参数:" + FastJSON.toJOSN(m));
            BusinessLogicHelper.RePostCashHelper(m);
            ViewBag.info = Utils.GetReturnCode(Int32.Parse(m.RespCode));
            return(View());
        }
示例#3
0
        /// <summary>
        /// Add or update an entity from a JOBject during a PATCH.  The new or updated entity is returned.
        /// </summary>
        /// <param name="changeObject">JObject containing changes.</param>
        /// <returns></returns>
        protected T1 AddUpdateFromJObject <T1>(JObject changeObject) where T1 : class, IEntity
        {
            T1 entity = changeObject.ToObject <T1>();

            if (entity != null)
            {
                T1 foundEntity = null;
                if (entity.Id != Guid.Empty)
                {
                    foundEntity = unitOfWork.GetById <T1>(entity.Id);
                }
                if (foundEntity != null)
                {
                    // The entity already exists.
                    UpdateFromJObject(foundEntity, changeObject);
                    entity = foundEntity;
                }
                else
                {
                    // The entity doesn't exist - either the ID was empty, or it's a new ID.
                    unitOfWork.Insert(entity);
                    BusinessLogicHelper.GetBusinessLogic <T1>(unitOfWork)?.Validate(entity);
                }
            }
            return(entity);
        }
示例#4
0
        /// <summary>
        /// 银行卡管理
        /// </summary>
        /// <returns></returns>

        public ActionResult Index()
        {
            int userid = CurrentUserId;

            B_member_table b  = new B_member_table();
            M_member_table pu = new M_member_table();

            pu = b.GetModel(userid);



            //判断用户是否开户
            if (string.IsNullOrEmpty(pu.UsrCustId))
            {
                string temstr = "/opening_account/Index/" + userid.ToString();
                return(Redirect(temstr));
            }


            //if (pu.isbankcard == 0)
            //{
            checkbank(pu.UsrCustId);

            //}

            V_UsrBindCardBank Ucard = new V_UsrBindCardBank();

            Ucard = ef.V_UsrBindCardBank.Where(p => p.registerid == userid).OrderByDescending(p => p.defCard).Take(1).FirstOrDefault();

            List <V_UsrBindCardBank> cards = ef.V_UsrBindCardBank.Where(c => c.registerid == userid).ToList();

            cards = BusinessLogicHelper.LeftOne(cards);
            List <V_UsrBindCardBank> listcard = cards;                                               //网银卡列表

            List <V_UsrBindCardBank> listquickcard = cards.Where(c => c.BindCardType == 1).ToList(); //快捷卡列表

            var flag = listquickcard != null && listquickcard.Count() > 0;

            if (flag)
            {
                ViewBag.listcard = listquickcard;
            }
            else
            {
                ViewBag.listcard = listcard;
            }

            ViewBag.flag = flag;
            return(View(Ucard));
        }
示例#5
0
        public void ExchangeCurrencies_EURUSD_Returns_null()
        {
            //Arrange
            var businessLogicHelper = new BusinessLogicHelper(new CurrencyPair()
            {
                FirstCurrency = new Currency("Euro", ISO.EUR, 743.94m), SecondCurrency = new Currency("Amerikanske dollar", ISO.USD, 663.11m), Amount = 1
            }, null);
            //Act

            var result = businessLogicHelper.ExchangeCurrencies();

            //Assert
            Assert.AreEqual(null, result);
        }
        //Region containing all functions related to trasfer workflow/data flow
        #region Transfer Operations

        public async Task <ActionResult> CreateTransfer(Transfer transfer)
        {
            //Validate the off hire date of the transfer
            if (transfer.DateOnHire.Date < DateTime.Now.Date.AddDays(await BusinessLogicHelper.DaysUntilDelivery(ActiveCustomer)))
            {
                return(Json(new { success = false, message = Resources.AnErrorOccured }));
            }

            //Validate that this is a new transfer the transfer already exists
            IEnumerable <Transfer> transfers = projectsDB.GetCustomerTransfers(ActiveCustomer);

            if (transfers.Where(i => i.TransferfromInventTransId == transfer.TransferfromInventTransId && i.Status != 4).Count() > 0)
            {
                return(Json(new { success = false, message = Resources.AnErrorOccured }));
            }

            //Get the order to be transfered and populate the transfer model
            RentalOrderDetails machine          = db.GetRentalOrderDetails(ActiveCustomer, transfer.TransferfromInventTransId);
            IdentityUser       transferFromUser = UserTable.GetUserById(User.Identity.GetUserId());
            ContactPerson      user             = db.GetContactPersonById(transfer.ContactPersonId);

            transfer.TransferFromCustAccount     = ActiveCustomer.CustomerId;
            transfer.TransferFromUserId          = transferFromUser.Id;
            transfer.TransferFromSalesName       = ActiveCustomer.Name;
            transfer.TransferFromContactPersonId = transferFromUser.ContactPersonId;
            transfer.DatabaseName = ActiveCustomer.DatabaseName;
            transfer.DataAreaId   = ActiveCustomer.CompanyId;
            transfer.UserId       = "N/A";

            //Call AX Business connector
            string    apiUrlSuffix = ConfigurationManager.AppSettings["TransfersBaseURL"];
            var       completeUrl  = baseApiUrl + apiUrlSuffix + "/CreateTransfer";
            string    postData     = JsonConvert.SerializeObject(transfer);
            WebClient client       = new WebClient();

            client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
            string response = client.UploadString(completeUrl, "POST", postData);

            //Check the response from the AX business connector
            if (response == "false")
            {
                return(Json(new { success = false, message = Resources.AnErrorOccured }));
            }


            await PushCreationEmail(transfer, machine);

            return(Json(new { success = true, message = string.Format(Resources.SenderS0, machine.ItemName, transfer.SalesName, user.ContactPersonName) }));
        }
示例#7
0
        /// <summary>
        /// Gets and returns ResponseOfT VW_BASELINE_DATA for Kendo grid. Supports
        /// server side paging, sorting and filtering.
        /// </summary>
        /// <param name="request"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public List <object> BuildPredicateQueryColumnFilter(Dictionary <string, object> request, List <TestViewModel> data = null)
        {
            TestViewModel dataObj = new TestViewModel();

            // Build query
            string whereClause = BusinessLogicHelper.GetWhereCondition(request);

            // get filterParams from request
            object filterParam;
            bool   ableToParseFilterParam = request.TryGetValue("workspaceFilters", out filterParam);

            // get columnFilter from request
            object columnFilter;
            bool   columnFilterProvided = request.TryGetValue("columnFilter", out columnFilter);

            // Begin queryable GET
            var queryableResults = data != null?data.AsQueryable() : _dbContext.TestViewModels.AsQueryable();

            //Apply Filter parameters
            if (ableToParseFilterParam && filterParam != null)
            {
                var param = JObject.Parse(filterParam.ToString()).ToObject <FilterParams>();
                if (param != null)
                {
                    queryableResults = dataObj.ApplyFilterParams(queryableResults, param);
                }
            }
            else
            {
                queryableResults = queryableResults.Select(y => y).Where(x => (int)x.Id == -1);
            }

            //apply grid options/grid filters
            queryableResults = queryableResults.Where(whereClause);

            // ensure column filter is provided
            if (!columnFilterProvided)
            {
                throw new Exception("Bad request: No column filter provided.");
            }

            var columnFilterStr = columnFilter.ToString().Replace("\"", "");

            // get result
            IEnumerable <string> results = dataObj.SelectColumnFilterLinq <TestViewModel, string>(queryableResults, columnFilterStr).Distinct().OrderBy(x => x).AsEnumerable();

            return(dataObj.ConvertColumnFilterObjects(columnFilterStr, results));
        }
示例#8
0
        /// <summary>
        /// Update an entity's properties from a JObject (during a PATCH).  Validation is performed, but no changes are saved.
        /// </summary>
        /// <param name="entity">Entity to be updated.</param>
        /// <param name="changes">Changes as a JObject.</param>
        protected virtual void UpdateFromJObject <T1>(T1 entity, JObject changes) where T1 : class, IEntity
        {
            Dictionary <string, object> changedProperties = new Dictionary <string, object>();
            Type entityType = typeof(T1);

            foreach (var pair in changes)
            {
                if (!ProcessJTokenUpdate(entity, pair.Key, pair.Value))
                {
                    var convertedPair = JsonExtensions.ConvertToType <T1>(pair);
                    changedProperties.Add(convertedPair.Key, convertedPair.Value);
                }
            }

            IEntityLogic logic = BusinessLogicHelper.GetBusinessLogic <T1>(unitOfWork);

            unitOfWork.GetRepository <T1>().UpdateChangedProperties(entity, changedProperties, p => logic.Validate(p));
        }
示例#9
0
        public virtual IDataResponse Update(T entity)
        {
            var response = new DataResponse <T>();

            try
            {
                BusinessLogicHelper.GetBusinessLogic <T>(unitOfWork).Validate(entity);
                unitOfWork.Update(entity);
                unitOfWork.SaveChanges();
                response.Data = unitOfWork.GetById(entity.Id, IncludesForSingle);
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.ToString());
                return(ProcessIDataResponseException(ex));
            }

            return(response);
        }
示例#10
0
        public virtual IDataResponse <T> Add(T entity)
        {
            var response = new DataResponse <T>();

            try
            {
                unitOfWork.Insert(entity);
                BusinessLogicHelper.GetBusinessLogic <T>(unitOfWork)?.Validate(entity);
                unitOfWork.SaveChanges();
                response.Data = unitOfWork.GetById(entity.Id, IncludesForSingle);
                FormatEntityForGet(response.Data, FieldLists.AllFields);
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.ToString());
                return(ProcessIDataResponseException(ex));
            }

            return(response);
        }
示例#11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        private ResponseOfT <TestViewModel> BuildPredicateQuery(Dictionary <string, object> request, List <TestViewModel> data = null)
        {
            // Build query
            string order = BusinessLogicHelper.GetOrderBy(request, "Value1 asc");
            int    skip  = BusinessLogicHelper.GetSkip(request);
            int    take  = BusinessLogicHelper.GetTake(request);

            string whereClause = BusinessLogicHelper.GetWhereCondition(request, typeof(TestViewModel));
            object filterParam;
            bool   parsedFilterParams = request.TryGetValue("workspaceFilters", out filterParam);

            // Begin queryable GET
            var queryableResults = data != null?data.AsQueryable() : _dbContext.TestViewModels.AsQueryable();

            // Apply Filter parameters
            if (parsedFilterParams && filterParam != null)
            {
                var param = JObject.Parse(filterParam.ToString()).ToObject <FilterParams>();
                if (param != null)
                {
                    queryableResults = new TestViewModel().ApplyFilterParams(queryableResults, param);
                }
            }
            else
            {
                queryableResults = queryableResults.Select(y => y).Where(x => (int)x.Id == 1);
            }

            // apply grid options/grid filters
            queryableResults = queryableResults.Where(whereClause);
            int count = queryableResults.Count();

            queryableResults = queryableResults.OrderBy(order).Skip(skip).Take(take);

            // Return data
            return(new ResponseOfT <TestViewModel>(queryableResults.ToList(), count));
        }
示例#12
0
        // GET: BindCard
        public ActionResult Index()
        {
            int userid = Utils.checkloginsession();

            B_member_table b  = new B_member_table();
            M_member_table pu = new M_member_table();

            pu = b.GetModel(userid);



            //判断用户是否开户
            if (string.IsNullOrEmpty(pu.UsrCustId))
            {
                string temstr = "/opening_account/Index/" + userid.ToString();
                return(Redirect(temstr));
            }


            //if (pu.isbankcard == 0)
            //{
            checkbank(pu.UsrCustId);

            //}

            V_UsrBindCardBank Ucard = new V_UsrBindCardBank();

            Ucard = ef.V_UsrBindCardBank.Where(p => p.registerid == userid).OrderByDescending(p => p.defCard).Take(1).FirstOrDefault();


            List <V_UsrBindCardBank> listcard = ef.V_UsrBindCardBank.Where(c => c.registerid == userid).ToList();

            listcard         = BusinessLogicHelper.LeftOne(listcard);
            ViewBag.listcard = listcard;
            return(View(Ucard));
        }
示例#13
0
        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());
        }
示例#14
0
        /// <summary>
        /// 普通提现汇付后台主动通知
        /// </summary>
        /// <returns></returns>
        public ActionResult PostGENERALAmt()
        {
            string str1 = "";
            ReCash m    = new ReCash();

            m.CmdId         = DNTRequest.GetString("CmdId");
            m.RespCode      = DNTRequest.GetString("RespCode");
            m.RespDesc      = HttpUtility.UrlDecode(DNTRequest.GetString("RespDesc"));
            m.MerCustId     = DNTRequest.GetString("MerCustId");
            m.OrdId         = DNTRequest.GetString("OrdId");
            m.UsrCustId     = DNTRequest.GetString("UsrCustId");
            m.TransAmt      = DNTRequest.GetString("TransAmt");
            m.OpenAcctId    = DNTRequest.GetString("OpenAcctId");
            m.OpenBankId    = DNTRequest.GetString("OpenBankId");
            m.FeeAmt        = DNTRequest.GetString("FeeAmt");
            m.FeeCustId     = DNTRequest.GetString("FeeCustId");
            m.FeeAcctId     = DNTRequest.GetString("FeeAcctId");
            m.ServFee       = DNTRequest.GetString("ServFee");
            m.ServFeeAcctId = DNTRequest.GetString("ServFeeAcctId");
            m.RetUrl        = HttpUtility.UrlDecode(DNTRequest.GetString("RetUrl"));
            m.BgRetUrl      = HttpUtility.UrlDecode(DNTRequest.GetString("BgRetUrl"));
            m.MerPriv       = DNTRequest.GetString("MerPriv");
            m.RespExt       = HttpUtility.UrlDecode(DNTRequest.GetString("RespExt"));
            m.ChkValue      = DNTRequest.GetString("ChkValue");
            LogInfo.WriteLog("后台取现返回报文:" + FastJSON.toJOSN(m));

            //验签
            StringBuilder chkVal = new StringBuilder();

            chkVal.Append(m.CmdId);
            chkVal.Append(m.RespCode);
            chkVal.Append(m.MerCustId);
            chkVal.Append(m.OrdId);
            chkVal.Append(m.UsrCustId);
            chkVal.Append(m.TransAmt);
            chkVal.Append(m.OpenAcctId);
            chkVal.Append(m.OpenBankId);
            chkVal.Append(m.FeeAmt);
            chkVal.Append(m.FeeCustId);
            chkVal.Append(m.FeeAcctId);
            chkVal.Append(m.ServFee);
            chkVal.Append(m.ServFeeAcctId);
            chkVal.Append(m.RetUrl);
            chkVal.Append(m.BgRetUrl);
            chkVal.Append(m.MerPriv);
            chkVal.Append(m.RespExt);

            string msg = chkVal.ToString();

            //私钥文件的位置(这里是放在了站点的根目录下)
            string merKeyFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetPgPubk();
            //需要指定提交字符串的长度
            int           len        = Encoding.UTF8.GetBytes(msg).Length;
            StringBuilder sbChkValue = new StringBuilder(256);

            int ret = DllInterop.VeriSignMsg(merKeyFile, msg, msg.Length, m.ChkValue);

            // LogInfo.WriteLog("验签返回参数:" + ret.ToString());
            StringBuilder str = new StringBuilder();

            if (ret == 0)
            {
                //提现成功后,得多事务处理账户金额,流水及冻结金额等
                if (m.RespCode == "000")
                {
                    string cachename = m.OrdId + "Cash" + m.UsrCustId;

                    if (Utils.GeTThirdCache(cachename) == 0)
                    {
                        Utils.SetThirdCache(cachename);
                        B_usercenter BUC    = new B_usercenter();
                        M_ReqExt     mre    = JsonConvert.DeserializeObject <M_ReqExt>(m.RespExt.Replace("[", "").Replace("]", ""));
                        int          CashOp = BUC.CashTran(m.OpenAcctId, m.OpenBankId, m.OrdId, m.TransAmt, m.UsrCustId, m.FeeAmt, mre.FeeObjFlag, mre.CashChl);
                        //int CashOp = BUC.CashTran(m.OpenAcctId, m.OpenBankId, m.OrdId, m.TransAmt, m.UsrCustId);
                        if (CashOp > 0)
                        {
                            string sql = "select registerid,username,mobile,UsrCustId,available_balance from hx_member_table where UsrCustId='" + m.UsrCustId + "'";
                            LogInfo.WriteLog("后台审请取现成功短信sql:" + sql);
                            DataTable dt = DbHelperSQL.GET_DataTable_List(sql);
                            if (dt.Rows.Count > 0)
                            {
                                //短信通知
                                //尊敬的#USERANEM#,您已成功提现#MONEY#元,账户余额#MONEY1#.请注意查收!【创利投】
                                string contxt = Utils.GetMSMEmailContext(12, 1); // 获取注册成功邮件内容

                                StringBuilder sbsms = new StringBuilder(contxt);

                                sbsms = sbsms.Replace("#USERANEM#", dt.Rows[0]["username"].ToString());

                                sbsms = sbsms.Replace("#MONEY#", m.TransAmt);

                                decimal amt = decimal.Parse(dt.Rows[0]["available_balance"].ToString()) - decimal.Parse(m.TransAmt);

                                sbsms = sbsms.Replace("#MONEY1#", amt.ToString());

                                string mobile = dt.Rows[0]["mobile"].ToString();

                                M_td_SMS_record psms    = new M_td_SMS_record();
                                B_td_SMS_record osms    = new B_td_SMS_record();
                                int             smstype = (int)Enum.Parse(typeof(EnumSMSType), EnumSMSType.取现成功.ToString());
                                psms.phone_number = mobile;
                                psms.sendtime     = DateTime.Now;
                                psms.senduserid   = int.Parse(dt.Rows[0]["registerid"].ToString());
                                psms.smstype      = smstype;
                                psms.smscontext   = sbsms.ToString();
                                psms.orderid      = SendSMS.Send_SMS(mobile, sbsms.ToString());
                                psms.vcode        = "";
                                osms.Add(psms);
                                DateTime            dti = DateTime.Now;
                                M_td_System_message pm  = new M_td_System_message();
                                pm.MReg     = int.Parse(dt.Rows[0]["registerid"].ToString());
                                pm.Mstate   = 0;
                                pm.MTitle   = "提现成功";
                                pm.MContext = sbsms.ToString();
                                pm.PubTime  = dti;
                                pm.Mtype    = 3;
                                B_usercenter.AddMessage(pm);


                                if (mre.CashChl == "IMMEDIATE" && decimal.Parse(m.TransAmt) <= 200000M)
                                {
                                    string retUrl   = Utils.GetRe_url("admin/UserCash/RePostCashProcessing");
                                    string bgRetUrl = Utils.GetRe_url("admin/Thirdparty/BgCashProcessing");
                                    BusinessLogicHelper.AutoCheckCash(m.UsrCustId, retUrl, bgRetUrl);
                                }
                            }
                        }
                    }


                    str1 = "RECV_ORD_ID_" + m.OrdId;
                }
            }
            return(Content(str1));
        }
示例#15
0
        /// <summary>
        /// 汇付主动通知页面
        /// </summary>
        /// <returns></returns>
        public ActionResult CashBgCallback()
        {
            string str1 = "";
            ReCash m    = new ReCash();

            m.CmdId         = DNTRequest.GetString("CmdId");
            m.RespCode      = DNTRequest.GetString("RespCode");
            m.RespDesc      = HttpUtility.UrlDecode(DNTRequest.GetString("RespDesc"));
            m.MerCustId     = DNTRequest.GetString("MerCustId");
            m.OrdId         = DNTRequest.GetString("OrdId");
            m.UsrCustId     = DNTRequest.GetString("UsrCustId");
            m.TransAmt      = DNTRequest.GetString("TransAmt");
            m.OpenAcctId    = DNTRequest.GetString("OpenAcctId");
            m.OpenBankId    = DNTRequest.GetString("OpenBankId");
            m.FeeAmt        = DNTRequest.GetString("FeeAmt");
            m.FeeCustId     = DNTRequest.GetString("FeeCustId");
            m.FeeAcctId     = DNTRequest.GetString("FeeAcctId");
            m.ServFee       = DNTRequest.GetString("ServFee");
            m.ServFeeAcctId = DNTRequest.GetString("ServFeeAcctId");
            m.RetUrl        = HttpUtility.UrlDecode(DNTRequest.GetString("RetUrl"));
            m.BgRetUrl      = HttpUtility.UrlDecode(DNTRequest.GetString("BgRetUrl"));
            m.MerPriv       = DNTRequest.GetString("MerPriv");
            m.RespExt       = HttpUtility.UrlDecode(DNTRequest.GetString("RespExt"));
            m.ChkValue      = DNTRequest.GetString("ChkValue");
            m.RealTransAmt  = DNTRequest.GetString("RealTransAmt");
            LoggerHelper.Info("后台取现返回报文:" + JsonHelper.Entity2Json(m));

            //验签
            StringBuilder chkVal = new StringBuilder();

            chkVal.Append(m.CmdId);
            chkVal.Append(m.RespCode);
            chkVal.Append(m.MerCustId);
            chkVal.Append(m.OrdId);
            chkVal.Append(m.UsrCustId);
            chkVal.Append(m.TransAmt);
            chkVal.Append(m.OpenAcctId);
            chkVal.Append(m.OpenBankId);
            chkVal.Append(m.FeeAmt);
            chkVal.Append(m.FeeCustId);
            chkVal.Append(m.FeeAcctId);
            chkVal.Append(m.ServFee);
            chkVal.Append(m.ServFeeAcctId);
            chkVal.Append(m.RetUrl);
            chkVal.Append(m.BgRetUrl);
            chkVal.Append(m.MerPriv);
            chkVal.Append(m.RespExt);

            string msg = chkVal.ToString();

            //私钥文件的位置(这里是放在了站点的根目录下)
            string merKeyFile = AppDomain.CurrentDomain.BaseDirectory + Settings.Instance.PgPubk;
            //需要指定提交字符串的长度
            int           len        = Encoding.UTF8.GetBytes(msg).Length;
            StringBuilder sbChkValue = new StringBuilder(256);

            int ret = DllInterop.VeriSignMsg(merKeyFile, msg, msg.Length, m.ChkValue);

            // LoggerHelper.Info("验签返回参数:" + ret.ToString());
            StringBuilder str = new StringBuilder();

            if (ret == 0)
            {
                //提现成功后,得多事务处理账户金额,流水及冻结金额等
                if (m.RespCode == "000")
                {
                    string cachename = m.OrdId + "Cash" + m.UsrCustId;

                    if (Settings.Instance.GeTThirdCache(cachename) == 0)
                    {
                        Settings.Instance.SetThirdCache(cachename);
                        B_usercenter BUC = new B_usercenter();
                        M_ReqExt     mr  = new M_ReqExt();
                        mr = FastJSON.ToObject <M_ReqExt>(m.RespExt.Replace("[", "").Replace("]", ""));
                        int CashOp = BUC.CashTran(m.OpenAcctId, m.OpenBankId, m.OrdId, m.RealTransAmt, m.UsrCustId, m.FeeAmt, mr.FeeObjFlag, mr.CashChl);
                        if (CashOp > 0)
                        {
                            string sql = "select registerid,username,mobile,UsrCustId,available_balance from hx_member_table where UsrCustId='" + m.UsrCustId + "'";
                            LoggerHelper.Info("后台审请取现成功短信sql:" + sql);
                            DataTable dt = DbHelper.Query(sql).Tables[0];
                            if (dt.Rows.Count > 0)
                            {
                                //短信通知
                                //尊敬的#USERANEM#,您已成功提现#MONEY#元,账户余额#MONEY1#.请注意查收!【创利投】
                                MemberLogic _logic = new MemberLogic();

                                var    ebt    = _logic.GetSmsEmailEntity(1, 12); // 获取内容
                                string contxt = ebt.SEContext;

                                StringBuilder sbsms = new StringBuilder(contxt);

                                sbsms = sbsms.Replace("#USERANEM#", dt.Rows[0]["username"].ToString());

                                sbsms = sbsms.Replace("#MONEY#", m.TransAmt);

                                decimal amt = decimal.Parse(dt.Rows[0]["available_balance"].ToString()) - decimal.Parse(m.TransAmt);

                                sbsms = sbsms.Replace("#MONEY1#", amt.ToString());

                                string mobile = dt.Rows[0]["mobile"].ToString();

                                M_td_SMS_record psms    = new M_td_SMS_record();
                                B_td_SMS_record osms    = new B_td_SMS_record();
                                int             smstype = (int)Enum.Parse(typeof(EnumSMSType), EnumSMSType.取现成功.ToString());
                                psms.phone_number = mobile;
                                psms.sendtime     = DateTime.Now;
                                psms.senduserid   = int.Parse(dt.Rows[0]["registerid"].ToString());
                                psms.smstype      = smstype;
                                psms.smscontext   = sbsms.ToString();
                                psms.orderid      = SendSMS.Send(mobile, sbsms.ToString());
                                psms.vcode        = "";
                                osms.Add(psms);
                                DateTime            dti = DateTime.Now;
                                M_td_System_message pm  = new M_td_System_message();
                                pm.MReg     = int.Parse(dt.Rows[0]["registerid"].ToString());
                                pm.Mstate   = 0;
                                pm.MTitle   = "投现成功";
                                pm.MContext = sbsms.ToString();
                                pm.PubTime  = dti;
                                pm.Mtype    = 3;
                                B_usercenter.AddMessage(pm);

                                //即时提现,提现金额小于等于20万自动审核,高于20万人工审核
                                string cashChl = Enum.GetName(typeof(EnumCommon.E_hx_td_UserCash.EnumCashChl), (int)EnumCommon.E_hx_td_UserCash.EnumCashChl.IMMEDIATE);
                                if (mr.CashChl == cashChl && decimal.Parse(m.TransAmt) <= 200000)
                                {
                                    string retUrl   = Settings.Instance.ImagesDomain + "/admin/UserCash/RePostCashProcessing";
                                    string bgRetUrl = Settings.Instance.ImagesDomain + "/admin/Thirdparty/BgCashProcessing";
                                    BusinessLogicHelper.AutoCheckCash(m.UsrCustId, retUrl, bgRetUrl);
                                }
                            }
                        }
                    }
                    str1 = "RECV_ORD_ID_" + m.OrdId;
                }
            }
            return(Content(str1));
        }
示例#16
0
        /// <summary>
        /// 分页列表
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="startdatetime"></param>
        /// <param name="enddatetime"></param>
        /// <param name="timeday"></param>
        /// <param name="pgaesize"></param>
        /// <returns></returns>
        // GET: Cash
        public ActionResult Index(int?pageIndex, string startdatetime, string enddatetime, int timeday = 0, int pgaesize = 5)
        {
            ViewBag.rndstr = Utils.RndNumChar(10).ToString();

            int OrdIdState = DNTRequest.GetInt("OrdIdState", 0);

            ViewBag.OrdIdState = OrdIdState;
            int     userid    = Utils.checkloginsession();
            int     Counts    = 0;
            int     lostCount = 0;
            int     succCount = 0;
            decimal Totals    = 0.00M;
            decimal lostTotal = 0.00M;
            decimal succTotal = 0.00M;

            B_member_table b  = new B_member_table();
            M_member_table pu = new M_member_table();

            pu = b.GetModel(userid);

            //判断用户是否开户
            if (string.IsNullOrEmpty(pu.UsrCustId))
            {
                string temstr = "/opening_account/Index/" + userid.ToString();
                return(Redirect(temstr));
            }


            new BindCardController().checkbank(pu.UsrCustId);

            if (userid > 0)
            {
                if (Session["retloan1"] != null)
                {
                }
                else
                {
                    UserInfoData     ud      = new UserInfoData();
                    ReQueryBalanceBg retloan = ud.Querybalance(userid);

                    if (retloan.RespCode == "000")
                    {
                        //  string sql = "update  hx_member_table  set  available_balance=" + decimal.Parse(retloan.AvlBal) + " ,frozen_sum=" + decimal.Parse(retloan.FrzBal) + " where  registerid=" + userid.ToString() + "";

                        //string sql = "update  hx_member_table  set  available_balance=" + decimal.Parse(retloan.AvlBal) + "  where  registerid=" + userid.ToString() + "";

                        //DbHelperSQL.RunSql(sql);
                        B_usercenter bu = new B_usercenter();
                        bu.DataSync(retloan, userid.ToString());

                        Session["retloan1"] = "updateUserbalance";
                    }
                }
            }


            List <V_UsrBindCardBank> vubc = ef.V_UsrBindCardBank.Where(c => c.registerid == userid && c.OpenBankId != null).ToList();



            //判断用户是否绑定一行卡
            //if (vubc.Count <= 0)
            //{
            //    string temstr = "/BindCard/Index";
            //    return Redirect(temstr);
            //}


            var ListByOwner = ef.hx_td_UserCash.Where(l => l.registerid == userid && l.OpenBankId != null).GroupBy(l => l.registerid)
                              .Select(lg => new
            {
                Owner     = lg.Key,
                Counts    = lg.Count(),
                lostCount = lg.Where(lo => lo.OrdIdState == 0).Count(),
                succCount = lg.Where(su => su.OrdIdState == 3).Count(),
                Totals    = lg.Where(w => w.OrdIdState == 3).Sum(w => w.TransAmt),
                lostTotal = lg.Where(w => w.OrdIdState == 0).Sum(w => w.TransAmt),
                succTotal = lg.Where(w => w.OrdIdState == 3).Sum(w => w.TransAmt),
            });

            foreach (var itc in ListByOwner)
            {
                if (itc.Counts > 0)
                {
                    //Counts = itc.Counts;
                    // Totals = (decimal)itc.Totals;
                    int.TryParse(itc.Counts.ToString(), out Counts);
                    decimal.TryParse(itc.Totals.ToString(), out Totals);
                    int.TryParse(itc.lostCount.ToString(), out lostCount);
                    int.TryParse(itc.succCount.ToString(), out succCount);
                    decimal.TryParse(itc.lostTotal.ToString(), out lostTotal);
                    decimal.TryParse(itc.succTotal.ToString(), out succTotal);
                }
            }
            Expression <Func <hx_td_UserCash, bool> > where = PredicateExtensionses.True <hx_td_UserCash>();
            where = where.And(p => p.UserCashId > 0);
            where = where.And(p => p.registerid == userid);

            where = where.And(p => p.OpenBankId != null);

            if (ViewBag.OrdIdState == 3)
            {
                where = where.And(p => p.OrdIdState == OrdIdState);
            }


            DateTime sdatetime = new DateTime();
            DateTime edatetime = new DateTime();

            if (Utils.IsDate(startdatetime))
            {
                sdatetime = DateTime.Parse(startdatetime);
            }

            if (Utils.IsDate(enddatetime))
            {
                edatetime = DateTime.Parse(enddatetime);
            }

            if (sdatetime > DateTime.Parse("0001-01-01 00:00:00") && edatetime > DateTime.Parse("0001-01-01 00:00:00"))
            {
                where = where.And(p => ((DateTime)p.OrdIdTime).CompareTo(sdatetime) >= 0);
                DateTime dt2 = Convert.ToDateTime(edatetime.ToString("yyyy-MM-dd") + " 23:59:59");
                where = where.And(p => ((DateTime)p.OrdIdTime).CompareTo(dt2) <= 0);
            }
            else
            {
                DateTime dt2;
                switch (timeday)
                {
                case 0:

                    break;

                case 1:
                    sdatetime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00");
                    dt2       = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59");
                    where     = where.And(p => ((DateTime)p.OrdIdTime).CompareTo(sdatetime) >= 0);
                    where     = where.And(p => ((DateTime)p.OrdIdTime).CompareTo(dt2) <= 0);
                    break;

                case 30:
                    sdatetime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00").AddDays(-30);
                    dt2       = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59");
                    where     = where.And(p => ((DateTime)p.OrdIdTime).CompareTo(sdatetime) >= 0);
                    where     = where.And(p => ((DateTime)p.OrdIdTime).CompareTo(dt2) <= 0);
                    where     = where.And(p => ((DateTime)p.OrdIdTime).CompareTo(sdatetime) >= 0);
                    where     = where.And(p => ((DateTime)p.OrdIdTime).CompareTo(dt2) <= 0);
                    break;

                case 90:
                    sdatetime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00").AddDays(-90);
                    dt2       = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59");
                    break;

                default:
                    break;
                }
            }
            var list = ef.hx_td_UserCash.Where(where).OrderByDescending(p => p.UserCashId).ToPagedList(pageIndex ?? 1, pgaesize);



            ViewBag.startdatetime = startdatetime;
            ViewBag.enddatetime   = enddatetime;
            ViewBag.timeday       = timeday;
            ViewBag.pageIndex     = pageIndex;
            ViewBag.Counts        = Counts;
            ViewBag.Totals        = Totals;
            ViewBag.lostCount     = lostCount;

            ViewBag.lostTotal = lostTotal;


            ViewBag.succTotal = succTotal;
            ViewBag.succCount = succCount;

            ViewBag.users       = pu;
            vubc                = BusinessLogicHelper.LeftOne(vubc);
            ViewBag.UsrBindCard = vubc.OrderByDescending(c => c.defCard).ToList();

            ViewBag.Isquick = vubc.Where(c => c.Isquick == 1).Count() > 0;

            ViewBag.GENERAL = DateTime.Now.AddDays(1).ToString("MM月dd日");
            ViewBag.QM      = DateTime.Now.ToString("MM月dd日");
            if (Request.IsAjaxRequest())
            {
                return(PartialView("_Cashlist", list));
            }
            return(View(list));
        }
示例#17
0
        public ActionResult PostGENERALAmt()
        {
            //显示于页面给汇付
            string str = string.Empty;
            //日志变量
            string log = string.Empty;
            //响应通知加签的状态码
            int ret = -1;
            //业务的sql语句变量
            string sql = string.Empty;
            ReCash m   = ChinapnrFacade.CashCallBack(out ret);

            if (m != null)
            {
                //提现成功后,得多事务处理账户金额,流水及冻结金额等
                if (m.RespCode == "000")
                {
                    string cachename = m.OrdId + "Cash" + m.UsrCustId;
                    if (Utils.GeTThirdCache(cachename) == 0)
                    {
                        Utils.SetThirdCache(cachename);
                        B_usercenter BUC    = new B_usercenter();
                        M_ReqExt     mre    = JsonConvert.DeserializeObject <M_ReqExt>(m.RespExt.Replace("[", "").Replace("]", ""));
                        int          CashOp = BUC.CashTran(m.OpenAcctId, m.OpenBankId, m.OrdId, m.RealTransAmt, m.UsrCustId, m.FeeAmt, mre.FeeObjFlag, mre.CashChl);
                        if (CashOp > 0)
                        {
                            sql = "select registerid,username,mobile,UsrCustId,available_balance from hx_member_table where UsrCustId='" + m.UsrCustId + "'";
                            LogInfo.WriteLog("审请取现成功短信sql:" + sql);
                            DataTable dt = DbHelperSQL.GET_DataTable_List(sql);
                            if (dt.Rows.Count > 0)
                            {
                                //短信通知
                                //尊敬的#USERANEM#,您已成功提现#MONEY#元,账户余额#MONEY1#.请注意查收!【创利投】
                                string        contxt = Utils.GetMSMEmailContext(12, 1); // 获取注册成功邮件内容
                                StringBuilder sbsms  = new StringBuilder(contxt);
                                sbsms = sbsms.Replace("#USERANEM#", dt.Rows[0]["username"].ToString());
                                sbsms = sbsms.Replace("#MONEY#", m.TransAmt);
                                decimal amt = decimal.Parse(dt.Rows[0]["available_balance"].ToString()) - decimal.Parse(m.TransAmt);
                                sbsms = sbsms.Replace("#MONEY1#", amt.ToString());
                                string          mobile  = dt.Rows[0]["mobile"].ToString();
                                M_td_SMS_record psms    = new M_td_SMS_record();
                                B_td_SMS_record osms    = new B_td_SMS_record();
                                int             smstype = (int)Enum.Parse(typeof(EnumSMSType), EnumSMSType.取现成功.ToString());
                                psms.phone_number = mobile;
                                psms.sendtime     = DateTime.Now;
                                psms.senduserid   = int.Parse(dt.Rows[0]["registerid"].ToString());
                                psms.smstype      = smstype;
                                psms.smscontext   = sbsms.ToString();
                                psms.orderid      = SendSMS.Send_SMS(mobile, sbsms.ToString());
                                psms.vcode        = "";
                                osms.Add(psms);
                                DateTime            dti = DateTime.Now;
                                M_td_System_message pm  = new M_td_System_message();
                                pm.MReg     = int.Parse(dt.Rows[0]["registerid"].ToString());
                                pm.Mstate   = 0;
                                pm.MTitle   = "提现";
                                pm.MContext = sbsms.ToString();
                                pm.PubTime  = dti;
                                pm.Mtype    = 3;
                                B_usercenter.AddMessage(pm);
                            }
                            string cashChl = Enum.GetName(typeof(EnumCommon.E_hx_td_UserCash.EnumCashChl), (int)EnumCommon.E_hx_td_UserCash.EnumCashChl.IMMEDIATE);

                            if (mre.CashChl == cashChl && decimal.Parse(m.TransAmt) <= 200000M)
                            {
                                string retUrl   = Utils.GetRe_url("admin/UserCash/RePostCashProcessing");
                                string bgRetUrl = Utils.GetRe_url("admin/Thirdparty/BgCashProcessing");
                                BusinessLogicHelper.AutoCheckCash(m.UsrCustId, retUrl, bgRetUrl);
                            }
                        }
                    }
                }
            }
            return(View(m));
        }
 public PermisoController(BusinessLogicHelper blh, IMapper mapper)
 {
     _blh    = blh;
     _mapper = mapper;
 }