修改查票流程
This commit is contained in:
parent
57801451f1
commit
87f2abae80
@ -122,6 +122,15 @@ var notification = (function () {
|
||||
chrome.windows.update((m.detail && m.detail.windowid), { drawAttention: true, focused: true, state: "maximized" });
|
||||
}
|
||||
});
|
||||
chrome.runtime.onMessage.addListener(function (m, sender) {
|
||||
if (!m || !m.action)
|
||||
return;
|
||||
|
||||
if (m.action === "attention" && sender.tab) {
|
||||
chrome.tabs.update((m.detail && m.detail.tabid) || sender.tab.id, { active: true, highlighted: true });
|
||||
chrome.windows.update((m.detail && m.detail.windowid), { drawAttention: true, focused: true, state: "maximized" });
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
return new notify();
|
||||
@ -428,12 +437,21 @@ var CFG_MANGER = (function () {
|
||||
return url.replace(qtc, escape(ntc));
|
||||
};
|
||||
|
||||
function parseCookies(v) {
|
||||
var arr = {};
|
||||
v.split('; ').forEach(function (x) { var idx = x.indexOf("="); arr[x.substr(0, idx)] = x.substr(idx + 1); });
|
||||
return arr;
|
||||
};
|
||||
|
||||
function processRequest(details) {
|
||||
var url = details.url;
|
||||
|
||||
var skipBlacklist = !CFG_MANGER.config.blockDynamicJs;
|
||||
var newHeaders = {};
|
||||
|
||||
var newCookies = null;
|
||||
var oldCookiesValue = null;
|
||||
|
||||
for (var i = 0; i < details.requestHeaders.length; ++i) {
|
||||
var h = details.requestHeaders[i];
|
||||
var name = h.name;
|
||||
@ -446,13 +464,21 @@ var CFG_MANGER = (function () {
|
||||
} else if (h.name == "Referer") {
|
||||
if (!newHeaders["Referer"] && value.indexOf("12306.cn") != -1)
|
||||
newHeaders["Referer"] = value;
|
||||
} else if (name.indexOf("Fish-") != -1) {
|
||||
} else if (name === "Cookie") {
|
||||
oldCookiesValue = value;
|
||||
newHeaders["Cookie"] = value;
|
||||
} else if (name.indexOf("Fish-") !== -1) {
|
||||
name = name.substr(5);
|
||||
if (!value) {
|
||||
if (newHeaders[name])
|
||||
delete newHeaders[name];
|
||||
|
||||
if (name === "Cookie") {
|
||||
newCookies = parseCookies(value);
|
||||
} else {
|
||||
newHeaders[name] = value;
|
||||
if (!value) {
|
||||
if (newHeaders[name])
|
||||
delete newHeaders[name];
|
||||
} else {
|
||||
newHeaders[name] = value;
|
||||
}
|
||||
}
|
||||
skipBlacklist = true;
|
||||
} else if (!newHeaders[name]) {
|
||||
@ -460,6 +486,14 @@ var CFG_MANGER = (function () {
|
||||
}
|
||||
}
|
||||
|
||||
if (newCookies) {
|
||||
var oc = parseCookies(oldCookiesValue);
|
||||
newCookies = _.extend({}, oc, newCookies);
|
||||
newHeaders["Cookie"] = _.map(newCookies, function (v, k) {
|
||||
return k + "=" + encodeURIComponent((v));
|
||||
}).join("; ");
|
||||
}
|
||||
|
||||
var headerCollection = [];
|
||||
for (var i in newHeaders) {
|
||||
headerCollection.push({ name: i, value: newHeaders[i] });
|
||||
|
@ -56,7 +56,7 @@
|
||||
"description": "12306订票助手 v7: 帮您订票的小助手 by 木鱼,全力为您的车票购买献计献策!",
|
||||
"key": "7k6gnXVACvUPU2DfslJgSrWJTHqIg5uwd+Kgl/5zSg==",
|
||||
"name": "猎豹抢票党/12306订票助手 V7",
|
||||
"version": "7.1.1",
|
||||
"version": "7.2.1",
|
||||
"manifest_version": 2,
|
||||
"icons": {
|
||||
"16": "icons/icon_16.png",
|
||||
|
@ -4,6 +4,8 @@
|
||||
var parser = require("../platform/parser.js");
|
||||
var ev = require("../platform/EventObject.js");
|
||||
|
||||
var extensionVersion = parseInt(document.body.dataset["targetExtensionVersion"].replace(/\./g, ""));
|
||||
|
||||
exports.events = new ev();
|
||||
|
||||
//记录参数
|
||||
@ -148,7 +150,7 @@
|
||||
return trainData;
|
||||
};
|
||||
|
||||
exports.queryTicket = function (from, to, date, student, noProcess, noAction) {
|
||||
exports.queryTicket = function (from, fromName, to, toName, date, student, resign, noProcess, noAction) {
|
||||
var def = new $.Deferred();
|
||||
var queryCount = 0;
|
||||
|
||||
@ -163,6 +165,19 @@
|
||||
"leftTicketDTO.to_station": to,
|
||||
"purpose_codes": student ? "0X00" : "ADULT"
|
||||
};
|
||||
var cookie = (function (obj) { var arr = [];
|
||||
_.forEach(obj, function (v, k) { arr.push(k + '=' + v); });
|
||||
return arr.join("; ");
|
||||
})(extensionVersion >= 720 ? {
|
||||
"_jc_save_fromStation": escape(fromName + "," + from),
|
||||
"_jc_save_toStation": escape(toName + "," + to),
|
||||
"_jc_save_fromDate": date,
|
||||
"_jc_save_toDate": date,
|
||||
"_jc_save_wfdc_flag": resign ? "gc" : "dc"
|
||||
} : {});
|
||||
if (isLogOpen) {
|
||||
exports.log(p, cookie);
|
||||
}
|
||||
ajax.sendGet(queryTicketUrl, "leftTicket/init", p, "json", function () {
|
||||
//url changed?
|
||||
if (!this.model.status && this.model.c_url) {
|
||||
@ -183,6 +198,8 @@
|
||||
def.reject("重试次数过多,请重新点击查询按钮");
|
||||
|
||||
}
|
||||
}, false, {
|
||||
"Cookie": cookie
|
||||
});
|
||||
};
|
||||
var fetchTicketUrl = function () {
|
||||
@ -217,11 +234,17 @@
|
||||
return def.promise();
|
||||
};
|
||||
|
||||
exports.log = function (data) {
|
||||
exports.log = function (data, cookies) {
|
||||
if (!isLogOpen || (lastLogTime && (new Date() - lastLogTime) < 5000))
|
||||
return;
|
||||
lastLogTime = new Date();
|
||||
ajax.sendGet("leftTicket/log", "leftTicket/init", data, "json");
|
||||
ajax.sendGet("leftTicket/log", "leftTicket/init", data, "json", function() {
|
||||
|
||||
},function() {
|
||||
|
||||
}, false, {
|
||||
"Cookie": cookies
|
||||
});
|
||||
};
|
||||
|
||||
exports.queryTrainStop = function (id, from, to, date) {
|
||||
|
@ -120,7 +120,7 @@
|
||||
}
|
||||
|
||||
var t = serverSuggestion.pop();
|
||||
query.queryTicket(t.fromCode, t.toCode, t.date, cp.studentTicket, false, true)
|
||||
query.queryTicket(t.fromCode, t.fromText, t.toCode, t.toText, t.date, cp.studentTicket, false, false, true)
|
||||
.done(function () {
|
||||
loaded.unshift(t);
|
||||
|
||||
@ -235,6 +235,10 @@
|
||||
var ctx = {
|
||||
TSS: new TSS(),
|
||||
setQueryResult: function (result, queryCount) {
|
||||
//改签或学生票,忽略
|
||||
if (cp.reisgn || cp.studentTicket)
|
||||
return;
|
||||
|
||||
ctx.TSS.setQueryResult(result, queryCount);
|
||||
},
|
||||
clearQueryResultCache: function () {
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
exports.notify = function (title, content) {
|
||||
port.sendMessage({ action: "notify", title: title, content: content });
|
||||
port.sendMessage({ action: "attention" });
|
||||
}
|
||||
|
||||
$("#btn_stop_sound").click(exports.stop);
|
||||
|
@ -16,7 +16,7 @@ define(function (require, exports, module) {
|
||||
if (url[4] === ":" || url[5] === ":") return url;
|
||||
return config.baseUri + url;
|
||||
};
|
||||
this.send = function (method, url, refer, data, responseType, done, failed, appendatt) {
|
||||
this.send = function (method, url, refer, data, responseType, done, failed, appendatt, headers) {
|
||||
var def = new $.Deferred();
|
||||
|
||||
if (appendatt) {
|
||||
@ -30,7 +30,8 @@ define(function (require, exports, module) {
|
||||
timeout: 120000,
|
||||
type: method,
|
||||
dataType: responseType,
|
||||
refer: that.getFullUri(refer)
|
||||
refer: that.getFullUri(refer),
|
||||
headers: headers
|
||||
};
|
||||
|
||||
var e = new CustomEvent("ajaxproxy", { detail: { data: xhrData, index: ajaxCount++ }, cancelable: true });
|
||||
@ -77,7 +78,7 @@ define(function (require, exports, module) {
|
||||
|
||||
return def;
|
||||
};
|
||||
this.sendGet = function (url, refer, data, responseType, done, failed, appendatt) {
|
||||
this.sendGet = function (url, refer, data, responseType, done, failed, appendatt, headers) {
|
||||
/// <summary>以GET模式发送AJAX请求</summary>
|
||||
/// <param name="url">要请求的地址</param>
|
||||
/// <param name="refer">请求的引用地址</param>
|
||||
@ -85,9 +86,9 @@ define(function (require, exports, module) {
|
||||
/// <param name="responseType">要请求的地址</param>
|
||||
/// <param name="done">完成请求的回调</param>
|
||||
/// <param name="failed">请求失败的回调</param>
|
||||
return that.send("GET", url, refer, data, responseType, done, failed, appendatt);
|
||||
return that.send("GET", url, refer, data, responseType, done, failed, appendatt, headers);
|
||||
};
|
||||
this.sendPost = function (url, refer, data, responseType, done, failed, appendatt) {
|
||||
this.sendPost = function (url, refer, data, responseType, done, failed, appendatt, headers) {
|
||||
var args = [].slice.call(arguments);
|
||||
args.unshift("POST");
|
||||
return that.send.apply(this, args);
|
||||
|
@ -354,7 +354,7 @@
|
||||
|
||||
queryLoadingRow.show();
|
||||
queryErrorRow.hide();
|
||||
query.queryTicket(cp.fromCode, cp.toCode, cp.depDate, cp.studentTicket, true)
|
||||
query.queryTicket(cp.fromCode, cp.fromText, cp.toCode, cp.toText, cp.depDate, cp.studentTicket, cp.resign || false, true)
|
||||
.done(function () {
|
||||
traindata = this;
|
||||
if (!this.original.length) {
|
||||
|
@ -50,12 +50,15 @@
|
||||
this.clear = function () {
|
||||
$("#result").empty();
|
||||
};
|
||||
this.load = function (ui, from, to, date, stu) {
|
||||
this.load = function (ui, from, fromText, to, toText, date, stu, resign) {
|
||||
ui = ui === undefined ? true : ui;
|
||||
from = from || sessMgr.currentProfile.fromCode;
|
||||
fromText = fromText || sessMgr.currentProfile.fromText;
|
||||
to = to || sessMgr.currentProfile.toCode;
|
||||
toText = toText || sessMgr.currentProfile.toText;
|
||||
date = date || sessMgr.currentProfile.depDate;
|
||||
stu = stu || sessMgr.currentProfile.studentTicket;
|
||||
resign = resign || sessMgr.currentProfile.resign || false;
|
||||
|
||||
if (!from || !to || !date) {
|
||||
mp.showMessagePopup("error", "亲,还没有设置查询的条件哦。");
|
||||
@ -73,7 +76,7 @@
|
||||
tip.show();
|
||||
}
|
||||
ticketQuery
|
||||
.queryTicket(from, to, date, stu)
|
||||
.queryTicket(from, fromText, to, toText, date, stu, resign)
|
||||
.done(function () {
|
||||
if (tip) {
|
||||
tip.setState("ok", "完成...");
|
||||
|
@ -62,7 +62,7 @@
|
||||
|
||||
var tip = new mp.MessagePopup("loading", "正在查询中,请稍等...");
|
||||
tip.show();
|
||||
query.queryTicket(sessMgr.currentProfile.fromCode, sessMgr.currentProfile.toCode, utility.formatDate(data.maxDate, 'yyyy-MM-dd'), sessMgr.currentProfile.studentTicket, true)
|
||||
query.queryTicket(sessMgr.currentProfile.fromCode, sessMgr.currentProfile.fromText, sessMgr.currentProfile.toCode, sessMgr.currentProfile.toText, utility.formatDate(data.maxDate, 'yyyy-MM-dd'), sessMgr.currentProfile.studentTicket, sessMgr.currentProfile.resign || false, true)
|
||||
.done(function () {
|
||||
tip.setState("ok", "查询成功!");
|
||||
tip.close();
|
||||
|
Loading…
Reference in New Issue
Block a user