This commit is contained in:
aozhiwei 2021-12-15 10:48:14 +08:00
parent f82a751dc2
commit 831779bbd5
6 changed files with 114 additions and 26 deletions

View File

@ -251,7 +251,7 @@ DROP TABLE IF EXISTS `t_battle_record`;
CREATE TABLE `t_battle_record` (
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
`account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)',
`battle_data` mediumblob COMMENT 'battle_data',
`request` mediumblob COMMENT 'request',
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
PRIMARY KEY (`idx`),

View File

@ -3,10 +3,7 @@
require_once('models/User.php');
require_once('mt/Parameter.php');
require_once('mt/Drop.php');
require_once('mt/EquipUpgrade.php');
require_once('mt/Season.php');
require_once('mt/RankReward.php');
require_once('mt/Equip.php');
require_once('services/PropertyChgService.php');
@ -25,8 +22,19 @@ class BattleController extends BaseAuthedController {
$this->_rspErr(1, '没有这个玩家1');
return;
}
$battleDataService = new services\BattleDataService();
$battleDataService->updateBattleData();
$this->updateUserBaseInfo($userInfo);
$this->updateMission($userInfo);
SqlHelper::insert(
$this->_getSelfMysql(),
't_battle_record',
array(
'account_id' => $this->_getAccountId(),
'request' => json_encode($_REQUEST),
'createtime' => $this->_getNowTime(),
'modifytime' => $this->_getNowTime(),
)
);
$this->_rspOk();
}
@ -34,9 +42,4 @@ class BattleController extends BaseAuthedController {
{
}
private function updateMission($userInfo)
{
}
}

43
webapp/models/Battle.php Normal file
View File

@ -0,0 +1,43 @@
<?php
namespace models;
use mt;
use phpcommon\SqlHelper;
class Battle extends BaseModel {
public static function getMyBattleData()
{
$row = SqlHelper::ormSelectOne(
myself()->_getSelfMysql(),
't_battle',
array(
'account_id' => myself()->_getAccountId(),
)
);
return $row ? json_decode($row['battle_data'], true) : array();
}
public static function add($battleData)
{
SqlHelper::upsert
(myself()->_getSelfMysql(),
't_battle',
array(
'account_id' => myself()->_getAccountId(),
),
array(
'battle_data' => $battleData,
'modifytime' => myself()->_getNowTime(),
),
array(
'account_id' => myself()->_getAccountId(),
'battle_data' => $battleData,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime()
)
);
}
}

View File

@ -88,7 +88,7 @@ class Season extends BaseModel {
);
}
public static function update($fieldsKv)
public static function update($seasonId, $fieldsKv)
{
SqlHelper::update(

View File

@ -68,17 +68,69 @@ namespace services;
require_once('mt/Item.php');
require_once('mt/Equip.php');
require_once('mt/Season.php');
require_once('models/Season.php');
require_once('models/Battle.php');
use phpcommon\SqlHelper;
use models\Season;
use models\Battle;
class BattleDataService extends BaseService {
private $seasonDb = array();
private $hisBattleData = array();
public function updateBattleData()
{
$this->currSeasonMeta = mt\Season::getCurrentSeason();
if (!$this->currSeasonMeta) {
return;
}
$this->seasonDb = Season::find($this->currSeasonMeta['id']);
if (!$this->seasonDb) {
Season::add($this->currSeasonMeta['id']);
$this->seasonDb = Season::find($this->currSeasonMeta['id']);
}
if (!$this->seasonDb) {
return;
}
$hisBattleData = Battle::getMyBattleData();
$this->apply($hisBattleData);
Battle::add($hisBattleData);
$seasonBattleData = json_decode($this->seasonDb['battle_data'], true);
if (!isset($seasonBattleData['today_data'])) {
$seasonBattleData['today_data'] = array(
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime()
);
}
if (!isset($seasonBattleData['his_week_data'])) {
$seasonBattleData['his_week_data'] = array(
);
}
if (!isset($seasonBattleData['this_week_data'])) {
$seasonBattleData['this_week_data'] = array(
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime()
);
}
if (myself()->_getDaySeconds($seasonBattleData['today_data']['modifytime']) <
myself()->_getNowDaySeconds()) {
$seasonBattleData['today_data'] = array(
'createtime' => $seasonBattleData['today_data']['createtime'],
'modifytime' => myself()->_getNowTime()
);
}
if (myself()->_getDaySeconds($seasonBattleData['this_week_data']['modifytime']) <
myself()->_getMondaySeconds()) {
$seasonBattleData['this_week_data'] = array(
'createtime' => $seasonBattleData['this_week_data']['createtime'],
'modifytime' => myself()->_getNowTime()
);
}
$this->apply($seasonBattleData['today_data']);
$this->apply($seasonBattleData['this_week_data']);
}
private function apply(&$battleData)

View File

@ -366,18 +366,8 @@ class MissionService extends BaseService {
//本季度
//永久
$val = 0;
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if ($missionMeta['type'] == mt\Task::SEASONCARD_MISSON_TYPE &&
$missionMeta['subtype'] == mt\Task::SEASON_WEAKLY_MISSON_SUBTYPE) {
$weeklyData = getXVal($this->seasonDb, 'weekly_data', array());
$weekDb = getXVal($weeklyData, $missionMeta['week'], array());
$val = getXVal($weekDb, $key, 0);
} else {
$val = getXVal($this->seasonDb, $key, 0);
}
} else {
$val = getXVal($this->userInfo, $key, 0);
}
$battleData = $this->internalGetBattleData($missionMeta);
$val = getXVal($battleData, $key, 0);
return $val;
}
@ -385,7 +375,7 @@ class MissionService extends BaseService {
{
$battleData = null;
if ($missionMeta['type'] == mt\Task::DAILY_MISSON_TYPE) {
$battleData = $this->$this->dailyBattleData;
$battleData = $this->dailyBattleData;
} else {
if ($missionMeta['season_task'] == mt\Task::SEASON_MISSON_FLAG) {
if ($missionMeta['type'] == mt\Task::SEASONCARD_MISSON_TYPE &&