Exemplo n.º 1
0
        public void TestMethod1()
        {
            UserAccountRep userAccountRep = new UserAccountRep();
            string         mer_priv       = "2";
            var            trans_amt      = "16000.00";
            var            userAccountId  = int.Parse(mer_priv);
            var            userAccount    = userAccountRep.GetUserAccount(new UserAccount()
            {
                UserAccountId = userAccountId
            });
            var totalIntegral = (int)((int)userAccount.Integral + decimal.Parse(trans_amt) / 1000);

            var Memberlevel = this.RetrueMemberlevel(totalIntegral);

            if (Memberlevel > userAccount.Memberlevel)
            {
                userAccountRep.AddIntegral(userAccountId, totalIntegral, Memberlevel);
            }
            else
            {
                userAccountRep.AddIntegral(userAccountId, totalIntegral, null);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// TODO TODO TODO ....
        /// </summary>
        protected override void ExecuteMethod()
        {
            try
            {
                if (null == _fileStream && !BaseRiskModels.Any())
                {
                    throw  new Exception("选择要上传的文件");
                }

                UserAccount ua = new UserAccount()
                {
                    PayCenterCode = Parameter.PayCenterCode
                };
                _userAccount = UserAccountRep.GetUserAccount(ua);

                if (!ValidUserFactoring())
                {
                    throw new Exception("未配置保理企业;请联系相关人员处理!");
                }
                //生成批次号
                var batchNo = DateTime.Now.Ticks;

                //文件上传
                if (null != _fileStream)
                {
                    ExeclTalbe et = ExcelHelper.ExcelImport(_fileStream);

                    //去除标题
                    et.rows.RemoveAt(0);

                    Debug.WriteLine("Excel 总条数:{0}", et.rows.Count);

                    //数据格式验证
                    if (!ExcelTable2EntityList(et, "" + batchNo))
                    {
                        this.Result.Data      = this._verifyResults.Select(t => t.Item2);
                        this.Result.Message   = "Excel数据验证失败!";
                        this.Result.ErrorCode = "200";
                        return;
                    }
                }
                else
                {
                    _manageRiskModels = BaseRiskModels.GroupBy(t => t.EnterpriseID)
                                        .ToDictionary(t => t.Key, t => t.ToList());
                }

                Debug.WriteLine("格式转换后条数:{0},错误数据:{1}", _manageRiskModels.Count, _verifyResults.Select(t => t.Item2));

                //去重,Excel中数据重复
                if (!RemovalTicket())
                {
                    this.Result.Message   = string.Join(",", this._verifyResults.Select(t => t.Item2));
                    this.Result.ErrorCode = "200";
                    return;
                }

                Debug.WriteLine("去重后条数:{0},错误数据:{1}", _manageRiskModels.Count, _verifyResults.Select(t => t.Item2));

                //验证企业状态
                if (!VerifyEnterpriseStatus())
                {
                    this.Result.Data    = "企业信息验证失败!";
                    this.Result.Message = JsonConvert.SerializeObject(this._verifyResults.Select(t => t.Item2));
                    return;
                }

                Debug.WriteLine("企业信息验证结果:{0},错误数据:{1}", _manageRiskModels.Count, _verifyResults.Select(t => t.Item2));

                //验证风控
                VerifyRisk();

                Debug.WriteLine("风控验证结果:{0},错误数据:{1}", _manageRiskModels.Count, _verifyResults.Select(t => t.Item2));

                //验证分销商余额
                if (!VerifyDistrbutorBalance())
                {
                    this.Result.Message   = "分销商余额不足!";
                    this.Result.ErrorCode = "200";
                    return;
                }

                Debug.WriteLine("分销商月限额验证结果");

                //异常信息返回
                if (0 < _verifyResults.Count)
                {
                    Result.Message        = string.Join("\r\n", _verifyResults.Select(t => t.Item2));
                    this.Result.ErrorCode = "200";
                }

                if (0 < _manageRiskModels.Count)
                {
                    //入库&写入队列
                    SaveOrderData();

                    Result.Message += "\r\n 成功上传条数:" + (_manageRiskModels.Values.SelectMany(x => x).ToList().Count);
                }
            }
            catch (Exception ex)
            {
                LoggerFactory.Instance.Logger_Error(ex, "TravelOrderImportService");
                this.Result.ErrorCode = "200";
                this.Result.Message   = "服务端程序错误,请联系相关人员!";
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 黑屏接口验证
        /// </summary>
        public void CheckEterm()
        {
            string      TravelBatchId  = ManageRisk.TravelBatchId;
            long        EnterpriseID   = ManageRisk.EnterpriseID;
            int         TravelRiskType = ManageRisk.baseRiskModelList[0].TravelRiskType;
            UserAccount userAccount    = new UserAccountRep().GetUserAccount(new UserAccount()
            {
                PayCenterCode = ManageRisk.PayCenterCode
            });
            var interfaceAccount = new InterfaceAccountRep().GetInterfaceAccount(new InterfaceAccount()
            {
                MerchantCode = userAccount.MerchantCode
            });
            var travelRisk = new TravelRiskRep().GetTravelRiskByEnterpriseID(new TravelRisk()
            {
                EnterpriseID = Convert.ToInt32(ManageRisk.baseRiskModelList[0].EnterpriseID), PayCenterCode = ManageRisk.PayCenterCode
            });

            if (!string.IsNullOrWhiteSpace(interfaceAccount.SuspendedServiceUrl))
            {
                string strEtermSuccess    = ""; //黑屏接口调用成功的票号集合
                string strOrderPrice      = ""; //票价验证失败票号集合
                string strOrderPersonName = ""; //黑屏规则验证成功票号集合
                string strNoPersonName    = ""; //黑屏规则验证失败票号集合
                foreach (var item in ManageRisk.baseRiskModelList)
                {
                    var commandArgs = new CommandArgs()
                    {
                        Airline    = item.FlightNo,
                        Catelog    = "Ticket",
                        Command    = "Checkinfo",
                        TicketType = "BSP",
                        Args       = new OperateArgs()
                        {
                            TicketNo = item.TicketNum
                        }
                    };
                    var ticketProcessor = new TicketProcessor(commandArgs, interfaceAccount.SuspendedServiceUrl).Execute();
                    if (ticketProcessor.Success)
                    {
                        strEtermSuccess += "'" + item.TicketNum + "',";
                        item.EtermStatus = 1;    //修改实体黑屏接口调用状态为成功
                        if (item.EtermType != 0) //包含黑屏
                        {
                            //验证订单金额
                            if (Convert.ToDecimal(ticketProcessor.Result.ticketData.Price) * travelRisk.TicketMultiple != 0 && Convert.ToDecimal(ticketProcessor.Result.ticketData.Price) * travelRisk.TicketMultiple < item.OrderAmount)//刨除票价验证失败订单(需取表字段配置)
                            {
                                strOrderPrice += "'" + item.TicketNum + "',";
                            }
                            else if (item.TravelRiskType != 1) //验价成功 且 风控规则不是纯白名单验证的 验证姓名
                            {
                                //验证姓名
                                if (item.PersonName.Trim() == ticketProcessor.Result.ticketData.Name.Trim())
                                {
                                    strOrderPersonName   += "'" + item.TicketNum + "',";
                                    item.BlackResultState = 1; //设置黑屏验证结果为成功
                                }
                                else
                                {
                                    strNoPersonName += "'" + item.TicketNum + "',";
                                    item.FailReason  = "姓名验证失败(hp)|";
                                }
                            }
                        }
                    }
                    else
                    {
                        //验证包含黑屏接口
                        if (item.EtermType != 0)
                        {
                            strOrderPrice  += "'" + item.TicketNum + "',";//添加验票价失败订单
                            item.FailReason = ticketProcessor.Message + "(hp)|";
                        }
                    }
                }
                if (!string.IsNullOrWhiteSpace(strEtermSuccess))//黑屏接口调用成功的票号
                {
                    strEtermSuccess = strEtermSuccess.Substring(0, strEtermSuccess.Length - 1);
                    //修改黑屏接口调用状态为成功
                    new TravelBatchOrderRep().UpdateTravelBatchOrder(TravelBatchId, EnterpriseID, strEtermSuccess, "", 0, 0, "", 0, 0, 1, "");
                    LoggerFactory.Instance.Logger_Debug("黑屏接口调用成功:" + strEtermSuccess, "CheckEtermService");
                }
                //票价验证失败的票号
                if (!string.IsNullOrWhiteSpace(strOrderPrice))
                {
                    strOrderPrice = strOrderPrice.Substring(0, strOrderPrice.Length - 1);
                    ManageRisk.baseRiskModelList.RemoveAll(i => strOrderPrice.Contains(i.TicketNum));
                    //记录验证票价失败的订单
                    new TravelBatchOrderRep().UpdateTravelBatchOrder(TravelBatchId, EnterpriseID, strOrderPrice, "", 0, 0, "", 0, 0, 0, "票价验证失败(hp)");
                    //记录验证票价失败的订单日志
                    LoggerFactory.Instance.Logger_Debug("验证票价失败:" + strOrderPrice, "CheckEtermService");

                    //清除缓存
                    new RemoneyNotifyService().ModifyTicketCache(new List <string>(strOrderPrice.Substring(1, strOrderPrice.Length - 2).Split("','")));
                }
                //黑屏姓名验证成功的票号
                if (!string.IsNullOrWhiteSpace(strOrderPersonName))
                {
                    strOrderPersonName = strOrderPersonName.Substring(0, strOrderPersonName.Length - 1);
                    //修改黑屏验证成功状态
                    new TravelBatchOrderRep().UpdateTravelBatchOrder(TravelBatchId, EnterpriseID, strOrderPersonName, "", 0, 1, "", 0, 0, 0, "");
                    //修改黑屏验证成功状态日志
                    LoggerFactory.Instance.Logger_Debug("黑屏姓名验证成功" + strOrderPersonName, "CheckEtermService");
                }
                //黑屏姓名验证失败的票号
                if (!string.IsNullOrWhiteSpace(strNoPersonName))
                {
                    strNoPersonName = strNoPersonName.Substring(0, strNoPersonName.Length - 1);
                    //修改黑屏验证失败原因
                    new TravelBatchOrderRep().UpdateTravelBatchOrder(TravelBatchId, EnterpriseID, strNoPersonName, "", 0, 1, "", 0, 0, 0, "姓名验证失败(hp)|");
                }
                if (TravelRiskType != 0 && ManageRisk.baseRiskModelList.Count > 0)//判断风控规则不是 纯黑屏
                {
                    //调用白名单验证
                    new CheckEnterpriseWhiteListService(ManageRisk).Execute();
                }
                //调用王帅核算比率返现接口
                LoggerFactory.Instance.Logger_Debug("调用王帅核算比率返现,list集合:" + JsonConvert.SerializeObject(ManageRisk), "CheckEtermService");
                try {
                    new RemoneyService(ManageRisk).Execute();
                }
                catch (Exception ex) {
                    LoggerFactory.Instance.Logger_Debug("返现报错:" + ex.Message, "CheckEtermService");
                }
            }
            else //黑屏地址为空
            {
                //记录验证失败原因
                ManageRisk.baseRiskModelList.ForEach(i => i.FailReason = "黑屏验证失败(hp地址为空)|");
                new TravelBatchOrderRep().UpdateTravelBatchOrder(TravelBatchId, EnterpriseID, "", "", 0, 0, "", 0, 0, 0, "黑屏验证失败(hp地址为空)|");
                //调用王帅核算比率返现接口
                LoggerFactory.Instance.Logger_Debug("调用王帅核算比率返现,list集合:" + JsonConvert.SerializeObject(ManageRisk), "CheckEtermService");
                try {
                    new RemoneyService(ManageRisk).Execute();
                }
                catch (Exception ex) {
                    LoggerFactory.Instance.Logger_Debug("返现报错:" + ex.Message, "CheckEtermService");
                }
            }
        }