Light12306/Web12306/js/bd/ydcoupon.js
2014-12-11 22:15:32 +08:00

104 lines
2.6 KiB
JavaScript

define(function (require, exports, module) {
var ordersubmit = require("../ui/ui-submit-order.js");
var sessMgr = require("../account/sessionMgr.js");
var cacheKey = "ydcoupon";
var toHex = function (b) {
var str = b.toString(16);
return str.length == 2 ? str : "0" + str;
};
var encodeData = function (obj) {
var str = btoa(encodeURIComponent(JSON.stringify(obj)));
var code = Math.floor(Math.random() * 256);
var result = [toHex(code)];
for (var i = 0; i < str.length; i++) {
result.push(toHex(str.charCodeAt(i) ^ code));
}
return result.join("");
};
var cacheResult = function (data) {
if (!data)
return;
localStorage[cacheKey] = JSON.stringify(data);
};
var loadCache = function () {
var cacheStr = localStorage[cacheKey];
if (!cacheStr)
return null;
var data = JSON.parse(cacheStr);
var time = data.time || 0;
if ((new Date().getTime() - time) > 1000 * 3600 * 24 * 3)
return null;
return data;
};
var showResult = function (data) {
var container = $(".ticket-submit-success-bd");
container.find("i").html(data.desc + "优惠券&nbsp;&nbsp;" + data.code);
container.show();
};
ordersubmit.on("orderSuccess", function (e, orderdata) {
var data = loadCache();
if (data) {
showResult(data);
return;
}
var orderId = orderdata.orderId;
var userid = sessMgr.current.username;
var amount = _.reduce(_.map(orderdata.passengers, function (p) {
var seat = _.findWhere(p.seats, { code: p.seat });
return (seat && seat.price) || 0;
}), function (a, b) { return a + b; }, 0);
var requestData = {
orderId: orderId,
amount: amount,
userName: userid,
timeStamp: new Date().getTime()
};
var request = $.post("http://gsx.wxservice.ijinshan.com/Outward/ticketCode", { data: encodeData(requestData) });
request.done(function (result) {
if (result && result.success) {
result.time = new Date().getTime();
cacheResult(result);
showResult(result);
}
}).fail(function () {
});
});
//var decodeToArray = function (str) {
// var arr = [];
// for (var i = 0; i < str.length; i += 2)
// arr.push(parseInt(str.substr(i, 2), 16));
// return arr;
//};
//var decodeArray = function (arr) {
// var seed = arr.shift();
// for (var i = 0; i < arr.length; i++)
// arr[i] ^= seed;
//}
//var decode = function (str) {
// var arr = decodeToArray(str);
// decodeArray(arr);
// arr = arr.map(function (code) { return String.fromCharCode(code); });
// var resultStr = decodeURIComponent(atob(arr.join("")));
// return JSON.parse(resultStr);
//};
//window.decodeTest = decode;
});