diff --git a/server/imserver/guild.cc b/server/imserver/guild.cc index 53abd34..1cc322c 100644 --- a/server/imserver/guild.cc +++ b/server/imserver/guild.cc @@ -237,6 +237,8 @@ void Guild::_CMGuildApplyList(f8::MsgHdr& hdr, const cs::CMGuildApplyList& msg) [] (a8::XParams& param, const f8::DataSet* data_set) { cs::MFPaging* paging = (cs::MFPaging*)param.param2.GetUserData(); + ss::SS_IM_ForwardGuildCMMsg* forward_msg = (ss::SS_IM_ForwardGuildCMMsg*) + param.param3.GetUserData(); #if 0 Player* hum = PlayerMgr::Instance()->GetPlayerByAccountId(param.sender.GetString()); if (hum && hum->socket_handle == param.param1.GetInt()) { @@ -265,31 +267,33 @@ void Guild::_CMGuildApplyList(f8::MsgHdr& hdr, const cs::CMGuildApplyList& msg) hum->SyncRedPoint(); } #endif + delete forward_msg; delete paging; }; auto on_error = [] (a8::XParams& param, int error_code, const std::string& error_msg) { cs::MFPaging* paging = (cs::MFPaging*)param.param2.GetUserData(); - #if 0 - Player* hum = PlayerMgr::Instance()->GetPlayerByAccountId(param.sender.GetString()); - if (hum && hum->socket_handle == param.param1.GetInt()) { - cs::SMFriendApplyList respmsg; - hum->FillApplyList(*paging, respmsg); - hum->SendMsg(respmsg); - } - #endif + ss::SS_IM_ForwardGuildCMMsg* forward_msg = (ss::SS_IM_ForwardGuildCMMsg*) + param.param3.GetUserData(); + + cs::SMGuildJoin respmsg; + GuildMgr::Instance()->ForwardGuildSMMsg(param.param1, + forward_msg->context(), + respmsg); + + delete forward_msg; delete paging; }; - ss::SS_IM_ForwardGuildCMMsg *forward_msg = (ss::SS_IM_ForwardGuildCMMsg*)hdr.user_data; + ss::SS_IM_ForwardGuildCMMsg* forward_msg = (ss::SS_IM_ForwardGuildCMMsg*)hdr.user_data; + ss::SS_IM_ForwardGuildCMMsg* forward_msg_copy = new ss::SS_IM_ForwardGuildCMMsg(); + *forward_msg_copy = *forward_msg; cs::MFPaging* paging_copy = new cs::MFPaging; *paging_copy = msg.paging(); - #if 1 paging_copy->set_curr_page(0); paging_copy->set_page_size(20); - #endif a8::XObject conn_info = DBEngine::Instance()->GetConnInfo(guild_id); std::string fmtstr = "SELECT '' AS account_id"; std::vector sql_params; @@ -312,8 +316,9 @@ void Guild::_CMGuildApplyList(f8::MsgHdr& hdr, const cs::CMGuildApplyList& msg) sql_params, a8::XParams() .SetSender(guild_id) - .SetParam1(0) - .SetParam2(paging_copy), + .SetParam1(hdr.socket_handle) + .SetParam2(paging_copy) + .SetParam3(forward_msg_copy), on_ok, on_error, guild_id diff --git a/server/imserver/guild.h b/server/imserver/guild.h index aefab3d..70a76f3 100644 --- a/server/imserver/guild.h +++ b/server/imserver/guild.h @@ -89,4 +89,5 @@ private: std::map member_hash_; std::vector sorted_members_; ss::MFGuildLogDB* logdb_ = nullptr; + std::map apply_hash_; }; diff --git a/server/imserver/types.h b/server/imserver/types.h index 519500d..d993a25 100644 --- a/server/imserver/types.h +++ b/server/imserver/types.h @@ -56,6 +56,15 @@ struct FriendApply int flag = 0; }; +struct GuildApply +{ + long long idx = 0; + long long applyid = 0; + long long guild_id; + BaseUserData base_data; + int flag = 0; +}; + struct Event { long long idx = 0;