Files
caliverse_server/ServerCommon/Doc/UserBase/ShopProductTradingMeterDoc.cs
2025-05-01 07:20:41 +09:00

92 lines
2.9 KiB
C#

using Google.Protobuf.WellKnownTypes;
using Newtonsoft.Json;
using ServerCore; using ServerBase;
using USER_GUID = System.String;
namespace ServerCommon
{
public class ShopProductTradingMeterSubAttrib
{
[JsonProperty("product_id")]
public int ProductId { get; set; }
[JsonProperty("left_count")]
public double LeftCount { get; set; }
}
public class ShopProductTradingMeterAttrib : AttribBase
{
[JsonProperty("shop_id")]
public int ShopId { get; set; }
[JsonProperty("shop_product_trading_meter_subs")]
public List<ShopProductTradingMeterSubAttrib> ShopProductTradingMeterSubs { get; set; }= new();
[JsonProperty("end_time")]
public Timestamp EndTime { get; set; } = DateTimeHelper.MinTime.ToTimestamp();
[JsonProperty("current_renewal_count")]
public Int32 CurrentRenewalCount { get; set; } = 0;
public void onClear()
{
ShopId = 0;
EndTime = DateTimeHelper.MinTime.ToTimestamp();
CurrentRenewalCount = 0;
ShopProductTradingMeterSubs.Clear();
}
public ShopProductTradingMeterAttrib()
: base(typeof(ShopProductTradingMeterAttrib).Name)
{ }
}
//=============================================================================================
// PK(Partition Key) : "shop_product_trading_meter#user_guid"
// SK(Sort Key) : "shop_id"
// DocType : ShopProductTradingMeterDoc
// ShopProductTradingMeterAttrib : {}
// ...
//=============================================================================================
public class ShopProductTradingMeterDoc : DynamoDbDocBase
{
public ShopProductTradingMeterDoc() : base(nameof(ShopProductTradingMeterDoc))
{
appendAttribWrapperAll();
}
public ShopProductTradingMeterDoc(USER_GUID userGuid, int shop_id) : base(nameof(ShopProductTradingMeterDoc))
{
onCustomCreate(userGuid, shop_id);
}
private void onCustomCreate(USER_GUID userGuid, int shop_id)
{
setCombinationKeyForPK(userGuid);
setCombinationKeyForSK(shop_id.ToString());
appendAttribWrapperAll();
fillUpPrimaryKey(onMakePK(), onMakeSK());
}
private void appendAttribWrapperAll()
{
appendAttribWrapper(new AttribWrapper<ShopProductTradingMeterAttrib>());
}
protected override string onGetPrefixOfPK()
{
return "shop_product_trading_meter#";
}
protected override ServerErrorCode onCheckAndSetSK(string sortKey)
{
getPrimaryKey().fillUpSK(sortKey);
setCombinationKeyForSK(sortKey);
return ServerErrorCode.Success;
}
}
}