'0', 'daily_staking_value' => '0', 'planet' => array( 'type' => self::PLANET_TYPE, 'is_open' => 1, 'staked_quant' => 0, 'claim_rewards' => 0, 'daily_rewards' => 0, 'staking_value' => 0, 'maturity_quant' => 0, ), 'badge' => array( 'type' => self::BADGE_TYPE, 'is_open' => 1, 'staked_quant' => 0, 'claim_rewards' => 0, 'daily_rewards' => 0, 'staking_value' => 0, 'maturity_quant' => 0, ), 'cec' => array( 'type' => self::CEC_TYPE, 'is_open' => 0, 'staked_quant' => 0, 'claim_rewards' => 0, 'daily_rewards' => 0, 'staking_value' => 0, 'maturity_quant' => 0, ), ); $rows = Stacking::all(myself()->_getAddress()); $this->fillStackingInfo($info['planet'], $rows); $this->fillStackingInfo($info['badge'], $rows); $this->fillStackingInfo($info['cec'], $rows); myself()->_rspData($info); } private function fillStackingInfo($info, $rows) { foreach ($rows as $row) { if (!$this->isTypeNft($info['type'], $row)) { continue; } switch ($info['type']) { case self::PLANET_TYPE: { if ($row['status'] == Stacking::STAKING_STATUS) { if ($row['start_time'] + $row['stake_time'] < myself()->_getNowTime()) { $info['staked_quant'] += $row['stacked_num']; } else { $info['maturity_quant'] += $row['stacked_num']; } $stakingMeta = mt\Staking::get($row['item_id']); if ($stakingMeta) { $info['staking_value'] += $stakingMeta['stake_value']; } } } break; case self::BADGE_TYPE: { if ($row['status'] == Stacking::STAKING_STATUS) { if ($row['start_time'] + $row['stake_time'] < myself()->_getNowTime()) { $info['staked_quant'] += $row['stacked_num']; } else { $info['maturity_quant'] += $row['stacked_num']; } if ($stakingMeta) { $info['staking_value'] += $stakingMeta['stake_value']; } } } break; case self::CEC_TYPE: { } break; } } } public function stacking() { $type = getReqVal('type', ''); $stackedQuant = 0; $items = array(); $rows = Stacking::all(myself()->_getAddress()); foreach ($rows as $row) { if ($row['status'] == Stacking::STAKING_STATUS) { if ($this->isTypeNft($type, $row)) { array_push($items, Stacking::toDto($info)); ++$stackedQuant; } } } myself()->_rspData(array( 'type' => $type, 'stacked_quant' => $stackedQuant, 'items' => $items )); } public function history() { $items = array(); $fromTime = getReqVal('from_time', ''); $toTime = getReqVal('to_time', ''); $rows = Stacking::all(myself()->_getAddress()); foreach ($rows as $row) { if ($row['status'] == Stacking::REDEEM_STATUS) { array_push($items, Staking::toDto($info)); } } myself()->_rspData(array( 'items' => $items )); } private function isTypeNft($type, $dbInfo) { switch ($type) { case self::PLANET_TYPE: { } break; case self::BADGE_TYPE: { } break; case self::CEC_TYPE: { } break; } return false; } }