A-A+
大商创手机端秒杀商品功能的实现
大商创是基于ecshop为核心所开发的二次多用户商城,我们单位主要是做手机app商城方面的,所以目前只使用了一个mobile端,而我研究了大商创的mobile,秒杀功能基本没什么用,所以这里只能自己写一短秒杀商品的核心代码了,放在手机端的首页,手机端的页面是由前台来做的,我这里做了一个手机端的秒杀,只在首页显示三款秒杀商品,而更多秒杀也是同样的原理。
好了,我们来看一下大商创手机端秒杀的功能代码,如下所示:
- //秒杀专区
- $ms_sql = 'SELECT g.sec_id, g.tb_id,g.goods_id,g.sec_price FROM {pre}seckill_goods AS g WHERE sec_id = 3 ORDER BY ' . id . ' DESC LIMIT 3';
- $ms_goods_list = $GLOBALS['db']->query($ms_sql);
- foreach ($ms_goods_list as $key => $val) {
- $sql = 'SELECT goods_id, goods_name,goods_img,jindou FROM ' . $GLOBALS['ecs']->table('goods') . ' WHERE goods_id = \'' . $val['goods_id'] . '\' LIMIT 1';
- $result = $GLOBALS['db']->getRow($sql);
- $ms_goods_list[$key]['goods_name'] = $result['goods_name'];
- $ms_goods_list[$key]['goods_img'] = get_image_path($result['goods_img']);
- $ms_goods_list[$key]['jindou'] = $result['jindou'];
- $sql = 'SELECT begin_time, end_time FROM ' . $GLOBALS['ecs']->table('seckill_time_bucket') . ' WHERE id = \'' . $val['tb_id'] . '\' LIMIT 1';
- $result = $GLOBALS['db']->getRow($sql);
- //秒杀时间
- $ms_goods_list[$key]['begin_time'] = $result['begin_time'];
- $ms_goods_list[$key]['end_time'] = $result['end_time'];
- //是否开始秒杀
- if (date('H:i:s')>$ms_goods_list[$key]['begin_time'] and date('H:i:s')<$ms_goods_list[$key]['end_time']){
- $ms_goods_list[$key]['start_shop'] = 1;
- }
- //是否结束秒杀
- if (date('H:i:s')>$ms_goods_list[$key]['end_time']){
- $ms_goods_list[$key]['end_shop'] = 1;
- }
- //秒杀小时
- $h_time = date('H');//现在小时
- $ms_h_time = substr($result['begin_time'],0,2);//秒杀小时
- if ($ms_h_time == $h_time){
- $ms_h_time = '00';
- }else{
- $ms_h_time = $ms_h_time-$h_time;
- }
- $ms_goods_list[$key]['h_time'] = $ms_h_time;
- //秒杀分钟
- $i_time = date('i');//现在分钟
- $ms_i_time = substr($result['begin_time'],3,2);//秒杀分钟
- $ms_goods_list[$key]['i_time'] = $ms_i_time-$i_time;
- //秒杀秒钟
- $s_time = date('s');//现在分钟
- $ms_s_time = substr($result['begin_time'],6,2);//秒杀秒数
- $ms_goods_list[$key]['s_time'] = $ms_s_time - $s_time;
- //计时效果
- $oT += 2;
- if ($oT==4){
- $oT = 3;
- }elseif ($oT==5){
- $oT = 4;
- }
- $ms_goods_list[$key]['oTimer0'] = 'oTimer0'.$oT;
- } //www.xiariboke.net
- $this->assign('ms_goods_list', $ms_goods_list);
这里的代码仅为自己学习使用,其中如果想要研究大商创秒杀功能的话,在其PC端的首页有秒杀商品一栏,是一个很好的参考对象,秒杀功能的原理其实就是一个时间差的概念,我们计算好时间,然后在其页面相对应的状态下展示出来就可以了,现在多数的商城CMS都提供有秒杀功能,如果实在没有参考的对象,就自己直接读取数据库里面的时间,然后前台使用JS来控制就可以了。