_rspData(array( 'complete' => 0, 'firstTopupList' => mt\FirstTopup::getGroups(), 'status' => $status, ) ); return; } $complete = ($status[0] == 2 && $status[1] == 2 && $status[2] == 2) ? 1 : 0; if ($complete == 1 && myself()->_getV(TN_FIRST_TUPOP_STATUS, 0, 1) == 0) { myself()->_setV(TN_FIRST_TUPOP_STATUS, 0, 1); } $this->_rspData( array( 'complete' => $complete, 'firstTopupList' => mt\FirstTopup::getGroups(), 'status' => $status, ) ); } private function begin() { $conn = myself()->_getMysql(''); $address = myself()->_getAddress(); if (!$address) { $this->_rspErr(1, 'you have not a web3 address'); return; } $exist = SqlHelper::selectOne( $conn, 't_first_topup', array('address'), array('address' => myself()->_getAddress()) ); if ($exist) { $this->_rspErr(1, '首充奖励活动已经开启'); return; } // 开始首充奖励活动进程 $chk = SqlHelper::insert( $conn, 't_first_topup', array( 'address' => myself()->_getAddress(), 'createtime' => myself()->_getNowTime(), 'status1' => 0, 'status2' => 0, 'status3' => 0, ) ); if ($chk) { $this->_rspOk(); } else { $this->_rspErr(1, '首充奖励活动开启失败'); } } public function get() { $group = getReqVal('group', 1); $conn = myself()->_getMysql(''); $address = myself()->_getAddress(); if (!$address) { $this->_rspErr(1, 'you have not a web3 address'); return; } $status = $this->getStatusFromDB($conn); $test = $status[$group - 1]; if ($test == 1) { $status[$group - 1] = 2; $chk = SqlHelper::update( $conn, 't_first_topup', array( 'address' => myself()->_getAddress(), ), array( 'status' . $group => 2, ) ); // 发放奖励 $reward = mt\FirstTopup::getByGroup($group); $propertyChgService = new services\PropertyChgService(); for ($i = 0; $i < count($reward); $i++) { $item = $reward[$i]; $itemMeta = mt\Item::get($item['goods_id']); for ($j = 0; $j < $item['goods_num']; $j++) { $this->internalAddItem($propertyChgService, $itemMeta, 1); } } $complete = ($status[0] == 2 && $status[1] == 2 && $status[2] == 2) ? 1 : 0; if ($complete == 1) { $this->_setV(TN_FIRST_TUPOP_STATUS, 0, 1); } $this->_rspData( array( 'group' => $group, 'status' => $status, 'reward' => $reward, ) ); } else if ($test >= 2) { $this->_rspErr(2, "already received the reward, group: $group"); } else if ($test < 1) { $this->_rspErr(1, "not yet to receive the reward, group: $group"); } } private function getStatus($group, $time) { $beginDayTime = myself()->_getDaySeconds($time); $now = myself()->_getNowTime(); $diff = $now - ($beginDayTime + $group * 24 * 3600); if ($diff >= 0) { return 1; } else { return 0; } } private function getStatusFromDB($conn) { // 从数据库中获取 status $row = SqlHelper::selectOne( $conn, 't_first_topup', array('createtime', 'status1', 'status2', 'status3'), array('address' => myself()->_getAddress()) ); $status = [0, 0, 0]; if ($row) { // 0 未领取 1 可领取 2 已领取 $status = [(int)$row['status1'], (int)$row['status2'], (int)$row['status3']]; $time = $row['createtime']; for ($i = 0; $i < 3; $i++) { if ($status[$i] < 2) { // 检测是否到了可以领取的时间 $status[$i] = $this->getStatus($i, $time); } } } return $status; } }