/// <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(); }
/// <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(); }
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(); }
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(); }
// 返回结果:{"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(); }
/// <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; } })); }