修改获取战斗的数据

This commit is contained in:
hujiabin 2023-03-16 13:34:34 +08:00
parent 3507da323d
commit 1c8f6dc18a
3 changed files with 157 additions and 51 deletions

View File

@ -107,13 +107,44 @@ class Battle(object):
['rank_score', _common.BattleRankScore(), '排位分信息'], ['rank_score', _common.BattleRankScore(), '排位分信息'],
] ]
}, },
{
'desc': '获取战斗数据(客户端不用处理)getBattleData',
'group': 'Battle',
'url': 'webapp/index.php?c=Battle&a=getBattleData',
'params': [
_common.ReqHead(),
['account_id', '', 'account_id'],
['session_id', '', 'session_id'],
['battle_uuid', '', 'battle_uuid'],
],
'response': [
_common.RspHead(),
['account_id','','account_id'],
['session_id','','session_id'],
['battle_uuid','','battle_uuid'],
['match_mode',0,'0:匹配 1:排位 2:pve'],
['name','','用户名字'],
['level',0,'用户等级'],
['revive_coin',0,'复活币'],
['hero_uniid',0,'英雄 uniid'],
['hero_id',0,'英雄 item id'],
['weapon_uuid1',0,'武器1 uniid'],
['weapon_uuid2',0,'武器2 uniid'],
['parachute',0,'降落伞 item id'],
['hero_skin',0,'英雄皮肤 item id'],
['skill_id',0,'备战技能 item id'],
['chip_page',_common.Attr(),'铭文页属性'],
['hero_dto','','英雄详情'],
['weapon_dto1','','武器1详情'],
['weapon_dto2','','武器2详情'],
]
},
{ {
'desc': '获取战斗数据(客户端不用处理)getBattleDataNew', 'desc': '获取战斗数据(客户端不用处理)getBattleDataNew',
'group': 'Battle', 'group': 'Battle',
'url': 'webapp/index.php?c=Battle&a=getBattleDataNew', 'url': 'webapp/index.php?c=Battle&a=getBattleDataNew',
'params': [ 'params': [
_common.ReqHead(), _common.ReqHead(),
['!members', _common.BattleMember(), '成员数据'] ['!members', _common.BattleMember(), '成员数据']
], ],
'response': [ 'response': [

View File

@ -10,6 +10,7 @@ require_once('models/BattleSettlement.php');
require_once('models/BattleHistory.php'); require_once('models/BattleHistory.php');
require_once('models/User.php'); require_once('models/User.php');
require_once('models/Parachute.php'); require_once('models/Parachute.php');
require_once('models/ChipPage.php');
require_once('services/BattleDataService.php'); require_once('services/BattleDataService.php');
require_once('services/FormulaService.php'); require_once('services/FormulaService.php');
require_once('mt/RankSeason.php'); require_once('mt/RankSeason.php');
@ -24,6 +25,7 @@ use models\BattleHistory;
use models\BattleSettlement; use models\BattleSettlement;
use models\User; use models\User;
use models\Parachute; use models\Parachute;
use models\ChipPage;
class BattleController extends BaseAuthedController { class BattleController extends BaseAuthedController {
@ -127,67 +129,98 @@ class BattleController extends BaseAuthedController {
public function getBattleData() public function getBattleData()
{ {
$mode = getReqVal('mode', ''); error_log(json_encode($_REQUEST));
$members = json_decode(getReqVal('members', ''), true);
$data = array( $data = array(
'members' => array() 'members' => array()
); );
error_log(json_encode($_REQUEST)); $currSeason = mt\RankSeason::getCurrentSeason();
error_log(json_encode($members)); $account_id = getReqVal('account_id', '');
foreach ($members as $member) { $session_id = getReqVal('session_id', '');
$user = User::find($member['account_id']); $battle_uuid = getReqVal('battle_uuid', '');
$info = array( $info = array(
'account_id' => $member['account_id'], 'account_id' => $account_id,
'session_id' => $member['session_id'], 'session_id' => $session_id,
'hero_uniid' => $member['hero_uniid'], 'battle_uuid' => $battle_uuid,
'weapon_uuid1' => $member['weapon_uuid1'], 'name' => '',
'weapon_uuid2' => $member['weapon_uuid2'], 'level' =>'',
'battle_uuid' => $member['battle_uuid'], 'hero_uniid' => '',
'hero_dto' => '', 'hero_id' => '',
'weapon_dto1' => '', 'weapon_uuid1' => '',
'weapon_dto2' => '', 'weapon_uuid2' => '',
'level' =>$user['level'], 'parachute' => '',
'hero_skin' => '',
'skill_id' => '',
'chip_page' => array(),
'is_valid_battle' => 0, 'hero_dto' => '',
'payload' => json_encode($member['cmjoin']), 'weapon_dto1' => '',
'errcode' => 0, 'weapon_dto2' => '',
'errmsg' => '', 'is_valid_battle' => 0,
); //'payload' => json_encode($member['cmjoin']),
if (!phpcommon\isValidSessionId($member['account_id'], $member['session_id'])) { 'errcode' => 0,
$info['errcode'] = 50; 'errmsg' => '',
$info['errmsg'] = 'invalid session_id'; );
} else { if (!phpcommon\isValidSessionId($account_id, $session_id)) {
{ $info['errcode'] = 50;
$heroDb = Hero::findByAccountId($member['account_id'], $info['errmsg'] = 'invalid session_id';
$member['hero_uniid']); }else{
if ($heroDb) { {
$info['is_valid_battle'] = 1; $userDb = User::find($account_id);
$info['hero_dto'] = Hero::toDto($heroDb); if ($userDb){
{//选用皮肤id $userPresetInfo = User::toPreset($userDb);
$skinDb = HeroSkin::findBx($heroDb['hero_id']); $info['name'] = $userPresetInfo['name'];
if ($skinDb){ $info['level'] = $userPresetInfo['level'];
$info['hero_dto']['skin_id'] = $skinDb['skin_id']; $info['parachute'] = $userPresetInfo['parachute'];
} $info['hero_uniid'] = $userPresetInfo['hero_uniId'];
} $info['hero_id'] = $userPresetInfo['hero_id'];
} else { $info['hero_skin'] = $userPresetInfo['hero_skin'];
$info['errcode'] = 51; $info['skill_id'] = $userPresetInfo['presetInfo']['skill_id'];
$info['errmsg'] = 'paramater error'; $info['weapon_uuid1'] = $userPresetInfo['presetInfo']['weapon_uid1'];
} $info['weapon_uuid2'] = $userPresetInfo['presetInfo']['weapon_uid2'];
$chipPageDb = ChipPage::find($userPresetInfo['presetInfo']['chip_page']);
$info['chip_page'] = ChipPage::toDtoBattle($chipPageDb);
}else{
$info['errcode'] = 51;
$info['errmsg'] = 'paramater error';
} }
{ }
for ($i = 1; $i <= 2; ++$i) {
$gunDb = Gun::findByAccountId($member['account_id'], {
$member['weapon_uuid' . $i]); $heroDb = Hero::findByAccountId($account_id,$info['hero_uniid']);
if ($heroDb) {
$info['is_valid_battle'] = 1;
$info['hero_dto'] = Hero::toDto($heroDb);
} else {
$info['errcode'] = 51;
$info['errmsg'] = 'paramater error';
}
}
{
for ($i = 1; $i <= 2; ++$i) {
if (isset($info['weapon_uuid' . $i])) {
$gunDb = Gun::findByAccountId($account_id, $info['weapon_uuid' . $i]);
if ($gunDb) { if ($gunDb) {
$info['weapon_dto' . $i] = Gun::toDto($gunDb); $info['weapon_dto' . $i] = Gun::toDto($gunDb);
} }
} }
} }
} }
array_push($data['members'], $info);
{
$itemDb = Bag::findEx($account_id, V_ITEM_REVIVE_COIN);
$info['revive_coin'] = $itemDb && $itemDb['item_num'] > 0 ? $itemDb['item_num'] : 0;
}
{
$info['match_mode'] = 0;
if ($currSeason && DynData::getVEx($account_id, TN_RANK_STATUS, 0) == 0){
$info['match_mode'] = 1;
}
}
} }
error_log(json_encode($data)); array_push($data['members'], $info);
myself()->_rspData($data); myself()->_rspData($data);
} }
@ -244,7 +277,7 @@ class BattleController extends BaseAuthedController {
for ($i = 1; $i <= 2; ++$i) { for ($i = 1; $i <= 2; ++$i) {
if (isset($member['weapon_uuid' . $i])) { if (isset($member['weapon_uuid' . $i])) {
$gunDb = Gun::findByAccountId($member['account_id'], $gunDb = Gun::findByAccountId($member['account_id'],
$member['weapon_uuid' . $i]); $member['weapon_uuid' . $i]);
if ($gunDb) { if ($gunDb) {
$info['weapon_dto' . $i] = Gun::toDto($gunDb); $info['weapon_dto' . $i] = Gun::toDto($gunDb);
} }
@ -267,6 +300,7 @@ class BattleController extends BaseAuthedController {
} }
// $attr = Hero::getChipAttr($info['hero_dto']['chip_ids']); // $attr = Hero::getChipAttr($info['hero_dto']['chip_ids']);
myself()->_rspData($data); myself()->_rspData($data);
} }
public function getBattleHistory(){ public function getBattleHistory(){

View File

@ -99,6 +99,47 @@ class ChipPage extends BaseModel
return $info; return $info;
} }
public static function toDtoBattle($row){
$data = emptyReplace(json_decode($row['data'], true), array());
foreach ($data as &$value){
$chipDb = Chip::find($value['chip_id']);
if ( !$chipDb ) {
$value['chip_id'] = 0;
}
}
self::update($row['page_id'],array(
'data' => json_encode($data)
));
$newRow = self::find($row['page_id']);
$newData = emptyReplace(json_decode($newRow['data'], true), array());
$attrs = array();
foreach ($newData as $key=>$value){
$newData[$key]['item_id'] = 0;
if ($value['chip_id']){
$chipDb = Chip::find($value['chip_id']);
$newData[$key]['item_id'] = $chipDb['item_id'];
$chipAttrMeta = ChipAttr::getAttrByItemId($chipDb['item_id']);
$rand_attr = emptyReplace(json_decode($chipDb['rand_attr'], true), array());
array_push($attrs,array(
'attr_id'=>$chipAttrMeta['attr_id'],
'val'=>$chipAttrMeta['lv'.$chipDb['chip_grade']],
));
foreach ($rand_attr as $val){
array_push($attrs,$val);
}
}
}
$item = [];
foreach ($attrs as $k=>$v){
if (!isset($item[$v['attr_id']])){
$item[$v['attr_id']] = $v;
}else{
$item[$v['attr_id']]['val']+= $v['val'];
}
}
return $item;
}
public static function updatePage($page,$slot_id,$chip_id){ public static function updatePage($page,$slot_id,$chip_id){
$row = self::find($page); $row = self::find($page);
$data = emptyReplace(json_decode($row['data'], true), array()); $data = emptyReplace(json_decode($row['data'], true), array());