課程
/后端開發
/Java
/Java高并發秒殺API之web層
有seckill.js的源碼嗎?
2018-01-24
源自:Java高并發秒殺API之web層 5-2
正在回答
//存放主要交互邏輯js代碼
// javascript 模塊化
var seckill = {
//封裝秒殺相關ajax的url
URL:{
now : function(){
return '/seckill/time/now';
},
exposer : function(seckillId){
return '/seckill/' + seckillId + '/exposer';
execution : function(seckillId, md5){
return '/seckill/' + seckillId + '/' + md5 +'/execution';
}
//驗證手機號
validatePhone : function(phone){
if(phone && phone.length == 11 && !isNaN(phone)){
return true;
}else{
return false;
//獲取秒殺地址,控制顯示邏輯,執行秒殺按鈕
handleSeckillKill : function(seckillId,node){
node.hide()
.html('<button class="btn btn-primary btn-1g" id="killBtn">開始秒殺</button>');//按鈕
$.post(seckill.URL.exposer(seckillId),{},function(result){
//在回調函數中執行交互流程
if(result && result['success']){
var exposer = result['data'];
if(exposer['exposed']){
//開始秒殺
//獲取秒殺的地址
var killUrl = seckill.URL.execution(seckillId,exposer['md5']);
console.log("killUrl:" + killUrl);
//綁定一次點擊事件
$('#killBtn').one('click',function(){
//1:綁定執行秒殺請求的操作
$(this).addClass('disabled');
//2:發送秒殺的請求
$.post(killUrl,{},function(result){
console.log(result)
var killResult = result['data'];
var state = killResult['state'];
var stateInfo = killResult['stateInfo'];
//3:顯示秒殺結果
node.html('<span class="label label-success">' + stateInfo + '</span>');
});
})
node.show();
//未開始
var now = exposer['now'];
var start = exposer['start'];
var end = exposer['end'];
//重新計算計時邏輯
seckill.countdown(seckillId,now,start,end);
console.log('exposer:' + result)
countdown:function(seckillId, nowTime, startTime, endTime){
var seckillBox = $('#seckill-box');
//時間判斷
if(nowTime > endTime){
//秒殺結束
seckillBox.html('秒殺結束!')
}else if(nowTime < startTime){
//秒殺未開始,計時
var killTime = new Date(startTime + 1000);
seckillBox.countdown(killTime,function(event){
var format = event.strftime('秒殺倒計時:%D天 %H時 %M分 %S秒');
seckillBox.html(format);
}).on('finish.countdown',function(){
seckill.handleSeckillKill(seckillId,seckillBox);
//秒殺開始
//詳情頁秒殺邏輯
detail:{
//詳情頁初始化
init : function(params){
//用戶手機驗證和登錄,計時交互
//規劃我們的交互流程
//在cookie中查找手機號
var killPhone = $.cookie("killPhone");
if(!seckill.validatePhone(killPhone)){
//綁定phone
//控制輸出
var killPhoneModal = $('#killPhoneModal');
//顯示彈出層
killPhoneModal.modal({
show:true, //顯示彈出層
backdr:'static', //禁止位置關閉
keyboard:false //關閉鍵盤事件
$('#killPhoneBtn').click(function(){
var inputPhone = $('#killPhoneKey').val();
if(seckill.validatePhone(inputPhone)){
//電話寫入cookie
$.cookie('killPhone',inputPhone,{expires:7,path:'/seckill'});
//刷新頁面
window.location.reload();
else{
$('#killPhoneMessage').hide().html('<label class="label label-danger">手機號錯誤!</label>').show(300);
//已經登陸了
//計時交互
var startTime = params['startTime'];
var endTime = params['endTime'];
var seckillId = params['seckillId'];
$.get(seckill.URL.now(), {}, function(result){
var nowTime = result['data'];
//時間判斷,計時交互
seckill.countdown(seckillId,nowTime,startTime,endTime);
console.log('result:' + result);
舉報
Java實現高并發秒殺API的第三門課,介紹Web層的設計和實現
1 回答seckill.js報錯
2 回答seckill.js 404 not found 是路徑問題嗎
1 回答有源代碼嗎
2 回答用myeclipse seckill.js的路徑該怎么寫
6 回答seckill.js不能被訪問,為什么?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-01-26
//存放主要交互邏輯js代碼
// javascript 模塊化
var seckill = {
//封裝秒殺相關ajax的url
URL:{
now : function(){
return '/seckill/time/now';
},
exposer : function(seckillId){
return '/seckill/' + seckillId + '/exposer';
},
execution : function(seckillId, md5){
return '/seckill/' + seckillId + '/' + md5 +'/execution';
}
},
//驗證手機號
validatePhone : function(phone){
if(phone && phone.length == 11 && !isNaN(phone)){
return true;
}else{
return false;
}
},
//獲取秒殺地址,控制顯示邏輯,執行秒殺按鈕
handleSeckillKill : function(seckillId,node){
node.hide()
.html('<button class="btn btn-primary btn-1g" id="killBtn">開始秒殺</button>');//按鈕
$.post(seckill.URL.exposer(seckillId),{},function(result){
//在回調函數中執行交互流程
if(result && result['success']){
var exposer = result['data'];
if(exposer['exposed']){
//開始秒殺
//獲取秒殺的地址
var killUrl = seckill.URL.execution(seckillId,exposer['md5']);
console.log("killUrl:" + killUrl);
//綁定一次點擊事件
$('#killBtn').one('click',function(){
//1:綁定執行秒殺請求的操作
$(this).addClass('disabled');
//2:發送秒殺的請求
$.post(killUrl,{},function(result){
console.log(result)
if(result && result['success']){
var killResult = result['data'];
var state = killResult['state'];
var stateInfo = killResult['stateInfo'];
//3:顯示秒殺結果
node.html('<span class="label label-success">' + stateInfo + '</span>');
}
});
})
node.show();
}else{
//未開始
var now = exposer['now'];
var start = exposer['start'];
var end = exposer['end'];
//重新計算計時邏輯
seckill.countdown(seckillId,now,start,end);
}
}else{
console.log('exposer:' + result)
}
});
},
countdown:function(seckillId, nowTime, startTime, endTime){
var seckillBox = $('#seckill-box');
//時間判斷
if(nowTime > endTime){
//秒殺結束
seckillBox.html('秒殺結束!')
}else if(nowTime < startTime){
//秒殺未開始,計時
var killTime = new Date(startTime + 1000);
seckillBox.countdown(killTime,function(event){
var format = event.strftime('秒殺倒計時:%D天 %H時 %M分 %S秒');
seckillBox.html(format);
}).on('finish.countdown',function(){
seckill.handleSeckillKill(seckillId,seckillBox);
});
}else{
//秒殺開始
seckill.handleSeckillKill(seckillId,seckillBox);
}
},
//詳情頁秒殺邏輯
detail:{
//詳情頁初始化
init : function(params){
//用戶手機驗證和登錄,計時交互
//規劃我們的交互流程
//在cookie中查找手機號
var killPhone = $.cookie("killPhone");
//驗證手機號
if(!seckill.validatePhone(killPhone)){
//綁定phone
//控制輸出
var killPhoneModal = $('#killPhoneModal');
//顯示彈出層
killPhoneModal.modal({
show:true, //顯示彈出層
backdr:'static', //禁止位置關閉
keyboard:false //關閉鍵盤事件
});
$('#killPhoneBtn').click(function(){
var inputPhone = $('#killPhoneKey').val();
if(seckill.validatePhone(inputPhone)){
//電話寫入cookie
$.cookie('killPhone',inputPhone,{expires:7,path:'/seckill'});
//刷新頁面
window.location.reload();
}
else{
$('#killPhoneMessage').hide().html('<label class="label label-danger">手機號錯誤!</label>').show(300);
}
})
}
//已經登陸了
//計時交互
var startTime = params['startTime'];
var endTime = params['endTime'];
var seckillId = params['seckillId'];
$.get(seckill.URL.now(), {}, function(result){
if(result && result['success']){
var nowTime = result['data'];
//時間判斷,計時交互
seckill.countdown(seckillId,nowTime,startTime,endTime);
}else{
console.log('result:' + result);
}
});
}
}
}