1.创建关键表
CREATE TABLE `user_zj` (
`zj_id` int(10) NOT NULL AUTO_INCREMENT,
`user_join_id` int(10) NOT NULL COMMENT '用户报名id',
`zj_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`activity_id` int(10) NOT NULL,
`version` int(10) DEFAULT NULL COMMENT '版本信息',
PRIMARY KEY (`zj_id`)
) ENGINE=MyISAM AUTO_INCREMENT=74 DEFAULT CHARSET=utf8 COMMENT='用户中奖表';
CREATE TABLE `user_join` (
`user_join_id` int(10) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`activity_id` int(11) NOT NULL COMMENT '商品活动id',
`join_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`client` varchar(11) NOT NULL,
`mobile` varchar(11) NOT NULL,
PRIMARY KEY (`user_join_id`)
) ENGINE=MyISAM AUTO_INCREMENT=334 DEFAULT CHARSET=utf8 COMMENT='用户报名表';
CREATE TABLE `user_activity` (
`activity_id` int(10) NOT NULL AUTO_INCREMENT,
`goods_sn` varchar(20) NOT NULL,
`goods_id` int(10) NOT NULL,
`stage_index` smallint(2) NOT NULL,
`start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`create_time` int(4) NOT NULL COMMENT '上架时间',
`origin_price` float(6,2) NOT NULL,
`activity_price` float(6,2) NOT NULL COMMENT '活动秒杀价格',
`goods_name` varchar(200) NOT NULL,
`goods_desc` text COMMENT '商品描述',
`goods_pic` varchar(200) NOT NULL,
`limit_number` smallint(5) NOT NULL COMMENT '限抢名额',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1上架,0下架',
PRIMARY KEY (`activity_id`),
UNIQUE KEY `stage_index` (`stage_index`),
KEY `goods_sn` (`goods_sn`)
) ENGINE=MyISAM AUTO_INCREMENT=79 DEFAULT CHARSET=utf8 COMMENT='商品活动表';
2.关键SQL语句
在user_activity表中获取抢购名额,在user_zj表中获取中奖记录数量。如果达到抢购名额,则抢购失败,按抢购时间
顺序,先到先得的方案。
$sql="select max(version) from user_zj ";$version = $this->db->query($sql);
$data['version'] = $version+1;
$sql="INSERT INTO user_zj (user_join_id,activity_id,version) SELECT {$data['user_join_id']},{$data['activity_id']},{$data['version']} FROM DUAL WHERE NOT EXISTS (SELECT * FROM user_zj WHERE version = {$data['version']})"; $this->db->query($sql); $insert_id=$this->db->insert_id(); if($insert_id) { $this->ajaxReturn('0X0000','true','恭喜你获得秒杀价资格!'); }else{ $this->ajaxReturn('0X0009','false',"没有秒杀到!"); }