bios_iam/console_interface/api/
iam_ci_app_set_api.rs

1use bios_basic::rbum::helper::rbum_scope_helper::check_without_owner_and_unsafe_fill_ctx;
2use bios_basic::rbum::serv::rbum_crud_serv::RbumCrudOperation;
3use bios_basic::rbum::serv::rbum_set_serv::RbumSetItemServ;
4use tardis::web::context_extractor::TardisContextExtractor;
5use tardis::web::poem_openapi;
6use tardis::web::poem_openapi::param::Query;
7use tardis::web::web_resp::{TardisApiResult, TardisResp};
8
9use bios_basic::rbum::dto::rbum_filer_dto::{RbumBasicFilterReq, RbumSetItemFilterReq};
10use bios_basic::rbum::dto::rbum_set_item_dto::RbumSetItemDetailResp;
11
12use crate::basic::serv::iam_cert_serv::IamCertServ;
13use crate::basic::serv::iam_set_serv::IamSetServ;
14use crate::iam_constants;
15use crate::iam_enumeration::IamSetKind;
16use bios_basic::helper::request_helper::try_set_real_ip_from_req_to_ctx;
17use tardis::web::poem::Request;
18#[derive(Clone, Default)]
19pub struct IamCiAppSetApi;
20
21/// Interface Console App Set API
22/// 接口控制台应用集合API
23#[poem_openapi::OpenApi(prefix_path = "/ci/apps", tag = "bios_basic::ApiTag::Interface")]
24impl IamCiAppSetApi {
25    /// Find App Set Items (App Or Account)
26    /// 查找应用集合项(应用或账号)
27    #[oai(path = "/item", method = "get")]
28    async fn find_items(
29        &self,
30        cate_ids: Query<Option<String>>,
31        item_ids: Query<Option<String>>,
32        mut ctx: TardisContextExtractor,
33        request: &Request,
34    ) -> TardisApiResult<Vec<RbumSetItemDetailResp>> {
35        let funs = iam_constants::get_tardis_inst();
36        check_without_owner_and_unsafe_fill_ctx(request, &funs, &mut ctx.0)?;
37        let ctx = IamCertServ::use_sys_or_tenant_ctx_unsafe(ctx.0)?;
38        try_set_real_ip_from_req_to_ctx(request, &ctx).await?;
39        let set_id = IamSetServ::get_default_set_id_by_ctx(&IamSetKind::Apps, &funs, &ctx).await?;
40        let result = RbumSetItemServ::find_detail_rbums(
41            &RbumSetItemFilterReq {
42                basic: RbumBasicFilterReq {
43                    with_sub_own_paths: false,
44                    ..Default::default()
45                },
46                rel_rbum_item_disabled: Some(false),
47                rel_rbum_item_can_not_exist: Some(true),
48                rel_rbum_set_id: Some(set_id.clone()),
49                rel_rbum_set_cate_ids: cate_ids.0.map(|ids| ids.split(',').map(|id| id.to_string()).collect::<Vec<String>>()),
50                rel_rbum_item_ids: item_ids.0.map(|ids| ids.split(',').map(|id| id.to_string()).collect::<Vec<String>>()),
51                ..Default::default()
52            },
53            None,
54            None,
55            &funs,
56            &ctx,
57        )
58        .await?;
59        ctx.execute_task().await?;
60        TardisResp::ok(result)
61    }
62}