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 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(); } 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 }; } }