array(), 'pagination' => array() ); SqlHelper::rawQueryPage( myself()->_getMySql(''), 'SELECT * FROM t_market WHERE activated=:activated AND status = 0', array( ':activated' => 1 ), array( 'page' => $page, 'perPage' => 8, 'filter' => array( 'data' => $queryData, 'fields' => array( array( 'name' => 'seller', 'field_name' => 'seller', 'cond' => '=', 'ignore_empty' => true, ), array( 'name' => 'type', 'field_name' => 'c_type', 'cond' => '=', 'ignore_empty' => true, ), array( 'name' => 'job_filters', 'field_name' => '', 'cond' => 'custom', 'ignore_empty' => true, 'custom_func' => function () use ($queryData) { $jobFilter = $queryData['job_filters']; $arrJobFilter = explode('|', $jobFilters); $jobs = implode($arrJobFilter); return " AND (state in (${jobs})) "; } ), array( 'name' => 'search_filters', 'field_name' => '', 'cond' => 'custom', 'ignore_empty' => true, 'custom_func' => function () use ($queryData) { $searchFilter = $queryData['search_filters']; $arrSearchFilter = explode('|', $searchFilters); if (count($arrSearchFilter) <= 0) { return ' AND 1=1 '; } else if (count($arrSearchFilter) == 1) { return ' AND c_name=\"' . $arrSearchFilter[0] . '\"'; } else if (count($arrSearchFilter) == 2) { return ' AND (c_name=\"' . $arrSearchFilter[0] . '\" OR ' . 'token_id=\"' . $arrSearchFilter[1] . '\")'; } } ), array( 'name' => 'lv_filter', 'field_name' => 'c_lv', 'cond' => '>=', 'ignore_empty' => true, ), array( 'name' => 'quality_filter', 'field_name' => 'c_quality', 'cond' => '>=', 'ignore_empty' => true, ), array( 'name' => 'durability_filter', 'field_name' => 'c_durability', 'cond' => '>=', 'ignore_empty' => true, ), array( 'name' => 'price_filter', 'field_name' => '', 'cond' => 'custom', 'ignore_empty' => true, 'custom_func' => function () use ($queryData) { $searchFilter = $queryData['price_filters']; $arrSearchFilter = explode('|', $searchFilters); return ' AND (length(price) >= length(\"' . $arrSearchFilter[0] . '\") AND ' . 'length(price) <= length(\"' . $arrSearchFilter[1] . '\"))' . ' AND (price >= \"' . $arrSearchFilter[0] . '\" AND ' . 'price <= \"' . $arrSearchFilter[1] . '\")'; } ), array( 'name' => 'amount_filter', 'field_name' => '', 'cond' => 'custom', 'ignore_empty' => true, 'custom_func' => function () use ($queryData) { $searchFilter = $queryData['amount_filters']; $arrSearchFilter = explode('|', $searchFilters); return ' AND (length(amount) >= length(\"' . $arrSearchFilter[0] . '\") AND ' . 'length(amount) <= length(\"' . $arrSearchFilter[1] . '\"))' . ' AND (amount >= \"' . $arrSearchFilter[0] . '\" AND ' . 'amount <= \"' . $arrSearchFilter[1] . '\")'; } ) ) ), //'orderBy' => $orderBy, 'handle' => function ($row) use (&$out) { array_push($out['rows'], $this->fillNftIntro($row)); } ), $out['pagination'] ); error_log(json_encode($out)); myself()->_rspData($out); } private function fillNftIntro($row) { $info = array( 'order_id' => $row['order_id'], 'token_id' => $row['token_id'], 'nft_token' => $row['nft_token'], 'amount' => $row['amount'], 'seller' => $row['seller'], 'currency' => $row['currency'], 'price' => $row['update_price'] ? $row['update_price'] : $row['price'], 'selltime' => $row['selltime'], 'updatetime' => $row['createtime'], 'details' => array() ); $nftDb = Nft::getNftByNetCont($row['token_id'], $row['net_id'], $row['nft_token']); if ($nftDb) { switch ($nftDb['token_type']) { case Nft::HERO_TYPE: { error_log(json_encode($nftDb)); $heroDb = Hero::findByTokenId2($nftDb['token_id']); if ($heroDb){ $info['details'] = Hero::toDto($heroDb); } } break; } } return $info; } }