Exemplo n.º 1
0
        public void TestBatchRemoney()
        {
            var BaseRiskModellist = new List <BaseRiskModel>();
            var baseRiskModel     = new BaseRiskModel()
            {
                ArriveCode       = "SHA",
                Cabin            = "Y",
                DepartCode       = "PEK",
                DepartureTime    = DateTime.Now,
                EnterpriseID     = 1089,
                EnterpriseName   = "新测试企业五",
                EtermType        = 0,
                EtermStatus      = 1,
                EtermSuccessRate = 0,
                FlightNo         = "CA1234",
                OrderAmount      = 100,
                TicketNum        = "9995783618889",
                PayCenterCode    = "CSSX41080209",
                PayCenterName    = "苏测试分销一",
                PersonName       = "朱明",
                TicketPrice      = 1200,
                TicketTime       = DateTime.Now,
                TravelBatchId    = "636403794183510244",
                TravelRiskType   = 1,
                PNR              = "QWERTY",
                WhiteFailRate    = 0,
                WhiteSuccessRate = 0
            };

            BaseRiskModellist.Add(baseRiskModel);
            var ManageRisk = new ManageRiskModel()
            {
                AccountPeriod         = "61",
                BackReapalNo          = "100000000001678",
                EnterpriseID          = 1089,
                TravelBatchId         = "636403794183510244",
                FactoringEmail        = "*****@*****.**",
                EnterpriseName        = "新测试企业五",
                FactoringInterestRate = 0.018m,
                FactoringName         = "测试保理",
                FactoringReapalNo     = "100000000001024",
                InterestRate          = 0,
                PayCenterCode         = "CSSX41080209",
                PayCenterName         = "苏测试分销一",
                UserFactoringId       = 1,
                UserName          = "******",
                baseRiskModelList = BaseRiskModellist
            };

            new RemoneyService(ManageRisk).Execute();
        }
Exemplo n.º 2
0
 /// <summary>
 /// 重构函数
 /// </summary>
 public RemoneyBaseService(ManageRiskModel ManageRiskModel)
 {
     ManageRiskModelBase = ManageRiskModel;
 }
Exemplo n.º 3
0
        public static void check(string str)
        {
            ManageRiskModel model = JsonConvert.DeserializeObject <ManageRiskModel>(str);

            new CheckEtermService(model).Execute();
        }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="model"></param>
 public CheckEnterpriseWhiteListService(ManageRiskModel model) : base()
 {
     ManageRisk = model;
 }
Exemplo n.º 5
0
        //保存数据并写入队列
        private bool SaveOrderData()
        {
            var travelBatchList = new List <TravelBatch>();

            _manageRiskModels.Foreach(item =>
            {
                if (0 < item.Value.Count)
                {
                    var enterprise = _enterpriseWhiteLists.FirstOrDefault(t => t.EnterpriseWhiteListID == item.Key);

                    var defaultModel = item.Value.FirstOrDefault();

                    var travelRisk = _travelRisks.ContainsKey((int)item.Key) ? _travelRisks[(int)item.Key] : null;

                    var travelBatchModel           = new TravelBatch();
                    travelBatchModel.TravelBatchId = defaultModel.TravelBatchId;

                    travelBatchModel.PayCenterCode   = Parameter.PayCenterCode;
                    travelBatchModel.PayCenterName   = Parameter.PayCenterName;
                    travelBatchModel.EnterpriseId    = (int)item.Key;
                    travelBatchModel.EnterpriseName  = defaultModel.EnterpriseName;
                    travelBatchModel.TravelRiskType  = defaultModel.TravelRiskType;
                    travelBatchModel.TravelRiskState = 0;

                    //黑屏比例
                    travelBatchModel.EtermSuccessRate = defaultModel.EtermSuccessRate;
                    travelBatchModel.EtermFailRate    = defaultModel.EtermFailRate;

                    //白屏比例
                    travelBatchModel.WhithSuccessRate = null != travelRisk ? travelRisk.WhiteSuccessRate : 0;
                    travelBatchModel.WhithFailRate    = null != travelRisk ? travelRisk.WhiteFailRate : 0;

                    travelBatchModel.CreateTime       = DateTime.Now;
                    travelBatchModel.TotalCount       = item.Value.Count();
                    travelBatchModel.TranslationState = 0;
                    travelBatchModel.TotalAmount      = item.Value.Sum(t => t.OrderAmount);


                    travelBatchModel.PayCenterCode         = Parameter.PayCenterCode;
                    travelBatchModel.PayCenterName         = Parameter.PayCenterName;
                    travelBatchModel.UserFactoringId       = (int)_userFactoring.UserFactoringId;
                    travelBatchModel.FactoringName         = _userFactoring.FactoringName;
                    travelBatchModel.FactoringEmail        = _userFactoring.FactoringEmail;
                    travelBatchModel.FactoringReapalNo     = _userFactoring.FactoringReapalNo;
                    travelBatchModel.InterestRate          = _userFactoring.InterestRate ?? 0;
                    travelBatchModel.FactoringInterestRate = _userAccount.FactoringInterestRate ?? 0;
                    travelBatchModel.AccountPeriod         = null != enterprise ? Int32.Parse(enterprise.AccountPeriod) : 0;
                    travelBatchModel.EnterpriseId          = (int)item.Key;
                    travelBatchModel.EnterpriseName        = null != enterprise ? enterprise.EnterpriseName : "";
                    travelBatchModel.UserName      = _userAccount.UserName;
                    travelBatchModel.BackReapalNo  = _userAccount.ReapalMerchantId;
                    travelBatchModel.TravelBatchId = item.Value.FirstOrDefault().TravelBatchId;


                    travelBatchList.Add(travelBatchModel);
                }
            });


            //批次信息保存
            var result = TravelBatchRep.Insert(travelBatchList);

            if (result < 1)
            {
                this.Result.Data = "批次信息保存失败,请联系相关人员!";
                return(false);
            }
            //订单信息
            var models = _manageRiskModels.Values.SelectMany(x => x).ToList();

            var travelBatchOrder = Mapper.Map <List <BaseRiskModel>, List <TravelBatchOrder> >(models);

            travelBatchOrder.ForEach(i => i.TicketTime    = Convert.ToDateTime(Convert.ToDateTime(i.TicketTime).ToString("yyyy-MM-dd HH:mm:ss")));
            travelBatchOrder.ForEach(i => i.CreateTime    = Convert.ToDateTime(Convert.ToDateTime(i.CreateTime).ToString("yyyy-MM-dd HH:mm:ss")));
            travelBatchOrder.ForEach(i => i.DepartureTime = Convert.ToDateTime(Convert.ToDateTime(i.DepartureTime).ToString("yyyy-MM-dd HH:mm:ss")));
            travelBatchOrder.ForEach(i => i.UUId          = "");
            travelBatchOrder.ForEach(i => i.MatchResult   = "");
            LoggerFactory.Instance.Logger_Info("插入实体:" + JsonConvert.SerializeObject(travelBatchOrder), "TravelOrderImportService");
            //保存机票信息
            result = TravelBatchOrderRep.Insert(travelBatchOrder);
            if (result < 1)
            {
                this.Result.Data = "机票信息保存失败,请联系相关人员!";
                return(false);
            }

            //写入队列
            _manageRiskModels.Foreach(item =>
            {
                if (0 < item.Value.Count)
                {
                    var enterprise = _enterpriseWhiteLists.FirstOrDefault(t => t.EnterpriseWhiteListID == item.Key);

                    //写入实体
                    var manageRiskModel = new ManageRiskModel()
                    {
                        baseRiskModelList     = item.Value,
                        PayCenterCode         = Parameter.PayCenterCode,
                        PayCenterName         = Parameter.PayCenterName,
                        UserFactoringId       = (int)_userFactoring.UserFactoringId,
                        FactoringName         = _userFactoring.FactoringName,
                        FactoringEmail        = _userFactoring.FactoringEmail,
                        FactoringReapalNo     = _userFactoring.FactoringReapalNo,
                        InterestRate          = _userFactoring.InterestRate ?? 0,
                        FactoringInterestRate = _userAccount.FactoringInterestRate ?? 0,
                        AccountPeriod         = null != enterprise ? enterprise.AccountPeriod : "",
                        EnterpriseID          = item.Key,
                        EnterpriseName        = null != enterprise ? enterprise.EnterpriseName : "",
                        UserName      = _userAccount.UserName,
                        BackReapalNo  = _userAccount.ReapalMerchantId,
                        TravelBatchId = item.Value.FirstOrDefault().TravelBatchId,
                    };

                    manageRiskModel.baseRiskModelList = item.Value;

                    new RabbitMQClient().SendMessage(JsonConvert.SerializeObject(manageRiskModel));
                }
            });

            //写入缓存
            var ticketNums = travelBatchOrder.Select(t => t.TicketNo).ToList();

            var list = GetCacheTickets();

            list.AddRange(ticketNums);

            Cache.Put(strKey, JsonConvert.SerializeObject(list));


            return(true);
        }
Exemplo n.º 6
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="model"></param>
 public CheckEtermService(ManageRiskModel model) : base()
 {
     ManageRisk = model;
 }
Exemplo n.º 7
0
 /// <summary>
 ///重构函数
 /// </summary>
 /// <param name="ManageRiskResultModelList"></param>
 public RemoneyService(ManageRiskModel ManageRiskResultModel) : base(ManageRiskResultModel)
 {
     ManageRiskModel = ManageRiskResultModel;
 }
Exemplo n.º 8
0
        public void XHCheckTicketResult(ManageRiskModel ManageRisk, List <TicketDetailResult> ResultList, string uuid, bool IsOK)
        {
            string TravelBatchId      = ManageRisk.TravelBatchId;
            long   EnterpriseID       = ManageRisk.EnterpriseID;
            int    TravelRiskType     = ManageRisk.baseRiskModelList[0].TravelRiskType;
            string strOrderPrice      = ""; //票价验证失败票号集合
            string strOrderPersonName = ""; //黑屏规则验证成功票号集合
            var    travelRisk         = new TravelRiskRep().GetTravelRiskByEnterpriseID(new TravelRisk()
            {
                EnterpriseID = Convert.ToInt32(ManageRisk.EnterpriseID), PayCenterCode = ManageRisk.PayCenterCode
            });

            if (IsOK)//小何接口验证成功
            {
                //修改票号集合的小何验证结果状态
                ManageRisk.baseRiskModelList.ForEach(i => i.CheckStatus = 1);
                //根据批次号和企业编号 修改数据库票号集合的小何验证结果状态
                new TravelBatchOrderRep().UpdateTravelBatchOrder(ManageRisk.TravelBatchId, ManageRisk.EnterpriseID, "", "", 0, 0, "", 0, 1, 0, "");

                if (ManageRisk.baseRiskModelList[0].EtermType != 1)//包含小何接口
                {
                    foreach (var item in ManageRisk.baseRiskModelList)
                    {
                        foreach (var result in ResultList)
                        {
                            if (item.TicketNum == result.ticketno)
                            {
                                //验证订单金额
                                if (Convert.ToDecimal(result.fare) * travelRisk.TicketMultiple < item.OrderAmount)//刨除票价验证失败订单(需取表字段配置)
                                {
                                    strOrderPrice += "'" + item.TicketNum + "',";
                                }
                                else if (item.TravelRiskType != 1) //验价成功 且 风控规则不是纯白名单验证的 验证姓名
                                {
                                    if (item.PersonName.Trim() == result.name.Trim())
                                    {
                                        strOrderPersonName   += "'" + item.TicketNum + "',";
                                        item.BlackResultState = 1; //设置黑屏验证结果为成功
                                    }
                                }
                                break;
                            }
                        }
                    }
                }
                //票价验证失败
                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, "票价验证失败(xh)");
                    //记录验证票价失败的订单日志
                    LoggerFactory.Instance.Logger_Debug("XH验证票价失败的票号:" + strOrderPrice, "XHCheckTicketNotifyService");
                    //清除缓存
                    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("修改黑屏验证状态为成功:" + strOrderPrice, "XHCheckTicketNotifyService");

                    ManageRisk.baseRiskModelList.FindAll(i => !strOrderPersonName.Contains(i.TicketNum)).ForEach(i => i.FailReason = "姓名验证失败(xh)|");
                    new TravelBatchOrderRep().UpdateTravelBatchOrder(TravelBatchId, EnterpriseID, "", strOrderPersonName, 0, 1, "", 0, 0, 0, "姓名验证失败(xh)|");
                }
                if (TravelRiskType != 0 && ManageRisk.baseRiskModelList.Count > 0)//判断风控规则不是 纯黑屏
                {
                    //调用白名单验证
                    new CheckEnterpriseWhiteListService(ManageRisk).Execute();
                }
                //调用王帅核算比率返现接口
                LoggerFactory.Instance.Logger_Debug("调用王帅核算比率返现接口:" + JsonConvert.SerializeObject(ManageRisk), "XHCheckTicketNotifyService");
                try
                {
                    new RemoneyService(ManageRisk).Execute();
                }
                catch (Exception ex)
                {
                    LoggerFactory.Instance.Logger_Debug("返现报错:" + ex.Message, "XHCheckTicketNotifyService");
                }
            }
            else
            {
                switch (ManageRisk.baseRiskModelList[0].EtermType)
                {
                case 0:     //0小何验证
                    //记录验证票价失败的订单(全部)
                    ManageRisk.baseRiskModelList.ForEach(i => i.FailReason = "票价验证失败(xh)|");
                    new TravelBatchOrderRep().UpdateTravelBatchOrder(TravelBatchId, EnterpriseID, "", "", 0, 0, "", 0, 0, 0, "票价验证失败(xh)|");
                    //记录验证票价失败的订单日志(全部)
                    LoggerFactory.Instance.Logger_Debug("验证票价失败的订单(全部),批次号:" + TravelBatchId + " ,企业ID:" + EnterpriseID.ToString(), "XHCheckTicketNotifyService");
                    break;

                case 1:     //黑屏
                    //记录黑屏配置错误日志
                    LoggerFactory.Instance.Logger_Debug("黑屏配置错误:" + ManageRisk.baseRiskModelList[0].EtermType.ToString(), "XHCheckTicketNotifyService");
                    break;

                case 2:     //小何+黑屏
                    //调用黑屏验证
                    new CheckEtermService(ManageRisk).CheckEterm();
                    break;

                default:
                    //记录风控规则不正确
                    LoggerFactory.Instance.Logger_Debug("风控规则错误:" + ManageRisk.baseRiskModelList[0].EtermType.ToString(), "XHCheckTicketNotifyService");
                    break;
                }
            }
        }