초기커밋

This commit is contained in:
2025-05-01 07:20:41 +09:00
commit 98bb2e3c5c
2747 changed files with 646947 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
namespace BrokerCore.Services;
using DbEntity;
using Entity;
public interface IOrderCompletionStrategy
{
Task<PlanetItemExchangeOrder> completeOrder(
PlanetUserEntity planetUserEntity,
PlanetItemExchangeOrder order_created,
CancellationToken cancellationToken = default);
}

View File

@@ -0,0 +1,14 @@
using BrokerCore.DbEntity;
using MetaAssets;
namespace BrokerCore.Services;
public interface IOrderCreationStrategy
{
Task<(Result, PlanetItemExchangeOrder)> createOrder(
PlanetItemExchangeOrder order,
string planetServerType,
PlanetItemExchangePolicyMetaData exchangePolicy,
CancellationToken cancellationToken);
}

View File

@@ -0,0 +1,9 @@
using ServerCommon;
namespace BrokerCore.Services;
public interface IOrderStrategyProvider
{
IOrderCreationStrategy? getCreationStrategy(CaliverseItemType itemType);
IOrderCompletionStrategy? getCompletionStrategy(CaliverseItemType itemType);
}

View File

@@ -0,0 +1,54 @@
using Microsoft.Extensions.DependencyInjection;
using ServerCommon;
using System.Collections.Concurrent;
namespace BrokerCore.Services;
public class OrderStrategyProvider : IOrderStrategyProvider
{
private readonly IServiceProvider m_service_provider;
private readonly ConcurrentDictionary<CaliverseItemType, Type> m_creation_strategy_map;
private readonly ConcurrentDictionary<CaliverseItemType, Type> m_completion_strategy_map;
public OrderStrategyProvider(IServiceProvider serviceProvider)
{
m_service_provider = serviceProvider;
// 전략 맵핑 초기화
m_creation_strategy_map = new ConcurrentDictionary<CaliverseItemType, Type>
{
[CaliverseItemType.Currency] = typeof(CurrencyExchangeCreationStrategy),
[CaliverseItemType.CaliverseProduct] = typeof(ProductExchangeCreationStrategy)
};
m_completion_strategy_map = new ConcurrentDictionary<CaliverseItemType, Type>
{
[CaliverseItemType.Currency] = typeof(CurrencyOrderCompletionStrategy),
[CaliverseItemType.CaliverseProduct] = typeof(ProductOrderCompletionStrategy)
};
}
public IOrderCreationStrategy? getCreationStrategy(CaliverseItemType itemType)
{
if (m_creation_strategy_map.TryGetValue(itemType, out var strategy_type))
{
return m_service_provider.GetService(strategy_type) as IOrderCreationStrategy;
}
// 기본 전략 반환
return m_service_provider.GetService<CurrencyExchangeCreationStrategy>();
}
public IOrderCompletionStrategy? getCompletionStrategy(CaliverseItemType itemType)
{
if (m_completion_strategy_map.TryGetValue(itemType, out var strategy_type))
{
return m_service_provider.GetService(strategy_type) as IOrderCompletionStrategy;
}
// 기본 전략 반환
return m_service_provider.GetService<CurrencyOrderCompletionStrategy>();
}
}