refactor(后台契约): 会员详情 plan/status/cycle_kind 收口为 token 枚举
- shared-contracts 新增 ProfileMembershipStatusToken(normal/active) - AdminProfileMembershipPayload 的 plan/status/cycle_kind 由 String 改为 ProfileMembershipPlanToken/ProfileMembershipStatusToken/ProfileMembershipCycleKindToken,未知值在反序列化即被拒(评审第 13 条) - module-runtime 补 RuntimeProfileMembershipStatus -> ProfileMembershipStatusToken 的 From 映射 - api-server 的 map_membership 改为直接 .into(),去掉 as_str().to_string()
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -1423,6 +1423,17 @@ impl From<shared_contracts::runtime::ProfileMembershipCycleKindToken>
|
||||
}
|
||||
}
|
||||
|
||||
impl From<RuntimeProfileMembershipStatus>
|
||||
for shared_contracts::runtime::ProfileMembershipStatusToken
|
||||
{
|
||||
fn from(value: RuntimeProfileMembershipStatus) -> Self {
|
||||
match value {
|
||||
RuntimeProfileMembershipStatus::Normal => Self::Normal,
|
||||
RuntimeProfileMembershipStatus::Active => Self::Active,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<RuntimeProfileMembershipModelAccess>
|
||||
for shared_contracts::runtime::ProfileMembershipModelAccessToken
|
||||
{
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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")]
|
||||
|
||||
Reference in New Issue
Block a user