108 lines
2.9 KiB
PHP
108 lines
2.9 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/HeroQuality.php');
|
|
require_once('mt/AttrHelper.php');
|
|
require_once('mt/RankActivity.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');
|
|
|
|
use mt;
|
|
use phpcommon;
|
|
use phpcommon\SqlHelper;
|
|
use models\Season;
|
|
use models\Battle;
|
|
use models\Bag;
|
|
use models\Hero;
|
|
use models\Gun;
|
|
|
|
class RankActivityService extends BaseService {
|
|
|
|
const ALIVE_TYPE = 1;
|
|
const KILLS_TYPE = 2;
|
|
const HERO_UPGRADE_LEVEL_TYPE = 3;
|
|
const HERO_UPGRADE_QUALITY_TYPE = 4;
|
|
|
|
const OP_SUM = 1;
|
|
const OP_GREATEST = 2;
|
|
|
|
public function updateBattleData()
|
|
{
|
|
$this->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()
|
|
)
|
|
);
|
|
|
|
}
|
|
|
|
}
|