From be2e430fcccfeebb7720b6874e13de00b21648f8 Mon Sep 17 00:00:00 2001 From: mokurin000 <1348292515a@gmail.com> Date: Wed, 30 Jul 2025 22:40:41 +0800 Subject: [PATCH] chore: add getUserDataApi --- .../src/title/model/get_user_data_api/mod.rs | 131 ++++++++++++++++++ sdgb-api/src/title/model/mod.rs | 6 + .../src/title/model/user_login_api/mod.rs | 31 +++++ 3 files changed, 168 insertions(+) create mode 100644 sdgb-api/src/title/model/get_user_data_api/mod.rs create mode 100644 sdgb-api/src/title/model/user_login_api/mod.rs diff --git a/sdgb-api/src/title/model/get_user_data_api/mod.rs b/sdgb-api/src/title/model/get_user_data_api/mod.rs new file mode 100644 index 0000000..b86be98 --- /dev/null +++ b/sdgb-api/src/title/model/get_user_data_api/mod.rs @@ -0,0 +1,131 @@ +use serde::Deserialize; +use serde::Serialize; + +pub struct GetUserDataApi {} + +#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct GetUserDataApiResp { + pub user_id: u32, + pub user_data: UserData, + pub ban_state: u32, +} + +#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct UserData { + /// your username, in full-width character + pub user_name: String, + /// should be `1` + pub is_net_member: i64, + /// maimile, 舞里程 + pub point: i64, + /// 总获取过舞里程 + pub total_point: i64, + /// DX RATING + pub player_rating: i64, + pub music_rating: i64, + /// B35 + pub player_old_rating: i64, + /// B15 + pub player_new_rating: i64, + /// highest total dx rating + pub highest_rating: i64, + pub grade_rating: i64, + /// 级别认定 + pub grade_rank: i64, + /// 段位认定 + pub course_rank: i64, + /// 友人对战段位 + pub class_rank: i64, + pub nameplate_id: i64, + pub frame_id: i64, + pub icon_id: i64, + pub trophy_id: i64, + pub plate_id: i64, + pub title_id: i64, + pub partner_id: i64, + pub chara_slot: Vec, + pub chara_lock_slot: Vec, + pub content_bit: i64, + pub select_map_id: i64, + /// 总游玩次数 + pub play_count: i64, + /// 当前版本游玩次数 + pub current_play_count: i64, + pub play_vs_count: i64, + pub play_sync_count: i64, + pub win_count: i64, + pub help_count: i64, + pub combo_count: i64, + /// 总 DX 分数 + pub total_deluxscore: i64, + /// 绿 DX 分数 + pub total_basic_deluxscore: i64, + /// 黄 DX 分数 + pub total_advanced_deluxscore: i64, + /// 红 DX 分数 + pub total_expert_deluxscore: i64, + /// 紫 DX 分数 + pub total_master_deluxscore: i64, + /// 白 DX 分数 + pub total_re_master_deluxscore: i64, + /// 总 Sync + pub total_sync: i64, + pub total_basic_sync: i64, + pub total_advanced_sync: i64, + pub total_expert_sync: i64, + pub total_master_sync: i64, + pub total_re_master_sync: i64, + pub total_achievement: i64, + pub total_basic_achievement: i64, + pub total_advanced_achievement: i64, + pub total_expert_achievement: i64, + pub total_master_achievement: i64, + pub total_re_master_achievement: i64, + pub event_watched_date: String, + /// 最后游玩ROM版本 + pub last_rom_version: String, + /// 最后游玩数据版本 + pub last_data_version: String, + /// 上次登陆日期 + pub last_login_date: String, + /// 上次游玩结束日期 + pub last_play_date: String, + /// 上次双人登陆日期 + pub last_pair_login_date: String, + /// 上次免费游玩日期 + pub last_trial_play_date: String, + pub last_play_credit: i64, + pub last_play_mode: i64, + pub last_place_id: i64, + pub last_all_net_id: i64, + pub last_region_id: i64, + pub last_region_name: String, + pub last_country_code: String, + #[serde(rename = "lastSelectEMoney")] + pub last_select_emoney: i64, + pub last_select_ticket: i64, + pub last_select_course: i64, + pub last_count_course: i64, + pub first_game_id: String, + pub first_rom_version: String, + pub first_data_version: String, + pub first_play_date: String, + pub compatible_cm_version: String, + pub total_awake: i64, + pub daily_bonus_date: String, + pub daily_course_bonus_date: String, + pub map_stock: i64, + pub rename_credit: i64, + pub friend_regist_skip: i64, + pub cm_last_emoney_credit: i64, + pub cm_last_emoney_brand: i64, + // below are some null field + // pub access_code: Value, + // pub friend_code: Value, + // pub last_game_id: Value, + // pub last_place_name: Value, + // pub last_client_id: Value, + // pub date_time: Value, +} diff --git a/sdgb-api/src/title/model/mod.rs b/sdgb-api/src/title/model/mod.rs index 4138346..8656a36 100644 --- a/sdgb-api/src/title/model/mod.rs +++ b/sdgb-api/src/title/model/mod.rs @@ -6,3 +6,9 @@ pub use get_user_preview_api::{GetUserPreviewApi, GetUserPreviewApiResp}; mod user_logout_api; pub use user_logout_api::{UserLogoutApi, UserLogoutApiResp}; + +mod user_login_api; +pub use user_login_api::{UserLoginApi, UserLoginApiResp}; + +mod get_user_data_api; +pub use get_user_data_api::{GetUserDataApi, GetUserDataApiResp}; diff --git a/sdgb-api/src/title/model/user_login_api/mod.rs b/sdgb-api/src/title/model/user_login_api/mod.rs new file mode 100644 index 0000000..9e7f79f --- /dev/null +++ b/sdgb-api/src/title/model/user_login_api/mod.rs @@ -0,0 +1,31 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct UserLoginApi { + pub user_id: u32, + pub region_id: u32, + pub date_time: u64, + pub acsess_code: String, + pub place_id: String, + pub client_id: String, + /// set to `false` is fine + pub is_continue: bool, + /// fixed to 0 + pub generic_flag: u8, +} + +#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct UserLoginApiResp { + /// - `1`: success + /// - `100`: logged + /// - `102`: QRCode expired + pub return_code: i32, + /// format: yyyy-mm-dd HH:MM:SS + pub last_login_date: Option, + pub login_count: Option, + pub consecutive_login_count: Option, + /// needed for some operation + pub login_id: Option, +}