초기커밋
This commit is contained in:
154
ServerCommon/Entity/Attribute/CaliumStorageAttribute.cs
Normal file
154
ServerCommon/Entity/Attribute/CaliumStorageAttribute.cs
Normal file
@@ -0,0 +1,154 @@
|
||||
using Newtonsoft.Json;
|
||||
using ServerCore; using ServerBase;
|
||||
|
||||
namespace ServerCommon;
|
||||
|
||||
public class CaliumStorageAttribute : EntityAttributeBase, ICopyEntityAttributeFromDoc, IMergeWithEntityAttribute
|
||||
{
|
||||
[JsonProperty]
|
||||
public double ConverterTotalCalium { get; set; }
|
||||
|
||||
[JsonProperty]
|
||||
public double DailyConvertRate { get; set; }
|
||||
|
||||
[JsonProperty]
|
||||
public double OperatorTotalCalium { get; set; }
|
||||
|
||||
[JsonProperty]
|
||||
public int DailyApplyEpoch { get; set; }
|
||||
|
||||
[JsonProperty]
|
||||
public double DailyInflationRate { get; set; }
|
||||
|
||||
[JsonProperty]
|
||||
public DateTime DailyPivotDate { get; set; } = DateTimeHelper.MinTime;
|
||||
|
||||
public CaliumStorageAttribute(EntityBase owner) : base(owner, false) {}
|
||||
|
||||
public override void onClear()
|
||||
{
|
||||
ConverterTotalCalium = 0.0;
|
||||
DailyConvertRate = 0.0;
|
||||
OperatorTotalCalium = 0.0;
|
||||
DailyApplyEpoch = 0;
|
||||
DailyInflationRate = 0.0;
|
||||
DailyPivotDate = DateTimeHelper.MinTime;
|
||||
|
||||
getAttributeState().reset();
|
||||
}
|
||||
|
||||
public override EntityAttributeBase onCloned()
|
||||
{
|
||||
var cloned = new CaliumStorageAttribute(getOwner());
|
||||
cloned.ConverterTotalCalium = ConverterTotalCalium;
|
||||
cloned.DailyConvertRate = DailyConvertRate;
|
||||
cloned.OperatorTotalCalium = OperatorTotalCalium;
|
||||
cloned.DailyApplyEpoch = DailyApplyEpoch;
|
||||
cloned.DailyInflationRate = DailyInflationRate;
|
||||
cloned.DailyPivotDate = DailyPivotDate;
|
||||
|
||||
return cloned;
|
||||
}
|
||||
|
||||
public override IEntityAttributeTransactor onNewEntityAttributeTransactor()
|
||||
{
|
||||
return new CaliumStorageAttributeTransactor(getOwner());
|
||||
}
|
||||
|
||||
public Result onMerge(EntityAttributeBase otherEntityAttribute)
|
||||
{
|
||||
var owner = getOwner();
|
||||
ArgumentNullReferenceCheckHelper.throwIfNull(otherEntityAttribute, () => $"otherEntityAttribute is null !!! - {owner.toBasicString()}");
|
||||
|
||||
var result = new Result();
|
||||
string err_msg;
|
||||
|
||||
//=====================================================================================
|
||||
// OtherAttribute => Attribute
|
||||
//=====================================================================================
|
||||
var calium_storage_attribute = otherEntityAttribute as CaliumStorageAttribute;
|
||||
if (null == calium_storage_attribute)
|
||||
{
|
||||
err_msg = $"Failed to cast CaliumAttribute !!!, calium_storage_attribute is null - {toBasicString()}, {owner.toBasicString()}";
|
||||
result.setFail(ServerErrorCode.ClassTypeCastIsNull, err_msg);
|
||||
Log.getLogger().error(result.toBasicString());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
ConverterTotalCalium = calium_storage_attribute.ConverterTotalCalium;
|
||||
DailyConvertRate = calium_storage_attribute.DailyConvertRate;
|
||||
OperatorTotalCalium = calium_storage_attribute.OperatorTotalCalium;
|
||||
DailyApplyEpoch = calium_storage_attribute.DailyApplyEpoch;
|
||||
DailyInflationRate = calium_storage_attribute.DailyInflationRate;
|
||||
DailyPivotDate = calium_storage_attribute.DailyPivotDate;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public bool copyEntityAttributeFromDoc(DynamoDbDocBase? newDocBase)
|
||||
{
|
||||
var owner = getOwner();
|
||||
|
||||
var calium_storage_doc = newDocBase as CaliumStorageDoc;
|
||||
if (null == calium_storage_doc)
|
||||
{
|
||||
var err_msg = $"calium_doc is null !!!, in copyEntityAttributeFromDoc() - docName:{nameof(CaliumStorageDoc)} - {owner.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return false;
|
||||
}
|
||||
|
||||
//=====================================================================================
|
||||
// Origin Doc => Attribute
|
||||
//=====================================================================================
|
||||
var calium_storage_attrib = calium_storage_doc.getAttrib<CaliumStorageAttrib>();
|
||||
NullReferenceCheckHelper.throwIfNull(calium_storage_attrib, () => $"calium_storage_attrib is null !!! - {owner.toBasicString()}");
|
||||
|
||||
ConverterTotalCalium = calium_storage_attrib.ConverterStorage.TotalCalium;
|
||||
DailyConvertRate = calium_storage_attrib.ConverterStorage.DailyConvertRate;
|
||||
DailyPivotDate = calium_storage_attrib.DailyPivotDate;
|
||||
DailyApplyEpoch = calium_storage_attrib.DailyEpoch;
|
||||
|
||||
OperatorTotalCalium = calium_storage_attrib.OperatorStorage.TotalCalium;
|
||||
|
||||
DailyInflationRate = calium_storage_attrib.ExchangerStorage.DailyInflationRate;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class CaliumStorageAttributeTransactor : EntityAttributeTransactorBase<CaliumAttribute>, ICopyEntityAttributeTransactorFromEntityAttribute
|
||||
{
|
||||
public CaliumStorageAttributeTransactor(EntityBase owner) : base(owner) { }
|
||||
|
||||
public bool copyEntityAttributeTransactorFromEntityAttribute(EntityAttributeBase? entityAttributeBase)
|
||||
{
|
||||
string err_msg;
|
||||
|
||||
var copy_from_calium_storage_attribute = entityAttributeBase as CaliumStorageAttribute;
|
||||
|
||||
if (null == copy_from_calium_storage_attribute)
|
||||
{
|
||||
err_msg = $"Failed to copyEntityAttributeTransactorFromEntityAttribute() !!!, copy_from_calium_storage_attribute is null :{nameof(CaliumAttribute)}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return false;
|
||||
}
|
||||
|
||||
var copy_to_calium_storage_attribute = getClonedEntityAttribute() as CaliumStorageAttribute;
|
||||
if (null == copy_to_calium_storage_attribute)
|
||||
{
|
||||
err_msg = $"Failed to copyEntityAttributeTransactorFromEntityAttribute() !!!, copy_to_calium_storage_attribute is null :{nameof(CaliumAttribute)}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return false;
|
||||
}
|
||||
|
||||
copy_to_calium_storage_attribute.ConverterTotalCalium = copy_from_calium_storage_attribute.ConverterTotalCalium;
|
||||
copy_to_calium_storage_attribute.DailyConvertRate = copy_from_calium_storage_attribute.DailyConvertRate;
|
||||
copy_to_calium_storage_attribute.OperatorTotalCalium = copy_from_calium_storage_attribute.OperatorTotalCalium;
|
||||
copy_to_calium_storage_attribute.DailyApplyEpoch = copy_from_calium_storage_attribute.DailyApplyEpoch;
|
||||
copy_to_calium_storage_attribute.DailyInflationRate = copy_from_calium_storage_attribute.DailyInflationRate;
|
||||
copy_to_calium_storage_attribute.DailyPivotDate = copy_from_calium_storage_attribute.DailyPivotDate;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user