200 lines
9.9 KiB
PHP
200 lines
9.9 KiB
PHP
<?php
|
|
|
|
|
|
namespace services;
|
|
|
|
use mt\Item;
|
|
use models\Bag;
|
|
use models\Hero;
|
|
use models\HeroSkin;
|
|
use models\Gun;
|
|
use models\GunSkin;
|
|
use models\UserSeasonRing;
|
|
use models\Parachute;
|
|
use models\Chip;
|
|
use models\Avatar;
|
|
use phpcommon\SqlHelper;
|
|
class AddItemsService extends BaseService
|
|
{
|
|
|
|
private function _isAddAwardItem($itemId){
|
|
$itemMeta = Item::get($itemId);
|
|
if (in_array($itemMeta['type'],array(
|
|
Item::HERO_TYPE,
|
|
Item::CHIP_TYPE,
|
|
Item::APPOINT_PROP_TYPE
|
|
))){
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function addItems($items, $awardService, $propertyService){
|
|
myself()->_checkS();
|
|
$heads = array();
|
|
$headFrames = array();
|
|
foreach ($items as $item) {
|
|
//道具产出埋点
|
|
LogService::productItem($item);
|
|
if ($awardService && !$this->_isAddAwardItem($item['item_id'])){
|
|
$awardService->addItem($item['item_id'], $item['item_num']);
|
|
}
|
|
if (myself()->_isVirtualItem($item['item_id'])) {
|
|
myself()->_addVirtualItem($item['item_id'], $item['item_num']);
|
|
$propertyService->addUserChg();
|
|
} else {
|
|
$itemMeta = Item::get($item['item_id']);
|
|
if ($itemMeta) {
|
|
if (Item::isBagItem($itemMeta['type'], $itemMeta['sub_type'])) {
|
|
Bag::addItem($item['item_id'], $item['item_num']);
|
|
$propertyService->addBagChg();
|
|
} else {
|
|
for ($i=0; $i<$item['item_num']; $i++){
|
|
switch ($itemMeta['type']) {
|
|
case Item::HERO_TYPE:
|
|
{
|
|
$heroMeta = \mt\Hero::get($itemMeta['id']);
|
|
$res = Hero::addHero($heroMeta);
|
|
if ($res){
|
|
$lastIdx = SqlHelper::getLastInsertId( myself()->_getSelfMysql());
|
|
$awardService->addHero($item['item_id'],$lastIdx);
|
|
}
|
|
$propertyService->addHeroChg();
|
|
$propertyService->addUserChg();
|
|
}
|
|
break;
|
|
case Item::HERO_SKIN_TYPE:
|
|
{
|
|
HeroSkin::addSkin($itemMeta);
|
|
$propertyService->addHeroSkinChg();
|
|
}
|
|
break;
|
|
case Item::HEAD_TYPE:
|
|
{
|
|
array_push($heads, $itemMeta['id']);
|
|
$propertyService->addUserChg();
|
|
}
|
|
break;
|
|
case Item::HEAD_FRAME_TYPE:
|
|
{
|
|
array_push($headFrames, $itemMeta['id']);
|
|
$propertyService->addUserChg();
|
|
}
|
|
break;
|
|
case Item::GUN_TYPE:
|
|
{
|
|
Gun::addGun($itemMeta);
|
|
$propertyService->addGunChg();
|
|
}
|
|
break;
|
|
case Item::GUN_SKIN_TYPE:
|
|
{
|
|
GunSkin::addSkin($itemMeta['id']);
|
|
$propertyService->addGunSkinChg();
|
|
}
|
|
break;
|
|
case Item::FRAGMENT_BOX_TYPE:
|
|
{
|
|
Bag::addItem($item['item_id'], $item['item_num']);
|
|
$propertyService->addBagChg();
|
|
}
|
|
break;
|
|
case Item::RING_TYPE:
|
|
{
|
|
UserSeasonRing::addRing($itemMeta);
|
|
$propertyService->addUserChg();
|
|
}
|
|
break;
|
|
case Item::PARACHUTE_TYPE:
|
|
{
|
|
Parachute::addParachute($itemMeta);
|
|
$propertyService->addUserChg();
|
|
}
|
|
break;
|
|
case Item::CHIP_TYPE:
|
|
{
|
|
$res = Chip::addChip($itemMeta);
|
|
if ($res){
|
|
$lastIdx = SqlHelper::getLastInsertId( myself()->_getSelfMysql());
|
|
$awardService->addChip($item['item_id'],$lastIdx);
|
|
}
|
|
$propertyService->addChip();
|
|
}
|
|
break;
|
|
case Item::RANDOM_BOX_TYPE:
|
|
{
|
|
myself()->_openRandomBox($itemMeta,$awardService,$propertyService);
|
|
}
|
|
break;
|
|
case Item::AVATAR_TYPE:
|
|
{
|
|
Avatar::addAvatar($itemMeta);
|
|
}
|
|
break;
|
|
case Item::TIMING_PROP_TYPE:
|
|
{
|
|
$timingObj = new \services\TimingPropService();
|
|
$timingObj->handleProp($itemMeta);
|
|
}
|
|
break;
|
|
case Item::APPOINT_PROP_TYPE:
|
|
{
|
|
switch ($itemMeta['sub_type']){
|
|
case Item::APPOINT_HERO_SUBTYPE :{
|
|
$heroMeta = \mt\Hero::get($itemMeta['relationship']);
|
|
$res = Hero::addSyntheticHero($heroMeta,$itemMeta['quality']);
|
|
if ($res){
|
|
$lastIdx = SqlHelper::getLastInsertId( myself()->_getSelfMysql());
|
|
$awardService->addHero($heroMeta['id'],$lastIdx);
|
|
}
|
|
$propertyService->addHeroChg();
|
|
}
|
|
break;
|
|
case Item::APPOINT_CHIP_SUBTYPE :{
|
|
$chipMeta = Item::get($itemMeta['relationship']);
|
|
$res = Chip::addSyntheticChip($chipMeta,$itemMeta['quality']);
|
|
if ($res){
|
|
$lastIdx = SqlHelper::getLastInsertId( myself()->_getSelfMysql());
|
|
$awardService->addChip($chipMeta['id'],$lastIdx);
|
|
}
|
|
$propertyService->addChip();
|
|
}
|
|
break;
|
|
case Item::APPOINT_SKIN_SUBTYPE :{
|
|
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
{
|
|
myself()->_addLogEx(myself()->_getAccountId(),
|
|
'additems', 'invalid_item',
|
|
array(
|
|
'param1' => $item['item_id'],
|
|
'param2' => $item['item_num'],
|
|
));
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}//end foreach
|
|
if (!empty($heads) || !empty($headFrames)) {
|
|
$userInfo = myself()->_getOrmUserInfo();
|
|
$headsDb = emptyReplace(json_decode($userInfo['head_list'], true), array());
|
|
$headFramesDb = emptyReplace(json_decode($userInfo['head_frame_list'], true), array());
|
|
$heads = array_unique(array_merge($heads, $headsDb));
|
|
$headFrames = array_values(array_unique(array_merge($headFrames, $headFramesDb)));
|
|
myself()->_updateUserInfo(array(
|
|
'head_list' => json_encode($heads),
|
|
'head_frame_list' => json_encode($headFrames),
|
|
));
|
|
}
|
|
}
|
|
|
|
} |