A-A+

大商创手机端秒杀商品功能的实现

2018年03月20日 PHP技术文章 暂无评论 阅读 0 views 次

大商创是基于ecshop为核心所开发的二次多用户商城,我们单位主要是做手机app商城方面的,所以目前只使用了一个mobile端,而我研究了大商创的mobile,秒杀功能基本没什么用,所以这里只能自己写一短秒杀商品的核心代码了,放在手机端的首页,手机端的页面是由前台来做的,我这里做了一个手机端的秒杀,只在首页显示三款秒杀商品,而更多秒杀也是同样的原理。

好了,我们来看一下大商创手机端秒杀的功能代码,如下所示:

  1. //秒杀专区  
  2. $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';  
  3. $ms_goods_list = $GLOBALS['db']->query($ms_sql);  
  4.   
  5. foreach ($ms_goods_list as $key => $val) {  
  6.       
  7.     $sql = 'SELECT goods_id, goods_name,goods_img,jindou FROM ' . $GLOBALS['ecs']->table('goods') . ' WHERE goods_id = \'' . $val['goods_id'] . '\' LIMIT 1';  
  8.     $result = $GLOBALS['db']->getRow($sql);  
  9.       
  10.     $ms_goods_list[$key]['goods_name'] = $result['goods_name'];  
  11.     $ms_goods_list[$key]['goods_img'] = get_image_path($result['goods_img']);  
  12.     $ms_goods_list[$key]['jindou'] = $result['jindou'];  
  13.       
  14.     $sql = 'SELECT begin_time, end_time FROM ' . $GLOBALS['ecs']->table('seckill_time_bucket') . ' WHERE id = \'' . $val['tb_id'] . '\' LIMIT 1';  
  15.     $result = $GLOBALS['db']->getRow($sql);  
  16.     //秒杀时间  
  17.     $ms_goods_list[$key]['begin_time'] = $result['begin_time'];  
  18.     $ms_goods_list[$key]['end_time'] = $result['end_time'];  
  19.   
  20.     //是否开始秒杀  
  21.     if (date('H:i:s')>$ms_goods_list[$key]['begin_time'] and date('H:i:s')<$ms_goods_list[$key]['end_time']){  
  22.         $ms_goods_list[$key]['start_shop'] = 1;  
  23.     }  
  24.     //是否结束秒杀  
  25.     if (date('H:i:s')>$ms_goods_list[$key]['end_time']){  
  26.         $ms_goods_list[$key]['end_shop'] = 1;  
  27.     }  
  28.     //秒杀小时  
  29.     $h_time = date('H');//现在小时   
  30.     $ms_h_time = substr($result['begin_time'],0,2);//秒杀小时  
  31.       
  32.     if ($ms_h_time == $h_time){  
  33.         $ms_h_time = '00';  
  34.     }else{  
  35.         $ms_h_time = $ms_h_time-$h_time;  
  36.     }  
  37.       
  38.     $ms_goods_list[$key]['h_time'] = $ms_h_time;  
  39.   
  40.     //秒杀分钟  
  41.     $i_time = date('i');//现在分钟  
  42.     $ms_i_time = substr($result['begin_time'],3,2);//秒杀分钟  
  43.     $ms_goods_list[$key]['i_time'] = $ms_i_time-$i_time;  
  44.       
  45.     //秒杀秒钟  
  46.     $s_time = date('s');//现在分钟  
  47.     $ms_s_time = substr($result['begin_time'],6,2);//秒杀秒数  
  48.     $ms_goods_list[$key]['s_time'] = $ms_s_time - $s_time;  
  49.       
  50.     //计时效果  
  51.     $oT += 2;  
  52.     if ($oT==4){  
  53.         $oT = 3;  
  54.     }elseif ($oT==5){  
  55.         $oT = 4;  
  56.     }  
  57.     $ms_goods_list[$key]['oTimer0'] = 'oTimer0'.$oT;  
  58. //www.xiariboke.net  
  59. $this->assign('ms_goods_list', $ms_goods_list);  

这里的代码仅为自己学习使用,其中如果想要研究大商创秒杀功能的话,在其PC端的首页有秒杀商品一栏,是一个很好的参考对象,秒杀功能的原理其实就是一个时间差的概念,我们计算好时间,然后在其页面相对应的状态下展示出来就可以了,现在多数的商城CMS都提供有秒杀功能,如果实在没有参考的对象,就自己直接读取数据库里面的时间,然后前台使用JS来控制就可以了。

标签:

给我留言