getGameStatus(); if( 0 !== $result['code']){ return ['code' => -1,'data' => [], 'msg' => $result['msg']]; } $queryResultItems = $result['result'] ?? []; if(empty($queryResultItems)){ return ['code' => -1,'data' => [], 'msg' => 'error']; } $resultJSON = json_decode($queryResultItems['queryResultItems'][0]['resultJSON'],true); $current_round = $resultJSON['current_round']; $cache_current_round = Yii::$app->redis->get('chain33_game_status'); if(empty($cache_current_round)){ $cache_current_round = CoinGameBet::find()->max('round'); Yii::$app->redis->set('chain33_game_status',$cache_current_round,'EX',300); } $cache_current_round = (false == $cache_current_round ? 0 : $cache_current_round); if($cache_current_round >= $current_round){ return ['code' => -1,'data' => [], 'msg' => '数据已为最新']; } Yii::$app->redis->set('chain33_game_status',$current_round,'EX',300); $result = $service->getBetStatus($cache_current_round, $current_round); if( 0 !== $result['code']){ return ['code' => -1,'data' => [], 'msg' => '数据错误']; } $queryResultItems = $result['result'] ?? []; if(empty($queryResultItems)){ return ['code' => -1,'data' => [], 'msg' => '数据错误']; } foreach ($queryResultItems['queryResultItems'] as $key => $val){ if( false == $val['found'] ) continue; $resultArr = json_decode($val['resultJSON'],true); $datas[] = [ $resultArr['round'], $resultArr['player'], $resultArr['amount'], $resultArr['height'], $resultArr['guess_num'], $resultArr['rand_num'], $resultArr['player_win'] ]; } CoinGameBet::loadArray($datas); return ['code' => 1,'data' => [], 'msg' => '数据更新成功']; } public function actionBetStatus() { $player = Yii::$app->request->get('player', ''); $page = Yii::$app->request->get('page', 1); if(empty($player)){ $msg = '请求参数错误'; $code = -1; $data = null; goto doEnd; } $query = CoinGameBet::find() ->select('round, player, amount, height, guess_num, guess_num, rand_num, player_win') ->where('player= :player',[':player' => $player]) #->andWhere(['valid' => CoinGameBet::VAILD_TRUE]) ->orderBy('update_time desc'); $count = $query->count(); if( 0 == $count) { $msg = '数据不存在'; $code = -1; $data = null; goto doEnd; } $data = $query->offset(($page - 1) * 20)->limit(20)->asArray()->all(); $countQuery = clone $query; $pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize' => '20']); $data = [ 'list' => $data, 'page' => [ 'pageCount' => $pages->pageCount, 'pageSize' => 20, 'currentPage' => $page, ] ]; $code = 1; $msg = 'success'; doEnd : return ['code' => $code, 'data' => $data, 'msg' => $msg]; } }