public function actionIndex()
 {
     //todo redis?
     $user = Yii::$app->session->get('user');
     if (empty($user)) {
         $this->goHome();
     }
     $user = User::findOne($user->id);
     if ($user->account < Yii::$app->params['auctionDeposit']) {
         $order = Order::find()->where(['type' => Order::TYPE_AUCTION, 'user_id' => $user->id, 'status' => Order::STATUS_CREATED])->one();
         if (empty($order)) {
             $order = new Order();
             $order->user_id = $user->id;
             $order->serial_no = Util::composeOrderNumber(Order::TYPE_AUCTION);
             $order->money = Yii::$app->params['auctionDeposit'];
             $auction = Auction::find()->where('end_time > NOW()')->orderBy('start_time, end_time')->limit(1)->one();
             $order->auction_id = $auction->id;
             $order->status = Order::STATUS_CREATED;
             $order->type = Order::TYPE_AUCTION;
             $order->save();
         }
         $this->redirect('/pay/index?order_id=' . $order->serial_no);
     }
     $auctions = Auction::find()->where('end_time > NOW()')->orderBy('start_time, type')->limit(3)->all();
     $auctionIds = [];
     foreach ($auctions as $auction) {
         array_push($auctionIds, $auction->id);
     }
     $topOffers = $this->getTopOfferHash($auctionIds);
     $myOffers = $this->getMyTopOfferHash($user->id, $auctionIds);
     foreach ($topOffers as $tmpId => $tmpOffer) {
         if (!array_key_exists($tmpId, $myOffers)) {
             $myTmpOffer = [];
             $myTmpOffer['auction_id'] = $tmpId;
             $myTmpOffer['top'] = 0;
             $myOffers[$tmpId] = $myTmpOffer;
         }
         list($myOffers[$tmpId]['rank'], $myOffers[$tmpId]['class'], $myOffers[$tmpId]['message']) = $this->composeRankInfo($tmpId, $myOffers[$tmpId]['top']);
     }
     $isInAuction = $this->isInAuction();
     $hasNextAuction = $this->hasNextAuction();
     $startTime = isset($auctions[0]) ? $auctions[0]->start_time : '';
     $endTime = isset($auctions[0]) ? $auctions[0]->end_time : '';
     $countDownTime = str_replace(' ', 'T', $isInAuction ? $endTime : $startTime);
     $priceStep = Yii::$app->params['auctionStep'];
     $lang = Util::getLanguage();
     $view = $lang == 'en' ? 'auction' : 'auction-cn';
     Util::setLanguage($lang);
     return $this->render($view, compact('auctions', 'topOffers', 'myOffers', 'startTime', 'endTime', 'isInAuction', 'hasNextAuction', 'countDownTime', 'priceStep'));
 }