From 4efbfa948a31f949004f448dc11fefb97519f9af Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sun, 21 Sep 2025 01:33:33 +0800 Subject: [PATCH] :bug: Fix missing fields --- DysonNetwork.Pass/Wallet/Subscription.cs | 20 ++++++++++++++++---- DysonNetwork.Shared/Data/Subscription.cs | 6 +++++- DysonNetwork.Shared/Proto/wallet.proto | 8 ++++++++ 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/DysonNetwork.Pass/Wallet/Subscription.cs b/DysonNetwork.Pass/Wallet/Subscription.cs index 0aecd6e..0952ff9 100644 --- a/DysonNetwork.Pass/Wallet/Subscription.cs +++ b/DysonNetwork.Pass/Wallet/Subscription.cs @@ -213,13 +213,15 @@ public class Subscription : ModelBase Status = (Shared.Proto.SubscriptionStatus)Status, PaymentMethod = PaymentMethod, PaymentDetails = PaymentDetails.ToProtoValue(), - BasePrice = BasePrice.ToString(), + BasePrice = BasePrice.ToString(CultureInfo.InvariantCulture), CouponId = CouponId?.ToString(), Coupon = Coupon?.ToProtoValue(), RenewalAt = RenewalAt?.ToTimestamp(), AccountId = AccountId.ToString(), IsAvailable = IsAvailable, - FinalPrice = FinalPrice.ToString(), + FinalPrice = FinalPrice.ToString(CultureInfo.InvariantCulture), + CreatedAt = CreatedAt.ToTimestamp(), + UpdatedAt = UpdatedAt.ToTimestamp() }; public static Subscription FromProtoValue(Shared.Proto.Subscription proto) => new() @@ -238,6 +240,8 @@ public class Subscription : ModelBase Coupon = proto.Coupon is not null ? Coupon.FromProtoValue(proto.Coupon) : null, RenewalAt = proto.RenewalAt?.ToInstant(), AccountId = Guid.Parse(proto.AccountId), + CreatedAt = proto.CreatedAt.ToInstant(), + UpdatedAt = proto.UpdatedAt.ToInstant() }; } @@ -264,8 +268,8 @@ public class SubscriptionReferenceObject : ModelBase /// Gets the human-readable name of the subscription type if available. /// [NotMapped] - public string? DisplayName => SubscriptionTypeData.SubscriptionHumanReadable.TryGetValue(Identifier, out var name) - ? name + public string? DisplayName => SubscriptionTypeData.SubscriptionHumanReadable.TryGetValue(Identifier, out var name) + ? name : null; public Shared.Proto.SubscriptionReferenceObject ToProtoValue() => new() @@ -283,6 +287,8 @@ public class SubscriptionReferenceObject : ModelBase RenewalAt = RenewalAt?.ToTimestamp(), AccountId = AccountId.ToString(), DisplayName = DisplayName, + CreatedAt = CreatedAt.ToTimestamp(), + UpdatedAt = UpdatedAt.ToTimestamp() }; public static SubscriptionReferenceObject FromProtoValue(Shared.Proto.SubscriptionReferenceObject proto) => new() @@ -299,6 +305,8 @@ public class SubscriptionReferenceObject : ModelBase FinalPrice = decimal.Parse(proto.FinalPrice), RenewalAt = proto.RenewalAt?.ToInstant(), AccountId = Guid.Parse(proto.AccountId), + CreatedAt = proto.CreatedAt.ToInstant(), + UpdatedAt = proto.UpdatedAt.ToInstant() }; } @@ -377,6 +385,8 @@ public class Coupon : ModelBase DiscountAmount = DiscountAmount?.ToString(), DiscountRate = DiscountRate, MaxUsage = MaxUsage, + CreatedAt = CreatedAt.ToTimestamp(), + UpdatedAt = UpdatedAt.ToTimestamp() }; public static Coupon FromProtoValue(Shared.Proto.Coupon proto) => new() @@ -389,5 +399,7 @@ public class Coupon : ModelBase DiscountAmount = proto.HasDiscountAmount ? decimal.Parse(proto.DiscountAmount) : null, DiscountRate = proto.DiscountRate, MaxUsage = proto.MaxUsage, + CreatedAt = proto.CreatedAt.ToInstant(), + UpdatedAt = proto.UpdatedAt.ToInstant() }; } \ No newline at end of file diff --git a/DysonNetwork.Shared/Data/Subscription.cs b/DysonNetwork.Shared/Data/Subscription.cs index 8498b06..1f53084 100644 --- a/DysonNetwork.Shared/Data/Subscription.cs +++ b/DysonNetwork.Shared/Data/Subscription.cs @@ -3,7 +3,7 @@ using NodaTime.Serialization.Protobuf; namespace DysonNetwork.Shared.Data; -public class SubscriptionReference +public class SubscriptionReference : ModelBase { public Guid Id { get; set; } public string Identifier { get; set; } = string.Empty; @@ -30,6 +30,8 @@ public class SubscriptionReference RenewalAt = proto.RenewalAt?.ToInstant(), Status = (SubscriptionReferenceStatus)proto.Status, AccountId = Guid.Parse(proto.AccountId), + CreatedAt = proto.CreatedAt.ToInstant(), + UpdatedAt = proto.UpdatedAt.ToInstant(), }; } @@ -46,6 +48,8 @@ public class SubscriptionReference EndedAt = EndedAt?.ToTimestamp(), RenewalAt = RenewalAt?.ToTimestamp(), AccountId = AccountId.ToString(), + CreatedAt = CreatedAt.ToTimestamp(), + UpdatedAt = UpdatedAt.ToTimestamp(), Status = Status switch { SubscriptionReferenceStatus.Unpaid => Proto.SubscriptionStatus.Unpaid, diff --git a/DysonNetwork.Shared/Proto/wallet.proto b/DysonNetwork.Shared/Proto/wallet.proto index b91debb..841741b 100644 --- a/DysonNetwork.Shared/Proto/wallet.proto +++ b/DysonNetwork.Shared/Proto/wallet.proto @@ -50,6 +50,8 @@ message Subscription { bool is_available = 15; // Using string for decimal to avoid precision loss. string final_price = 16; + google.protobuf.Timestamp created_at = 17; + google.protobuf.Timestamp updated_at = 18; } message SubscriptionReferenceObject { @@ -68,6 +70,8 @@ message SubscriptionReferenceObject { optional google.protobuf.Timestamp renewal_at = 11; string account_id = 12; optional string display_name = 13; + google.protobuf.Timestamp created_at = 14; + google.protobuf.Timestamp updated_at = 15; } message PaymentDetails { @@ -85,6 +89,8 @@ message Coupon { optional string discount_amount = 6; optional google.protobuf.DoubleValue discount_rate = 7; optional google.protobuf.Int32Value max_usage = 8; + google.protobuf.Timestamp created_at = 9; + google.protobuf.Timestamp updated_at = 10; } service WalletService { @@ -163,6 +169,8 @@ message Transaction { string amount = 5; google.protobuf.StringValue remarks = 6; TransactionType type = 7; + google.protobuf.Timestamp created_at = 8; + google.protobuf.Timestamp updated_at = 9; } enum TransactionType {