초기커밋
This commit is contained in:
@@ -0,0 +1,190 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
using ServerCore; using ServerBase;
|
||||
using ServerCommon;
|
||||
|
||||
|
||||
using META_ID = System.UInt32;
|
||||
|
||||
|
||||
namespace GameServer
|
||||
{
|
||||
public static class LandAuctionReservationHelper
|
||||
{
|
||||
//=========================================================================================
|
||||
// 예약된 랜드 경매 정보가 있는지 확인하고
|
||||
// 있다면 활성화중인 랜드 경매의 종료 상태를 확인하여
|
||||
// 종료 상태라면 LandAuctionActivityDoc.AuctionNumber를 예약된 정보로 변경 및 저장 한다.
|
||||
//=========================================================================================
|
||||
public static async Task<(Result, bool)> configureNextLandAuctionToDb(META_ID landMetaId)
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
var server_logic = GameServerApp.getServerLogic();
|
||||
var db_connector = server_logic.getDynamoDbClient();
|
||||
|
||||
var last_auction_number = 0;
|
||||
|
||||
(result, var found_activity_doc) = await LandAuctionDbHelper.readLandAuctionActivityDocFromDb(landMetaId, false);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to readLandAuctionActivityDocFromDb() !!! : {result.toBasicString()} - landMetaId:{landMetaId}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return (result, false);
|
||||
}
|
||||
if (null != found_activity_doc)
|
||||
{
|
||||
// 현재 활성화중인 랜드 경매 종료 상태를 체크 한다.
|
||||
var curr_activity_attrib = found_activity_doc.getAttrib<LandAuctionActivityAttrib>();
|
||||
NullReferenceCheckHelper.throwIfNull(curr_activity_attrib, () => $"curr_activity_attrib is null !!! - landMetaId:{landMetaId}");
|
||||
var activity_auction_number = curr_activity_attrib.AuctionNumber;
|
||||
ConditionValidCheckHelper.throwIfFalseWithCondition( () => 0 < activity_auction_number
|
||||
, () => $"Invalid AuctionNubmer !!! : 0 < activityAuctionNumber:{activity_auction_number}"
|
||||
+ $" - landMetaId:{landMetaId}");
|
||||
last_auction_number = activity_auction_number;
|
||||
|
||||
(result, var last_registry_doc) = await LandAuctionDbHelper.readLandAuctionRegistryDocFromDb(landMetaId, last_auction_number);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to readLandAuctionRegistryDocFromDb() !!! : {result.toBasicString()} - landMetaId:{landMetaId}, lastAuctionNumber:{last_auction_number}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return (result, false);
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(last_registry_doc, () => $"last_registry_doc is null !!! - landMetaId:{landMetaId}, lastAuctionNumber:{last_auction_number}");
|
||||
var last_registry_attrib = last_registry_doc.getAttrib<LandAuctionRegistryAttrib>();
|
||||
NullReferenceCheckHelper.throwIfNull(last_registry_attrib, () => $"last_registry_attrib is null !!! - landMetaId:{landMetaId}, lastAuctionNumber:{last_auction_number}");
|
||||
|
||||
if(LandAuctionResult.None == last_registry_attrib.LandAuctionResult)
|
||||
{
|
||||
if (true == LandAuctionManager.It.hasActivitingLandAuction(landMetaId))
|
||||
{
|
||||
// 아직 경매 처리 진행전 이다 !!!
|
||||
return (result, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 활성화 목록에 로딩을 해야 한다 !!!
|
||||
return (result, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 다음 예약된 경매가 있는지 체크 한다.
|
||||
// 있다면 LandAuctionActivityDoc.AuctionNumber에 설정 한다. !!!
|
||||
var next_auction_number = last_auction_number + 1;
|
||||
(result, var found_registry_doc) = await LandAuctionDbHelper.readLandAuctionRegistryDocFromDb(landMetaId, next_auction_number, false);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to readLandAuctionRegistryDocFromDb() !!! : {result.toBasicString()} - landMetaId:{landMetaId}, auctionNumber:{next_auction_number}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return (result, false);
|
||||
}
|
||||
if (null == found_registry_doc)
|
||||
{
|
||||
return (result, false);
|
||||
}
|
||||
var registry_attrib = found_registry_doc.getAttrib<LandAuctionRegistryAttrib>();
|
||||
NullReferenceCheckHelper.throwIfNull(registry_attrib, () => $"registry_attrib is null !!! - landMetaId:{landMetaId}, auctionNumber:{next_auction_number}");
|
||||
|
||||
result = registry_attrib.checkValidLandAuctionRegistry();
|
||||
if (result.isFail())
|
||||
{
|
||||
return (result, false);
|
||||
}
|
||||
|
||||
if (null == found_activity_doc)
|
||||
{
|
||||
var new_activity_doc = new LandAuctionActivityDoc(landMetaId);
|
||||
found_activity_doc = new_activity_doc;
|
||||
}
|
||||
|
||||
var activity_attrib = found_activity_doc.getAttrib<LandAuctionActivityAttrib>();
|
||||
NullReferenceCheckHelper.throwIfNull(activity_attrib, () => $"activity_attrib is null !!! - landMetaId:{landMetaId}");
|
||||
|
||||
if (next_auction_number <= activity_attrib.AuctionNumber)
|
||||
{
|
||||
// 이미 next_auction_number이상으로 설정 되었다면 갱신할 필요가 없다 !!!
|
||||
return (result, false);
|
||||
}
|
||||
|
||||
activity_attrib.AuctionNumber = next_auction_number;
|
||||
|
||||
result = await db_connector.simpleUpsertDocumentWithDocType(found_activity_doc);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to simpleInsertDocumentWithDocType<LandAuctionActivityDoc> !!! : {result.toBasicString()}, auctionNumber:{next_auction_number} - landMetaId:{landMetaId}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return (result, false);
|
||||
}
|
||||
|
||||
LandAuctionBusinessLogHelper.writeBusinessLogByLandAuctionActivity(found_activity_doc);
|
||||
|
||||
err_msg = $"Configure Next LandAuctionKey !!!, nextAuctionNumber:{next_auction_number} - landMetaId:{landMetaId}";
|
||||
Log.getLogger().debug(err_msg);
|
||||
|
||||
return (result, true);
|
||||
}
|
||||
|
||||
public static async Task<(Result, Int32)> getNextLandAuctionNumber(META_ID landMetaId)
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
var server_logic = GameServerApp.getServerLogic();
|
||||
var db_connector = server_logic.getDynamoDbClient();
|
||||
|
||||
var last_auction_number = 0;
|
||||
|
||||
(result, var found_activity_doc) = await LandAuctionDbHelper.readLandAuctionActivityDocFromDb(landMetaId, false);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to readLandAuctionActivityDocFromDb() !!! : {result.toBasicString()} - landMetaId:{landMetaId}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return (result, 0);
|
||||
}
|
||||
if (null != found_activity_doc)
|
||||
{
|
||||
var activity_attrib = found_activity_doc.getAttrib<LandAuctionActivityAttrib>();
|
||||
NullReferenceCheckHelper.throwIfNull(activity_attrib, () => $"activity_attrib is null !!! - landMetaId:{landMetaId}");
|
||||
var activity_auction_number = activity_attrib.AuctionNumber;
|
||||
ConditionValidCheckHelper.throwIfFalseWithCondition( () => 0 < activity_auction_number
|
||||
, () => $"Invalid AuctionNubmer !!! : 0 < activityAuctionNumber:{activity_auction_number}"
|
||||
+ $" - landMetaId:{landMetaId}" );
|
||||
last_auction_number = activity_auction_number;
|
||||
}
|
||||
|
||||
var next_auction_number = 0;
|
||||
var is_continue = true;
|
||||
|
||||
while (is_continue)
|
||||
{
|
||||
next_auction_number = last_auction_number + 1;
|
||||
|
||||
(result, var found_registry_doc) = await LandAuctionDbHelper.readLandAuctionRegistryDocFromDb(landMetaId, next_auction_number, false);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to readLandAuctionRegistryDocFromDb() !!! : {result.toBasicString()} - landMetaId:{landMetaId}, auctionNumber:{next_auction_number}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return (result, 0);
|
||||
}
|
||||
|
||||
if (null == found_registry_doc)
|
||||
{
|
||||
is_continue = false;
|
||||
break;
|
||||
}
|
||||
|
||||
last_auction_number = next_auction_number;
|
||||
}
|
||||
|
||||
return (result, next_auction_number);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user