问题:当客户预约时产生一个订单,该订单需要业务人员抢单后跟进

一,产生订单时设置redis

$redis = new Redis();
$ydkey = "yyqd_".$orderId;
$exptime = 600;//过期时间 600秒
$redis->lpush($ydkey,$orderData);//压入订单ID
$redis->set("yyqdtime_".$orderId,1,$exptime);//设置过期时间

二,业务人员抢单

        $redis = new Redis();
        try{
            $yyqdtime = $redis->get("yyqdtime_".$orderId);
            if(empty($yyqdtime)){//过期了从数据库查询
               
            }else{
                $lsize = $redis->lsize("yyqd_".$orderId);
                if($lsize <= 0){
                    $this->error('线上已被认领!');
                }
                $orderData = $redis->lpop("yyqd_".$orderId);//取出数据           
                if(empty($orderData)){
                    $this->error('线上已被认领!');
                }   
            }
        }catch (Exception $e){
            //异常处理
        }

三,也可直接在抢单时先将业务人员ID压入队列,另外启动进程从队列中逐个取出业务人员ID进行数据处理

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐