void UserLogin::handle_WG_UserLogin(Event* e) { const NewStar_Rsp& rsp = e->newstarrsp(); const UserLogin_Req& req = e->userlogin_req(); int64 uid = req.uid(); if(uid<=0) return; int nPhysicsRegion = getPhysicsRegion(uid); //判断所属物理分区是否正确 if(nPhysicsRegion != serverConfig.GetPhysiceRegionByGame(eh_->GetSrvID())) return; GameDataHandler* dh = eh_->getDataHandler(); const string& platid = req.platform_id(); int siteid = req.siteid(); const string& name = req.name(); const string& profile_link = req.profile_link(); int gender = (req.gender() == 0) ? Gender_Girl : Gender_Boy ; vector<string> friends_platid; for (int i = 0; i < req.friends_platid_size(); i ++) { friends_platid.push_back(req.friends_platid(i)); } bool isYellowDmd = req.is_yellow_dmd(); bool isYellowDmdYear = req.is_yellow_dmd_year(); int lvlYellowDmd = req.yellow_dmd_lv(); bool isHighYellowDmd = req.is_high_yellow_dmd(); bool isHighDmdYear = req.is_high_dmd_year(); int nBlueTime = req.bluetime(); int nBlueYearTime = req.blueyeartime(); int nHighBlueTime = req.highbluetime(); int nHighYearTime = req.highblueyeartime(); int webfd = req.webfd(); string sid = req.sid(); int region = req.region(); int nCity = req.city(); string strVIA = req.via(); //玩家渠道 bool isRecall = req.isrecall(); int nCustomFlag = req.customflag(); int nBackFlowFlag = req.nbackflowflag(); const WebCrossPromotion* pWebPromotion = e->mutable_userlogin_req()->mutable_promotion(); string strChanel = pWebPromotion->chanle(); LOG4CXX_INFO(logger_, "World request UserLogin with openid: " << platid); //if(dh->GetUserID(platid,region)!=uid) //{ // dh->AddUserID(platid,region,uid); //} LoadStatus state = LOAD_INVALID; User* user = processUserLogin(uid,platid, siteid, name, profile_link, gender, friends_platid, isYellowDmd, isYellowDmdYear, lvlYellowDmd, state, region,nCity,req.isnewplayer(),strVIA,isHighYellowDmd,strChanel,isHighDmdYear,nBlueTime,nBlueYearTime,nHighBlueTime,nHighYearTime, rsp.id(), rsp.name(), rsp.type(), rsp.sku()); if (user != NULL) { UserLogin_Rsp* rsp = e->mutable_userlogin_rsp(); rsp->set_server(eh_->getServerIp()); rsp->set_port(eh_->getServerPort()); rsp->set_port1(eh_->getServerPort1()); rsp->set_uid(user->GetUid()); rsp->set_secret(user->secret(eh_->getReversion())); rsp->set_webfd(webfd); rsp->set_sid(sid); rsp->set_region(region); rsp->set_mainload("0");//此项已失效 rsp->set_version(FlashVersionCfg::Instance().GetCfgVersion(eh_->GetSrvID())); rsp->set_gettime(req.gettime()); rsp->set_platform_id(req.platform_id()); rsp->set_playerlvl(user->GetUserLevel()); rsp->set_logintimes(IsSameDay(user->GetLastLoginTime(),time(NULL))?1:0); rsp->set_isnewplayer(req.isnewplayer()); rsp->set_customflag(req.customflag()); rsp->set_channel(strChanel); #if 0 user->SetUndealGiftCount(req.undealgiftcnt()); user->SetUndealFrdGiftCount(req.undealfrdgiftcnt()); user->SetInviteFrdCnt(req.invitefrdcnt()); user->SetDayInviteFrdCnt(req.invitefrdcntday()); user->SetDayWebGiftSendCnt(req.daysendgiftcnt()); user->SetChannel(strChanel); user->GetDbUser().set_badult((req.nadultflag() >= 100)?true : false); bool bIsNewInvite = false; if (user->SetPlatInviteFriendOpenid(req.invitefriendid())) { bIsNewInvite = true; } user->GetDbUser().mutable_player()->set_yellowdmdtime(req.yellowdmdtime()); if (req.isnewplayer() && bIsNewInvite) { HttpRequireHandler::Instance().SafePushHttpAcceptToQQ(user, user->GetPlattype()); } else if (req.isnewplayer()) { HttpRequireHandler::Instance().SafePushHttpSelfRegistToQQ(user, user->GetPlattype()); } HttpRequireHandler::Instance().SafePushHttpLogOnToQQ(user, user->GetPlattype()); user->GetDbUser().set_isactivelogon( req.isapp51act() ); RceInviteFriend* pinviteMsg = e->mutable_ce_rceinvitefriend(); user->GetPlayer()->SetInviteFrdCntGain(pinviteMsg->friendcount(),pinviteMsg->giftgain()); //交叉推广 //if(strChanel.size()>0) //{ // user->m_mapChanlelFirst[strChanel] += 1; //} user->SetCrossPromotion(pWebPromotion); for ( int i = 0; i < req.invitegiftrecord_size(); i++ ) { DB_InvitedFriendLvGift* pDBInvitedFriendLvGift = user->GetPlayer()->GetDBInvitedFriendLvGift(req.invitegiftrecord(i)); if ( pDBInvitedFriendLvGift == NULL ) { continue; } pDBInvitedFriendLvGift->set_hasget( true ); } #endif e->clear_userlogin_req(); e->set_state(UserLogin_GW_Rsp); eh_->sendEventToWorld(e); user->InitRc4Key(rsp->logintimes(),sid); #if 0 if(user->GetUserLevel() != req.level()) { eh_->SendUserInfo2Plat(user,UpdatePlat_Level); } //if(user->GetPlayer()->GetDBPlayer()->invite_platid_size()>0) //{//分服前后数据同步 // eh_->SendUserInfo2Plat(user,1); // user->GetPlayer()->GetDBPlayer()->clear_invite_platid(); //} //召回老友统计 if ( isRecall ) { SYS_UserStat(user,false,"CallBackFrdBack",1,"","",""); } if ( nCustomFlag > 0 ) { //2015.03.10空间广告位回流 const CostGiftTbl *pCostTbl = CostGiftCfg::Instance().GetCostGiftTbl(10098); DB_QQBackFlow* pDBQQBackFlow = user->GetPlayer()->GetDBPlayer()->mutable_qqrightbackflowflag(); if (pCostTbl != NULL && pCostTbl->IsCurrentTime() && pDBQQBackFlow != NULL && pDBQQBackFlow->actflag() != pCostTbl->m_tBeginTime) { //user->GetPlayer()->GetDBPlayer()->set_customflagtime( time(NULL) ); SYS_LOG(user->GetPlayer()->GetUserID(),LT_COST_GIFT_CUSTOM_FLAG,0,0,0); pDBQQBackFlow->Clear(); pDBQQBackFlow->set_actflag(pCostTbl->m_tBeginTime); pDBQQBackFlow->set_curstate(1); } } if (nBackFlowFlag == 1) {//空间顶部应用墙回流 if ( user->GetPlayer()->GetDBPlayer()->qqtopbackflowflag() == 0) { user->GetPlayer()->GetDBPlayer()->set_qqtopbackflowflag(1); } } else if (nBackFlowFlag == 2) {//空间顶部应用墙回流 if ( user->GetPlayer()->GetDBPlayer()->qqleftbackflowflag() == 0) { user->GetPlayer()->GetDBPlayer()->set_qqleftbackflowflag(1); } } else if (nBackFlowFlag == 4) { if(user->GetPlayer()->GetDBPlayer()->qqtenyearbackflowflag() == 0) { user->GetPlayer()->GetDBPlayer()->set_qqtenyearbackflowflag(1); } } if ( bIsNewInvite ) { ConstantSetUnit* pUnit = GameConstantSetCfg::Instance().GetGameConstantSet(E_GAMECONSTANTSET_DEF_HOLIDAY_INVITE); if ( pUnit != NULL ) { time_t now = time(NULL); time_t tBeginTime = GetDayTimeByStr( pUnit->m_strArgs[0].c_str(), pUnit->m_strArgs[1].c_str() ); time_t tEndTime = GetDayTimeByStr( pUnit->m_strArgs[2].c_str(), pUnit->m_strArgs[3].c_str() ); if( now >= tBeginTime && now <= tEndTime ) { user->GetPlayer()->GetDBPlayer()->set_canholidayinvitegiftsend(true); } } } user->GetPlayer()->GetDBPlayer()->set_qqtaskstep( req.qqtaskstep() ); #endif dh->markUserDirty(user); } else { if (state == LOAD_WAITING) { eh_->postBackEvent(e); } } }