_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), )); } } }