<?php
namespace Service\Controller;use Base\Webbase;class SeckillController extends Webbase
{/*** 预约操作*/public function order(){$cond1 = array('starttime'  =>   array('ELT',time()),'endtime'   =>   array('EGT',time()));M()->startTrans();//开启事务$plan = M('maskplans')->lock(true)->where($cond1)->find();
//        echo M('maskplans')->getLastSql();
//        dump($plan);die();if (!$plan  || $plan['plan_num']<=$plan['real_num']){$this->weberror(self::THIS_ACTION_ERROR,"当前场次已结束!");}$cond2 = array('idcard'=> $_POST['idcard'],'add_time' => array("EGT",strtotime("-7 day")));$order = M('maskorders')->where($cond2)->find();if ($order){$this->weberror(self::THIS_ACTION_ERROR,"每人7天只能预约1次,请勿重复预约!");}$postData = array(
//          'name'=>$_POST['name'],
//          'idcard'=>$_POST['idcard'],
//          'lat'=>$_POST['lat'] ,
//          'lon'=>$_POST['lon'] ,
//            'sku'=>rand(100000,999999),
//            'add_time'=>time()'name'=>"a".rand(100,999),'idcard'=>rand(1000000,9999999),'lat'=>1,'lon'=>2,'sku'=>rand(100000,999999),'add_time'=>time());if (!$postData['name'] || !$postData['idcard' || !$postData['lon'] || !$postData['lat']){$this->weberror(self::THIS_ACTION_ERROR,"信息填写错误!");}$status =M('maskplans')->lock(true)->where(array('id'=>$plan['id']))->setInc('real_num');if ($status){$re = M('maskorders')->add($postData);if ($re){$data = array('sku'=>$postData['sku']);M()->commit();//事务提交$this->websuccess(self::OUTPUT_SUCCESS,"预约成功",$data);}}M()->rollback();//回滚$this->weberror(self::THIS_ACTION_ERROR,"预约失败!");}/*** 我的预约*/public function myAppointment(){$idcard = $_POST['idcard'];$re = M('maskorders')->where(array('idcard'=>$idcard))->order('add_time desc')->select();if ($re){foreach ($re as &$item){$item['add_time'] = date("Y-m-d H:i:s",$item['add_time']);}$this->websuccess(self::OUTPUT_SUCCESS,"成功!",$re);}$this->websuccess(self::OUTPUT_SUCCESS,"暂无数据!");}/*** 预约计划列表*/public function appointList(){$cond = array('end_time' =>array('GT',time()));$lists = M('maskplans')->where($cond)->select();if ($lists){foreach ($lists as &$item){if ($item['starttime']<time() && $item['endtime'] >time()){$item['show'] = 1;}else{$item['show'] = 0;}$item['starttime'] = date("Y-m-d H:i:s",$item['starttime']);$item['endtime'] = date("Y-m-d H:i:s",$item['endtime']);}$this->websuccess(self::OUTPUT_SUCCESS,"成功!",$lists);}$this->websuccess(self::OUTPUT_SUCCESS,"暂无数据!");}
}
/*create table yixiang_maskorders(
`id` int(11) NOT NULL AUTO_INCREMENT primary key,
`name` varchar(255) NOT NULL COMMENT "姓名",
`idcard` varchar(255) NOT NULL COMMENT "身份证号",
`lat` varchar(255) NOT NULL COMMENT "经度",
`lon` varchar(255) NOT NULL COMMENT "纬度",
`sku` varchar(255) NOT NULL COMMENT "编号",
`add_time` varchar(255) NOT NULL COMMENT "抢购时间",
);create table yixiang_maskplans(
`id` int(11) NOT NULL AUTO_INCREMENT primary key,
`starttime` int(11) NOT NULL COMMENT "计划投放开始时间",
`endtime` int(11) NOT NULL COMMENT "计划投放结束时间",
`plan_locale` varchar(255) NOT NULL COMMENT "地点",
`plan_num` int(11) NOT NULL COMMENT "计划发放量",
`real_num` int(11) NOT NULL COMMENT "实际发放量"
);

使用ab测试:

效果应该如图所示

thinkphp加锁抢购商品相关推荐

  1. python京东抢购软件神器_用Python在京东抢购商品

    最近在网上看到一篇运用python从京东抢购商品的博客,激起了我的好奇心,python还真的啥都能做到吗????一起来跟小编尝试一下~ 首先肯定是安装python环境,大家可以从官网上下载最新版的py ...

  2. 800行Python代码实现双十一自动登录抢购商品,这速度女友很爱

    嗨害大家好鸭!我是小熊猫❤ 双十一快到啦~ 虽然还有快一个月的样子 但是这点时间可以用来写几行代码 未雨绸缪嘛~ 平台抢购 Python爬虫,自动登录某东网站, 查询商品库存,价格,显示购物车详情等. ...

  3. 800行Python代码实现京东自动登录抢购商品,坐等付款就好了

    京东抢购 Python爬虫,自动登录京东网站,查询商品库存,价格,显示购物车详情等. 可以指定抢购商品,自动购买下单,然后手动去京东付款就行. 运行环境 Python 2.7 第三方库 Request ...

  4. Python爬虫,京东自动登录,在线抢购商品

    京东抢购 Python爬虫,自动登录京东网站,查询商品库存,价格,显示购物车详情等. 可以指定抢购商品,自动购买下单,然后手动去京东付款就行. chang log 2017-03-30 实现二维码扫码 ...

  5. 快速入门!Python爬虫,京东自动登录,在线抢购商品!

    话不多少,今天教大家如何用Python爬虫,自动登录京东网站,查询商品库存,价格,显示购物车详情等.可以指定抢购商品,自动购买下单,然后手动去京东付款就行. 运行环境 Python 2.7 第三方库 ...

  6. 双十一到啦,Python教你如何自动登录京东,在线抢购商品

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 小雨 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...

  7. Golang模拟电商并发场景-抢购商品

    const (// Size 库存Size = 10// openTime 抢购时长openTime = 5 * time.Second )func main() {// 商品commodity := ...

  8. python怎么抢东西_python实现京东秒杀抢购商品操作

    #!/usr/bin/env python##-*- coding:utf-8 -*- from selenium importwebdriverimportdatetimeimporttime dr ...

  9. 利用selenium实现淘宝双十一抢购商品

    参考链接https://mp.weixin.qq.com/s/9mX5JoKZjFZlcA0xZn-bqQ 到双十一了总是有一些定时抢购的货物,有了这个脚本再也不用炼手速了. 在这个基础上使用Pyth ...

最新文章

  1. vs2013突然没有代码提示功能了。
  2. 使用双亲指针表示法存储一棵树,可以方便解决下列哪个应用问题( )
  3. zeppelin连接数据源_使用开放源代码合同(open-zeppelin)创建以太坊令牌
  4. 暑期训练日志----2018.8.15
  5. 在细节消息中包含能够捕获失败的信息(63)
  6. Quartz框架初学1
  7. PKI与证书服务应用-要点总结
  8. pwm逆变器matlab仿真,PWM逆变器的Matlab仿真分析.doc
  9. spring入门常见的问题及解决办法
  10. 西瓜书读书笔记5-决策树的分裂原则
  11. 串口 浮点数 结构体_quot;结构体quot;和quot;共用体quot;在单片机中的妙用
  12. 盘点 常见MQ : 消息队列总览
  13. 如何查找共享计算机的用户名和密码错误,访问共享文件夹提示“未知的用户名或密码错误...
  14. 智能暖风机——7.LED驱动和断电记忆功能
  15. java forward方法_JAVA的服务重定向:使用forward()方法转发请求和使用sendRedirect()方法重定向的区别...
  16. python找出某个文件夹下某个后缀的文件
  17. JavaSE--Set接口
  18. erdas叠加显示_利用erdas对遥感影像进行分类具体步骤
  19. python使用win32后台鼠标点击梦幻西游(只用于开学习技术)新手学习
  20. 完美卸载visual studio及其组件

热门文章

  1. sql server php 案例,php连接sql server 2008案例
  2. db2 最近三个月_昙花一现,PA、PC月跌1800,通用料一蹶不振,救不起的塑市!
  3. invalid table name什么意思_新手入门前端要学习什么?总结一些知识点(建议收藏)...
  4. Cocos2d—android 中常用的工具类
  5. 机器学习付费专栏的一些简介
  6. java常用工具类_java(二):工作中常用到的工具类
  7. Industry AI Live | 行为动作定位的算法流程介绍与分享
  8. 岗位推荐 | 阿里巴巴达摩院招聘自然语言处理、机器翻译算法专家
  9. h5页面禁止复制_网页禁止鼠标右键禁止全选复制粘贴的方法
  10. hutool中的threadutil_Hutool - 好用的Java工具类库