초기커밋
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
using Google.Protobuf;
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
|
||||
|
||||
using ServerCore;
|
||||
using ServerBase;
|
||||
using ServerCommon;
|
||||
using ServerCommon.BusinessLogDomain;
|
||||
using MetaAssets;
|
||||
|
||||
|
||||
namespace GameServer;
|
||||
|
||||
public class ReplyReceivedFriendRequestAction : EntityActionBase
|
||||
{
|
||||
public ReplyReceivedFriendRequestAction(Player owner)
|
||||
: base(owner)
|
||||
{
|
||||
}
|
||||
|
||||
public override async Task<Result> onInit()
|
||||
{
|
||||
var result = new Result();
|
||||
return await Task.FromResult(result);
|
||||
}
|
||||
|
||||
public override void onClear()
|
||||
{
|
||||
return;
|
||||
}
|
||||
public async Task<Result> replyReceivedFriendRequest(string myGuid, string targetGuid, int replyType)
|
||||
{
|
||||
var result = new Result();
|
||||
|
||||
switch (replyType)
|
||||
{
|
||||
case (int)FriendRequestReplyType.Accept:
|
||||
result = await addFriend(myGuid, targetGuid);
|
||||
if (result.isFail())
|
||||
{
|
||||
Log.getLogger().error("replyReceivedFriendRequest addFriend error");
|
||||
return result;
|
||||
}
|
||||
|
||||
break;
|
||||
case (int)FriendRequestReplyType.Refuse:
|
||||
result = await refuseFriend(myGuid, targetGuid);
|
||||
if (result.isFail())
|
||||
{
|
||||
Log.getLogger().error("replyReceivedFriendRequest refuseFriend error");
|
||||
return result;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private async Task<Result> addFriend(string myGuid, string friendGuid)
|
||||
{
|
||||
var owner = getOwner() as Player;
|
||||
NullReferenceCheckHelper.throwIfNull(owner, () => $"owner is null !!!");
|
||||
var friend_agent_action = owner.getEntityAction<FriendAgentAction>();
|
||||
|
||||
var result = friend_agent_action.friendMaxCountCheck();
|
||||
if (result.isFail()) return result;
|
||||
|
||||
result = friend_agent_action.raiseErrorIfExistFriend(friendGuid);
|
||||
if (result.isFail()) return result;
|
||||
|
||||
var server_logic = GameServerApp.getServerLogic();
|
||||
var friend_request_cache = new FriendReqCacheRequest(owner, myGuid, friendGuid, server_logic.getRedisConnector());
|
||||
|
||||
//요청이 존재하는지 체크하면서 해당 요청 가져온다.
|
||||
(result, var req) = await friend_agent_action.receivedRquestsExitstCheck(friend_request_cache, friendGuid);
|
||||
if (result.isFail() || req is null) return result;
|
||||
|
||||
//요청 만료시간이 지나버린경우
|
||||
DateTime now = DateTimeHelper.Current;
|
||||
var expire_time = req.m_request_time.AddSeconds(MetaHelper.GameConfigMeta.SentFriendRequestValidTime);
|
||||
if (now > expire_time)
|
||||
{
|
||||
var err_msg = $"friendRequestList expired targetGuid = {friendGuid}, m_request_time = {req.m_request_time}, expire_time : {expire_time}, now : {now}, {owner.toBasicString()}";
|
||||
result.setFail(ServerErrorCode.AddFriendAlreadyExpired, err_msg);
|
||||
Log.getLogger().error(result.toBasicString());
|
||||
return result;
|
||||
}
|
||||
|
||||
result = await friend_request_cache.deleteFriendByReply();
|
||||
|
||||
|
||||
if (result.isFail()) return result;
|
||||
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
|
||||
private async Task<Result> refuseFriend(string myGuidm, string friendGuid)
|
||||
{
|
||||
var owner = getOwner() as Player;
|
||||
NullReferenceCheckHelper.throwIfNull(owner, () => $"owner is null !!!");
|
||||
var server_logic = GameServerApp.getServerLogic();
|
||||
|
||||
FriendReqCacheRequest cache = new FriendReqCacheRequest(owner, myGuidm, friendGuid, server_logic.getRedisConnector());
|
||||
var result = await cache.refuseFriendRequest();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user