Imooc·Java高并发秒杀API(JavaScript模块化)

Imooc·Java高并发秒杀API(JavaScript模块化)

一、seckill.js

var seckill = {
	URL:{
		now:function(){
			return '/seckill/time/now';
		},
		exposer:function(seckillId){
			return '/seckill/'+seckillId+'/exposer';
		},
		kill:function(seckillId,md5){
			return '/seckill/'+seckillId+'/'+md5+'/execution';
		}
	},
	handlerSeckillKill:function(seckillId,node){
		node.hide().html('<button class="btn btn-primary btn-lg" id="killBtn">开始秒杀!</button>');
		//$.post('url',{},function(result){	
		$.post(seckill.URL.exposer(seckillId),{},function(result){	
			if(result && result['success']){
				var exposer = result['data'];
				//console.log("data"+data);
				if(exposer['exposed']){
					var md5 = exposer['md5'];
					//var killUrl = '/seckill/'+seckillId+'/'+md5+'/execution';
					var killUrl = seckill.URL.kill(seckillId,md5);
					$('#killBtn').one('click',function(){
						$(this).addClass('disabled');
						$.post(killUrl,{},function(data){
							if(data && data['success']){
								var result = data['data'];
								var state = result['state'];
								var stateInfo = result['stateInfo'];
								//node.html(stateInfo);
								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("data"+data);}
		});
	},
	validatePhone:function(phone){
		if(phone && phone.length == 11 && !isNaN(phone)) return true;
			else return false;
	},
	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.handlerSeckillKill(seckillId,seckillBox);
			});
		}
		else seckill.handlerSeckillKill(seckillId,seckillBox);
	},
	detail:{
		init:function(params){
			var killPhone = $.cookie('killPhone');
			if(!seckill.validatePhone(killPhone)){
				var killPhoneModal = $('#killPhoneModal');
				killPhoneModal.modal({
					show: true,
					backdrop: 'static',
					keyboard: false
				});
				$('#killPhoneBtn').click(function(){
					var inputPhone = $('#killPhoneKey').val();
					if(seckill.validatePhone(inputPhone)){
						$.cookie('killPhone',inputPhone,{expires:7,path:'/seckill'});
						window.location.reload();
					} else {
						$('#killPhoneMessage').hide().html('<label class="label label-danger">手机号错误!</label>').show(300);
					}
				});
			}
			//$.get('/seckill/time/now',{},function(result){
			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("data"+data);
				}
			});
		}
	}
}

二、效果图



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值