更新订单提交流程
This commit is contained in:
parent
f1d21c3317
commit
11a9f06bfa
15
12306.sln.vsext
Normal file
15
12306.sln.vsext
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Solution>
|
||||
<Profile Name="12306网页+扩展" SingleStartProjectGuid="">
|
||||
<Include>
|
||||
<Project Guid="6d4588aa-a0fd-4364-972c-22b0ab7938f9" />
|
||||
<Project Guid="ab7ed70a-3bb7-485a-a93f-05e7a5892086" />
|
||||
<Project Guid="3d34b2d8-36f9-4e16-bf0f-a8905f8fe8ba" />
|
||||
<Project Guid="6d27c5ee-d44f-4783-b25e-6165f495349b" />
|
||||
<Project Guid="d46393a2-aeab-4876-aebf-84b993e66227" />
|
||||
<Project Guid="56406c67-2b6f-4152-9ec0-e6d80e86b96d" />
|
||||
<Project Guid="c385d043-316a-4f05-a6b9-e70bf0ed8db6" />
|
||||
<Project Guid="9d141603-1a9d-4eec-82d8-c473ea436839" />
|
||||
</Include>
|
||||
</Profile>
|
||||
</Solution>
|
@ -36,15 +36,6 @@ namespace TrainInfomationProviderService
|
||||
RouteTable.Routes.MapRoute("traintransit", "tt/{action}/{id}", new { area = "", controller = "Transit", id = UrlParameter.Optional }, new { action = "(keepalive|ls|ss|tor|dt|ls2|ssa)" }, new[] { "TrainInfomationProviderService.Web" });
|
||||
Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
Main(new string[0]);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
File.WriteAllText(HostingEnvironment.MapPath("~/err.log"), ex.ToString());
|
||||
}
|
||||
|
||||
var keepAliveUrl = ConfigurationManager.AppSettings["12306_keepaliveurl"];
|
||||
if (!string.IsNullOrEmpty(keepAliveUrl))
|
||||
{
|
||||
@ -58,13 +49,23 @@ namespace TrainInfomationProviderService
|
||||
{
|
||||
}
|
||||
Trace.TraceInformation("KEEP ALIVE已激活。");
|
||||
}, null, new TimeSpan(0, 0, 20, 0), new TimeSpan(0, 0, 20, 0));
|
||||
}, null, new TimeSpan(0, 0, 10, 0), new TimeSpan(0, 0, 10, 0));
|
||||
Trace.TraceInformation("KEEP ALIVE已启用");
|
||||
}
|
||||
else
|
||||
{
|
||||
Trace.TraceInformation("KEEP ALIVE未启用");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Main(new string[0]);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
File.WriteAllText(HostingEnvironment.MapPath("~/err.log"), ex.ToString());
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
@ -23,11 +23,8 @@ namespace TrainInfomationProviderService.TrainInfo.Entities
|
||||
[JsonIgnore]
|
||||
public List<Train> Trains { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public Dictionary<string, Train[]> TrainsCodeMap { get; private set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public Dictionary<string, Train[]> TrainsIdMap { get; private set; }
|
||||
//[JsonIgnore]
|
||||
//public Dictionary<string, Train[]> TrainsIdMap { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// 车站-发车车次信息
|
||||
@ -66,24 +63,15 @@ namespace TrainInfomationProviderService.TrainInfo.Entities
|
||||
var store = TrainInfoManager.Instance.DataStore.TrainData;
|
||||
|
||||
Trains = HashStore.Select(s => store.GetValue(s)).ExceptNull().ToList();
|
||||
TrainsCodeMap = Trains.GroupBy(s => s.Code).ToDictionary(s => s.Key, s =>
|
||||
{
|
||||
var arr = s.ToArray();
|
||||
//if (arr.Length > 1)
|
||||
//{
|
||||
// Trace.TraceWarning("[TRAIN_INFO_STORAGE] 警告:车次编号 {0} 出现重复数据,请查证,重复次数:{1}", s.Key, arr.Length - 1);
|
||||
//}
|
||||
return arr.ToArray();
|
||||
}, StringComparer.OrdinalIgnoreCase);
|
||||
TrainsIdMap = Trains.GroupBy(s => s.Id).ToDictionary(s => s.Key, s =>
|
||||
{
|
||||
var arr = s.ToArray();
|
||||
//if (arr.Length > 1)
|
||||
//{
|
||||
// Trace.TraceWarning("[TRAIN_INFO_STORAGE] 警告:车次ID {0} 出现重复数据,请查证,重复次数:{1}", s.Key, arr.Length - 1);
|
||||
//}
|
||||
return arr;
|
||||
}, StringComparer.OrdinalIgnoreCase);
|
||||
//TrainsIdMap = Trains.GroupBy(s => s.Id).ToDictionary(s => s.Key, s =>
|
||||
//{
|
||||
// var arr = s.ToArray();
|
||||
// //if (arr.Length > 1)
|
||||
// //{
|
||||
// // Trace.TraceWarning("[TRAIN_INFO_STORAGE] 警告:车次ID {0} 出现重复数据,请查证,重复次数:{1}", s.Key, arr.Length - 1);
|
||||
// //}
|
||||
// return arr;
|
||||
//}, StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -284,7 +284,7 @@ namespace TrainInfomationProviderService.TrainInfo.Entities
|
||||
/// </summary>
|
||||
void RemoveSmallStation()
|
||||
{
|
||||
var groups = this.GroupBy(s => s.First.Train.Code).Select(s => new { s.Key, Array = s.ToArray() }).ToArray();
|
||||
var groups = this.GroupBy(s => s.First.Train.Id).Select(s => new { s.Key, Array = s.ToArray() }).ToArray();
|
||||
foreach (var g in groups)
|
||||
{
|
||||
if (g.Array.Length < 2)
|
||||
@ -305,7 +305,7 @@ namespace TrainInfomationProviderService.TrainInfo.Entities
|
||||
}
|
||||
}
|
||||
|
||||
groups = this.GroupBy(s => s.Second.Train.Code).Select(s => new { s.Key, Array = s.ToArray() }).ToArray();
|
||||
groups = this.GroupBy(s => s.Second.Train.Id).Select(s => new { s.Key, Array = s.ToArray() }).ToArray();
|
||||
foreach (var g in groups)
|
||||
{
|
||||
if (g.Array.Length < 2)
|
||||
|
@ -186,10 +186,16 @@ namespace TrainInfomationProviderService.TrainInfo
|
||||
{
|
||||
Trace.TraceInformation("[TAININFOMANGER] 正在刷新车次信息");
|
||||
var loader = new WebDataProvider();
|
||||
var save = new Action(() =>
|
||||
{
|
||||
File.WriteAllText(_dataFilePath, JsonConvert.SerializeObject(IndexStorage));
|
||||
File.WriteAllText(_masterDataStoreFilePath, JsonConvert.SerializeObject(DataStore));
|
||||
Trace.TraceInformation("[TAININFOMANGER] 车站信息缓存完成。目标文件 {0}", _dataFilePath);
|
||||
});
|
||||
try
|
||||
{
|
||||
IndexStorage.Version = version;
|
||||
loader.LoadTrainInfo(IndexStorage);
|
||||
loader.LoadTrainInfo(IndexStorage, save);
|
||||
IndexStorage.RemoveOutdateStorage();
|
||||
}
|
||||
catch (Exception ex)
|
||||
@ -201,9 +207,7 @@ namespace TrainInfomationProviderService.TrainInfo
|
||||
Trace.TraceInformation("[TAININFOMANGER] 车次信息分析完成,车站。正在缓存车站信息");
|
||||
|
||||
//save
|
||||
File.WriteAllText(_dataFilePath, JsonConvert.SerializeObject(IndexStorage));
|
||||
File.WriteAllText(_masterDataStoreFilePath, JsonConvert.SerializeObject(DataStore));
|
||||
Trace.TraceInformation("[TAININFOMANGER] 车站信息缓存完成。目标文件 {0}", _dataFilePath);
|
||||
save();
|
||||
}
|
||||
|
||||
void CheckTrainVersion()
|
||||
|
@ -98,7 +98,7 @@ namespace TrainInfomationProviderService.TrainInfo
|
||||
}
|
||||
|
||||
|
||||
public void LoadTrainInfo(IndexStorage indexStorage)
|
||||
public void LoadTrainInfo(IndexStorage indexStorage, Action saveCallback)
|
||||
{
|
||||
Trace.TraceInformation("[TRAIN_DATA_WEB_PROVIDER] 正在获得最新车次信息");
|
||||
var html = new HttpClient().Create(HttpMethod.Get, "https://kyfw.12306.cn/otn/resources/js/query/train_list.js?scriptVersion=" + (new Random().NextDouble() + 1).ToString("#0.00000"), null, null, "").Send();
|
||||
@ -134,19 +134,19 @@ namespace TrainInfomationProviderService.TrainInfo
|
||||
indexStorage.TrainInfoStorages.Add(date, curStorage);
|
||||
}
|
||||
//fix duplicate key
|
||||
var dd = curStorage.Trains.GroupBy(s => s.Key).Select(s => new {s.Key, list = s.ToArray()}).Where(s => s.list.Length > 1).ToArray();
|
||||
if (dd.Length > 0)
|
||||
{
|
||||
foreach (var x1 in dd)
|
||||
{
|
||||
var dfrist = x1.list[0];
|
||||
foreach (var dt in x1.list.Skip(1).ToArray())
|
||||
{
|
||||
dfrist.Code = dt.Code;
|
||||
curStorage.Trains.Remove(dt);
|
||||
}
|
||||
}
|
||||
}
|
||||
//var dd = curStorage.Trains.GroupBy(s => s.Key).Select(s => new {s.Key, list = s.ToArray()}).Where(s => s.list.Length > 1).ToArray();
|
||||
//if (dd.Length > 0)
|
||||
//{
|
||||
// foreach (var x1 in dd)
|
||||
// {
|
||||
// var dfrist = x1.list[0];
|
||||
// foreach (var dt in x1.list.Skip(1).ToArray())
|
||||
// {
|
||||
// dfrist.Code = dt.Code;
|
||||
// curStorage.Trains.Remove(dt);
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
var allkeys = curStorage.Trains.ToDictionary(s => s.Key, StringComparer.OrdinalIgnoreCase);
|
||||
//所有的车次
|
||||
var alltrains = dateSt.Values.SelectMany(s => s).Select(s =>
|
||||
@ -182,6 +182,8 @@ namespace TrainInfomationProviderService.TrainInfo
|
||||
TrainInfoManager.Instance.DataStore.TrainData.AddOrUpdate(train.TrainHash, train);
|
||||
}
|
||||
|
||||
indexStorage.DateIndices.SafeAdd(date);
|
||||
indexStorage.TrainInfoStorages.AddOrUpdate(date, curStorage);
|
||||
if (index > 0)
|
||||
{
|
||||
curStorage.Init();
|
||||
@ -192,15 +194,15 @@ namespace TrainInfomationProviderService.TrainInfo
|
||||
var filepath = PathUtility.Combine(_dataFolder, date + ".json");
|
||||
File.WriteAllText(filepath, JsonConvert.SerializeObject(curStorage));
|
||||
Trace.TraceInformation("[TRAIN_DATA_WEB_PROVIDER] 车次数据缓存成功!");
|
||||
|
||||
if (saveCallback != null)
|
||||
saveCallback();
|
||||
}
|
||||
else
|
||||
{
|
||||
Trace.TraceInformation("[TRAIN_DATA_WEB_PROVIDER] 车次 {0} 数据无变化", date);
|
||||
}
|
||||
|
||||
indexStorage.DateIndices.SafeAdd(date);
|
||||
indexStorage.TrainInfoStorages.AddOrUpdate(date, curStorage);
|
||||
|
||||
GC.Collect();
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{C385D043-316A-4F05-A6B9-E70BF0ED8DB6}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>TrainInfomationProviderService</RootNamespace>
|
||||
<AssemblyName>TrainInfomationProviderService</AssemblyName>
|
||||
|
@ -1,8 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
有关如何配置 ASP.NET 应用程序的详细信息,请访问
|
||||
http://go.microsoft.com/fwlink/?LinkId=301880
|
||||
-->
|
||||
-->
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
|
||||
@ -34,7 +35,8 @@
|
||||
<add key="12306_trainsuggestion_maxradio" value="0.7" />
|
||||
<add key="dataStoragePath" value="~/App_Data/12306" />
|
||||
<add key="12306_keepaliveurl" value="http://test.fishlee.net/tt/keepalive" />
|
||||
<add key="local_disable_train_provider" value="1" />
|
||||
<add key="local_disable_train_provider" value="0" />
|
||||
<add key="FSLib.MvcWeb.CsrfDefender.Disabled" value="1" />
|
||||
</appSettings>
|
||||
<connectionStrings>
|
||||
<add name="chatroom" connectionString="Server=114.112.68.93;port=11119;Database=gopush;Uid=gopush;Pwd=c8488f421866b23758d52045429437c45;CharSet=utf8;" providerName="MySql.Data.MySqlClient" />
|
||||
|
@ -25,6 +25,7 @@
|
||||
<RestorePackages>true</RestorePackages>
|
||||
<TypeScriptToolsVersion>1.0</TypeScriptToolsVersion>
|
||||
<NuGetPackageImportStamp>16ae31ba</NuGetPackageImportStamp>
|
||||
<UseGlobalApplicationHostFile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@ -324,6 +325,7 @@
|
||||
<ItemGroup>
|
||||
<Folder Include="App_Data\" />
|
||||
<Folder Include="js\order\" />
|
||||
<Folder Include="Views\Php\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<TypeScriptCompile Include="Scripts\typings\chrome.d.ts" />
|
||||
|
@ -15,8 +15,11 @@
|
||||
};
|
||||
exports.stationReportApi = "http://srv.12306.liebao.cn/tt/ls2";
|
||||
exports.trainSuggestApi = "http://srv.12306.liebao.cn/ts";
|
||||
//exports.trainSuggestApi = "http://test.fishlee.net/ts.axd";
|
||||
exports.onceTransitApi = "http://srv.12306.liebao.cn/tt/tor";
|
||||
if (local) {
|
||||
exports.trainSuggestApi = "/ts.axd";
|
||||
exports.onceTransitApi = "/tt/tor";
|
||||
}
|
||||
exports.chatServerGetAddressApi = "http://12306.liebao.cn/index.php?r=Api/GetRoomKey";
|
||||
exports.sysNoticeUrl = "http://12306.liebao.cn/index.php?r=Api/GetNotificationList";
|
||||
exports.sysNoticeLoadInterval = 30 * 60 * 1800;
|
||||
@ -323,6 +326,11 @@
|
||||
exports.chatSendMsgDelay = 5000;
|
||||
exports.maxRecentCity = 18;
|
||||
exports.suggestRefreshInterval = 60000;
|
||||
Object.defineProperty(exports, "fastSubmitOrderSkipVc", {
|
||||
get: function() {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
Object.defineProperty(exports, "moreOptDefault", {
|
||||
get: function () {
|
||||
|
@ -129,7 +129,7 @@
|
||||
key_check_isChange: arr[1],
|
||||
leftTicketStr: arr[2],
|
||||
train_location: arr[0],
|
||||
async: arr[3]
|
||||
async: arr[3] === '1'
|
||||
};
|
||||
checkQueueInfo();
|
||||
}
|
||||
@ -215,11 +215,11 @@
|
||||
};
|
||||
|
||||
var submitOrder = function () {
|
||||
var url = "confirmPassenger/confirmSingleForQueueAsys";
|
||||
var url = !submitData.async ? "confirmPassenger/confirmSingle" : "confirmPassenger/confirmSingleForQueueAsys";
|
||||
var data = {
|
||||
passengerTicketStr: pas1,
|
||||
oldPassengerStr: pas2,
|
||||
randCode: randcode,
|
||||
randCode: param.fastSubmitOrderSkipVc ? "" : randcode,
|
||||
purpose_codes: profile.studentTicket ? "0X00" : "ADULT",
|
||||
key_check_isChange: submitData["key_check_isChange"],
|
||||
leftTicketStr: submitData["leftTicketStr"],
|
||||
@ -250,7 +250,9 @@
|
||||
} else
|
||||
def.reject({ msg: errMsg });
|
||||
} else {
|
||||
waitQueueToComplete();
|
||||
if (submitData.async)
|
||||
waitQueueToComplete();
|
||||
else loadOrderNoFromPayInit();
|
||||
|
||||
//report
|
||||
port.track(param.trackTypes.QUEUE_ORDER_SUCCESS, [
|
||||
@ -268,6 +270,26 @@
|
||||
def.reject({ msg: "12306不给力啊,唉。出现网络错误了,请重试.." });
|
||||
});
|
||||
};
|
||||
var loadOrderNoCount = 0;
|
||||
var loadOrderNoFromPayInit = function () {
|
||||
ajax.sendPost("queryOrder/queryMyOrderNoComplete", "queryOrder/initNoComplete", null, "json").done(function (text) {
|
||||
if (!text.data) {
|
||||
if (loadOrderNoCount++ < 3) {
|
||||
setTimeout(loadOrderNoFromPayInit, 2000);
|
||||
} else {
|
||||
def.resolve({ orderId: "" });
|
||||
}
|
||||
return;
|
||||
}
|
||||
try {
|
||||
def.resolve({ orderId: text.data.orderDBList[0].sequence_no });
|
||||
} catch (e) {
|
||||
def.resolve({ orderId: "" });
|
||||
}
|
||||
}).fail(function () {
|
||||
def.resolve({ orderId: "" });
|
||||
});
|
||||
};
|
||||
|
||||
var waitQueueToComplete = function () {
|
||||
def.notify({ msg: "正在等待订单处理..." });
|
||||
@ -310,7 +332,11 @@
|
||||
|
||||
sendRequest();
|
||||
};
|
||||
checkVc();
|
||||
if (param.fastSubmitOrderSkipVc) {
|
||||
submitOrder();
|
||||
} else {
|
||||
checkVc();
|
||||
}
|
||||
|
||||
return def.promise();
|
||||
};
|
||||
|
@ -65,11 +65,16 @@
|
||||
submitProgress.hide();
|
||||
|
||||
$("#ticket-submit-info .ticket-submit-vc").attr("data-target", profile.resign ? "order" : "fastSubmit");
|
||||
if (!vc_inited) {
|
||||
vc_inited = true;
|
||||
vc.load($("#ticket-submit-info .ticket-submit-vc"));
|
||||
|
||||
if (param.fastSubmitOrderSkipVc) {
|
||||
that.submitOrder();
|
||||
} else {
|
||||
$("#ticket-submit-info .ticket-submit-vc a").click();
|
||||
if (!vc_inited) {
|
||||
vc_inited = true;
|
||||
vc.load($("#ticket-submit-info .ticket-submit-vc"));
|
||||
} else {
|
||||
$("#ticket-submit-info .ticket-submit-vc a").click();
|
||||
}
|
||||
}
|
||||
};
|
||||
this.hide = function () {
|
||||
@ -81,7 +86,7 @@
|
||||
media.stop();
|
||||
|
||||
var randCode = $("#ticket-submit-info .ticket-submit-vc input:hidden").val();
|
||||
if (!randCode.length) {
|
||||
if (!param.fastSubmitOrderSkipVc && !randCode.length) {
|
||||
mp.showMessagePopup("error", "请完成验证...");
|
||||
return;
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
var favorite_names ='@bji|北京|BJP|0@sha|上海|SHH|1@tji|天津|TJP|2@cqi|重庆|CQW|3@csh|长沙|CSQ|4@cch|长春|CCT|5@cdu|成都|CDW|6@fzh|福州|FZS|7@gzh|广州|GZQ|8@gya|贵阳|GIW|9@hht|呼和浩特|HHC|10@heb|哈尔滨|HBB|11@hfe|合肥|HFH|12@hzh|杭州|HZH|13@hko|海口|VUQ|14@jna|济南|JNK|15@kmi|昆明|KMM|16@lsa|拉萨|LSO|17@lzh|兰州|LZJ|18@nni|南宁|NNZ|19@nji|南京|NJH|20@nch|南昌|NCG|21@sya|沈阳|SYT|22@sjz|石家庄|SJP|23@tyu|太原|TYV|24@wlq|乌鲁木齐南|WMR|25@wha|武汉|WHN|26@xnx|西宁西|XXO|27@xan|西安|XAY|28@ych|银川|YIJ|29@zzh|郑州|ZZF|30@szh|深圳|SZQ|shenzhen|sz|31@xme|厦门|XMS|xiamen|xm|32';
|
||||
var favorite_names ='@bji|北京|BJP|0@sha|上海|SHH|1@tji|天津|TJP|2@cqi|重庆|CQW|3@csh|长沙|CSQ|4@cch|长春|CCT|5@cdu|成都|CDW|6@fzh|福州|FZS|7@gzh|广州|GZQ|8@gya|贵阳|GIW|9@hht|呼和浩特|HHC|10@heb|哈尔滨|HBB|11@hfe|合肥|HFH|12@hzh|杭州|HZH|13@hko|海口|VUQ|14@jna|济南|JNK|15@kmi|昆明|KMM|16@lsa|拉萨|LSO|17@lzh|兰州|LZJ|18@nni|南宁|NNZ|19@nji|南京|NJH|20@nch|南昌|NCG|21@sya|沈阳|SYT|22@sjz|石家庄|SJP|23@tyu|太原|TYV|24@wlq|乌鲁木齐南|WMR|25@wha|武汉|WHN|26@xnx|西宁西|XXO|27@xan|西安|XAY|28@ych|银川|YIJ|29@zzh|郑州|ZZF|30@szh|深圳|SZQ|shenzhen|sz|31@xme|厦门|XMS|xiamen|xm|32';
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user