Ejemplo n.º 1
0
        /// <summary>
        /// 解析工具中的ParseCmd方法使用Demo
        /// </summary>
        /// <remarks>
        /// 返回结果:RT JQF0B7
        /// </remarks>
        public static void ParserDemo_ParseCmd_SeekPNR()
        {
            JetermEntity.Request.SeekPNR request = new JetermEntity.Request.SeekPNR();
            request.Pnr           = "JQF0B7";
            request.PassengerType = EtermCommand.PassengerType.Adult;
            request.GetPrice      = true;

            JetermEntity.Parser.SeekPNR seekPNRParser = new JetermEntity.Parser.SeekPNR();
            string cmd = seekPNRParser.ParseCmd(request);

            Console.WriteLine("获得的RT指令为:" + Environment.NewLine + cmd);
            Console.ReadLine();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 解析工具中的ParseCmdResult方法使用Demo
        /// </summary>
        /// <remarks>
        /// 返回结果:{"PassengerList":[{"name":"张洋城","idtype":0,"cardno":"NI420700198103020999","PassType":0,"Ename":"","BabyBirthday":"\/Date(-62135596800000+0800)\/","ChildBirthday":"\/Date(-62135596800000+0800)\/","TicketNo":""}],"PNR":"JQF0B7","FlightList":[{"FlightNo":"CZ3691","Airline":"","Cabin":"Y","SCity":"KWE","ECity":"CAN","DepTerminal":"T2","ArrTerminal":"","DepDate":"\/Date(1429245900000+0800)\/","ArrDate":"\/Date(1429251600000+0800)\/"}],"ShareFlight":false,"FlightType":0,"RMKOfficeNoList":["KWE122"],"BigPNR":"PLG89Z","Mobile":"18210003200","OfficeNo":"TPE567","AdultPnr":null,"PriceList":[{"FacePrice":960.00,"Tax":50.00,"Fuel":0.0,"TotalPrice":1010.00}],"ResultBag":"  1.张洋城 JQF0B7\r             2.  CZ3691 Y   FR17APR  KWECAN HK1   1245 1420          E T2-- \r                 -CA-PLG89Z \r             3.TPE/T TPE/T0285514894/BO TSE TRAVEL SERVICE CO LTD/WU RUEI BIN ABCDEFG   \r             4.TL/1802/16APR/SHA888 \r             5.SSR FOID CZ HK1 NI420700198103020999/P1  \r             6.SSR ADTK 1E BY TPE16APR15/1902 OR CXL CZ BOOKING \r             7.OSI CZ CTCT18210003200   \r             8.RMK TJ AUTH KWE122   \r             9.RMK CA/PLG89Z\r            10.TPE567   \r            \u001e[price]>PAT:A  \r            01 Y FARE:CNY960.00 TAX:CNY50.00 YQ:TEXEMPTYQ  TOTAL:1010.00\r            \u001eSFC:01   \u001eSFN:01   \r            \u001e[eTerm:o77a6491]"}
        /// </remarks>
        public static void ParserDemo_ParseCmdResult_SeekPNR()
        {
            string pnrText = @"  1.张洋城 JQF0B7
             2.  CZ3691 Y   FR17APR  KWECAN HK1   1245 1420          E T2-- 
                 -CA-PLG89Z 
             3.TPE/T TPE/T0285514894/BO TSE TRAVEL SERVICE CO LTD/WU RUEI BIN ABCDEFG   
             4.TL/1802/16APR/SHA888 
             5.SSR FOID CZ HK1 NI420700198103020999/P1  
             6.SSR ADTK 1E BY TPE16APR15/1902 OR CXL CZ BOOKING 
             7.OSI CZ CTCT18210003200   
             8.RMK TJ AUTH KWE122   
             9.RMK CA/PLG89Z
            10.TPE567   
            [price]>PAT:A  
            01 Y FARE:CNY960.00 TAX:CNY50.00 YQ:TEXEMPTYQ  TOTAL:1010.00
            SFC:01   SFN:01   
            [eTerm:o77a6491]"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ;

            JetermEntity.Parser.SeekPNR seekPNRParser = new JetermEntity.Parser.SeekPNR();
            CommandResult <JetermEntity.Response.SeekPNR> response = seekPNRParser.ParseCmdResult(pnrText);

            if (response == null)
            {
                Console.WriteLine("没有返回结果");
                Console.ReadLine();
                return;
            }
            if (!response.state)
            {
                string cmdResultBag = response.error.CmdResultBag;
                Console.WriteLine(string.Format("返回有错误,错误信息为:{0}{1}。{2}", Environment.NewLine, response.error.ErrorMessage, string.IsNullOrWhiteSpace(cmdResultBag) ? string.Empty : string.Format("{0}订位指令返回结果为:{1}{2}", Environment.NewLine, Environment.NewLine, cmdResultBag)));
                Console.ReadLine();
                return;
            }

            if (response.result == null)
            {
                Console.WriteLine("没有返回结果");
                Console.ReadLine();
                return;
            }
            string parseResult = Newtonsoft.Json.JsonConvert.SerializeObject(response.result);

            Console.WriteLine("解析结果:" + Environment.NewLine + parseResult);

            Console.ReadLine();
        }
Ejemplo n.º 3
0
        public static void TestRT()
        {
//            string pnrText = @"  1.张洋城 JQF0B7
//             2.  CZ3691 Y   FR17APR  KWECAN HK1   1245 1420          E T2--
//                 -CA-PLG89Z
//             3.TPE/T TPE/T0285514894/BO TSE TRAVEL SERVICE CO LTD/WU RUEI BIN ABCDEFG
//             4.TL/1802/16APR/SHA888
//             5.SSR FOID CZ HK1 NI420700198103020999/P1
//             6.SSR ADTK 1E BY TPE16APR15/1902 OR CXL CZ BOOKING
//             7.OSI CZ CTCT18210003200
//             8.RMK TJ AUTH KWE122
//             9.RMK CA/PLG89Z
//            10.TPE567
//            [price]>PAT:A
//            01 Y FARE:CNY960.00 TAX:CNY50.00 YQ:TEXEMPTYQ  TOTAL:1010.00
//            SFC:01   SFN:01
//            [eTerm:o77a6491]";
            string pnrText =
                @"
RTJE2ZY4                                                                       
 1.陈晓庆 JE2ZY4                                                                
 2.  CA1947 M   MO25MAY  PVGCTU HK1   0745 1050          E T2T2 M1              
 3.SHA/T SHA/T021-36412780/SHANGHAI FENGRUI INDUSTRY CO.LTD/ZHAO YAN ZHONG      
     ABCDEFG                                                                    
 4.REM 0519 1326 JK002                                                          
 5.TL/0000/19MAY/SHA243                                                         
 6.SSR FOID CA HK1 NI320911198911224646/P1                                      
 7.SSR ADTK 1E BY SHA19MAY15/1527 OR CXL CA ALL SEGS                            
 8.OSI CA CTCT18917588289                                                       
 9.RMK CA/PTBJWJ                                                                
10.SHA243                                                                       
                                                                               
                                                                                
                                                                                
PAT:A                                                                          
>PAT:A                                                                          
01 M1 FARE:CNY1500.00 TAX:CNY50.00 YQ:TEXEMPTYQ  TOTAL:1550.00                  
SFC:01   SFN:01                                                               
02 M FARE:CNY1550.00 TAX:CNY50.00 YQ:TEXEMPTYQ  TOTAL:1600.00                   
SFC:02   SFN:02
";
            CommandResult <JetermEntity.Response.SeekPNR> response = new JetermEntity.Parser.SeekPNR().ParseCmdResult(pnrText);

            Console.ReadLine();
        }
Ejemplo n.º 4
0
        public static void Main1(string[] args)
        //public static void Main(string[] args)
        {
            EtermClient client = new EtermClient();
            string      str    = string.Empty;

            try
            {
                client.Invoke(100001, "http://114.80.79.158:8084/HelloWorld.rem", "RTR/JQF0B7", EtermCommand.ServerSource.EtermRemote, TimeSpan.FromSeconds(5));
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            CommandResult <JetermEntity.Response.SeekPNR> response = new JetermEntity.Parser.SeekPNR().ParseCmdResult(str);

            Console.ReadLine();
        }
Ejemplo n.º 5
0
        // 返回结果:{"PassengerList":[{"name":"干园","idtype":0,"cardno":"NI650121199412242866","PassType":0,"Ename":"","BirthDayString":"","ChildBirthDayDate":"\/Date(-62135596800000+0800)\/","TicketNo":""},{"name":"张杰","idtype":0,"cardno":"NI140525198401186312","PassType":0,"Ename":"","BirthDayString":"","ChildBirthDayDate":"\/Date(-62135596800000+0800)\/","TicketNo":""}],"PNR":"HS8LF7","FlightList":[{"FlightNo":"MU5623","Airline":"","Cabin":"R","SCity":"PVG","ECity":"DLC","DepTerminal":"T1","ArrTerminal":"","DepDate":"\/Date(1432169100000+0800)\/","ArrDate":"\/Date(1432175400000+0800)\/"}],"ShareFlight":false,"FlightType":0,"RMKOfficeNoList":[],"BigPNR":"PKEVW0","Mobile":"13472634765","OfficeNo":"SHA243","AdultPnr":null,"PriceList":[{"FacePrice":570.00,"Tax":50.00,"Fuel":0.0,"TotalPrice":620.00}],"ResultBag":" 1.干园 2.张杰 HS8LF7   \r 3.  MU5623 R   TH21MAY  PVGDLC HK2   0845 1030          E T1-- \r     -CA-PKEVW0 \r 4.SHA/T SHA/T021-36412780/SHANGHAI FENGRUI INDUSTRY CO.LTD/ZHAO YAN ZHONG  \r     ABCDEFG\r 5.TL/1818/29APR/SHA888 \r 6.SSR FOID MU HK1 NI140525198401186312/P2  \r 7.SSR FOID MU HK1 NI650121199412242866/P1  \r 8.SSR FQTV MU HK1 PVGDLC 5623 R21MAY MU600287397934/P2 \r 9.SSR ADTK 1E BY SHA01MAY15/1718 OR CXL MU5623 R21MAY  \r10.OSI MU CTCT13472634765   \r11.RMK CA/PKEVW0                                                               +\r\n\u001e12.SHA243                                                                      -\r\n\u001e[price]>PAT:A  \r01 R FARE:CNY570.00 TAX:CNY50.00 YQ:TEXEMPTYQ  TOTAL:620.00 \r\u001eSFC:01   \u001eSFN:01   \r\u001e[eTerm:o72fe231]"}
        public static void EtermRemoteDemo_SeekPNR()
        {
            EtermClient client = new EtermClient();
            //string str = client.Invoke(100001, "http://114.80.79.158:8084/HelloWorld.rem", "RTR/JQF0B7", EtermCommand.ServerSource.EtermRemote, TimeSpan.FromSeconds(5));
            string str = string.Empty;

            try
            {
                str = client.Invoke(100001, "http://114.80.79.158:8084/HelloWorld.rem", "RTR/HS8LF7", EtermCommand.ServerSource.EtermRemote, TimeSpan.FromSeconds(5));
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("JEtermClient抛出异常,异常信息为:{0}", ex.Message));
            }

            JetermEntity.Parser.SeekPNR seekPNRParser            = new JetermEntity.Parser.SeekPNR();
            CommandResult <JetermEntity.Response.SeekPNR> result = seekPNRParser.ParseCmdResult(str);

            if (result == null)
            {
                result       = new CommandResult <JetermEntity.Response.SeekPNR>();
                result.error = new Error(EtermCommand.ERROR.SYSTEM_FAULT);
            }
            if (!result.state)
            {
                string cmdResultBag = result.error.CmdResultBag;
                Console.WriteLine(string.Format("返回有错误,错误信息为:{0}{1}。{2}", Environment.NewLine, result.error.ErrorMessage, string.IsNullOrWhiteSpace(cmdResultBag) ? string.Empty : string.Format("{0}RT指令返回结果为:{1}{2}", Environment.NewLine, Environment.NewLine, cmdResultBag)));
                Console.ReadLine();
                return;
            }

            if (result.result == null)
            {
                Console.WriteLine("没有返回结果");
                Console.ReadLine();
                return;
            }
            string parseResult = Newtonsoft.Json.JsonConvert.SerializeObject(result.result);

            Console.WriteLine("解析结果:" + Environment.NewLine + parseResult);

            Console.ReadLine();
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 调用大系统(目前只限于RTPAT指令)
        /// </summary>
        /// <param name="appId">应用程序ID</param>
        /// <param name="request">请求参数</param>
        /// <param name="TimeOut"></param>
        /// <returns>返回对RT指令返回结果解析好的对象</returns>
        private CommandResult <JetermEntity.Response.SeekPNR> Invoke(int appId, Command <JetermEntity.Request.SeekPNR> request, TimeSpan TimeOut)
        {
            string.Format(JMetricsHelper.JetermCount, "RTPATCommon").MeterMark("次");// 计数

            DateTime dt;
            string   dtStr = string.Empty;

            string innerErrorMessage = string.Empty;
            CommandResult <JetermEntity.Response.SeekPNR> result = null;

            return(string.Format(JMetricsHelper.JetermExecTime, "RTPATCommon").HistogramUpdate(() =>
            {
                string method = string.Empty;

                string url = string.Empty;
                string sret = string.Empty;
                string requestJson = string.Empty;

                string paramsStr = string.Empty;
                string key = string.Empty;

                try
                {
                    method = request.request.GetType().Name;

                    requestJson = JsonConvert.SerializeObject(request);
                    paramsStr = JsonConvert.SerializeObject(request.request);
                    key = string.Format("140106{0}", MD5Helper.GetMD5(string.Format("RTPATCommon_{0}", paramsStr)));

                    if (request.CacheTime > 0)
                    {
                        result = RedisHelper.tGet <CommandResult <JetermEntity.Response.SeekPNR> >(key);
                        if (result != null && ((DateTime.Now - result.reqtime) > TimeSpan.FromSeconds((int)request.CacheTime)))
                        {
                            result = null;
                        }
                    }

                    if (result == null)
                    {
                        url = string.Format("http://114.80.75.26:12306/GetPnrInfo?pnr={0}&airline={1}&Type=RTPAT", request.request.Pnr, request.request.Airline);
                        int ntimeout = (int)TimeOut.TotalMilliseconds;
                        dt = DateTime.Now;
                        dtStr = dt.ToString("yyyy-MM-dd HH:mm:ss ffff");
                        sret = HttpService.HttpGet(url, ntimeout, dtStr);

                        JetermEntity.Parser.SeekPNR seekPNRParser = new JetermEntity.Parser.SeekPNR();
                        result = seekPNRParser.ParseCmdResult(sret);
                        if (result != null)
                        {
                            result.ServerUrl = url;
                        }
                        if (result != null && result.state && result.SaveTime > 0)
                        {
                            // 缓存
                            RedisHelper.tSet <CommandResult <JetermEntity.Response.SeekPNR> >(key, result, TimeSpan.FromSeconds((int)result.SaveTime));
                        }
                        if (result == null)
                        {
                            string.Format(JMetricsHelper.JetermErrCount, "RTPATCommon").MeterMark("次");//失败计数

                            innerErrorMessage = string.Format("JetermClient.RTPATCommon大系统请求:返回的result为null。{0}请求时间:{1}{0}请求url:{0}{2}{0}应用程序ID[{3}]{0}MD5请求[{4}]{0}请求数据:{0}{5}{0}RTPAT指令返回:{0}{6}。", Environment.NewLine, dtStr, url, appId, key, requestJson, (string.IsNullOrWhiteSpace(sret) ? "RTPAT指令返回为空" : sret));
                            result = GetError <JetermEntity.Request.SeekPNR, JetermEntity.Response.SeekPNR>(request, innerErrorMessage, url);
                            log.Error(innerErrorMessage);

                            return result;
                        }
                        if (!result.state)
                        {
                            string.Format(JMetricsHelper.JetermErrCount, "RTPATCommon").MeterMark("次");//失败计数

                            innerErrorMessage = string.Format("JetermClient.RTPATCommon大系统请求(返回的result不为null):{0}返回给result.error.ErrorMessage的信息为:{0}{1}{0}请求时间:{2}{0}请求url:{0}{3}{0}应用程序ID[{4}]{0}MD5请求[{5}]{0}请求数据:{0}{6}{0}RTPAT指令返回:{0}{7}。", Environment.NewLine, (result.error == null ? string.Empty : result.error.ErrorMessage), dtStr, url, appId, key, requestJson, (string.IsNullOrWhiteSpace(sret) ? "RTPAT指令返回为空" : sret));
                            if (result.error == null)
                            {
                                result.error = new Error(EtermCommand.ERROR.SELFDEFINE_ERROR_MESSAGE);
                                result.error.ErrorMessage = innerErrorMessage;
                            }
                            result.error.InnerDetailedErrorMessage = innerErrorMessage;
                            log.Error(innerErrorMessage);

                            return result;
                        }
                    }

                    return result;
                }
                catch (Exception ex)
                {
                    string.Format(JMetricsHelper.JetermErrCount, "RTPATCommon").MeterMark("次");//失败计数

                    dt = DateTime.Now;
                    dtStr = dt.ToString("yyyy-MM-dd HH:mm:ss ffff");
                    innerErrorMessage = string.Format("JetermClient.RTPATCommon大系统请求抛异常:{0}返回给result.error.ErrorMessage的信息为:{0}{1}{0}抛异常时间:{2}{0}请求url:{0}{3}{0}应用程序ID[{4}]{0}MD5请求[{5}]{0}请求数据:{0}{6}{0}RTPAT指令返回为:{0}{7}{0}异常信息为:{0}【{0}{8}{0}】。", Environment.NewLine, ((result == null || result.error == null) ? string.Empty : result.error.ErrorMessage), dtStr, url, appId, key, requestJson, (string.IsNullOrWhiteSpace(sret) ? "RTPAT指令返回为空" : sret), ex.ToString());
                    if (result == null)
                    {
                        result = GetError <JetermEntity.Request.SeekPNR, JetermEntity.Response.SeekPNR>(request, innerErrorMessage, url);
                    }
                    else
                    {
                        result.state = false;
                        result.ServerUrl = url;
                        if (result.error == null)
                        {
                            result.error = new Error(EtermCommand.ERROR.SELFDEFINE_ERROR_MESSAGE);
                            result.error.ErrorMessage = innerErrorMessage;
                        }
                        result.error.InnerDetailedErrorMessage = innerErrorMessage;
                    }
                    log.Error(innerErrorMessage);

                    return result;
                }
            }));
        }