93 lines
2.7 KiB
C#
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
|
|
};
|
|
}
|
|
}
|