diff --git a/webapp/controller/MarketController.class.php b/webapp/controller/MarketController.class.php index e0f05243..41da125f 100644 --- a/webapp/controller/MarketController.class.php +++ b/webapp/controller/MarketController.class.php @@ -27,45 +27,7 @@ class MarketController extends BaseController { public function getPreSaleInfo() { $account = getReqVal('account', ''); - $currBatchMeta = mt\MarketBatch::getCurrentBatch(); - if (!$currBatchMeta) { - myself()->_rspData(array( - 'presale_info' => $this->getDefaultPresaleInfo() - )); - return; - } - - $countdown = mt\MarketBatch::getCountdown($currBatchMeta); - $soldNum = min(BoxOrder::getSoldNum($currBatchMeta['id']), - $currBatchMeta['number_of_props']); - $totalNum = $currBatchMeta['number_of_props']; - $buyed = MarketService::isTestMode() ? - 0 : BoxOrder::isBuyed($account, $currBatchMeta['id']); - $title = ''; - $state = MarketService::PRESALE_PREPARE; - if ($countdown > 0) { - $state = MarketService::PRESALE_PREPARE; - } else { - if ($soldNum >= $totalNum) { - $title = $this->escapeString($currBatchMeta['end_title']); - $state = MarketService::PRESALE_SOLD_OUT; - } else { - $title = $this->escapeString($currBatchMeta['begin_title']); - $state = MarketService::PRESALE_STARTED; - } - } - $presaleInfo = array( - 'batch_id' => $currBatchMeta['batch_id'], - 'countdown' => $countdown, - 'sold_num' => $soldNum, - 'total_num' => $totalNum, - 'state' => $state, - 'title' => $title, - 'hint' => $this->escapeString($currBatchMeta['hint']), - 'buyable_list' => array(), - //'buyed' => $buyed - ); - + $presaleInfo = MarketService::getPreSaleInfo($account); if (MarketService::isTestMode()) { foreach(array_keys($presaleInfo) as $key) { if (!is_null(getReqVal($key, null))) { @@ -73,25 +35,6 @@ class MarketController extends BaseController { } } } - - { - $batchMetas = mt\MarketGoods::getBatchMetas($currBatchMeta['batch_id']); - if ($batchMetas) { - foreach ($batchMetas as $meta) { - $boxId = phpcommon\genBoxId($currBatchMeta['id'], $meta['id'], $meta['item_id']); - if (!$buyed) { - if ($currBatchMeta['white_list'] && !mt\WhiteList::inWhiteList($account)) { - continue; - } - array_push($presaleInfo['buyable_list'], - array( - 'box_id' => $boxId - )); - } - } - } - } - myself()->_rspData(array( 'presale_info' => $presaleInfo )); @@ -406,11 +349,6 @@ class MarketController extends BaseController { return $nft; } - private function escapeString($str) - { - return str_replace("\n", '\n', $str); - } - public function getNonce() { $account = getReqVal('account', ''); @@ -444,24 +382,4 @@ class MarketController extends BaseController { MarketService::auth($account, $tips, $nonce, $signature); } - private function getDefaultPresaleInfo() - { - $title = $this->escapeString( - mt\Parameter::getVal('pre_sale_not_started_title', '')); - $hint = $this->escapeString( - mt\Parameter::getVal('pre_sale_not_started_hint', '')); - $presaleInfo = array( - 'batch_id' => 0, - 'countdown' => 0, - 'sold_num' => 0, - 'total_num' => 0, - 'state' => MarketService::PRESALE_NOT_STARTED, - 'title' => $title, - 'hint' => $hint, - 'buyable_list' => array(), - //'buyed' => 0 - ); - return $presaleInfo; - } - } diff --git a/webapp/services/MarketService.php b/webapp/services/MarketService.php index 680cc3b9..ba081b8a 100644 --- a/webapp/services/MarketService.php +++ b/webapp/services/MarketService.php @@ -2,8 +2,25 @@ namespace services; +require_once('mt/MarketGoods.php'); +require_once('mt/MarketBatch.php'); +require_once('mt/Item.php'); +require_once('mt/WhiteList.php'); +require_once('mt/Currency.php'); +require_once('mt/Hero.php'); require_once('mt/Parameter.php'); +require_once('models/BoxOrder.php'); +require_once('models/Nft.php'); +require_once('models/BuyRecord.php'); + +require_once('phpcommon/bchelper.php'); + +use phpcommon\SqlHelper; +use models\BoxOrder; +use models\Nft; +use models\BuyRecord; + class MarketService extends BaseService { const CURRENCY_DECIMALS = 8; @@ -154,4 +171,90 @@ class MarketService extends BaseService { return base64_encode(json_encode($data)); } + + public static function getPreSaleInfo($account) + { + $currBatchMeta = mt\MarketBatch::getCurrentBatch(); + if (!$currBatchMeta) { + return self::getDefaultPresaleInfo(); + } + + $countdown = mt\MarketBatch::getCountdown($currBatchMeta); + $soldNum = min(BoxOrder::getSoldNum($currBatchMeta['id']), + $currBatchMeta['number_of_props']); + $totalNum = $currBatchMeta['number_of_props']; + $buyed = self::isTestMode() ? + 0 : BoxOrder::isBuyed($account, $currBatchMeta['id']); + $title = ''; + $state = self::PRESALE_PREPARE; + if ($countdown > 0) { + $state = self::PRESALE_PREPARE; + } else { + if ($soldNum >= $totalNum) { + $title = self::escapeString($currBatchMeta['end_title']); + $state = self::PRESALE_SOLD_OUT; + } else { + $title = self::escapeString($currBatchMeta['begin_title']); + $state = self::PRESALE_STARTED; + } + } + $presaleInfo = array( + 'batch_id' => $currBatchMeta['batch_id'], + 'countdown' => $countdown, + 'sold_num' => $soldNum, + 'total_num' => $totalNum, + 'state' => $state, + 'title' => $title, + 'hint' => self::escapeString($currBatchMeta['hint']), + 'buyable_list' => array(), + //'buyed' => $buyed + ); + + $batchMetas = mt\MarketGoods::getBatchMetas($currBatchMeta['batch_id']); + if ($batchMetas) { + foreach ($batchMetas as $meta) { + $boxId = phpcommon\genBoxId($currBatchMeta['id'], + $meta['id'], + $meta['item_id']); + if (!$buyed) { + if ($currBatchMeta['white_list'] && + !mt\WhiteList::inWhiteList($account)) { + continue; + } + array_push($presaleInfo['buyable_list'], + array( + 'box_id' => $boxId + )); + } + } + } + + return $presaleInfo; + } + + private static function getDefaultPresaleInfo() + { + $title = self::escapeString( + mt\Parameter::getVal('pre_sale_not_started_title', '')); + $hint = self::escapeString( + mt\Parameter::getVal('pre_sale_not_started_hint', '')); + $presaleInfo = array( + 'batch_id' => 0, + 'countdown' => 0, + 'sold_num' => 0, + 'total_num' => 0, + 'state' => self::PRESALE_NOT_STARTED, + 'title' => $title, + 'hint' => $hint, + 'buyable_list' => array(), + //'buyed' => 0 + ); + return $presaleInfo; + } + + private static function escapeString($str) + { + return str_replace("\n", '\n', $str); + } + }