Files
caliverse_server/BrokerApiCore/Common/Helpers.cs
2025-05-01 07:20:41 +09:00

93 lines
2.7 KiB
C#

namespace BrokerCore.Common;
using System.Security.Cryptography;
using BrokerBusinessLog;
using DbEntity;
using Entity.Actions;
using MetaAssets;
using ServerCommon;
using ServerCore; using ServerBase;
public class Helpers
{
public static string generateSecureKey(int keySizeInBytes = 32, bool isBase64 = true)
{
// 32바이트는 256비트 키를 의미합니다. (AES-256과 같은 암호화 알고리즘에 적합)
using var random_number_generator = RandomNumberGenerator.Create();
byte[] key = new byte[keySizeInBytes];
random_number_generator.GetBytes(key);
return isBase64 ? Convert.ToBase64String(key) : Convert.ToHexString(key);
}
public static MailSendOption createMailOptionByProductMeta(
ProductMetaData productMeta,
SystemMailMetaData mailMeta,
string receiverUserGuid,
string receiverNickName)
{
DateTime now = DateTimeHelper.Current;
var expire_date = now.AddSeconds(MetaHelper.GameConfigMeta.SystemMailStoragePeriod);
// if (productMeta.Storage_Period_First != 0)
// {
// expire_date = DateTime.UtcNow.AddMinutes(productMeta.Storage_Period_First);
// }
var mail_send_option = new MailSendOption
{
ReceiverUserGuid = receiverUserGuid,
ReceiverNickName = receiverNickName,
IsSystemMail = true,
IsTextByMetaData = true,
Title = mailMeta.Mail_Title,
Text = mailMeta.Mail_Desc,
ExpireDate = expire_date,
ItemList = getMailItems(productMeta).ToList(),
PackageOrderId = string.Empty,
};
return mail_send_option;
}
public static IEnumerable<MailItem> getMailItems(ProductMetaData productMetaData)
{
if (productMetaData.ItemID_First != 0)
{
return productMetaData.First_List.Select(itemMeta => new MailItem()
{
ItemId = (UInt32)itemMeta.Id,
Count = itemMeta.Value,
ProductId = (UInt32)productMetaData.Id,
isRepeatProduct = false
});
}
return new List<MailItem>();
}
public static PlanetItemExchangeLogData createFromExchangeOrderLog(PlanetItemExchangeOrder order)
{
return new PlanetItemExchangeLogData
{
OrderId = order.OrderId,
OrderStatus = order.OrderStatus.ToString(),
ExchangeMetaId = order.ExchangeMetaId,
ExchangeMetaAmount = order.ExchangeMetaAmount,
AccountId = order.AccountId,
UserGuid = order.UserGuid,
PlanetId = order.PlanetId,
SeasonId = order.SeasonId,
CaliverseItemType = order.CaliverseItemType.ToString(),
CaliverseItemId = order.CaliverseItemId,
CaliverseItemDeltaAmount = order.CaliverseItemDeltaAmount,
PlanetItemType = order.PlanetItemType.ToString(),
PlanetItemId = order.PlanetItemId,
PlanetItemDeltaAmount = order.PlanetItemDeltaAmount,
CreatedAt = order.CreatedAt,
CompletedAt = order.CompletedAt
};
}
}