|
@@ -1,8 +1,12 @@
|
|
|
use crate::{AppState, datasource::{Datasource,SqliteParams}};
|
|
use crate::{AppState, datasource::{Datasource,SqliteParams}};
|
|
|
use super::{JsonBack, DataBack, Page};
|
|
use super::{JsonBack, DataBack, Page};
|
|
|
-use super::{check_login,token,md5,token_fail};
|
|
|
|
|
|
|
+use super::{check_token,token,md5,token_fail};
|
|
|
use serde::{Deserialize,Serialize};
|
|
use serde::{Deserialize,Serialize};
|
|
|
use axum::{Json, extract::State};
|
|
use axum::{Json, extract::State};
|
|
|
|
|
+/*
|
|
|
|
|
+即将弃用
|
|
|
|
|
+
|
|
|
|
|
+*/
|
|
|
|
|
|
|
|
#[derive(Deserialize)]
|
|
#[derive(Deserialize)]
|
|
|
pub struct Uloggin{
|
|
pub struct Uloggin{
|
|
@@ -14,6 +18,14 @@ pub struct Uloggin{
|
|
|
pub struct Devices{
|
|
pub struct Devices{
|
|
|
pub id: u64,
|
|
pub id: u64,
|
|
|
pub name: String,
|
|
pub name: String,
|
|
|
|
|
+ pub area: u64
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+#[derive(serde::Serialize)]
|
|
|
|
|
+pub struct Area{
|
|
|
|
|
+ pub id: u64,
|
|
|
|
|
+ pub name: String,
|
|
|
|
|
+ pub sub: u64
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
#[derive(serde::Serialize)]
|
|
#[derive(serde::Serialize)]
|
|
@@ -24,7 +36,9 @@ pub struct UTokenBack{
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
pub token: Option<String>,
|
|
pub token: Option<String>,
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
- pub devices: Option<Vec<Devices>>
|
|
|
|
|
|
|
+ pub devices: Option<Vec<Devices>>,
|
|
|
|
|
+ #[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
|
+ pub area: Option<Vec<Area>>
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
pub async fn u_loggin(
|
|
pub async fn u_loggin(
|
|
@@ -44,7 +58,8 @@ pub async fn u_loggin(
|
|
|
errcode: 2000,
|
|
errcode: 2000,
|
|
|
errmsg: Some(format!("登录失败")),
|
|
errmsg: Some(format!("登录失败")),
|
|
|
token: None,
|
|
token: None,
|
|
|
- devices: None
|
|
|
|
|
|
|
+ devices: None,
|
|
|
|
|
+ area: None
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
@@ -52,12 +67,57 @@ pub async fn u_loggin(
|
|
|
if let Err(e) = state.db_lite.execute("update user set lastlogin=current_timestamp,token=? where id=?", (token.clone(), uid)).await{
|
|
if let Err(e) = state.db_lite.execute("update user set lastlogin=current_timestamp,token=? where id=?", (token.clone(), uid)).await{
|
|
|
println!("error when loggin {e}")
|
|
println!("error when loggin {e}")
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
Json(UTokenBack{
|
|
Json(UTokenBack{
|
|
|
errcode: 0,
|
|
errcode: 0,
|
|
|
errmsg: None,
|
|
errmsg: None,
|
|
|
token: Some(token),
|
|
token: Some(token),
|
|
|
- devices: None
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ devices: Some(
|
|
|
|
|
+ match state.db_lite.query_rows(
|
|
|
|
|
+ "select d.id,d.name,d.area from device d where d.isdelete=0",
|
|
|
|
|
+ [],
|
|
|
|
|
+ |r|{Ok(Devices{
|
|
|
|
|
+ id: r.get::<usize,u64>(0)?,
|
|
|
|
|
+ name: r.get::<usize,String>(1)?,
|
|
|
|
|
+ area: r.get::<usize,u64>(0)?,
|
|
|
|
|
+ })}).await{
|
|
|
|
|
+ Ok(ans) => ans,
|
|
|
|
|
+ Err(e) => {
|
|
|
|
|
+ println!("{e}");
|
|
|
|
|
+ return Json(UTokenBack{
|
|
|
|
|
+ errcode: 3000,
|
|
|
|
|
+ errmsg: Some(format!("设备信息获取失败")),
|
|
|
|
|
+ token: None,
|
|
|
|
|
+ devices: None,
|
|
|
|
|
+ area: None
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ ),
|
|
|
|
|
+ area: Some(
|
|
|
|
|
+ match state.db_lite.query_rows(
|
|
|
|
|
+ "select d.id,d.name,d.area from device d where d.isdelete=0",
|
|
|
|
|
+ [],
|
|
|
|
|
+ |r|{Ok(Area{
|
|
|
|
|
+ id: r.get::<usize,u64>(0)?,
|
|
|
|
|
+ name: r.get::<usize,String>(1)?,
|
|
|
|
|
+ sub: r.get::<usize,u64>(0)?,
|
|
|
|
|
+ })}).await{
|
|
|
|
|
+ Ok(ans) => ans,
|
|
|
|
|
+ Err(e) => {
|
|
|
|
|
+ println!("{e}");
|
|
|
|
|
+ return Json(UTokenBack{
|
|
|
|
|
+ errcode: 3000,
|
|
|
|
|
+ errmsg: Some(format!("设备信息获取失败")),
|
|
|
|
|
+ token: None,
|
|
|
|
|
+ devices: None,
|
|
|
|
|
+ area: None
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+ )
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize, Serialize)]
|
|
#[derive(Deserialize, Serialize)]
|
|
@@ -87,7 +147,7 @@ pub async fn u_edit(
|
|
|
errmsg: Some(format!("不允许创建用户"))
|
|
errmsg: Some(format!("不允许创建用户"))
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
- let uid = match check_login(&state, u.token.unwrap()).await{
|
|
|
|
|
|
|
+ let uid = match check_token(&state, u.token.unwrap()).await{
|
|
|
Ok(uid)=> uid,
|
|
Ok(uid)=> uid,
|
|
|
Err(()) => return token_fail()
|
|
Err(()) => return token_fail()
|
|
|
};
|
|
};
|
|
@@ -138,7 +198,7 @@ pub async fn u_list(
|
|
|
) -> Json<DataBack<Vec<Uedit>>> {
|
|
) -> Json<DataBack<Vec<Uedit>>> {
|
|
|
// 在这里实现用户列表查询逻辑
|
|
// 在这里实现用户列表查询逻辑
|
|
|
// 可以使用 u.page.page, u.page.size, u.nickname, u.group
|
|
// 可以使用 u.page.page, u.page.size, u.nickname, u.group
|
|
|
- let _ = match check_login(&state, u.token).await{
|
|
|
|
|
|
|
+ let _ = match check_token(&state, u.token).await{
|
|
|
Ok(uid) => uid,
|
|
Ok(uid) => uid,
|
|
|
Err(_) => return Json(DataBack { errcode: 2000, errmsg: Some("鉴权失败: token失效".to_string()), data: None })
|
|
Err(_) => return Json(DataBack { errcode: 2000, errmsg: Some("鉴权失败: token失效".to_string()), data: None })
|
|
|
};
|
|
};
|