Skip to content

Commit 1bb805a

Browse files
authored
Add ci find account by ak (#521)
* update * update
1 parent 4aac9c4 commit 1bb805a

File tree

2 files changed

+78
-8
lines changed

2 files changed

+78
-8
lines changed

spi/spi-search/src/serv/pg/search_pg_item_serv.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::collections::HashMap;
22

3-
use pinyin::{Pinyin, to_pinyin_vec};
3+
use pinyin::{to_pinyin_vec, Pinyin};
44
use tardis::{
55
basic::{dto::TardisContext, error::TardisError, result::TardisResult},
66
chrono::Utc,
@@ -30,9 +30,17 @@ pub async fn add(add_req: &mut SearchItemAddReq, _funs: &TardisFunsInst, ctx: &T
3030
params.push(Value::from(add_req.kind.to_string()));
3131
params.push(Value::from(add_req.key.to_string()));
3232
params.push(Value::from(add_req.title.as_str()));
33-
params.push(Value::from(format!("{},{}",add_req.title.as_str(), to_pinyin_vec(add_req.title.as_str(), Pinyin::plain).join(","))));
33+
params.push(Value::from(format!(
34+
"{},{}",
35+
add_req.title.as_str(),
36+
to_pinyin_vec(add_req.title.as_str(), Pinyin::plain).join(",")
37+
)));
3438
params.push(Value::from(add_req.content.as_str()));
35-
params.push(Value::from(format!("{},{}",add_req.content.as_str(),to_pinyin_vec(add_req.content.as_str(),Pinyin::plain).join(","))));
39+
params.push(Value::from(format!(
40+
"{},{}",
41+
add_req.content.as_str(),
42+
to_pinyin_vec(add_req.content.as_str(), Pinyin::plain).join(",")
43+
)));
3644
params.push(Value::from(add_req.owner.as_ref().unwrap_or(&"".to_string()).as_str()));
3745
params.push(Value::from(add_req.own_paths.as_ref().unwrap_or(&"".to_string()).as_str()));
3846
params.push(Value::from(if let Some(create_time) = add_req.create_time { create_time } else { Utc::now() }));
@@ -81,13 +89,13 @@ pub async fn modify(tag: &str, key: &str, modify_req: &mut SearchItemModifyReq,
8189
sql_sets.push(format!("title = ${}", params.len() + 1));
8290
params.push(Value::from(title));
8391
sql_sets.push(format!("title_tsv = to_tsvector('public.chinese_zh', ${})", params.len() + 1));
84-
params.push(Value::from(format!("{},{}",title,to_pinyin_vec(title, Pinyin::plain).join(","))));
92+
params.push(Value::from(format!("{},{}", title, to_pinyin_vec(title, Pinyin::plain).join(","))));
8593
};
8694
if let Some(content) = &modify_req.content {
8795
sql_sets.push(format!("content = ${}", params.len() + 1));
8896
params.push(Value::from(content));
8997
sql_sets.push(format!("content_tsv = to_tsvector('public.chinese_zh', ${})", params.len() + 1));
90-
params.push(Value::from(format!("{},{}",content,to_pinyin_vec(content, Pinyin::plain).join(","))));
98+
params.push(Value::from(format!("{},{}", content, to_pinyin_vec(content, Pinyin::plain).join(","))));
9199
};
92100
if let Some(owner) = &modify_req.owner {
93101
sql_sets.push(format!("owner = ${}", params.len() + 1));

support/iam/src/console_interface/api/iam_ci_account_api.rs

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
use bios_basic::rbum::dto::rbum_filer_dto::{RbumBasicFilterReq, RbumItemRelFilterReq, RbumSetCateFilterReq, RbumSetItemRelFilterReq};
1+
use bios_basic::rbum::dto::rbum_filer_dto::{RbumBasicFilterReq, RbumCertFilterReq, RbumItemRelFilterReq, RbumSetCateFilterReq, RbumSetItemRelFilterReq};
22
use bios_basic::rbum::rbum_enumeration::RbumRelFromKind;
33
use tardis::web::context_extractor::TardisContextExtractor;
44
use tardis::web::poem_openapi;
55
use tardis::web::poem_openapi::{param::Path, param::Query};
66
use tardis::web::web_resp::{TardisApiResult, TardisPage, TardisResp};
77
use tardis::TardisFuns;
88

9-
use crate::basic::dto::iam_account_dto::{IamAccountDetailAggResp, IamAccountSummaryAggResp};
9+
use crate::basic::dto::iam_account_dto::{IamAccountDetailAggResp, IamAccountDetailResp, IamAccountSummaryAggResp};
1010
use crate::basic::dto::iam_filer_dto::IamAccountFilterReq;
1111
use crate::basic::serv::iam_account_serv::IamAccountServ;
1212
use crate::basic::serv::iam_cert_serv::IamCertServ;
@@ -15,7 +15,11 @@ use crate::basic::serv::iam_set_serv::IamSetServ;
1515
use crate::iam_constants;
1616
use crate::iam_enumeration::IamRelKind;
1717
use bios_basic::helper::request_helper::add_remote_ip;
18+
use bios_basic::rbum::serv::rbum_cert_serv::RbumCertServ;
19+
use bios_basic::rbum::serv::rbum_crud_serv::RbumCrudOperation;
20+
use bios_basic::rbum::serv::rbum_item_serv::RbumItemCrudOperation;
1821
use tardis::web::poem::Request;
22+
1923
#[derive(Clone, Default)]
2024
pub struct IamCiAccountApi;
2125

@@ -117,7 +121,7 @@ impl IamCiAccountApi {
117121
TardisResp::ok(TardisFuns::crypto.base64.encode(TardisFuns::json.obj_to_string(&ctx_resp).unwrap_or_default()))
118122
}
119123

120-
//// Get Account By Account Id 通过帐户Id获取帐户
124+
/// Get Account By Account Id 通过帐户Id获取帐户
121125
#[oai(path = "/:id", method = "get")]
122126
async fn get(&self, id: Path<String>, tenant_id: Query<Option<String>>, ctx: TardisContextExtractor, request: &Request) -> TardisApiResult<IamAccountDetailAggResp> {
123127
let ctx = IamCertServ::try_use_tenant_ctx(ctx.0, tenant_id.0)?;
@@ -141,4 +145,62 @@ impl IamCiAccountApi {
141145
ctx.execute_task().await?;
142146
TardisResp::ok(result)
143147
}
148+
149+
/// Find Account Id By Ak
150+
///
151+
/// if kind is none,query default kind(UserPwd)
152+
#[oai(path = "/:ak/ak", method = "get")]
153+
async fn find_account_by_ak(
154+
&self,
155+
ak: Path<String>,
156+
kind: Query<Option<String>>,
157+
tenant_id: Query<Option<String>>,
158+
supplier: Query<Option<String>>,
159+
ctx: TardisContextExtractor,
160+
request: &Request,
161+
) -> TardisApiResult<Option<IamAccountDetailResp>> {
162+
add_remote_ip(request, &ctx.0).await?;
163+
let funs = iam_constants::get_tardis_inst();
164+
let supplier = supplier.0.unwrap_or_default();
165+
let kind = kind.0.unwrap_or_else(|| "UserPwd".to_string());
166+
let kind = if kind.is_empty() { "UserPwd".to_string() } else { kind };
167+
168+
let result = if let Ok(conf_id) = IamCertServ::get_cert_conf_id_by_kind_supplier(&kind, &supplier.clone(), tenant_id.0, &funs).await {
169+
if let Some(cert) = RbumCertServ::find_one_detail_rbum(
170+
&RbumCertFilterReq {
171+
ak: Some(ak.0),
172+
rel_rbum_cert_conf_ids: Some(vec![conf_id]),
173+
..Default::default()
174+
},
175+
&funs,
176+
&ctx.0,
177+
)
178+
.await?
179+
{
180+
Some(
181+
IamAccountServ::get_item(
182+
&cert.owner,
183+
&IamAccountFilterReq {
184+
basic: RbumBasicFilterReq {
185+
own_paths: Some("".to_string()),
186+
with_sub_own_paths: true,
187+
..Default::default()
188+
},
189+
..Default::default()
190+
},
191+
&funs,
192+
&ctx.0,
193+
)
194+
.await?,
195+
)
196+
} else {
197+
None
198+
}
199+
} else {
200+
None
201+
};
202+
203+
ctx.0.execute_task().await?;
204+
TardisResp::ok(result)
205+
}
144206
}

0 commit comments

Comments
 (0)