초기커밋

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,226 @@

using Newtonsoft.Json;
using StackExchange.Redis;
using ServerCore;
using ServerBase;
using META_ID = System.UInt32;
using USER_GUID = System.String;
using LAND_AUCTION_NUMBER = System.Int32;
namespace ServerCommon;
public class NormalBidHighestUserCache : CacheBase
{
public META_ID LandMetaId { get; set; } = 0;
public LAND_AUCTION_NUMBER AuctionNumber { get; set; } = 0;
//=============================================================================================
// 일반 입찰 최고 입찰자 정보
//=============================================================================================
public double NormalHighestBidPrice { get; set; } = 0; // 일반 입찰 최고가
public string NormalHighestBidUserGuid { get; set; } = string.Empty; // 일반 입찰 최고가 유저 식별키
public string NormalHighestBidUserNickname { get; set; } = string.Empty; // 일반 입찰 최고가 유저 닉네임
public DateTime HighestRankVersionTime { get; set; } = DateTimeHelper.MinTime; // 최고 입찰자 순위 버전 정보
public NormalBidHighestUserCache()
{ }
}
public class LandAuctionNormalBidHighestUserCacheRequest: RedisRequestSharedBase
{
private readonly META_ID m_land_meta_id;
private NormalBidHighestUserCache? m_normal_bid_highest_user_cache;
public LandAuctionNormalBidHighestUserCacheRequest(META_ID landMetaId, RedisConnector redisConnector)
: base(landMetaId.ToString(), redisConnector)
{
m_land_meta_id = landMetaId;
}
public LandAuctionNormalBidHighestUserCacheRequest(NormalBidHighestUserCache cache, RedisConnector redisConnector)
: base(cache.LandMetaId.ToString(), redisConnector)
{
m_land_meta_id = cache.LandMetaId;
m_normal_bid_highest_user_cache = cache;
}
public async Task<Result> upsertNormalBidHighestUser(double cacheExpiryMinutes)
{
var result = new Result();
var err_msg = string.Empty;
try
{
result = await onPrepareRequest();
if (result.isFail())
{
return result;
}
var cache_json_string = getNormalBidHighestUserCache()?.toJsonString();
var database = getDatabase();
NullReferenceCheckHelper.throwIfNull(database, () => $"database is null !!! - {toBasicString()}");
var expiry = TimeSpan.FromMinutes(cacheExpiryMinutes);
if (expiry.TotalMilliseconds <= 0) expiry = TimeSpan.FromMilliseconds(1);
if (false == await database.StringSetAsync(getKey(), cache_json_string, expiry))
{
err_msg = $"Failed to set NormalBidHighestUserCache to Redis !!! : redisKey:{getKey()} - {toBasicString()}";
result.setFail(ServerErrorCode.LandAuctionRedisCacheSetFailed, err_msg);
Log.getLogger().error(err_msg);
return result;
}
err_msg = $"NormalBidHighestUserCache save to Cache !!! : redisKey:{getKey()} - {toBasicString()}";
Log.getLogger().info(err_msg);
}
catch (Exception e)
{
var error_code = ServerErrorCode.TryCatchException;
err_msg = $"Failed to process in upsertLandAuction() !!! : errorCode{error_code}, exception:{e} - redisKey:{getKey()}, {toBasicString()}";
result.setFail(error_code, err_msg);
Log.getLogger().error(result.toBasicString());
}
return result;
}
public async Task<Result> fetchNormalBidHighestUser()
{
var result = new Result();
var err_msg = string.Empty;
try
{
result = await onPrepareRequest();
if (result.isFail())
{
return result;
}
var database = getDatabase();
NullReferenceCheckHelper.throwIfNull(database, () => $"database is null !!!");
var redis_value = await database.StringGetAsync(getKey(), CommandFlags.PreferReplica);
if (true == redis_value.HasValue)
{
var curr_cache = JsonConvert.DeserializeObject<NormalBidHighestUserCache>(redis_value.ToString());
if (null == curr_cache)
{
err_msg = $"Failed to convert DeserializeObject of Json !!! : {redis_value.ToString()} - {toBasicString()}";
result.setFail(ServerErrorCode.JsonConvertDeserializeFailed, err_msg);
Log.getLogger().error(err_msg);
return result;
}
m_normal_bid_highest_user_cache = curr_cache;
err_msg = $"NormalBidHighestUserCache fetch from Cache !!! : redisKey:{getKey()} - {toBasicString()}";
Log.getLogger().info(err_msg);
}
}
catch (Exception e)
{
var error_code = ServerErrorCode.TryCatchException;
err_msg = $"Failed to process in fetchNormalBidHighestUserCache() !!! : errorCode{error_code}, exception:{e} - redisKey:{getKey()}, {toBasicString()}";
result.setFail(error_code, err_msg);
Log.getLogger().error(result.toBasicString());
}
return result;
}
public async Task<Result> deleteNormalBidHighestUser()
{
var result = new Result();
string err_msg;
try
{
result = await onPrepareRequest();
if (result.isFail())
{
return result;
}
m_normal_bid_highest_user_cache = null;
var database = getDatabase();
var is_success = await database.KeyDeleteAsync(getKey());
if (false == is_success)
{
err_msg = $"Failed to KeyDeleteAsync() !!! : redisKey:{getKey()} - {toBasicString()}";
Log.getLogger().debug(err_msg);
return result;
}
err_msg = $"NormalBidHighestUserCache deleted from Cache - redisKey:{getKey()}, {toBasicString()}";
Log.getLogger().debug(err_msg);
}
catch (Exception e)
{
var error_code = ServerErrorCode.TryCatchException;
err_msg = $"Failed to process in deleteNormalBidHighestUser() !!! : errorCode{error_code}, execption:{e} - redisKey:{getKey()}, {toBasicString()}";
result.setFail(error_code, err_msg);
Log.getLogger().error(result.toBasicString());
}
return result;
}
protected override string onMakeKey()
{
return $"{{{m_land_meta_id}}}:land_auction_normal_bid_highest_user";
}
public async Task<bool> isExistKey()
{
try
{
var result = await onPrepareRequest();
if (result.isFail()) return false;
var database = getDatabase();
return await database.KeyExistsAsync(onMakeKey());
}
catch (Exception e)
{
var error_code = ServerErrorCode.TryCatchException;
var err_msg = $"Failed to process in isExistKey() !!! : errorCode{error_code}, execption:{e} - redisKey:{getKey()}, {toBasicString()}";
Log.getLogger().error(err_msg);
}
return false;
}
public string toKey()
{
return onMakeKey();
}
public NormalBidHighestUserCache? getNormalBidHighestUserCache() => m_normal_bid_highest_user_cache;
public void setNormalBidHighestUserCache(NormalBidHighestUserCache cache) => m_normal_bid_highest_user_cache = cache;
public override string toBasicString()
{
return $"{this.getTypeName()} - LandMetaId:{m_land_meta_id}";
}
}