define(function (require, exports, module) { var citydata = require("./station/station_data.js"); var utility = require("./utility.js"); 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; exports.sysNoticeMaxShowCount = 3; exports.citydata = citydata; exports.cities = _(_.flatten(_.map(_.values(citydata.data), function (e) { return _.values(e); }))).mapObject(function (e) { return e.c; });; exports.citynameMap = _.mapObject(exports.cities, function (c) { return c.n; }); exports.getCityName = function (code) { var city = null; return (city = exports.cities[code]) && city.n; }; exports.findSimilarStation = function (name) { var extractname = null; //查找最接近的站点 _.each(exports.citynameMap, function (c) { if ((c.n.indexOf(name) === 0 || name.indexOf(c.n) === 0) && (extractname === null || extractname.length > c.n.length)) extractname = c.n; }); if (!extractname) return [name]; var result = []; _.each(exports.citynameMap, function (c) { if (c.n.indexOf(extractname) === 0) result.push(c.n); }); return result; }; exports.findSimilarStationInfos = function (name) { var extractname = null; //查找最接近的站点 _.each(exports.citynameMap, function (c) { if ((c.n.indexOf(name) === 0 || name.indexOf(c.n) === 0) && (extractname === null || extractname.length > c.n.length)) extractname = c.n; }); if (!extractname) { var code = exports.citynameMap[name]; return code ? [{ code: code.c, name: name }] : []; } var result = []; _.each(exports.citynameMap, function (c) { if (c.n.indexOf(extractname) === 0) result.push({ code: c.c, name: c.n }); }); return result; }; exports.identityCardTypes = { }; exports.passengerTypes = { "1": "成人", "2": "儿童", "3": "学生", "4": "残军" }; exports.tagOtnMap = { "9": "SWZ", "P": "TZ", "M": "ZY", "O": "ZE", "6": "GR", "4": "RW", "3": "YW", "2": "RZ", "1": "YZ", "0": "WZ", "*": "QT", "B": "HB" }; exports.tagRevMap = _.invert(exports.tagOtnMap); exports.seatNameMap = { "商务座": "SWZ", "特等座": "TZ", "一等座": "ZY", "二等座": "ZE", "高级软卧": "GR", "软卧": "RW", "硬卧": "YW", "软座": "RZ", "硬座": "YZ", "无座": "WZ", "混编硬座": "HB" }; exports.tagMap = { "动车或高铁或城铁": "[DGC].*", "特快或直达": "[TZ].*", "快车": "K.*", "高铁": "G.*", "动车": "D.*", "城铁": "C.*", "直达": "Z.*", "特快": "T.*", "任意车次": ".*" }; exports.translateTrain = function (array) { /// 将列车编号翻译为实际的检查序列 return array.map(function (e) { return exports.tagMap[e] || e; }); }; exports.seatNameInvMap = _.invert(exports.seatNameMap); exports.baseUri = "https://kyfw.12306.cn/otn/"; exports.queryBaseUri = "https://dynamic.12306.cn/otsquery/"; exports.toSeatTypeName = function (code) { return exports.seatNameInvMap[exports.tagOtnMap[code]]; }; exports.seatDisplayOrder = 'O219PM6430'.split(''); exports.isDebug = ((function () { return false; }) + '').indexOf("false;") != -1; exports.log = function () { if (!exports.isDebug) return; console.log.apply(console, Array.prototype.slice.call(arguments)); }; exports.showMoreOptRange = [ [new Date(2014, 9, 5), new Date(2014, 9, 20)], [new Date(2015, 1, 20), new Date(2014, 2, 18)] ]; exports.startTrainStationSuggestQueryLimit = 1; exports.maxSuggestStationTimeRange = { "": 300, "G": 180, "D": 180 } exports.maxSellDays = 59; exports.minDate = utility.trimToDay(new Date()); exports.maxDate = (function () { var dt = new Date(); if (dt.getFullYear() >= 2015 || (dt.getFullYear() === 2014 && dt.getMonth() === 11 && dt.getDate() >= 6)) return utility.addDays(exports.minDate, 59); var date = dt.getDate(); switch (date) { case 1: return new Date(2014, 11, 30); case 2: return new Date(2015, 0, 6); case 3: return new Date(2015, 0, 13); case 4: return new Date(2015, 0, 20); case 5: return new Date(2015, 0, 27); } return utility.addDays(exports.minDate, 19); })(); exports.getBeginSellDate = function (date) { date = utility.toDate(date); var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); var startDate; if (year > 2015 || (year === 2015 && (month > 2 || (month === 2 && day >= 3)))) { startDate = utility.addDays(date, -59); } else if (year === 2015) { if (month === 2 || (month === 1 && day >= 28)) startDate = new Date(2014, 11, 6); else if (day >= 21) startDate = new Date(2014, 11, 5); else if (day >= 14) startDate = new Date(2014, 11, 4); else if (day >= 7) startDate = new Date(2014, 11, 3); else startDate = new Date(2014, 11, 2); } else if (year === 2014 && day == 31) startDate = new Date(2014, 11, 2); else if (year === 2014 && day >= 20) startDate = new Date(2014, 11, 1); else startDate = utility.addDays(date, -19); return startDate; }; exports.isStudentTicketEnabled = function (date) { /// 判断指定的日期学生票是否可以买 date = utility.toDate(date); var tag = (date.getMonth() + 1) * 10 + date.getDate(); return _.any(exports.stuDate, function (e) { return tag >= e[0] && tag <= e[1]; }); }; exports.stuDate = [ [101, 331], [601, 930], [1201, 1231] ]; exports.isValidDate = function (date) { date = utility.trimToDay(date); return date >= exports.minDate; }; exports.isAutoBookEnabled = function (profile) { return (profile.selectedTrain && profile.selectedTrain.length) || (profile.selectedSeatType && profile.selectedSeatType.length); }; //查找默认的日期 //(function () { // var d = exports.minDate; // var day = d.getDay(); // if (day < 5) { // //星期1-5,则取星期五 // exports.defaultDate = utility.addDays(d, 5 - day); // } else if (day > 0) { // //取周日 // exports.defaultDate = utility.addDays(d, 7 - day); // } //})(); exports.defaultDate = ""; exports.trackTypes = { //打开首页 OPEN_PAGE_INDEX: 100, //登录 LOGIN: 101, //查票 QUERY_TICKET: 102, //显示购票提示 QUERY_SUGGESTION: 103, //显示预售提示 SELLTIME_SUGGEST: 104, //提交订单 SUBMIT_ORDER: 105, //提交订单失败 SUBMIT_ORDER_FAILED: 106, //提交订单失败 SUBMIT_ORDER_SUCCESS: 107, //主动退出登录 LOGOUT: 108, //显示停靠站 SHOW_TRAIN_STOP: 109, //由自动刷新发起的提交订单 SUBMIT_AUTO: 110, //开始刷票 START_AUTOREFRESH: 111, //停止刷票 STOP_AUTOREFRESH: 112, //刷到票了 VALID_AUTOREFRESH: 113, //加入聊天 JOIN_CHAT: 114, //退出聊天 EXIT_CHAT: 115, //extar OPEN_SYS_NOTICE: 116, LOAD_SYS_NOTICE: 117, LOAD_SUGGESTION: 118, SHOW_NOTIFICATION_SELECT: 119, OPEN_SELL_NOTIFICATION: 120, //---------------------------- SUBMIT_ORDER_BY_SUGGESTIONI: 121, QUEUE_ORDER_SUCCESS: 122, PROFILE_AUTO_SELECTSEAT: 130, PROFILE_AUTO_ADDTRAIN: 131, PROFILE_AUTO_ADDPAS: 132, PROFILE_AUTO_ADDDL: 133, PROFILE_AUTO_MOREOPT: 134, PROFILE_AUTO_OPENTM: 135, PROFILE_AUTO_RESET: 136, PROFILE_DATEBAR: 137, //---------------------------- TRANSIT_SHOWTRANSIT: 150, TRANSIT_MANUALLYREQUIRE: 151 }; exports.chatSendMsgDelay = 5000; exports.maxRecentCity = 18; exports.suggestRefreshInterval = 60000; Object.defineProperty(exports, "moreOptDefault", { get: function () { return true; var d = exports.minDate; return _.any(exports.showMoreOptRange, function (v) { return v[0] <= d && d <= v[1]; }); } }); });