Skip to main content

openlark_security/security/acs/
mod.rs

1//! 访问控制系统 (ACS) - Project
2//!
3//! 智能门禁访问控制系统,提供用户、设备、权限和访客管理功能。
4
5use std::sync::Arc;
6
7/// ACS 项目服务
8#[derive(Debug)]
9pub struct AcsProject {
10    config: Arc<crate::models::SecurityConfig>,
11    v1: AcsV1Service,
12}
13
14impl AcsProject {
15    /// 创建新的 ACS 项目实例
16    pub fn new(config: Arc<crate::models::SecurityConfig>) -> Self {
17        Self {
18            v1: AcsV1Service::new(config.clone()),
19            config,
20        }
21    }
22
23    /// 获取 v1 版本服务
24    pub fn v1(&self) -> &AcsV1Service {
25        &self.v1
26    }
27
28    /// 获取配置信息
29    pub fn config(&self) -> &crate::models::SecurityConfig {
30        &self.config
31    }
32}
33
34/// ACS v1 版本服务
35#[derive(Debug)]
36pub struct AcsV1Service {
37    #[allow(dead_code)]
38    config: Arc<crate::models::SecurityConfig>,
39    users: crate::security::acs::v1::users::UsersService,
40    user_faces: crate::security::acs::v1::user_faces::UserFacesService,
41    rule_external: crate::security::acs::v1::rule_external::RuleExternalService,
42    visitors: crate::security::acs::v1::visitors::VisitorsService,
43    devices: crate::security::acs::v1::devices::DevicesService,
44    access_records: crate::security::acs::v1::access_records::AccessRecordsService,
45}
46
47impl AcsV1Service {
48    /// 创建新的 v1 服务实例
49    pub fn new(config: Arc<crate::models::SecurityConfig>) -> Self {
50        Self {
51            users: crate::security::acs::v1::users::UsersService::new(config.clone()),
52            user_faces: crate::security::acs::v1::user_faces::UserFacesService::new(config.clone()),
53            rule_external: crate::security::acs::v1::rule_external::RuleExternalService::new(
54                config.clone(),
55            ),
56            visitors: crate::security::acs::v1::visitors::VisitorsService::new(config.clone()),
57            devices: crate::security::acs::v1::devices::DevicesService::new(config.clone()),
58            access_records: crate::security::acs::v1::access_records::AccessRecordsService::new(
59                config.clone(),
60            ),
61            config,
62        }
63    }
64
65    /// 获取用户管理服务
66    pub fn users(&self) -> &crate::security::acs::v1::users::UsersService {
67        &self.users
68    }
69
70    /// 获取人脸识别管理服务
71    pub fn user_faces(&self) -> &crate::security::acs::v1::user_faces::UserFacesService {
72        &self.user_faces
73    }
74
75    /// 获取权限规则管理服务
76    pub fn rule_external(&self) -> &crate::security::acs::v1::rule_external::RuleExternalService {
77        &self.rule_external
78    }
79
80    /// 获取访客管理服务
81    pub fn visitors(&self) -> &crate::security::acs::v1::visitors::VisitorsService {
82        &self.visitors
83    }
84
85    /// 获取设备管理服务
86    pub fn devices(&self) -> &crate::security::acs::v1::devices::DevicesService {
87        &self.devices
88    }
89
90    /// 获取访问记录服务
91    pub fn access_records(
92        &self,
93    ) -> &crate::security::acs::v1::access_records::AccessRecordsService {
94        &self.access_records
95    }
96}
97
98// v1 模块
99pub mod v1;
100
101#[cfg(test)]
102mod tests {
103
104    use serde_json;
105
106    #[test]
107    fn test_serialization_roundtrip() {
108        // 基础序列化测试
109        let json = r#"{"test": "value"}"#;
110        assert!(serde_json::from_str::<serde_json::Value>(json).is_ok());
111    }
112
113    #[test]
114    fn test_deserialization_from_json() {
115        // 基础反序列化测试
116        let json = r#"{"field": "data"}"#;
117        let value: serde_json::Value = serde_json::from_str(json).expect("JSON 反序列化失败");
118        assert_eq!(value["field"], "data");
119    }
120}