_activateUser($order['address']); } break; //购买等级回调 case V_ITEM_EXP : { $this->_updateUserLevel($order['address'],$order['item_num']); } default : { } } } private function _activateUser($address){ SqlHelper::update (myself()->_getMysql($address), 't_user', array( 'address' => $address ), array( 'activated' => 1, 'activatetime' => myself()->_getNowTime(), ) ); } private function _updateUserLevel($address,$exp){ $userDb = SqlHelper::ormSelectOne( myself()->_getMysql($address), 't_user', array( 'address' => $address ) ); $expNew = $userDb['exp'] + $exp; $levelNew = $userDb['level']; BattlePass::getExpByLv($levelNew,$expNew); SqlHelper::update (myself()->_getMysql($address), 't_user', array( 'address' => $address ), array( 'exp' => $expNew, 'level' => $levelNew, ) ); $userDbNew = SqlHelper::ormSelectOne( myself()->_getMysql($address), 't_user', array( 'address' => $address ) ); $this->_updatePassData($userDbNew); } private function _updatePassData($user){ $currSeasonMeta = BattlePass::getCurrentSeason(); $passDb = SqlHelper::ormSelectOne( myself()->_getMysql($user['address']), 't_user_pass', array( 'account_id' => $user['account_id'], 'season_id' => $currSeasonMeta['id'], ) ); $rewards = emptyReplace(json_decode($passDb['data'], true), array()); foreach ($rewards['basic'] as &$reward){ if ($user['level'] >= $reward['level'] && $reward['state']==-1){ $reward['state'] = 0; } } if ($user['activated']){ foreach ($rewards['platinum'] as &$reward){ if ($user['level'] >= $reward['level'] && $reward['state']==-1){ $reward['state'] = 0; } } } SqlHelper::update( myself()->_getMysql($user['address']), 't_user_pass', array( 'account_id' => $user['account_id'], 'season_id' => $currSeasonMeta['id'], ), array( 'data' => json_encode($rewards), 'modifytime' => myself()->_getNowTime() ) ); } }