_getChannel() == TAPTAP_CHANNEL) { error_log('————————————游客无法参与排行活动——————————————'); return; } $userDb = myself()->_getOrmUserInfo(); $currentRankingMeta = mt\EventRanking::getCurrentRanking(); error_log( json_encode(array( 'account_id' => $userDb['account_id'], 'themeType' => $currentRankingMeta?$currentRankingMeta['themeType']:null, 'kill' => getReqVal('kills', 0), 'ranked' => getReqVal('ranked', 0), 'ceg'=>$gold )) ); $match_mode = getReqVal('match_mode', 0); $ranked = getReqVal('ranked', 0); $kills = getReqVal('kills', 0); $aliveTime = getReqVal('alive_time', 0)/1000; if ($currentRankingMeta){ switch ($currentRankingMeta['themeType']){ case self::KILLS_TYPE : { if($match_mode==0 && $kills>0){ $this->internalUpdateRankActivityNew( $currentRankingMeta, getReqVal('kills', 0), $userDb); } } break; case self::WINS_TYPE : { if ( $match_mode==0 && $ranked == 1){ $this->internalUpdateRankActivityNew( $currentRankingMeta, $ranked, $userDb); } } break; case self::BATTLES_TYPE : { if (!$ranked) { return; } $cond = (1 - ($ranked > 30 ? 1 : 0) * ($kills < 1 ? 1 : 0) * ($aliveTime < 30 ? 1 : 0)); if (!$cond) { return; } if ( $match_mode==0){ $this->internalUpdateRankActivityNew( $currentRankingMeta, 1, $userDb); } } break; case self::GUILD_TYPE : { // if ($userDb['guild_id']){ $this->internalUpdateRankActivityNew( $currentRankingMeta, $gold, $userDb); // } } break; } } // $this->internalUpdateRankActivity( // self::ALIVE_TYPE, // getReqVal('alive_time', 0) / 1000, // self::OP_SUM); // $this->internalUpdateRankActivity( // self::KILLS_TYPE, // getReqVal('kills', 0), // self::OP_SUM); } private function internalUpdateRankActivityNew($meta, $val, $user){ if (!$meta){ return; } if($meta['themeType'] == self::GUILD_TYPE){ if (!$user['guild_id']){ $row = SqlHelper::ormSelectOne (myself()->_getSelfMysql(), 't_rank_activity', array( 'account_id' => myself()->_getAccountId(), 'wave' => $meta['wave'], 'type' => $meta['themeType'], ) ); if ($row && $row['guild_id']){ $guild = Guild::find($row['guild_id']); if ($guild['guild_status'] == 2){ SqlHelper::update (myself()->_getSelfMysql(), 't_rank_activity', array( 'guild_id' => $row['guild_id'], 'wave' => $meta['wave'], 'type' => $meta['themeType'], ), array( 'guild_id'=> '' ) ); } SqlHelper::update (myself()->_getSelfMysql(), 't_rank_activity', array( 'account_id' => myself()->_getAccountId(), 'wave' => $meta['wave'], 'type' => $meta['themeType'], ), array( 'guild_id'=> '' ) ); } return; } } SqlHelper::upsert (myself()->_getSelfMysql(), 't_rank_activity', array( 'account_id' => myself()->_getAccountId(), 'wave' => $meta['wave'], 'type' => $meta['themeType'], ), array( 'value' => function () use($val) { return "value + ${val}"; }, 'guild_id' =>$user['guild_id'], 'modifytime' => myself()->_getNowTime(), ), array( 'account_id' => myself()->_getAccountId(), 'channel' => myself()->_getChannel(), 'guild_id'=>$user['guild_id'], 'wave' => $meta['wave'], 'type' => $meta['themeType'], 'value' => $val, 'createtime' => myself()->_getNowTime(), 'modifytime' => myself()->_getNowTime() ) ); } // public function heroUpgradeQuality($quality) // { // $this->internalUpdateRankActivity( // self::HERO_UPGRADE_QUALITY_TYPE, // $quality, // self::OP_GREATEST); // } // // public function heroUpgradeLevel($level) // { // $this->internalUpdateRankActivity( // self::HERO_UPGRADE_LEVEL_TYPE, // $level, // self::OP_GREATEST); // } // private function internalUpdateRankActivity($type, $val, $opt) // { // $meta = mt\RankActivity::get($type); // if (!$meta || !mt\RankActivity::isActivityPeriod($meta)) { // return; // } // // if ($val > $meta['limit']) { // $val = $meta['limit']; // } // // 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(value, ${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() // ) // ); // } }