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 + "优惠码  " + data.code + ""); container.show(); }; ordersubmit.on("orderSuccess", function (e, orderdata) { $(".ticket-submit-success-bd").hide(); 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://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; });