Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 执行
        /// </summary>
        public override void Execute()
        {
            Validate();
            List <BaseRiskModel> list = new List <BaseRiskModel>();
            //根据小何批次号获取本地票号信息
            List <TravelBatchOrder> TravelBatchOrderList = new TravelBatchOrderRep().getManageRiskModelByUUId(uuid);

            foreach (var item in TravelBatchOrderList)
            {
                BaseRiskModel rm = new BaseRiskModel()
                {
                    BlackResultState = Convert.ToInt32(item.BlackResultState),
                    CheckStatus      = Convert.ToInt32(item.CheckStatus),
                    DepartureTime    = Convert.ToDateTime(item.DepartureTime),
                    EnterpriseID     = Convert.ToInt64(item.EnterpriseId),
                    EnterpriseName   = item.EnterpriseName,
                    EtermStatus      = Convert.ToInt32(item.EtermStatus),
                    EtermType        = Convert.ToInt32(item.EtermType),
                    FlightNo         = item.FlightNo,
                    //PayCenterCode = item.PayCenterCode,
                    PNR            = item.PNR,
                    RegisterStatus = Convert.ToInt32(item.RegisterStatus),
                    TicketNum      = item.TicketNo,
                    TicketTime     = Convert.ToDateTime(item.TicketTime),
                    //TravelBatchId = item.TravelBatchId,
                    TravelRiskType   = Convert.ToInt32(item.TravelRiskType),
                    UUId             = item.UUId,
                    WhiteResultState = Convert.ToInt32(item.WhiteResultState),
                    PersonName       = item.PassengerName,
                    ArriveCode       = item.ArriveCode,
                    Cabin            = item.Cabin,
                    DepartCode       = item.DepartCode,
                    OrderAmount      = Convert.ToDecimal(item.OrderAmount),
                    TicketPrice      = Convert.ToDecimal(item.TicketPrice),
                    FailReason       = item.MatchResult
                };
                list.Add(rm);
            }
            ManageRisk.baseRiskModelList = list;
            TravelBatch TravelBatch = new TravelBatchRep().GetTravelBatch(TravelBatchOrderList[0].TravelBatchId, TravelBatchOrderList[0].EnterpriseId.ToString());

            ManageRisk.TravelBatchId         = TravelBatchOrderList[0].TravelBatchId;
            ManageRisk.EnterpriseID          = Convert.ToInt64(TravelBatchOrderList[0].EnterpriseId);
            ManageRisk.EnterpriseName        = TravelBatchOrderList[0].EnterpriseName;
            ManageRisk.AccountPeriod         = Convert.ToString(TravelBatch.AccountPeriod);
            ManageRisk.BackReapalNo          = TravelBatch.BackReapalNo;
            ManageRisk.FactoringEmail        = TravelBatch.FactoringEmail;
            ManageRisk.FactoringInterestRate = Convert.ToDecimal(TravelBatch.FactoringInterestRate);
            ManageRisk.FactoringName         = TravelBatch.FactoringName;
            ManageRisk.FactoringReapalNo     = TravelBatch.FactoringReapalNo;
            ManageRisk.InterestRate          = Convert.ToDecimal(TravelBatch.InterestRate);
            ManageRisk.PayCenterCode         = TravelBatch.PayCenterCode;
            ManageRisk.PayCenterName         = TravelBatch.PayCenterName;
            ManageRisk.TravelBatchId         = TravelBatch.TravelBatchId;
            ManageRisk.UserFactoringId       = Convert.ToInt32(TravelBatch.UserFactoringId);
            ManageRisk.UserName = TravelBatch.UserName;

            LoggerFactory.Instance.Logger_Debug("ManageRisk实体结果:" + JsonConvert.SerializeObject(ManageRisk), "XHCheckTicketNotifyService");
            ViewBaseCheck view = new ViewBaseCheck();

            try
            {
                view = JsonConvert.DeserializeObject <ViewBaseCheck>(data);
                if (view.ErrorRes.Err_code == "200" && view.task[0].status.Trim() == "已完成" && view.task[0].iCount > 0 && view.checkdata[0].success > 0)
                {
                    LoggerFactory.Instance.Logger_Debug("添加小和验证成功日志", "XHCheckTicketNotifyService");
                    //添加小和验证成功日志
                    new XHInterFaceCheckTicketResultLogRep().UpdateXHInterFaceCheckTicketResultLog(view.ErrorRes.uuid, 1);
                    //调用小何验证(小何返回正常结果)
                    XHCheckTicketResult(ManageRisk, view.checkdata[0].samelstDetailed, uuid, true);
                }
                else
                {
                    //调用小何验证(小何返回信息异常)
                    XHCheckTicketResult(ManageRisk, null, uuid, false);
                }
            }
            catch (Exception ex)
            {
                //记录错误日志
                LoggerFactory.Instance.Logger_Debug("小何回调报错:uuid=" + uuid + " data=" + data, "XHCheckTicketNotifyService");
            }
        }