game2006api/webapp/services/RankActivityService.php
aozhiwei 1bcc251ec0 1
2022-05-13 08:06:55 +08:00

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()
)
);
}
}