internalUpdateRankActivity( self::ALIVE_TYPE, getReqVal('alive_time', 0), self::OP_SUM); $this->internalUpdateRankActivity( self::KILLS_TYPE, getReqVal('kills_time', 0), self::OP_SUM); } public function heroUpgradeQuality() { $this->internalUpdateRankActivity( self::HERO_UPGRADE_QUALITY_TYPE, getReqVal('kills_time', 0), self::OP_GREATEST); } public function heroUpgradeLevel() { $this->internalUpdateRankActivity( self::HERO_UPGRADE_LEVEL_TYPE, getReqVal('kills_time', 0), self::OP_GREATEST); } private function internalUpdateRankActivity($type, $val, $opt) { $meta = mt\RankActivity::get(type); if (!$meta || !mt\RankActivity::isActivityPeriod($meta)) { return; } SqlHelper::upsert (myself()->_getSelfMysql(), 't_rank_activity', array( 'account_id' => myself()->_getAccountId(), 'type' => $type ), array( 'value' => function () use($val, $opt) { if ($opt == self::OP_SUM) { return "value + ${val})"; } else if ($opt == self::OP_GREATEST) { return "GREATEST(0, ${val})"; } else { return $val; } }, 'modifytime' => myself()->_getNowTime(), ), array( 'account_id' => myself()->_getAccountId(), 'channel' => myself()->_getChannel(), 'type' => $type, 'value' => $val, 'createtime' => myself()->_getNowTime(), 'modifytime' => myself()->_getNowTime() ) ); } }