getMidDataKey(); $data = $this->getAndCreateData($key); $info = array(); $this->fillInfo($info, $data); myself()->_rspData(array( 'info' => $info )); } public function drawS(){ $key = $this->getMidDataKey(); $data = $this->getAndCreateData($key); } public function buyS(){ $key = $this->getMidDataKey(); $data = $this->getAndCreateData($key); } private function getMidDataKey() { return myself()->_getModelConstant('MidData', 'BIG_WHEEL_TYPE'); } private function getAndCreateData($key) { $data = myself()->_callModelStatic('MidData', 'getData', $key); if (!empty($data)) { $data = json_decode($data, true); } if (empty($data)) { $data = array( "grid_list" => array() ); } return $data; } private function fillInfo(&$info, &$data) { $info = array( 'drawed_times' => 0, 'total_times' => 9, 'single_cost' => 0, 'double_cost' => 0, 'items1' => array(), 'items2' => array(), ); mt\Bigwheel::traverseMeta( function ($meta) use(&$data, &$info) { $item = array( 'grid_id' => $meta['id'], 'grid_state' => 0, 'item_id' => 0, 'item_num' => 0, 'buy_price' => 0, ); $gridRef = null; $this->getGridRefByGridId($data, $meta['id'], $girdRef); if (!empty($gridRef)) { $item = $gridRef; } switch ($meta['Wheel_type']) { case 1:{ array_push($info['items1'], $item); } break; case 2:{ array_push($info['items2'], $item); } break; } return true; }); } private function getGridRefByGridId(&$data, $gridId, &$gridRefOut) { foreach ($data['grid_list'] as &$grid) { if ($grid['grid_id'] == $girdId) { $gridRefOut = $grid; break; } } } }