getAccountId($address); $conn = myself()->_getMysql($address); if (\mt\Item::isBagItem($itemMeta['type'], $itemMeta['sub_type'])) { $this->internalAddBag($conn,$itemId,$itemNum,$accountId); }else{ for ($i = 0; $i < $itemNum; $i++) { switch ($itemMeta['type']){ case \mt\Item::HERO_TYPE : { $this->internalAddHero($conn,$itemMeta,$accountId); } break; case \mt\Item::GUN_TYPE : { $this->internalAddGun($conn,$itemMeta,$accountId); } break; case \mt\Item::CHIP_TYPE : { $this->internalAddChip($conn,$itemMeta,$accountId); } break; case \mt\Item::HERO_SKIN_TYPE : { $this->internalAddHeroSkin($conn,$itemMeta,$accountId); } } } } } private function getAccountId($address){ $row = SqlHelper::ormSelectOne (myself()->_getMysql($address), 't_user', array( 'address' => $address ) ); return $row['account_id']; } private function internalAddHeroSkin($conn,$skinMeta,$accountId){ $heroId = 0; if ($skinMeta['isdefaultskin'] == 1){ $heroId = $skinMeta['playerid']; } SqlHelper::upsert( $conn, 't_hero_skin', array( 'account_id' => $accountId, 'skin_id' => $skinMeta['id'] ), array(), array( 'account_id' => $accountId, 'skin_id' => $skinMeta['id'], 'skin_state' => 0, 'get_from' => 0, 'consume_num' => 0, 'try_expire_at' => 0, 'hero_id' => $heroId, 'createtime' => myself()->_getNowTime(), 'modifytime' => myself()->_getNowTime() ) ); } private function internalAddHero($conn, $heroMeta, $accountId) { $skinItemMeta = \mt\Item::getMetaListByType(\mt\Item::HERO_SKIN_TYPE); if ($skinItemMeta){ foreach ($skinItemMeta as $value){ if ($value['playerid'] == $heroMeta['id'] && $value['isdefaultskin'] == 1){ $this->internalAddHeroSkin($conn,$value,$accountId); } } } $randAttr = array(); $fieldsKv = array( 'account_id' => $accountId, 'hero_id' => $heroMeta['id'], 'hero_lv' => 1, 'quality' => 1, 'state' => 0, 'skill_lv1' => 1, 'skill_lv2' => 1, 'rand_attr' => json_encode($randAttr), 'lock_type' => 0, 'unlock_time' => 0, 'unlock_trade_time' => 0, 'activate' => 1, 'createtime' => myself()->_getNowTime(), 'modifytime' => myself()->_getNowTime() ); SqlHelper::insert( $conn, 't_hero', $fieldsKv ); } private function internalAddGun($conn, $gunMeta, $accountId) { $randAttr = array(); $fieldsKv = array( 'account_id' => $accountId, 'gun_id' => $gunMeta['id'], 'gun_lv' => 1, 'quality' => 1, 'state' => 0, 'rand_attr' => json_encode($randAttr), 'lock_type' => 0, 'unlock_time' => 0, 'unlock_trade_time' => 0, 'activate' => 1, 'createtime' => myself()->_getNowTime(), 'modifytime' => myself()->_getNowTime() ); SqlHelper::insert( $conn, 't_gun', $fieldsKv ); } private function internalAddChip($conn, $itemMeta, $accountId) { $randAttr = array(); $fieldsKv = array( 'account_id' => $accountId, 'item_id' => $itemMeta['id'], 'item_num' => 1, 'state' => 0, 'rand_attr' => json_encode($randAttr), 'chip_grade' => 1, 'chip_type' => $itemMeta['sub_type'], 'activate' => 1, 'createtime' => myself()->_getNowTime(), 'modifytime' => myself()->_getNowTime() ); SqlHelper::insert ($conn, 't_chip', $fieldsKv ); } private function internalAddBag($conn, $itemId, $itemNum, $accountId ) { if ($this->_isVirtualItem($itemId)) { return; } SqlHelper::upsert ($conn, 't_bag', array( 'account_id' => $accountId, 'item_id' => $itemId ), array( 'item_num' => function () use($itemNum) { return "item_num + {$itemNum}";}, 'modifytime' => myself()->_getNowTime(), ), array( 'account_id' => $accountId, 'item_id' => $itemId, 'item_num' => $itemNum, 'createtime' => myself()->_getNowTime(), 'modifytime' => myself()->_getNowTime() ) ); } private function _isVirtualItem($itemId) { return in_array($itemId, array(V_ITEM_GOLD, V_ITEM_DIAMOND, V_ITEM_EXP, V_ITEM_ACTIVE,V_ITEM_BCEG,V_ITEM_STAR)); } }