为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

1 回答

//存放主要交互逻辑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);

}

});

}

}

}



0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

有seckill.js的源码吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信