Exemplo n.º 1
0
 public TicketController(TicketProcessor ticketProcessor, JurisdictionProcessor jurisdictionProcessor, AgentProcessor agentProcessor, IHttpContextAccessor accessor)
 {
     _ticketProcessor       = ticketProcessor;
     _jurisdictionProcessor = jurisdictionProcessor;
     _agentProcessor        = agentProcessor;
     _accessor = accessor;
 }
Exemplo n.º 2
0
        public void Part2(string filename, long expected)
        {
            var parser = new Parser(filename);
            var book   = parser.Parse(new TicketParser())
                         .Where(c => c != null)
                         .First();
            var sut    = new TicketProcessor(book);
            var actual = sut.Departure();

            Assert.Equal(expected, actual);
        }
Exemplo n.º 3
0
 public IActionResult TicketOrderDetails(Int64 ticketOrderId)
 {
     try
     {
         if (ticketOrderId == 0)
         {
             return(Ok(new Application_ResponseWrapper()
             {
                 ResponseCode = "1000", ResponseMessage = "Invalid model", Status = "failed"
             }));
         }
         using (ITicketProcessor _ticketProcessor = new TicketProcessor(_applicationDbContext))
         {
             var ticketOrder = _ticketProcessor.GetTicketDetail(ticketOrderId);
             if (ticketOrder == null)
             {
                 return(Ok(new Application_ResponseWrapper()
                 {
                     ResponseCode = "1004", ResponseMessage = "Record not found", Status = "failed"
                 }));
             }
             return(Ok(new Application_ResponseWrapper()
             {
                 ResponseCode = "0", ResponseMessage = "success", Status = "success", ResponseResult = ticketOrder
             }));
         }
     }
     catch (Exception ex)
     {
         _errorRepository.
         Add(new Application_Errors
         {
             applicationID    = 1,
             errorDescription = ex.StackTrace,
             errorType        = "Exception",
             logDate          = System.DateTime.Now,
             pageID           = 0,
             Source           = "Mpower/Rail/History/Ticket/Details"
         });
         _errorRepository.Commit();
         return(Ok(new Application_ResponseWrapper()
         {
             ResponseCode = "1005", ResponseMessage = "An error has occured", Status = "failed"
         }));
     }
 }
Exemplo n.º 4
0
 public AgentController(AgentProcessor agentProcessor, TicketProcessor ticketProcessor, IHttpContextAccessor accessor)
 {
     _agentProcessor  = agentProcessor;
     _ticketProcessor = ticketProcessor;
     _accessor        = accessor;
 }
Exemplo n.º 5
0
 public IActionResult BookedTicketList([FromBodyAttribute] BookedTicketFilter filter)
 {
     try
     {
         if (!ModelState.IsValid)
         {
             return(Ok(new Application_ResponseWrapper()
             {
                 ResponseCode = "1000", ResponseMessage = "Invalid model", Status = "failed"
             }));
         }
         using (IApplicationProcessor _processor = new ApplicationProcessor(_applicationDbContext))
         {
             string pagesSize = _processor.GetApplicationSettingByKey("displayList_Count");
             if (!string.IsNullOrEmpty(pagesSize) || int.Parse(Convert.ToString(pagesSize)) <= 0)
             {
                 filter.pages = int.Parse(pagesSize);
             }
             else
             {
                 _errorRepository.Add(new Application_Errors
                 {
                     applicationID    = 1,
                     errorDescription = "Page size value not found.",
                     errorType        = "Log",
                     logDate          = System.DateTime.Now,
                     pageID           = 0,
                     Source           = "Mpower/Rail/History/Ticket/List"
                 });
                 _errorRepository.Commit();
                 return(Ok(new Application_ResponseWrapper()
                 {
                     ResponseCode = "1013", ResponseMessage = "Page Size is not found!", Status = "failed"
                 }));
             }
         }
         using (ITicketProcessor _ticketProcessor = new TicketProcessor(_applicationDbContext))
         {
             var list = _ticketProcessor.BookedTicketList(filter);
             if (list == null || list.Count == 0)
             {
                 return(Ok(new Application_ResponseWrapper()
                 {
                     ResponseCode = "1004", ResponseMessage = "Record not found", Status = "failed"
                 }));
             }
             return(Ok(new Application_ResponseWrapper()
             {
                 ResponseCode = "0", ResponseMessage = "success", Status = "success", ResponseResult = list
             }));
         }
     }
     catch (Exception ex)
     {
         _errorRepository.
         Add(new Application_Errors
         {
             applicationID    = 1,
             errorDescription = ex.StackTrace,
             errorType        = "Exception",
             logDate          = System.DateTime.Now,
             pageID           = 0,
             Source           = "Mpower/Rail/History/Ticket/List"
         });
         _errorRepository.Commit();
         return(Ok(new Application_ResponseWrapper()
         {
             ResponseCode = "1005", ResponseMessage = "An error has occured", Status = "failed"
         }));
     }
 }
Exemplo n.º 6
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");
                }
            }
        }