|
|
@@ -137,8 +137,8 @@ pub struct Uedit{
|
|
|
uname: Option<String>,
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
passwd: Option<String>,
|
|
|
- #[serde(skip_serializing_if = "Option::is_none")]
|
|
|
- group: Option<String>,
|
|
|
+ // #[serde(skip_serializing_if = "Option::is_none")]
|
|
|
+ // group: Option<String>,
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
nickname: Option<String>,
|
|
|
lastlogin: Option<u64>,
|
|
|
@@ -170,10 +170,10 @@ pub async fn u_edit(
|
|
|
|
|
|
let mut param:SqliteParams = vec![];
|
|
|
|
|
|
- if let Err(e) = state.db_lite.execute(format!("update user set isdelete=0{}{}{}{} where id=?",
|
|
|
+ if let Err(e) = state.db_lite.execute(format!("update user set isdelete=0{}{}{} where id=?",
|
|
|
if let Some(filter)=u.uname {param.push(Box::new (filter.clone()));",uname=?"} else {""},
|
|
|
if let Some(filter)=u.passwd {param.push(Box::new (filter.clone()));",passwd=?"} else {""},
|
|
|
- if let Some(filter)=u.group {param.push(Box::new (filter.clone()));",group=?"} else {""},
|
|
|
+ // if let Some(filter)=u.group {param.push(Box::new (filter.clone()));",group=?"} else {""},
|
|
|
if let Some(filter)=u.nickname {param.push(Box::new (filter.clone()));",group=?"} else {""},
|
|
|
).as_str(), rusqlite::params_from_iter({param.push(Box::new(uid));param})).await{
|
|
|
return Json(JsonBack{
|
|
|
@@ -199,7 +199,9 @@ pub struct Ulist{
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
nickname: Option<String>,
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
- group: Option<String>
|
|
|
+ did: Option<i64>,
|
|
|
+ #[serde(skip_serializing_if = "Option::is_none")]
|
|
|
+ area: Option<i64>
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -218,41 +220,80 @@ pub async fn u_list(
|
|
|
// }
|
|
|
let (page,size) = if let Some(p)=u.page {(p.page,p.size)} else {(1,20)};
|
|
|
let mut params: SqliteParams = vec![];
|
|
|
-
|
|
|
- match state.db_lite.query_rows(
|
|
|
- format!("select u.id, u.uname, u.nickname, strftime('%s', u.lastlogin)*1000, strftime('%s', u.createtime)*1000 from user u where isdelete=0{}{}{} limit ? offset ?",
|
|
|
- if let Some(ref filter) = u.nickname {params.push(Box::new(filter.clone())); " and u.nickname like ?"} else {""},
|
|
|
- if let Some(ref filter) = u.group {params.push(Box::new(filter.clone())); " and u.group like ?"} else {""},
|
|
|
- if let Some(ref filter) = u.ids {
|
|
|
- if filter.is_empty(){String::new()}
|
|
|
- else{let mut uids=Vec::new();for i in filter{ uids.push("?");params.push(Box::new(*i));};format!( " and u.id in ({})",uids.join(","))}
|
|
|
- } else {String::new()}
|
|
|
- ).as_str(),
|
|
|
- rusqlite::params_from_iter({params.push(Box::new(size));params.push(Box::new(size*(page-1)));params}) , |r| {
|
|
|
- Ok(Uedit{
|
|
|
- token: None,
|
|
|
- id: r.get(0)?,
|
|
|
- uname: r.get(1)?,
|
|
|
- passwd: None,
|
|
|
- group: None,
|
|
|
- nickname: r.get(2)?,
|
|
|
- lastlogin: r.get(3)?,
|
|
|
- createtime: r.get(4)?
|
|
|
- })
|
|
|
- }).await{
|
|
|
- Ok(ans) => Json(DataBack{
|
|
|
- errcode: 0,
|
|
|
- errmsg:None,
|
|
|
- data: Some(ans)
|
|
|
- }),
|
|
|
- Err(e) => {
|
|
|
- Json(DataBack {
|
|
|
+ if let Some(did) = u.did{
|
|
|
+ params.push(Box::new(did));
|
|
|
+ match state.db_lite.query_rows(
|
|
|
+ format!("select u.id, u.nickname from user u left join map_user_device m on u.id=m.uid where u.isdelete=0 and m.did=?{}{}{} limit ? offset ?",
|
|
|
+ if let Some(ref filter) = u.nickname {params.push(Box::new(filter.clone())); " and u.nickname like ?"} else {""},
|
|
|
+ // if let Some(ref filter) = u.group {params.push(Box::new(filter.clone())); " and u.group like ?"} else {""},
|
|
|
+ if let Some(ref filter) = u.ids {
|
|
|
+ if filter.is_empty(){String::new()}
|
|
|
+ else{let mut uids=Vec::new();for i in filter{ uids.push("?");params.push(Box::new(*i));};format!( " and u.id in ({})",uids.join(","))}
|
|
|
+ } else {String::new()},
|
|
|
+ if let Some(ref filter) = u.area {params.push(Box::new(filter.clone())); " and u.id in (select uid from map_user_area where aid=?)"} else {""},
|
|
|
+ ).as_str(),
|
|
|
+ rusqlite::params_from_iter({params.push(Box::new(size));params.push(Box::new(size*(page-1)));params}) , |r| {
|
|
|
+ Ok(Uedit{
|
|
|
+ token: None,
|
|
|
+ id: r.get(0)?,
|
|
|
+ uname: None,
|
|
|
+ passwd: None,
|
|
|
+ // group: None,
|
|
|
+ nickname: r.get(1)?,
|
|
|
+ lastlogin: None,
|
|
|
+ createtime: None
|
|
|
+ })
|
|
|
+ }).await{
|
|
|
+ Ok(ans) => Json(DataBack{
|
|
|
errcode: 0,
|
|
|
- errmsg: Some(format!("查询失败: {e}")),
|
|
|
- data: None
|
|
|
+ errmsg:None,
|
|
|
+ data: Some(ans)
|
|
|
+ }),
|
|
|
+ Err(e) => {
|
|
|
+ Json(DataBack {
|
|
|
+ errcode: 0,
|
|
|
+ errmsg: Some(format!("查询失败: {e}")),
|
|
|
+ data: None
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ match state.db_lite.query_rows(
|
|
|
+ format!("select u.id, u.uname, u.nickname, strftime('%s', u.lastlogin)*1000, strftime('%s', u.createtime)*1000 from user u where isdelete=0{}{}{} limit ? offset ?",
|
|
|
+ if let Some(ref filter) = u.nickname {params.push(Box::new(filter.clone())); " and u.nickname like ?"} else {""},
|
|
|
+ // if let Some(ref filter) = u.group {params.push(Box::new(filter.clone())); " and u.group like ?"} else {""},
|
|
|
+ if let Some(ref filter) = u.ids {
|
|
|
+ if filter.is_empty(){String::new()}
|
|
|
+ else{let mut uids=Vec::new();for i in filter{ uids.push("?");params.push(Box::new(*i));};format!( " and u.id in ({})",uids.join(","))}
|
|
|
+ } else {String::new()},
|
|
|
+ if let Some(ref filter) = u.area {params.push(Box::new(filter.clone())); " and u.id in (select uid from map_user_area where aid=?)"} else {""},
|
|
|
+ ).as_str(),
|
|
|
+ rusqlite::params_from_iter({params.push(Box::new(size));params.push(Box::new(size*(page-1)));params}) , |r| {
|
|
|
+ Ok(Uedit{
|
|
|
+ token: None,
|
|
|
+ id: r.get(0)?,
|
|
|
+ uname: r.get(1)?,
|
|
|
+ passwd: None,
|
|
|
+ // group: None,
|
|
|
+ nickname: r.get(2)?,
|
|
|
+ lastlogin: r.get(3)?,
|
|
|
+ createtime: r.get(4)?
|
|
|
})
|
|
|
+ }).await{
|
|
|
+ Ok(ans) => Json(DataBack{
|
|
|
+ errcode: 0,
|
|
|
+ errmsg:None,
|
|
|
+ data: Some(ans)
|
|
|
+ }),
|
|
|
+ Err(e) => {
|
|
|
+ Json(DataBack {
|
|
|
+ errcode: 0,
|
|
|
+ errmsg: Some(format!("查询失败: {e}")),
|
|
|
+ data: None
|
|
|
+ })
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|