From 5296aa3cd0260da8bc99b6a08a19048ddf1484fb Mon Sep 17 00:00:00 2001 From: yansongda Date: Wed, 15 May 2024 17:46:18 +0800 Subject: [PATCH] =?UTF-8?q?optimize(backend):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E5=9C=A8=E6=95=B0=E6=8D=AE=E5=BA=93=E7=9A=84?= =?UTF-8?q?=E8=AE=A4=E8=AF=81=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 6 ++++++ src/model/miniprogram/access_token.rs | 12 ++++++++++++ src/model/wechat.rs | 2 +- src/service/miniprogram/access_token.rs | 11 ++--------- src/util/http.rs | 6 +++--- 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4134fe3..cc0af2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## v1.5.2 + +### optimized + +- optimize(backend): 优化存储在数据库的认证信息(#70) + ## v1.5.1 ### chore diff --git a/src/model/miniprogram/access_token.rs b/src/model/miniprogram/access_token.rs index 9f84b6e..525570e 100644 --- a/src/model/miniprogram/access_token.rs +++ b/src/model/miniprogram/access_token.rs @@ -2,6 +2,7 @@ use chrono::{DateTime, Local}; use serde::{Deserialize, Serialize}; use sqlx::types::Json; use sqlx::FromRow; +use crate::model::wechat::LoginResponse; #[derive(Debug, Clone, Serialize, Deserialize, FromRow)] pub struct AccessToken { @@ -17,4 +18,15 @@ pub struct AccessToken { pub struct AccessTokenData { pub open_id: String, pub session_key: String, + pub union_id: Option, +} + +impl From for AccessTokenData { + fn from(response: LoginResponse) -> Self { + AccessTokenData { + open_id: response.openid.unwrap(), + session_key: response.session_key.unwrap(), + union_id: response.unionid, + } + } } diff --git a/src/model/wechat.rs b/src/model/wechat.rs index f9fcc60..c72b0e3 100644 --- a/src/model/wechat.rs +++ b/src/model/wechat.rs @@ -1,6 +1,6 @@ use serde::Deserialize; -#[derive(Debug, Deserialize)] +#[derive(Debug, Clone, Deserialize)] pub struct LoginResponse { pub session_key: Option, pub unionid: Option, diff --git a/src/service/miniprogram/access_token.rs b/src/service/miniprogram/access_token.rs index ebc38c2..99acb3c 100644 --- a/src/service/miniprogram/access_token.rs +++ b/src/service/miniprogram/access_token.rs @@ -6,7 +6,6 @@ use crate::service::wechat; pub async fn login(code: &str) -> Result { let wechat_response = wechat::login(code).await?; let open_id = wechat_response.openid.unwrap(); - let session_key = wechat_response.session_key.unwrap(); let user_id = get_login_user_id(open_id.as_str()).await?; let exist = miniprogram::access_token::fetch_by_user_id(user_id).await; @@ -14,10 +13,7 @@ pub async fn login(code: &str) -> Result { if exist.is_ok() { return miniprogram::access_token::update( exist.unwrap().id, - AccessTokenData { - open_id, - session_key, - }, + AccessTokenData::from(wechat_response.clone()), ) .await; } @@ -26,10 +22,7 @@ pub async fn login(code: &str) -> Result { Error::AccessTokenNotFound(_) => { miniprogram::access_token::insert( user_id, - AccessTokenData { - open_id, - session_key, - }, + AccessTokenData::from(wechat_response.clone()), ) .await } diff --git a/src/util/http.rs b/src/util/http.rs index 004c8e4..515dc75 100644 --- a/src/util/http.rs +++ b/src/util/http.rs @@ -20,11 +20,11 @@ pub async fn request(request: Request) -> Result { .unwrap() }); - info!("发送 http 请求 {:?}", request); + info!("请求第三方服务接口 {:?}", request); let started_at = std::time::Instant::now(); let response = client.execute(request).await.map_err(|e| { - warn!("发送 http 请求失败 {:?}", e); + warn!("请求第三方服务接口失败 {:?}", e); Error::Http(None) })?; @@ -43,7 +43,7 @@ pub async fn request(request: Request) -> Result { duration: started_at.elapsed().as_secs_f32(), }; - info!("发送 http 请求结果 {:?}", result); + info!("请求第三方服务接口结果 {:?}", result); Ok(result) }