132 lines
6.4 KiB
C#
132 lines
6.4 KiB
C#
using Google.Protobuf;
|
|
using Google.Protobuf.WellKnownTypes;
|
|
|
|
|
|
using ServerCore;
|
|
using ServerBase;
|
|
using ServerCommon;
|
|
using ServerCommon.BusinessLogDomain;
|
|
using MetaAssets;
|
|
|
|
|
|
using META_ID = System.UInt32;
|
|
|
|
|
|
|
|
namespace GameServer.PacketHandler;
|
|
|
|
|
|
[PacketHandler("allgameserver", typeof(ServerMessage.Types.GS2GS_NTF_LAND_AUCTION_WINNING_BID), typeof(NtfLandAuctionWinningBidMQPacketHandler), typeof(RabbitMQ4Game))]
|
|
public class NtfLandAuctionWinningBidMQPacketHandler : PacketRecvHandler
|
|
{
|
|
public override async Task<Result> onProcessPacket(ISession session, IMessage recvMessage)
|
|
{
|
|
var result = new Result();
|
|
var err_msg = string.Empty;
|
|
|
|
var msg = recvMessage as ServerMessage;
|
|
ArgumentNullException.ThrowIfNull(msg, $"msg is null !!!");
|
|
|
|
var ntf_land_auction_wiinning_bid = msg.NtfLandAuctionWinningBid;
|
|
ArgumentNullException.ThrowIfNull(ntf_land_auction_wiinning_bid, $"ntf_land_auction_wiinning_bid is null !!!");
|
|
|
|
var server_logic = GameServerApp.getServerLogic();
|
|
var db_connector = server_logic.getDynamoDbClient();
|
|
|
|
var player_manager = server_logic.getPlayerManager();
|
|
ArgumentNullException.ThrowIfNull(player_manager, $"player_manager is null !!!");
|
|
|
|
var wining_user_guid = ntf_land_auction_wiinning_bid.WinningUserGuid;
|
|
var winning_user_nickname = ntf_land_auction_wiinning_bid.WinningUserNickname;
|
|
var land_meta_id = ntf_land_auction_wiinning_bid.LandMetaId;
|
|
var buidling_meta_ids = ntf_land_auction_wiinning_bid.BuildingMetaIds;
|
|
var is_new_recv_mail = ntf_land_auction_wiinning_bid.IsNewRecvMail;
|
|
|
|
if (player_manager.tryGetUserByPrimaryKey(wining_user_guid, out var found_user) == true)
|
|
{
|
|
// 1. 낙찰된 랜드 정보 읽기
|
|
{
|
|
(result, var make_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey<OwnedLandDoc>(wining_user_guid, land_meta_id.ToString());
|
|
if (result.isFail())
|
|
{
|
|
err_msg = $"Failed to makePrimaryKey<OwnedLandDoc>() !!! : {result.toBasicString()} - landMetaId:{land_meta_id}";
|
|
Log.getLogger().error(err_msg);
|
|
return result;
|
|
}
|
|
NullReferenceCheckHelper.throwIfNull(make_primary_key, () => $"make_primary_key is null !!!");
|
|
var query_config = db_connector.makeQueryConfigForReadByPKSK(make_primary_key.PK, make_primary_key.SK);
|
|
(result, var read_doc) = await db_connector.simpleQueryDocTypeWithQueryOperationConfig<OwnedLandDoc>(query_config);
|
|
if (result.isFail())
|
|
{
|
|
err_msg = $"Failed to simpleQueryDocTypeWithQueryOperationConfig<OwnedLandDoc>() !!! : {result.toBasicString()} - {found_user.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return result;
|
|
}
|
|
NullReferenceCheckHelper.throwIfNull(read_doc, () => $"read_doc is null !!! - {found_user.toBasicString()}");
|
|
|
|
var owned_land_agent_action = found_user.getEntityAction<OwnedLandAgentAction>();
|
|
NullReferenceCheckHelper.throwIfNull(owned_land_agent_action, () => $"owned_land_agent_action is null !!! - {found_user.toBasicString()}");
|
|
|
|
result = await owned_land_agent_action.tryAddOwnedLandFromDoc(read_doc);
|
|
if (result.isFail())
|
|
{
|
|
err_msg = $"Failed to tryAddOwnedLandFromDoc() !!! : {result.toBasicString()} - {found_user.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return result;
|
|
}
|
|
}
|
|
|
|
// 2. 랜드와 연결된 빌딩 정보 읽기
|
|
{
|
|
foreach(var building_meta_id in buidling_meta_ids)
|
|
{
|
|
(result, var make_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey<OwnedBuildingDoc>(wining_user_guid, building_meta_id.ToString());
|
|
if (result.isFail())
|
|
{
|
|
err_msg = $"Failed to makePrimaryKey<OwnedBuildingDoc>() !!! : {result.toBasicString()} - landMetaId:{building_meta_id}";
|
|
Log.getLogger().error(err_msg);
|
|
return result;
|
|
}
|
|
NullReferenceCheckHelper.throwIfNull(make_primary_key, () => $"make_primary_key is null !!!");
|
|
var query_config = db_connector.makeQueryConfigForReadByPKSK(make_primary_key.PK, make_primary_key.SK);
|
|
(result, var read_doc) = await db_connector.simpleQueryDocTypeWithQueryOperationConfig<OwnedBuildingDoc>(query_config);
|
|
if (result.isFail())
|
|
{
|
|
err_msg = $"Failed to simpleQueryDocTypeWithQueryOperationConfig<OwnedBuildingDoc>() !!! : {result.toBasicString()} - {found_user.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return result;
|
|
}
|
|
NullReferenceCheckHelper.throwIfNull(read_doc, () => $"read_doc is null !!! - {found_user.toBasicString()}");
|
|
|
|
var owned_building_agent_action = found_user.getEntityAction<OwnedBuildingAgentAction>();
|
|
NullReferenceCheckHelper.throwIfNull(owned_building_agent_action, () => $"owned_building_agent_action is null !!!");
|
|
|
|
result = await owned_building_agent_action.tryAddOwnedBuildingFromDoc(read_doc);
|
|
if (result.isFail())
|
|
{
|
|
err_msg = $"Failed to tryAddOwnedBuildingFromDoc() !!! : {result.toBasicString()} - {found_user.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return result;
|
|
}
|
|
}
|
|
}
|
|
|
|
found_user.send_S2C_NTF_OWNED_LAND_INFOS();
|
|
found_user.send_S2C_NTF_OWNED_BUILDING_INFOS();
|
|
|
|
if(BoolType.True == is_new_recv_mail)
|
|
{
|
|
var found_user_mail_action = found_user.getEntityAction<MailAction>();
|
|
NullReferenceCheckHelper.throwIfNull(found_user_mail_action, () => $"found_user_mail_action is null !!!");
|
|
|
|
found_user_mail_action.NewReceivedMail();
|
|
}
|
|
}
|
|
|
|
LandAuctionNotifyHelper.broadcast_GS2C_NTF_LAND_AUCTION_WINNING_BID(winning_user_nickname, (META_ID)land_meta_id);
|
|
|
|
return await Task.FromResult(result);
|
|
}
|
|
}
|
|
|