Example #1
0
 public function killsec_user_order_clear()
 {
     $db_instance = new DB('activity_killsec_instance', 'killsec');
     $db_user = new DB('activity_killsec_user', 'killsec');
     $redisKillsec = new RedisKillsec();
     $instance_list = $db_instance->where("status!=" . self::KILLSEC_STATUS_FINISH)->select();
     // var_dump( $instance_list );
     if ($instance_list) {
         foreach ($instance_list as $k => $v) {
             $total = $v['killsec_count'];
             if ($v['status'] == self::KILLSEC_STATUS_PREVIEW) {
                 //开始前2分钟生成token
                 if (strtotime($v['start_time']) - 2 * 60 <= time()) {
                     //更新实例表状态
                     $db_instance->where(array('instance_id' => $v['instance_id'], 'status' => self::KILLSEC_STATUS_PREVIEW))->data(array('status' => self::KILLSEC_STATUS_GOING))->update();
                     //生成token
                     $redisKillsec->save_token($v['activity_id'], $redisKillsec->create_token($v['killsec_count']));
                 }
             } elseif ($v['status'] == self::KILLSEC_STATUS_GOING) {
                 $user_list = $db_user->where(array('instance_id' => $v['instance_id']))->select();
                 // var_dump( $user_list );
                 $pay_count = 0;
                 $order_userIds = array();
                 $payment_userIds = array();
                 $user_count = count($user_list);
                 if ($user_list && $user_count > 0) {
                     foreach ($user_list as $sk => $sv) {
                         if (empty($sv['order_time'])) {
                             if (time() - strtotime($sv['join_time']) - self::ORDER_WAIT_TIME > 0) {
                                 //ORDER_WAIT_TIME后没下单
                                 $order_userIds[] = $sv['user_id'];
                             }
                         } elseif (empty($sv['pay_time'])) {
                             if (time() - strtotime($sv['join_time']) - self::PAYMENT_WAIT_TIME > 0) {
                                 //PAYMENT_WAIT_TIME后没支付
                                 $payment_userIds[] = $sv['user_id'];
                             }
                         } elseif (!empty($sv['pay_time'])) {
                             $pay_count += 1;
                         }
                     }
                 }
                 $userIds = $order_userIds + $payment_userIds;
                 $count = count($userIds);
                 if ($count > 0) {
                     //删除过期用户
                     $db_user->in("user_id", $userIds)->delete();
                     //更新参与数量
                     $db_instance->where(array('instance_id' => $v['instance_id']))->data(array('join_count' => $user_count - $count))->update();
                     //补充token
                     $redisKillsec->save_token($v['activity_id'], $redisKillsec->create_token($count));
                 } else {
                     //更新参与数量
                     $db_instance->where(array('instance_id' => $v['instance_id']))->data(array('join_count' => $user_count))->update();
                 }
                 if ($pay_count == $total) {
                     //秒杀完成
                     $db_instance->where(array('instance_id' => $v['instance_id'], 'status' => self::KILLSEC_STATUS_GOING))->data(array('status' => self::KILLSEC_STATUS_FINISH))->update();
                 }
             }
         }
     }
     echo 'ok';
 }
Example #2
0
File: api.php Project: lughong/shop
 public function del()
 {
     $user_id = $_POST['user_id'];
     $activity_id = $_POST['activity_id'];
     if (!$user_id || !$activity_id) {
         die('却少参数');
     }
     $db = new DB('activity_killsec_user', 'killsec');
     $db->where(array('user_id' => $user_id))->delete();
     $redisKillsec = new RedisKillsec();
     //补充token
     $redisKillsec->save_token($activity_id, $redisKillsec->create_token(1));
 }