diff --git a/server-rs/crates/api-server/src/admin_recharge.rs b/server-rs/crates/api-server/src/admin_recharge.rs index 805ca679c..1f64311a4 100644 --- a/server-rs/crates/api-server/src/admin_recharge.rs +++ b/server-rs/crates/api-server/src/admin_recharge.rs @@ -1014,9 +1014,9 @@ fn map_membership_order_change( fn map_membership(record: RuntimeProfileMembershipRecord) -> AdminProfileMembershipPayload { AdminProfileMembershipPayload { - plan: record.plan.as_str().to_string(), - status: record.status.as_str().to_string(), - cycle_kind: record.cycle_kind.as_str().to_string(), + plan: record.plan.into(), + status: record.status.into(), + cycle_kind: record.cycle_kind.into(), cycle_index: record.cycle_index, cycle_count: record.cycle_count, cycle_granted_points: record.cycle_granted_points, diff --git a/server-rs/crates/module-runtime/src/domain.rs b/server-rs/crates/module-runtime/src/domain.rs index 0bfe73391..3dbbbe694 100644 --- a/server-rs/crates/module-runtime/src/domain.rs +++ b/server-rs/crates/module-runtime/src/domain.rs @@ -1423,6 +1423,17 @@ impl From } } +impl From + for shared_contracts::runtime::ProfileMembershipStatusToken +{ + fn from(value: RuntimeProfileMembershipStatus) -> Self { + match value { + RuntimeProfileMembershipStatus::Normal => Self::Normal, + RuntimeProfileMembershipStatus::Active => Self::Active, + } + } +} + impl From for shared_contracts::runtime::ProfileMembershipModelAccessToken { diff --git a/server-rs/crates/shared-contracts/src/admin.rs b/server-rs/crates/shared-contracts/src/admin.rs index a0ff50bbd..adf1c2b46 100644 --- a/server-rs/crates/shared-contracts/src/admin.rs +++ b/server-rs/crates/shared-contracts/src/admin.rs @@ -5,6 +5,7 @@ use serde_json::Value; use crate::runtime::{ ProfileMembershipChangeKindToken, ProfileMembershipCycleKindToken, ProfileMembershipPlanToken, + ProfileMembershipStatusToken, }; #[cfg(any())] @@ -1335,9 +1336,9 @@ pub struct AdminUserDetailResponse { #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct AdminProfileMembershipPayload { - pub plan: String, - pub status: String, - pub cycle_kind: String, + pub plan: ProfileMembershipPlanToken, + pub status: ProfileMembershipStatusToken, + pub cycle_kind: ProfileMembershipCycleKindToken, pub cycle_index: u32, pub cycle_count: u32, pub cycle_granted_points: u64, diff --git a/server-rs/crates/shared-contracts/src/runtime.rs b/server-rs/crates/shared-contracts/src/runtime.rs index fc576d464..3e7f3e3db 100644 --- a/server-rs/crates/shared-contracts/src/runtime.rs +++ b/server-rs/crates/shared-contracts/src/runtime.rs @@ -289,6 +289,23 @@ impl ProfileMembershipCycleKindToken { } } +/// 会员状态 token;与前端 `ProfileMembershipStatus` 联合类型一一对应。 +#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "snake_case")] +pub enum ProfileMembershipStatusToken { + Normal, + Active, +} + +impl ProfileMembershipStatusToken { + pub fn as_str(&self) -> &'static str { + match self { + Self::Normal => "normal", + Self::Active => "active", + } + } +} + /// 模型权限 token;与前端 `ProfileMembershipModelAccess` 一一对应。 #[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "snake_case")]