260 lines
9.1 KiB
PHP
260 lines
9.1 KiB
PHP
<?php
|
|
|
|
namespace services;
|
|
|
|
require_once('mt/Item.php');
|
|
require_once('mt/Equip.php');
|
|
require_once('mt/Season.php');
|
|
require_once('mt/Rank.php');
|
|
require_once('mt/RankReward.php');
|
|
require_once('mt/KillReward.php');
|
|
require_once('mt/Parameter.php');
|
|
require_once('mt/AttrHelper.php');
|
|
require_once('mt/RankActivity.php');
|
|
require_once('mt/EventRanking.php');
|
|
|
|
require_once('models/Season.php');
|
|
require_once('models/Battle.php');
|
|
require_once('models/Bag.php');
|
|
require_once('models/Hero.php');
|
|
require_once('models/Gun.php');
|
|
require_once('models/Guild.php');
|
|
|
|
use mt;
|
|
use phpcommon;
|
|
use phpcommon\SqlHelper;
|
|
use models\Season;
|
|
use models\Battle;
|
|
use models\Bag;
|
|
use models\Hero;
|
|
use models\Gun;
|
|
use models\Guild;
|
|
|
|
class RankActivityService extends BaseService {
|
|
|
|
const KILLS_TYPE = 1; //击杀榜
|
|
const WINS_TYPE = 2; //吃鸡榜
|
|
const BATTLES_TYPE = 3; //场次榜
|
|
const GUILD_TYPE = 4; //工会榜
|
|
|
|
const OP_SUM = 1;
|
|
const OP_GREATEST = 2;
|
|
|
|
public function updateBattleData($gold)
|
|
{
|
|
if (SERVER_ENV == _ONLINE && myself()->_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()
|
|
// )
|
|
// );
|
|
// }
|
|
|
|
}
|