1
This commit is contained in:
parent
4318a5fc0e
commit
1bcc251ec0
@ -5,6 +5,21 @@ const log = require('j7/log');
|
|||||||
const BaseService = require('./baseservice');
|
const BaseService = require('./baseservice');
|
||||||
const metaFactory = require('../metadata/factory');
|
const metaFactory = require('../metadata/factory');
|
||||||
|
|
||||||
|
const ALIVE_RANK = 100;
|
||||||
|
|
||||||
|
class CommonRank {
|
||||||
|
|
||||||
|
constructor(rankType) {
|
||||||
|
this.rankType = rankType;
|
||||||
|
this.lastIdx = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
async start() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
class Rank extends BaseService {
|
class Rank extends BaseService {
|
||||||
|
|
||||||
async init() {
|
async init() {
|
||||||
|
@ -463,6 +463,29 @@ CREATE TABLE `t_drop_log` (
|
|||||||
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `t_rank_activity`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `t_rank_activity`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
|
CREATE TABLE `t_rank_activity` (
|
||||||
|
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||||
|
`account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id',
|
||||||
|
`channel` int(11) NOT NULL DEFAULT '0' COMMENT 'channel',
|
||||||
|
`type` int(11) NOT NULL DEFAULT '0' COMMENT 'type',
|
||||||
|
`value` bigint NOT NULL DEFAULT '0' COMMENT 'value',
|
||||||
|
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||||
|
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
||||||
|
PRIMARY KEY (`idx`),
|
||||||
|
UNIQUE KEY `account_id_type` (`account_id`, `type`),
|
||||||
|
KEY `channel` (`channel`),
|
||||||
|
KEY `type` (`type`),
|
||||||
|
KEY `value` (`value`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Table structure for table `t_game_log`
|
-- Table structure for table `t_game_log`
|
||||||
--
|
--
|
||||||
|
@ -11,6 +11,7 @@ require_once('models/HeroSkin.php');
|
|||||||
require_once('services/NftService.php');
|
require_once('services/NftService.php');
|
||||||
|
|
||||||
use mt;
|
use mt;
|
||||||
|
use phpcommon;
|
||||||
use phpcommon\SqlHelper;
|
use phpcommon\SqlHelper;
|
||||||
use services\NftService;
|
use services\NftService;
|
||||||
|
|
||||||
|
31
webapp/mt/RankActivity.php
Normal file
31
webapp/mt/RankActivity.php
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace mt;
|
||||||
|
|
||||||
|
use phpcommon;
|
||||||
|
|
||||||
|
class RankActivity {
|
||||||
|
|
||||||
|
public static function get($id)
|
||||||
|
{
|
||||||
|
return array_key_exists($id, self::getMetaList()) ? self::getMetaList()[$id] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function isActivityPeriod($meta)
|
||||||
|
{
|
||||||
|
return $meta['opentime'] >= myself()->_getNowTime() &&
|
||||||
|
$meta['closetime'] < myself()->_getNowTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static function getMetaList()
|
||||||
|
{
|
||||||
|
if (!self::$metaList) {
|
||||||
|
self::$metaList = getMetaTable('rankActivity@rankActivity.php');
|
||||||
|
}
|
||||||
|
return self::$metaList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected static $metaList;
|
||||||
|
|
||||||
|
}
|
107
webapp/services/RankActivityService.php
Normal file
107
webapp/services/RankActivityService.php
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
<?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()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user