초기커밋
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
using System.Text;
|
||||
|
||||
|
||||
using ServerCore;
|
||||
using ServerBase;
|
||||
using ServerCommon;
|
||||
using ServerCommon.BusinessLogDomain;
|
||||
using MetaAssets;
|
||||
|
||||
|
||||
using META_ID = System.UInt32;
|
||||
|
||||
|
||||
namespace GameServer;
|
||||
|
||||
|
||||
public class RabbitMailSendHandler
|
||||
{
|
||||
public async Task MOS2GS_mailSend(ServerMessage.Types.MOS2GS_NTF_MAIL_SEND mailSendMsg)
|
||||
{
|
||||
var user_guid = mailSendMsg.UserGuid;
|
||||
StringBuilder str_builder = new();
|
||||
|
||||
if (user_guid is null)
|
||||
{
|
||||
Log.getLogger().error($"user_gudi is null");
|
||||
return;
|
||||
}
|
||||
|
||||
Log.getLogger().debug($"MOS2GS_mailSend start user_guid : {user_guid}");
|
||||
|
||||
(var result, var nickname_attrib) = await NicknameDoc.findNicknameFromGuid(user_guid);
|
||||
if (result.isFail())
|
||||
{
|
||||
Log.getLogger().error($"Not found user Nickname, guid : {user_guid}");
|
||||
return;
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(nickname_attrib, () => $"nickname_attrib is null !!!");
|
||||
|
||||
str_builder.Append($"guid : {user_guid}, nickname : {nickname_attrib.Nickname}");
|
||||
|
||||
(result, var nickname_registry_attrib) = await NicknameHelper.findNickname(nickname_attrib.Nickname);
|
||||
if (result.isFail())
|
||||
{
|
||||
Log.getLogger().error($"Not found user Nickname registry, {str_builder.ToString()}");
|
||||
return;
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(nickname_registry_attrib, () => $"nickname_registry_attrib is null !!!");
|
||||
|
||||
str_builder.Append($" accountId : {nickname_registry_attrib.AccountId}");
|
||||
|
||||
(result, var account_base_doc) =
|
||||
await AccountBaseDoc.findUserGuidFromAccountId(nickname_registry_attrib.AccountId);
|
||||
if (result.isFail())
|
||||
{
|
||||
Log.getLogger().error($"Not found user accountId registry, {str_builder.ToString()}");
|
||||
return;
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(account_base_doc, () => $"account_base_doc is null !!!");
|
||||
|
||||
var account_base_attrib = account_base_doc.getAttrib<AccountBaseAttrib>();
|
||||
if (account_base_attrib == null)
|
||||
{
|
||||
Log.getLogger().error($"Not found user accountBaseAttrib, {str_builder.ToString()}");
|
||||
return;
|
||||
}
|
||||
|
||||
string title_txt = string.Empty;
|
||||
foreach (var title in mailSendMsg.Title)
|
||||
{
|
||||
if ((int)title.LanguageType == (int)account_base_attrib.LanguageType)
|
||||
{
|
||||
var txt = StringRuleHelper.convertStringFromBase64(title.Text);
|
||||
title_txt = txt;
|
||||
str_builder.Append($" title_txt : {title_txt}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//일단 하드코딩, sender에 대한 정의가 확정되면 바꿀것.
|
||||
//string sender = "시스템 관리자";
|
||||
string senderName = string.Empty;
|
||||
foreach (var sender in mailSendMsg.Sender)
|
||||
{
|
||||
if ((int)sender.LanguageType == (int)account_base_attrib.LanguageType)
|
||||
{
|
||||
var txt = StringRuleHelper.convertStringFromBase64(sender.Text);
|
||||
senderName = txt;
|
||||
str_builder.Append($" senderName : {senderName}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
string mail_msg = string.Empty;
|
||||
foreach (var msg in mailSendMsg.Msg)
|
||||
{
|
||||
if ((int)msg.LanguageType == (int)account_base_attrib.LanguageType)
|
||||
{
|
||||
var txt = StringRuleHelper.convertStringFromBase64(msg.Text);
|
||||
mail_msg = txt;
|
||||
str_builder.Append($" mail_msg : {mail_msg}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
List<ServerCommon.MailItem> mail_items = new();
|
||||
foreach (var item in mailSendMsg.ItemList)
|
||||
{
|
||||
var item_id = item.ItemId;
|
||||
var item_cnt = item.Count;
|
||||
if (MetaData.Instance._ItemTable.TryGetValue(item_id, out var item_data) == false)
|
||||
{
|
||||
Log.getLogger().error($"Not found item data, item_id : {item_id}, {str_builder.ToString()}");
|
||||
return;
|
||||
}
|
||||
|
||||
ServerCommon.MailItem mail_item = new();
|
||||
mail_item.ItemId = (META_ID)item_id;
|
||||
mail_item.Count = item_cnt;
|
||||
mail_item.ProductId = 0;
|
||||
mail_item.isRepeatProduct = false;
|
||||
str_builder.Append($" ItemId : {item_id}").Append($" item_cnt : {item_cnt}");
|
||||
mail_items.Add(mail_item);
|
||||
}
|
||||
|
||||
(result, var mail_doc) = await Mail.createSystemMailDocByMOS2User(user_guid, nickname_attrib.Nickname, senderName, title_txt, mail_msg, mail_items);
|
||||
if (result.isFail() || mail_doc is null)
|
||||
{
|
||||
Log.getLogger().error($"fail create system mail, {str_builder.ToString()}");
|
||||
return;
|
||||
}
|
||||
var to_write_docs = new List<DynamoDbDocBase>();
|
||||
to_write_docs.Add(mail_doc);
|
||||
var server_logic = GameServerApp.getServerLogic();
|
||||
var system_manager = server_logic.getSystemMailManager();
|
||||
|
||||
var batch = new QueryBatchEx<QueryRunnerWithDocument>(system_manager, LogActionType.MailSend, server_logic.getDynamoDbClient(), true);
|
||||
{
|
||||
batch.addQuery(new DBQEntityWrite(to_write_docs));
|
||||
batch.addQuery(new QueryFinal(), async (_query) =>
|
||||
{
|
||||
await Task.CompletedTask;
|
||||
var player_manager = server_logic.getPlayerManager();
|
||||
if (player_manager.tryGetUserByPrimaryKey(user_guid, out var found_user) == true)
|
||||
{
|
||||
var found_user_mail_action = found_user.getEntityAction<MailAction>();
|
||||
found_user_mail_action.NewReceivedMail();
|
||||
}
|
||||
|
||||
return QueryBatchBase.QueryResultType.Success;
|
||||
});
|
||||
}
|
||||
|
||||
List<ILogInvoker> invokers = new List<ILogInvoker>();
|
||||
|
||||
var task_log_data = MailBusinessLogHelper.toMailLogInfo(mail_doc);
|
||||
invokers.Add(new MailBusinessLog(task_log_data));
|
||||
batch.appendBusinessLogs(invokers);
|
||||
|
||||
result = await QueryHelper.sendQueryAndBusinessLog(batch);
|
||||
|
||||
if (result.isFail())
|
||||
{
|
||||
Log.getLogger().error($"system mail send error, {str_builder.ToString()}");
|
||||
return;
|
||||
}
|
||||
Log.getLogger().info($"system mail send success, {str_builder.ToString()}");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user