diff --git a/Cargo.toml b/Cargo.toml index fa8cc20..3c43456 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,6 +31,7 @@ openssl = { version = "0", features = ["vendored"] } prost = { version = "0" } reqwest = { version = "0", features = ["json"] } serde = { version = "1", features = ["derive"] } +serde_bytes = { version = "0" } serde_json = { version = "1" } tokio = { version = "1", features = ["macros", "rt-multi-thread"] } tokio-cron-scheduler = { version = "0" } diff --git a/src/api/betting/models.rs b/src/api/betting/models.rs index 353da34..4252bb8 100644 --- a/src/api/betting/models.rs +++ b/src/api/betting/models.rs @@ -36,8 +36,8 @@ pub struct Betting { #[serde(rename = "groupKey")] pub group_key: Option, /// 게임 데이터 - #[serde(skip_deserializing)] - pub detail: Option, + #[serde(with = "serde_bytes")] + pub detail: Option>, /// 보너스 여부 #[serde(rename = "isBonus")] pub is_bonus: bool, diff --git a/src/api/member_account/api.rs b/src/api/member_account/api.rs index f23c427..c44f8b3 100644 --- a/src/api/member_account/api.rs +++ b/src/api/member_account/api.rs @@ -69,7 +69,18 @@ impl Api { let balance = r.balance.unwrap_or(0.00); let balance_bota = r.balance_bota.unwrap_or(0.00); let balance_sum = r.balance_sum.unwrap_or(0.00); - let companies = r.companies; + let companies = match r.companies { + Some(v) => match std::str::from_utf8(v.as_slice()) { + Ok(v) => Some(v.to_string()), + Err(e) => { + return Err(Error { + code: -1, + msg: Some(e.to_string()), + }); + } + }, + None => None, + }; Ok(models::GetBalanceForUserResponse { balance, diff --git a/src/api/member_account/models.rs b/src/api/member_account/models.rs index 4c164f7..03c5e2e 100644 --- a/src/api/member_account/models.rs +++ b/src/api/member_account/models.rs @@ -13,8 +13,8 @@ pub struct _GetBalanceForUserResponse { pub balance_bota: Option, #[serde(rename = "balanceSum")] pub balance_sum: Option, - #[serde(skip_deserializing)] - pub companies: Option, + #[serde(with = "serde_bytes")] + pub companies: Option>, } #[derive(Serialize, Deserialize, Debug)] diff --git a/src/synchronizations/betting_history/synchronizer.rs b/src/synchronizations/betting_history/synchronizer.rs index 8f87c1d..f45319c 100644 --- a/src/synchronizations/betting_history/synchronizer.rs +++ b/src/synchronizations/betting_history/synchronizer.rs @@ -137,7 +137,18 @@ impl Synchronizer { }); } }; - let detail = b.detail; + let detail = match b.detail { + Some(v) => match std::str::from_utf8(v.as_slice()) { + Ok(v) => Some(v.to_string()), + Err(e) => { + return Err(api::core::models::Error { + code: -1, + msg: Some(format!("std::str::from_utf8 error: {}", e)), + }); + } + }, + None => None, + }; new_betting_history.push(repositories::betting_history::models::NewBettingHistory { id: b._id,