FastAPI搭建Python后台管理系统文件概述(二)
## [31/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/notice_vo.py
此文件 `notice_vo.py` 定义了与通知公告相关的数据模型,使用 `Pydantic` 包进行数据验证和设置。以下是文件内容的概述:
1. **NoticeModel 类**:
- 基于 `Pydantic` 的 `BaseModel`,对应通知公告表。
- 定义了多个字段,如 `notice_id`, `notice_title`, `notice_type`, `notice_content`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, 和 `remark`。
- 采用 `Field` 来描述每个字段的属性,包括类型、默认值和描述信息。
- 使用自定义验证装饰器(如 `@Xss`, `@NotBlank`, `@Size`)来确保输入数据的安全性和有效性。
- 包含一个方法 `validate_fields()` 用于字段验证。
2. **NoticeQueryModel 类**:
- 继承自 `NoticeModel`,用于不分页查询通知公告。
- 添加了 `begin_time` 和 `end_time` 字段表示查询的时间范围。
3. **NoticePageQueryModel 类**:
- 继承自 `NoticeQueryModel`,用于分页查询通知公告。
- 包含 `page_num` 和 `page_size` 字段来支持分页功能。
4. **DeleteNoticeModel 类**:
- 简单的模型用于删除通知公告。
- 包含一个 `notice_ids` 字段,表示要删除的公告ID。
总的来说,该文件通过使用 `Pydantic` 提供数据结构与验证功能,方便了对通知公告的管理和操作。
## [32/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/config_vo.py
### 概述 - config_vo.py
`config_vo.py` 是一个用于定义参数配置表相关数据模型的文件,主要利用了 Pydantic 库来实现数据验证和序列化功能。以下是文件的主要组成部分:
1. **导入模块**:
- 使用 `datetime` 来处理时间相关的字段。
- `pydantic` 提供了数据模型支持。
- `pydantic_validation_decorator` 中的装饰器用于字段验证。
- `typing` 模块用于类型注解。
2. **ConfigModel 类**:
- 这是一个基本的配置模型,包含多个字段(如 `config_id`, `config_name`, `config_key`, `config_value`, 等)来存储参数信息。
- 使用 `Field` 提供字段描述和可选性。
- 具有字段验证功能,例如通过 `NotBlank` 和 `Size` 装饰器确保某些字段不为空且在特定长度范围内。
- 包含 `validate_fields` 方法,用于触发字段验证。
3. **ConfigQueryModel 类**:
- 继承自 `ConfigModel`,增加了用于查询的可选时间范围字段(`begin_time`, `end_time`)。
- 用于进行不分页的参数配置查询。
4. **ConfigPageQueryModel 类**:
- 也是继承自 `ConfigQueryModel`,添加了 `page_num` 和 `page_size` 字段,用于实现分页查询功能。
5. **DeleteConfigModel 类**:
- 一个独立的模型,用于描述删除操作,包含一个字段 `config_ids`,表示需要删除的配置主键。
### 总结:
此文件提供了一套完整的模型定义,用于管理和验证参数配置的相关信息,支持创建、查询和删除操作,适合使用于 FastAPI 项目中的后端逻辑处理。
## [33/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/role_vo.py
### 概述 - `role_vo.py`
该文件定义了多个与角色管理相关的Pydantic模型,主要用于数据验证和序列化处理。以下是主要结构和功能的概述:
1. **RoleModel**:
- 角色的核心模型,包括角色的ID、名称、权限字符串、状态等属性。
- 使用字段验证器来确保`menu_check_strictly`和`dept_check_strictly`字段的值在布尔值和整数之间转换。
- 通过模型验证器检查角色ID是否为1以确定是否为管理员。
- 具有字段长度和非空验证,使用自定义装饰器`NotBlank`和`Size`。
2. **关联模型**:
- `RoleMenuModel`和`RoleDeptModel`:表示角色与菜单和部门之间的关联关系,简化了这两者的许多所需参数。
3. **查询模型**:
- `RoleQueryModel`和`RolePageQueryModel`:分别用于不分页和分页查询角色的信息,包含查询所需的时间参数。
4. **角色及关联查询模型**:
- `RoleMenuQueryModel`和`RoleDeptQueryModel`:用于查询角色的菜单和部门信息,包含已选择的ID列表。
5. **新增与删除模型**:
- `AddRoleModel`:针对新增角色的操作,附加了部门和菜单ID的信息。
- `DeleteRoleModel`:用于删除角色的操作,包含角色ID及更新者信息。
### 总结
该文件设计了一个完整的角色管理系统模型,涵盖了角色的基本属性、关联关系以及增删改查的操作,确保通过Pydantic进行有效的数据验证处理。
## [34/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/server_vo.py
该文件 `server_vo.py` 定义了一系列用于服务器监控数据的 Pydantic 数据模型。这些模型用于结构化和验证数据,确保符合预定义的格式。以下是各个类的简要概述:
1. **CpuInfo**:存储 CPU 相关信息,例如核心数、用户使用率、系统使用率和当前空闲率。
2. **MemoryInfo**:保存内存相关数据,字段包括总内存、已用内存、剩余内存和使用率。
3. **SysInfo**:提供服务器的系统信息,包括 IP 地址、计算机名称、操作系统架构和名称,以及用户目录等。
4. **PyInfo**:扩展自 `MemoryInfo`,包含与 Python 相关的信息,例如 Python 名称、版本、启动时间和安装路径。
5. **SysFiles**:描述文件系统相关的信息,包括磁盘路径、类型及其使用情况。
6. **ServerMonitorModel**:综合模型,包含 CPU、内存、系统、Python 以及磁盘相关的信息,旨在全面监控服务器状态。
每个模型都使用 `Field` 来描述字段,并利用 `ConfigDict` 和 `to_camel` 函数来生成采用驼峰命名法的别名,以满足不同的 API 需求。整体上,该文件为服务器监控提供了清晰、结构化的数据管理方案。
## [35/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/post_vo.py
该程序文件 `post_vo.py` 定义了一系列用于处理岗位信息的 Pydantic 模型,主要功能是数据验证和序列化。以下是文件的概述:
1. **导入模块**:
- 导入了标准库和 Pydantic、类型注解等必要模块,用于数据模型的构建和验证。
2. **PostModel**:
- 岗位信息表的 Pydantic 模型,包含多个属性,如岗位ID、编码、名称、状态等。
- 使用了字段描述和别名生成器 (`alias_generator`),以便与前端数据格式一致。
- 添加了校验装饰器(如 `@NotBlank` 和 `@Size`),确保特定字段不为空且在长度限制内。
- 提供了 `validate_fields` 方法,用于统一校验相关字段。
3. **PostQueryModel**:
- 继承自 `PostModel`,用于不分页的岗位管理查询。增加了开始时间和结束时间属性,扩展了查询功能。
4. **PostPageQueryModel**:
- 继承自 `PostQueryModel`,用于分页查询,增加了当前页码和每页记录数属性。
5. **DeletePostModel**:
- 用于删除岗位的模型,仅包含需要删除的岗位ID,并同样使用了别名生成器。
整体来看,该文件主要用于定义数据模型,保证数据的完整性和准确性,在岗位管理模块中发挥着重要角色。
## [36/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/log_vo.py
该文件 `log_vo.py` 定义了与操作和登录日志相关的数据模型,采用了 Pydantic 库为数据验证和序列化提供支持。以下是文件的概述:
1. **OperLogModel**: 定义了操作日志的基本字段,如日志主键、模块标题、业务类型、操作人、操作时间等,支持数据验证和描述。
2. **LogininforModel**: 定义了登录日志的基本字段,包括访问ID、用户账号、登录IP、登录状态等,同样具有数据验证功能。
3. **OperLogQueryModel**: 继承自 `OperLogModel`,用于不分页查询操作日志,添加了排序字段和时间范围。
4. **OperLogPageQueryModel**: 继承自 `OperLogQueryModel`,用于分页查询操作日志,包含当前页码和每页记录数。
5. **DeleteOperLogModel**: 定义了一个用于删除操作日志的模型,包含需要删除的日志主键。
6. **LoginLogQueryModel**: 继承自 `LogininforModel`,用于不分页查询登录日志,包含排序字段和时间范围。
7. **LoginLogPageQueryModel**: 继承自 `LoginLogQueryModel`,用于分页查询登录日志,包含当前页码和每页记录数。
8. **DeleteLoginLogModel**: 用于删除登录日志的模型,包含需要删除的访问ID。
9. **UnlockUser**: 定义了解锁用户的模型,包含用户名称。
文件通过使用 `ConfigDict` 和 `alias_generator` 使字段名能够自动生成驼峰命名规则,使得模型在与前端交互时更为友好。文件整体旨在支持操作和登录日志管理的功能,需要在 FastAPI 应用程序中使用时提供相应的 API 支持。
## [37/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/user_vo.py
该文件 `user_vo.py` 是一个 FastAPI 应用的 Pydantic 数据模型定义文件,主要用于处理与用户相关的数据验证和序列化。以下是该文件的主要内容概述:
1. **模块导入**:
- 导入了必要的库,包括用于正则表达式处理的 `re`、日期时间处理的 `datetime`、以及 Pydantic 的相关模块,用于数据模型的创建和验证。
2. **数据模型**:
- 定义了多个用于用户及其关联数据的模型,包括:
- `TokenData`: 用于存储解析后的用户 token 信息。
- `UserModel`: 表示用户的基本信息,包含字段如用户 ID、用户名、邮箱、密码等,包含多种模型验证器来确保数据的合法性。
- `UserRoleModel` 和 `UserPostModel`: 分别表示用户与角色、岗位关联的模型。
- `UserInfoModel`: 包含用户的详细信息及其岗位和角色。
- `CurrentUserModel`: 表示当前用户和其权限、角色。
- `UserDetailModel` 和 `UserProfileModel`: 获取用户详细信息和个人信息的响应模型。
- `UserQueryModel` 和 `UserPageQueryModel`: 用户查询的模型,支持分页。
- `AddUserModel` 和 `EditUserModel`: 新增和编辑用户的模型。
- `ResetPasswordModel` 和 `ResetUserModel`: 分别用于重置密码的模型。
- `DeleteUserModel`: 用于删除用户的模型。
- `UserRoleQueryModel` 和 `UserRolePageQueryModel`: 用于查询用户角色管理的模型。
- `SelectedRoleModel` 和 `UserRoleResponseModel`: 处理角色选择和返回的模型。
- `CrudUserRoleModel`: 用于用户与角色之间的新增和删除操作。
3. **验证逻辑**:
- 利用 Pydantic 的 `@model_validator` 装饰器定义了一些字段的验证逻辑,如检查密码的字符合法性,确保用户 ID 为 1 的用户具有管理员权限,以及对用户名、邮箱等字段的 XSS 和长度等验证。
4. **字段描述**:
- 使用 `Field()` 定义了字段属性,如默认值和描述信息,方便快速理解字段用途。
此文件为用户管理相关的 RESTful API 提供了基础的数据模型和验证逻辑,确保输入数据的安全性和有效性。
## [38/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/dept_vo.py
`dept_vo.py` 是一个使用 Pydantic 库定义数据模型的 Python 文件,主要用于 FastAPI 的部门管理功能。以下是文件的概述:
### 文件概述
1. **模块导入**:
- 导入了必要的库和模块,包括 `datetime`、`pydantic`、以及自定义的验证装饰器。
2. **DeptModel 类**:
- 这个模型代表部门信息,继承自 `Pydantic` 的 `BaseModel`。
- 定义了多个部门相关的字段,如 `dept_id`、`parent_id`、`dept_name`、`status`等,使用 `Optional` 表示这些字段是可选的。
- 利用了 `Field` 来给字段添加描述和默认值。
- 配置 `alias_generator` 使字段名可以转换为 camelCase 格式。
- 包含了字段验证方法,确保字段遵循特定规则(非空、长度限制和格式正确)。
3. **DeptQueryModel 类**:
- 继承自 `DeptModel`,用于不分页的部门查询。
- 添加了 `begin_time` 和 `end_time` 字段,用于时间区间的查询。
4. **DeleteDeptModel 类**:
- 另一个独立模型用于删除部门。
- 包含 `dept_ids` 字段用于接收待删除的部门ID,及 `update_by` 和 `update_time` 字段跟踪更新信息。
### 总结
这个文件定义了与部门相关的数据结构和验证逻辑,确保输入数据的合规性,上述模型便于在 FastAPI 应用中处理部门管理的请求和响应。
## [39/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/job_vo.py
该文件 `job_vo.py` 定义了多个与定时任务和定时任务日志相关的 Pydantic 模型,主要用于数据验证和序列化。以下是各模型的概述:
1. **JobModel**:表示定时任务的信息,包括任务ID、名称、组名、执行器、调用目标、参数、cron表达式、执行策略、并发执行标志、状态、创建人及时间等。包含字段验证逻辑,确保 `invoke_target` 和 `cron_expression` 字段的有效性。
2. **JobLogModel**:记录定时任务执行过程中的日志信息,包括日志ID、任务名称、执行器、调用目标、状态等。
3. **JobQueryModel**:扩展了 `JobModel`,用于不分页查询定时任务,并增加了开始和结束时间字段。
4. **JobPageQueryModel**:扩展了 `JobQueryModel`,添加了分页查询所需的页码和每页记录数字段。
5. **EditJobModel**:用于编辑定时任务,继承自 `JobModel`,增加了操作类型字段。
6. **DeleteJobModel**:表示删除定时任务的请求,包含要删除的任务IDs。
7. **JobLogQueryModel**:类似于 `JobQueryModel`,但针对定时任务日志,用于不分页查询日志,并包含时间范围字段。
8. **JobLogPageQueryModel**:扩展了 `JobLogQueryModel`,增加用于分页查询的页码和每页记录数字段。
9. **DeleteJobLogModel**:表示删除定时任务日志的请求,包含要删除的日志IDs。
整体而言,这些模型帮助管理定时任务和其日志的创建、查询、编辑和删除操作,确保数据的有效性和完整性。
## [40/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/cache_vo.py
文件 `cache_vo.py` 主要定义了两个数据模型,使用 Pydantic 库进行数据验证和序列化。
1. **CacheMonitorModel**:
- 描述:用于缓存监控信息。
- 字段:
- `command_stats`: 可选的命令统计列表,默认为空列表。
- `db_size`: 可选的整数,表示键的数量。
- `info`: 可选的字典,包含 Redis 相关信息。
- 特性:通过 `model_config` 设置了字段名称转换为驼峰命名法。
2. **CacheInfoModel**:
- 描述:用于表示缓存监控对象的信息。
- 字段:
- `cache_key`: 可选的字符串,表示缓存键名。
- `cache_name`: 可选的字符串,用于标识缓存名称。
- `cache_value`: 可选的任意类型,表示缓存内容。
- `remark`: 可选的字符串,用于记录备注信息。
- 特性:同样通过 `model_config` 支持驼峰命名法。
总结:该文件通过定义这两个 Pydantic 模型,提供了一种结构化方式来处理和验证缓存监控相关的数据,结构清晰,易于扩展。
## [41/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/common_vo.py
该文件 `common_vo.py` 定义了两个数据模型,使用了 Pydantic 库来进行数据验证和序列化。
1. **CrudResponseModel**:
- 这是一个通用的操作响应模型,具有以下字段:
- `is_success` (bool): 表示操作是否成功。
- `message` (str): 包含响应的消息信息。
- `result` (Optional[Any]): 可选的响应结果,可以是任何类型。
2. **UploadResponseModel**:
- 这个模型专注于文件上传的响应,配置了字段名称的别名生成器(将字段名转换为驼峰命名法)。它的字段包括:
- `file_name` (Optional[str]): 新文件映射路径。
- `new_file_name` (Optional[str]): 新文件的名称。
- `original_filename` (Optional[str]): 原文件的名称。
- `url` (Optional[str]): 新文件的访问 URL。
这两个模型能够有效地用于处理相关操作的响应数据,增强了代码的可读性和可维护性。
## [42/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/login_vo.py
该文件 `login_vo.py` 是一个使用 Pydantic 框架构建的模型定义模块,主要用于处理与用户登录、注册、验证码和路由有关的数据结构。以下是文件中各个类的简要概述:
1. **UserLogin**:
- 用于表示用户登录信息。
- 包含用户名、密码、验证码、会话编号等字段。
2. **UserRegister**:
- 用于用户注册信息的表示。
- 包括用户名、密码和确认密码,及验证码和会话编号。
- 具备密码验证的方法以确保密码不包含非法字符。
3. **Token**:
- 表示身份验证的令牌结构。
- 包含访问令牌和令牌类型。
4. **CaptchaCode**:
- 用于表示验证码信息。
- 包括是否启用验证码、是否启用注册及验证码图片。
5. **SmsCode**:
- 表示短信验证码的结构。
- 包含是否成功的标识、短信验证码、会话编号和额外消息。
6. **MenuTreeModel**:
- 继承自 `MenuModel`,用于表示带有子菜单的菜单结构。
7. **MetaModel**:
- 用于描述路由的元信息,例如标题、图标、缓存设置和内部链接。
8. **RouterModel**:
- 表示路由的结构体,包括路由名称、地址、重定向信息、组件地址、路由参数及子路由信息。
整体而言,此文件主要用于定义验证和序列化用户与系统相关的输入数据,确保数据格式的正确性,并提供结构化的信息以支持系统的身份验证及路由管理。
## [43/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/menu_vo.py
该文件定义了与菜单相关的几个数据模型,使用 Pydantic 库来进行数据验证与序列化。以下是文件的关键内容概述:
1. **MenuModel**:
- 这是一个 Pydantic 模型,表示菜单的属性和行为。
- 定义了多个可选字段,如 `menu_id`、`menu_name`、`parent_id` 等,描述菜单的不同特征及其状态。
- 使用 `Field` 对各字段进行描述,提供了相关信息(如最大长度、是否可为空等)。
- 包含自定义验证 decorators,如 `NotBlank` 和 `Size`,确保字段满足特定的验证规则。
- 还定义了 `validate_fields` 方法,用于集中调用字段验证。
2. **MenuQueryModel**:
- 继承自 `MenuModel`,用于菜单管理的查询,不涉及分页。
- 增加了两个可选字段 `begin_time` 和 `end_time`,用于定义查询的时间范围。
3. **DeleteMenuModel**:
- 一个简单的 Pydantic 模型,专用于删除操作。
- 定义了一个必填字段 `menu_ids` 表示需要删除的菜单ID。
文件的整体目的是构建数据模型,以便在 FastAPI 应用中使用,提供菜单管理功能,包括创建、查询和删除等操作。
## [44/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/online_vo.py
该文件 `online_vo.py` 定义了与在线用户相关的数据模型,使用了 Pydantic 库来确保数据的验证和结构:
1. **模型概述**:
- 文件主要包含三个 Pydantic 模型:
- `OnlineModel`: 表示在线用户的信息,包含用户的会话编号、登录名称、部门、IP 地址、登录地点、浏览器类型、操作系统与登录时间。
- `OnlineQueryModel`: 继承自 `OnlineModel`,用于岗位管理的模型,新增了开始时间和结束时间字段,适用于不分页查询。
- `DeleteOnlineModel`: 用于强制退出在线用户的模型,包含一个需要强退的会话编号字段。
2. **字段配置**:
- 所有字段都是可选的,使用 `Optional` 类型表示。
- 使用了 `Field` 来添加字段的描述,增强了模型的可读性与文档生成能力。
- `model_config` 中 `alias_generator` 设置为 `to_camel`,将字段名转换为驼峰命名法,便于与前端交互。
3. **使用场景**:
- 这些模型适用于处理在线用户的管理、查询及强制退出等功能,非常适合在 FastAPI 项目中使用。
总体来说,此文件为在线用户管理提供了清晰且结构化的数据模型,简化了数据验证和处理的流程。
## [45/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/entity/vo/dict_vo.py
`dict_vo.py` 文件是一个使用 Pydantic 库创建的字典模型定义文件,主要用于 FastAPI 后端项目。该文件包含了多个数据模型,具体概述如下:
1. **DictTypeModel 类**:
- 描述字典类型,包含字段如 `dict_id`、`dict_name`、`dict_type` 等。
- 使用 Pydantic 验证注解,如 `@NotBlank` 和 `@Size` 确保某些字段不为空并且符合长度限制。
- 提供 `validate_fields` 方法进行字段验证。
2. **DictDataModel 类**:
- 描述字典数据,字段如 `dict_code`、`dict_label`、`dict_value` 等。
- 具有类似的验证方法和注解,确保字典标签和键值的有效性。
3. **DictTypeQueryModel 和 DictDataQueryModel 类**:
- 分别用于字典类型和字典数据的查询,不分页,增加了时间范围字段 `begin_time` 和 `end_time`。
4. **DictTypePageQueryModel 和 DictDataPageQueryModel 类**:
- 用于分页查询,添加了 `page_num` 和 `page_size` 字段以控制分页。
5. **DeleteDictTypeModel 和 DeleteDictDataModel 类**:
- 用于删除操作,分别定义了需要删除的字典主键或编码。
所有模型均使用 Pydantic 提供的功能来规范数据输入,确保数据的有效性和一致性。
## [46/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/cache_service.py
### 概述:`cache_service.py`
该文件定义了一个名为 `CacheService` 的类,提供了一系列与缓存监控相关的服务方法,并且依赖于 FastAPI 框架和 Redis 数据库。主要功能包括获取缓存统计信息、缓存名称和键名列表、缓存内容、以及清除缓存。
#### 主要类和方法:
1. **CacheService**
- 该类负责实现对缓存的监控和管理功能。
2. **方法**:
- `get_cache_monitor_statistical_info_services(request: Request)`: 获取缓存监控的统计信息,包括数据库大小和命令统计。
- `get_cache_monitor_cache_name_services()`: 获取缓存名称列表信息,基于 `RedisInitKeyConfig` 枚举。
- `get_cache_monitor_cache_key_services(request: Request, cache_name: str)`: 根据给定的缓存名称获取对应的缓存键名列表。
- `get_cache_monitor_cache_value_services(request: Request, cache_name: str, cache_key: str)`: 获取指定缓存名称和键名的缓存内容。
- `clear_cache_monitor_cache_name_services(request: Request, cache_name: str)`: 清除指定缓存名称下的所有键值。
- `clear_cache_monitor_cache_key_services(request: Request, cache_key: str)`: 清除与指定缓存键名相关的所有缓存。
- `clear_cache_monitor_all_services(request: Request)`: 清除所有缓存,并重新初始化系统字典和配置。
#### 使用方法:
- 该服务层可以通过 FastAPI 应用中的请求对象调用相应的方法,执行缓存的监控、查询及清除等操作。
#### 依赖项:
- **FastAPI**: 用于处理 HTTP 请求。
- **Redis**: 用于缓存存储和操作。
- **config.enums.RedisInitKeyConfig**: 枚举类,定义了缓存的初始化配置。
- **module_admin.entity.vo**: 该模块用于定义与缓存相关的数据模型(如 `CacheInfoModel`, `CacheMonitorModel`, `CrudResponseModel`)。
### 适用场景:
该服务适用于需要对缓存内容进行监控与管理的应用,特别是在高性能或数据频繁变动的场景中,能够有效减少数据库的访问压力,提高系统响应速度。
## [47/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/job_log_service.py
### 概述文件:job_log_service.py
**文件路径**: `fastapi-backend/module_admin/service/job_log_service.py`
**主要功能**:
该文件实现了一个服务层 `JobLogService`,专注于定时任务日志的管理,包括日志的增、删、查、清空和导出功能。
**核心类**:
- `JobLogService`: 提供了对定时任务日志的多种操作方法。
**主要方法**:
1. `get_job_log_list_services`: 异步获取定时任务日志列表,支持分页。
2. `add_job_log_services`: 添加新的定时任务日志,不支持异步,提交后返回成功或失败的信息。
3. `delete_job_log_services`: 异步删除指定的定时任务日志,接受一个包含日志ID的对象。
4. `clear_job_log_services`: 清空所有定时任务日志的异步方法,返回清除结果。
5. `export_job_log_list_services`: 导出定时任务日志列表为Excel文件,处理日志状态和其他字段的映射。
**依赖模块**:
- `JobLogDao`: 数据访问对象,进行数据库操作。
- `DictDataService`: 提供字典数据查询服务。
- `export_list2excel`: 工具方法,用于将数据导出为Excel格式。
**数据模型**:
- `JobLogModel`, `DeleteJobLogModel`, `JobLogPageQueryModel`: 用于描述定时任务日志及其请求和响应格式。
**异常处理**:
- 在添加、删除和清除日志时,采用了事务处理,确保在发生异常时可以回滚。
**使用场景**:
该服务模块可用于管理和监控定时任务的执行情况,适合用于后台管理系统中的任务调度和日志管理功能。
## [48/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/captcha_service.py
### 概述:captcha_service.py
#### 文件位置:
`fastapi-backend/module_admin/service/captcha_service.py`
#### 功能:
这个文件定义了一个名为 `CaptchaService` 的类,主要用于生成验证码图像和计算结果。
#### 主要组件:
- **导入模块**:
- `base64`: 用于将图像数据转换为base64字符串。
- `io`: 用于处理图像数据流。
- `os`: 用于处理文件路径。
- `random`: 用于生成随机数。
- `PIL (Python Imaging Library)`:用于创建和处理图像。
- **CaptchaService 类**:
- 该类包含一个类方法 `create_captcha_image_service`,用于生成验证码图像及其答案。
#### 方法: `create_captcha_image_service`
1. **创建图像**:
- 生成一个160x60像素的空白图像,背景色为淡灰色。
2. **绘图**:
- 创建绘图对象,并设置字体(从项目的 `assets` 目录中加载 `Arial.ttf` 字体)。
3. **生成随机数与运算**:
- 生成两个0到9之间的随机整数。
- 随机选择一个运算符(加、减或乘)。
- 根据运算符计算结果。
4. **绘制文本**:
- 在图像上绘制文本,格式为“num1 操作符 num2 = ?”。
5. **图像保存**:
- 将生成的图像数据保存到内存中的 `BytesIO` 对象。
6. **转换为base64**:
- 将图像数据转换为base64字符串,并返回该字符串和计算结果的列表。
#### 返回值:
- 方法返回一个包含两个元素的列表:第一个元素是图像的base64字符串,第二个元素是计算结果。
#### 用途:
该服务可以用于Web应用程序中的验证码功能,确保用户在提交表单前进行验证,增强安全性。
## [49/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/menu_service.py
`menu_service.py` 是一个 FastAPI 后端项目中用于管理菜单的服务层模块。以下是该文件的主要功能和结构概述:
### 概述
- **模块功能**:提供菜单的增删改查(CRUD)服务,包括获取菜单树信息、验证菜单名称唯一性等功能。
- **依赖项**:使用 SQLAlchemy 进行异步数据库操作,涉及到菜单和角色的 DAO(数据访问对象)层进行数据库交互。
- **异常处理**:通过自定义异常 `ServiceException` 和 `ServiceWarning` 来处理业务逻辑中的错误和警告。
### 主要类
- **MenuService**: 主要服务类,包含多个异步类方法,负责菜单管理的业务逻辑。
### 主要方法
1. **获取菜单树** (`get_menu_tree_services`)
- 根据当前用户获取菜单树结构。
2. **获取角色菜单树** (`get_role_menu_tree_services`)
- 根据角色 ID 获取相应的菜单树,并返回已选中的菜单。
3. **获取菜单列表** (`get_menu_list_services`)
- 根据分页信息获取菜单列表。
4. **校验菜单名称唯一性** (`check_menu_name_unique_services`)
- 检查菜单名称是否唯一,返回校验结果。
5. **新增菜单** (`add_menu_services`)
- 添加新菜单,校验名称唯一性和URL格式,处理事务。
6. **编辑菜单** (`edit_menu_services`)
- 编辑现有菜单,校验名称唯一性、父子关系及URL格式,处理事务。
7. **删除菜单** (`delete_menu_services`)
- 删除菜单前检查是否存在子菜单或角色关联,处理事务。
8. **获取菜单详细信息** (`menu_detail_services`)
- 根据菜单 ID 获取具体的菜单信息。
9. **列表转换为树形结构** (`list_to_tree`)
- 根据菜单列表生成树形嵌套数据结构,以便于前端展示。
### 使用的工具与库
- **SQLAlchemy**: 用于异步数据库操作。
- **自定义工具类**:
- `CamelCaseUtil`: 可能用于转换字段命名风格(例如,驼峰命名)。
- `StringUtil`: 用于字符串操作,特别是 URL 检查。
### 总结
该服务模块在菜单管理系统中扮演着核心角色,负责处理关于菜单的业务逻辑,包括数据的验证、处理和转换,为前端提供所需的数据接口。
## [50/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/server_service.py
该文件 `server_service.py` 定义了一个名为 `ServerService` 的类,主要用于收集和提供服务器监控信息。具体功能包括:
1. **CPU信息**:使用 `psutil` 模块获取CPU的核心数和使用情况,包括用户、系统和空闲时间的百分比,封装为 `CpuInfo` 对象。
2. **内存信息**:获取系统内存的总量、已用量和空闲量,并计算内存的使用百分比,封装为 `MemoryInfo` 对象。
3. **主机信息**:收集计算机的主机名、IP地址、操作系统名称、计算机名、系统架构和用户目录,封装为 `SysInfo` 对象。
4. **Python解释器信息**:获取当前Python进程的相关信息,如名称、版本、启动时间、运行时间及内存使用情况,封装为 `PyInfo` 对象。
5. **磁盘信息**:收集所有磁盘的使用情况,包括总量、已用量和空闲量,并生成 `SysFiles` 列表,用于描述每个磁盘的状态。
最后,该类的 `get_server_monitor_info` 方法将上述收集的信息封装为 `ServerMonitorModel` 对象并返回。这些功能为监控和管理服务器提供了重要的数据支持。
## [51/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/job_service.py
### 概述: `job_service.py`
#### 文件路径
`fastapi-backend/module_admin/service/job_service.py`
#### 功能
该文件定义了一个名为 `JobService` 的类,作为定时任务管理模块的服务层,主要处理与定时任务相关的逻辑,如添加、编辑、删除、执行以及查询定时任务等。
#### 主要功能方法
1. **获取定时任务列表**:
- `get_job_list_services`: 获取定时任务的详细列表,支持分页。
2. **校验定时任务唯一性**:
- `check_job_unique_services`: 检查一个定时任务是否在数据库中是唯一的。
3. **新增定时任务**:
- `add_job_services`: 添加新的定时任务,需要校验Cron表达式及调用目标的合法性。
4. **编辑定时任务**:
- `edit_job_services`: 编辑已有的定时任务,支持状态的更新。
5. **一次性执行定时任务**:
- `execute_job_once_services`: 立即执行指定的定时任务。
6. **删除定时任务**:
- `delete_job_services`: 删除一个或多个定时任务。
7. **获取定时任务详细信息**:
- `job_detail_services`: 根据任务ID获取定时任务的详细信息。
8. **导出定时任务信息**:
- `export_job_list_services`: 将定时任务信息导出为Excel格式,提供中文映射和字段转换。
#### 异常处理
在操作过程中,如果遇到问题(如Cron表达式不正确、任务已存在等),会通过 `ServiceException` 抛出具体错误信息,并在数据库操作失败时进行回滚。
#### 依赖
- 依赖于 `FastAPI`、`SQLAlchemy` 及多个自定义模块与常量。
- 使用了工具类,如 `CronUtil`、`StringUtil` 、`CamelCaseUtil` 进行数据处理。
#### 备注
该模块适用于后端定时任务的管理,支持用户友好的错误信息和任务执行的灵活控制,是系统任务调度的核心部分。
## [52/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/dept_service.py
文件 `dept_service.py` 实现了部门管理模块中的服务层功能,使用了异步数据库操作并依赖于 SQLAlchemy。以下是文件的概述:
### 文件概述
- **模块功能**:
- 提供部门的增、删、改、查等服务功能。
- 提供部门的权限校验、部门名称唯一性校验等功能。
- **主要类**:
- `DeptService`:部门服务类,包含多个异步类方法,用于处理部门相关的业务逻辑。
### 主要方法
1. **获取部门信息**:
- `get_dept_tree_services`:获取部门树形结构。
- `get_dept_for_edit_option_services`:获取可编辑的部门选项。
- `get_dept_list_services`:获取部门列表。
2. **校验功能**:
- `check_dept_data_scope_services`:校验某个部门是否有数据权限。
- `check_dept_name_unique_services`:校验部门名称是否唯一。
3. **增、删、改操作**:
- `add_dept_services`:新增部门信息,校验名称及父级部门状态。
- `edit_dept_services`:编辑部门信息,校验名称唯一性及父级部门。
- `delete_dept_services`:删除部门,需检查是否有子部门或用户。
4. **获取详细信息**:
- `dept_detail_services`:获取部门的详细信息。
5. **工具方法**:
- `list_to_tree`:将部门列表转换为树形结构。
- `replace_first`:替换字符串中的匹配内容。
- `update_parent_dept_status_normal`:更新父级部门状态为正常。
- `update_dept_children`:更新子部门信息的祖先字段。
### 异常处理
- 使用自定义异常 `ServiceException` 和 `ServiceWarning` 来处理业务逻辑中的错误,如权限问题、名称冲突等。
### 依赖
- 数据库操作基于 `AsyncSession`,使用 SQLAlchemy ORM 进行异步查询和事务处理。
- 使用了 `CommonConstant` 进行常量定义,`CamelCaseUtil` 用于转换结果格式。
### 总结
这个模块提供了部门管理系统的核心服务,支持异步操作和数据权限控制,确保系统的数据一致性与安全性。
## [53/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/dict_service.py
`dict_service.py` 是一个与字典类型和字典数据管理相关的服务层代码,主要用于处理与字典相关的业务逻辑。该文件包含两个主要类:`DictTypeService` 和 `DictDataService`,每个类都封装了一组与字典类型和数据操作相关的方法。
### 概述
1. **DictTypeService**:
- 管理字典类型,包括获取、添加、编辑和删除字典类型。
- 提供服务方法,如:
- `get_dict_type_list_services`: 获取字典类型列表。
- `add_dict_type_services`: 添加新的字典类型。
- `edit_dict_type_services`: 编辑已有字典类型。
- `delete_dict_type_services`: 删除字典类型。
- `dict_type_detail_services`: 获取特定字典类型的详细信息。
- `refresh_sys_dict_services`: 刷新字典缓存。
2. **DictDataService**:
- 管理字典数据,处理与字典值相关的操作。
- 提供服务方法,如:
- `get_dict_data_list_services`: 获取字典数据列表。
- `add_dict_data_services`: 添加新的字典数据。
- `edit_dict_data_services`: 编辑已有字典数据。
- `delete_dict_data_services`: 删除字典数据。
- `query_dict_data_list_from_cache_services`: 从缓存中获取字典数据。
### 功能特点
- **异步操作**: 该服务层支持异步操作,使用 `AsyncSession` 进行数据库交互。
- **唯一性检查**: 在添加和编辑字典类型或数据时,进行了唯一性验证,避免重复项。
- **缓存管理**: 使用 Redis 进行字典类型及字典数据的缓存管理,提高性能。
- **数据导出**: 提供字典类型和数据导出的功能,将数据转为二进制以便生成 Excel 文档。
### 错误处理
- 如果操作失败,抛出自定义的 `ServiceException`,并附带相关错误信息,确保调用方可以获知详细原因。
### 结论
该服务层设计合理,模块化强,便于维护和扩展,适合在基于 FastAPI 的后端项目中使用。主要结构清晰,并提供了对字典类型和字典数据的全面管理服务。
## [54/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/notice_service.py
### 概述:通知公告管理服务层 (notice_service.py)
#### 文件位置:
`fastapi-backend/module_admin/service/notice_service.py`
#### 功能:
该文件定义了 `NoticeService` 类,提供了与通知公告管理相关的多个异步服务方法。这些方法用于处理通知公告的查询、添加、编辑和删除功能。
#### 主要组成部分:
1. **Imports**:
- 依赖 `AsyncSession` 来处理数据库异步操作。
- 引入常量和异常处理类。
- 引入数据访问对象(DAO)和响应模型。
2. **类:`NoticeService`**:
- 包含多个类方法,每个方法负责特定的服务逻辑。
3. **方法**:
- `get_notice_list_services`: 获取通知公告列表,支持分页。
- `check_notice_unique_services`: 检查通知公告是否唯一,避免重复。
- `add_notice_services`: 添加新的通知公告,包括唯一性校验。
- `edit_notice_services`: 编辑现有通知公告,更新之前进行唯一性校验。
- `delete_notice_services`: 删除指定的通知公告,支持批量删除。
- `notice_detail_services`: 获取单个通知公告的详细信息。
#### 异常处理:
- 使用 `ServiceException` 提供明确的错误信息。
- 在数据库操作中实现了事务管理,出现异常时进行回滚。
#### 返回值:
- 大多数方法返回一个 `CrudResponseModel`,包含操作结果的布尔值和相关消息。
该服务层与数据访问层紧密配合,通过 ORM(对象关系映射)实现数据库的异步操作,适用于 FastAPI 等异步框架结构。整体服务层设计简洁,关注点明确,有助于维护和扩展。
## [55/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/common_service.py
### 概述:`common_service.py`
`common_service.py` 是一个用于处理文件上传和下载的服务模块,基于 FastAPI 框架。该模块提供了常用的文件处理功能,并包含以下主要功能:
#### 主要功能
1. **文件上传 (`upload_service`)**
- 接收 HTTP 请求和上传文件,验证文件类型。
- 生成存储路径并保存文件到服务器。
- 返回上传结果,包括文件的相对路径及相关信息。
2. **文件下载 (`download_services`)**
- 使用后台任务处理文件下载,支持选择是否在下载后删除文件。
- 验证文件名合法性和文件是否存在。
- 返回下载结果。
3. **资源文件下载 (`download_resource_services`)**
- 从上传目录中下载指定资源文件。
- 进行多重校验确保文件名合法性及文件存在性。
- 返回下载结果。
#### 依赖组件
- **`UploadUtil`**: 工具类,用于文件验证、生成随机数和文件操作。
- **`CrudResponseModel` 和 `UploadResponseModel`**: 数据模型,统一接口返回格式。
- **`ServiceException`**: 自定义异常,用于处理服务中的错误。
#### 注意事项
- 文件名和路径中包含非法字符会导致异常。
- 文件存储路径是动态生成的,基于日期。
该模块有效地将文件上传和下载功能封装在一个服务类中,方便在 FastAPI 应用中进行调用和管理。
## [56/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/role_service.py
### 概述:`role_service.py`
#### 文件路径
`fastapi-backend/module_admin/service/role_service.py`
#### 文件功能
该文件定义了一个名为`RoleService`的类,主要负责角色管理模块的服务逻辑,包括角色的增删改查、权限校验、数据导出以及与用户相关的角色操作。
#### 主要功能
1. **获取角色信息**
- `get_role_select_option_services`: 获取不分页的角色列表。
- `get_role_dept_tree_services`: 根据角色ID获取相关部门树信息。
- `get_role_list_services`: 获取角色列表信息,支持分页。
2. **角色校验**
- `check_role_allowed_services`: 校验角色是否允许操作。
- `check_role_data_scope_services`: 校验角色是否具备数据权限。
- `check_role_name_unique_services`: 校验角色名称的唯一性。
- `check_role_key_unique_services`: 校验角色权限字符的唯一性。
3. **角色管理**
- `add_role_services`: 新增角色并校验其名称和权限的唯一性。
- `edit_role_services`: 编辑角色信息,支持状态更新和菜单权限变更。
- `delete_role_services`: 删除角色并检验角色是否被分配。
4. **数据权限分配**
- `role_datascope_services`: 分配角色的数据权限。
5. **导出功能**
- `export_role_list_services`: 导出角色列表为Excel格式。
6. **与用户的角色关系**
- `get_role_user_allocated_list_services`: 获取已分配给某角色的用户列表。
- `get_role_user_unallocated_list_services`: 获取未分配该角色的用户列表。
####异常处理
该服务类中多处使用了`ServiceException`来处理业务逻辑中的错误,包括角色已存在、角色不允许删除、没有权限访问等。
#### 依赖
- 数据库操作:使用`AsyncSession`与ORM(SQLAlchemy)进行异步数据库操作。
- 角色和用户相关的数据访问层(`RoleDao`和`UserDao`)。
- 公共工具类如`CommonConstant`、`PageResponseModel`和数据转换工具`CamelCaseUtil`。
这个文件是FastAPI后端项目中的关键角色管理服务,确保角色的创建、修改和权限控制符合业务逻辑。
## [57/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/config_service.py
### 概述:`config_service.py`
`config_service.py`是一个服务层模块,主要用于管理和操作参数配置。该模块依赖于FastAPI框架和SQLAlchemy进行异步数据库操作,同时使用Redis进行缓存管理。以下是主要功能和组件的概述:
#### 类:`ConfigService`
- **功能**: 参数配置管理模块的服务层,提供一系列关于配置项的操作。
#### 主要方法:
1. **获取配置列表**:
- `get_config_list_services()`:异步获取参数配置列表支持分页。
2. **初始化缓存**:
- `init_cache_sys_config_services()`:初始化系统配置,并在Redis中缓存配置项的键值对。
3. **从缓存查询**:
- `query_config_list_from_cache_services()`:从Redis缓存中获取指定配置键的值。
4. **校验唯一性**:
- `check_config_key_unique_services()`:检查参数键名是否唯一。
5. **新增配置**:
- `add_config_services()`:添加新的参数配置信息,并更新Redis缓存。
6. **编辑配置**:
- `edit_config_services()`:修改已有参数配置,并处理Redis缓存的更新。
7. **删除配置**:
- `delete_config_services()`:删除指定的参数配置,并更新Redis缓存。
8. **获取配置详情**:
- `config_detail_services()`:根据ID获取参数配置的详细信息。
9. **导出配置列表**:
- `export_config_list_services()`:将参数配置信息导出为Excel格式的二进制数据。
10. **刷新缓存**:
- `refresh_sys_config_services()`:刷新系统配置缓存,重新从数据库读取配置项。
### 依赖项
- **FastAPI**: 用于构建API请求。
- **SQLAlchemy**: 用于数据库异步操作。
- **Redis**: 用于缓存管理。
- **`CommonConstant`, `RedisInitKeyConfig`, `ServiceException`**: 定义常量和异常处理。
- **数据模型**: `ConfigModel`, `ConfigPageQueryModel`, `DeleteConfigModel`等用于传递数据。
### 使用场景
此服务层可用于构建基于FastAPI的应用中的参数配置管理功能,适用于需要动态配置和管理系统参数的场景,同时保证了配置的持久性和高效访问。
## [58/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/login_service.py
### 概述:`login_service.py`
`login_service.py` 是一个 FastAPI 项目中的登录服务模块,负责处理用户的登录、注册、密码重置和权限验证等功能。此模块主要使用 JWT 进行身份验证,并与数据库和 Redis 进行异步交互。
#### 主要组件:
1. **依赖导入**:
- 使用 `jwt` 处理 JSON Web Tokens。
- 使用 `FastAPI` 进行 Web 请求处理。
- 引入 SQLAlchemy 进行异步数据库操作。
2. **OAuth2PasswordRequestForm**:
- 自定义表单类 `CustomOAuth2PasswordRequestForm`,增加了验证码和会话编号参数。
3. **LoginService 类**:
- 提供登录、注册、权限验证和 Token 生成等功能。
4. **主要方法**:
- `authenticate_user`: 校验用户名和密码,支持IP黑名单和验证码校验。
- `create_access_token`: 生成用户的 JWT。
- `get_current_user`: 获取当前用户信息,验证 Token 的有效性。
- `register_user_services`: 处理用户注册,包括验证码的支持。
- `get_sms_code_services`: 生成并返回短信验证码。
- `forget_user_services`: 处理用户密码重置逻辑。
- `logout_services`: 处理用户注销的逻辑。
5. **RouterUtil 工具类**:
- 提供路由和菜单相关的辅助方法,生成路由信息的树形结构。
#### 主要逻辑:
- 登录流程中,首先检查账号是否被锁定或 IP 是否在黑名单中,然后验证用户凭据,并生成相应的 JWT 作为用户的认证令牌。
- 提供了用户注册、获取短信验证码和忘记密码的服务,这些功能也包含有效性检查和错误处理。
- 提供了一个对接 Redis 的接口,用于存储和验证验证码及 Token。
#### 关键异常处理:
- 该服务中包括 `LoginException` 和 `AuthException` 的自定义处理,以便在登录、注册和身份验证过程中进行有效的错误反馈。
#### 总结:
该模块集成了用户认证、授权和注册的完整流程,设计合理且包含了必要的安全性检查,适合用于需要用户登录系统的 FastAPI 应用。
## [59/102] 请对下面的程序文件做一个概述: fastapi-backend/module_admin/service/user_service.py
### 概述:`user_service.py`
该文件是 FastAPI 框架中的用户管理模块的服务层实现,主要负责用户相关的业务逻辑,包括用户的增删改查、权限校验等操作。以下是该文件的重要组成部分和功能描述:
#### 主要导入模块:
- `pandas`: 用于处理 Excel 文件的导入和导出。
- `fastapi`: 提供异步请求处理的相关类和函数。
- `sqlalchemy.ext.asyncio`: 用于异步数据库操作。
- 自定义的各种数据模型和工具类,从不同模块引入。
#### 主要类:
- **UserService**: 用户服务类,封装了与用户相关的各种操作和逻辑。
#### 主要功能方法:
1. **用户列表管理**:
- `get_user_list_services`: 获取用户列表信息,支持分页。
- `check_user_allowed_services`: 校验用户操作权限。
- `check_user_data_scope_services`: 校验用户数据权限。
- `check_user_name_unique_services`: 检查用户名是否唯一。
2. **用户信息管理**:
- `add_user_services`: 添加新用户,校验唯一性。
- `edit_user_services`: 编辑用户信息,支持更新角色和岗位信息。
- `delete_user_services`: 删除用户。
- `user_detail_services`: 获取用户详细信息。
- `user_profile_services`: 获取用户个人详细信息。
3. **用户身份验证与密码管理**:
- `reset_user_services`: 重置用户密码,同时验证旧密码。
4. **批量用户导入与导出**:
- `batch_import_user_services`: 支持从 Excel 文件批量导入用户。
- `get_user_import_template_services`: 获取用户导入模板。
- `export_user_list_services`: 导出用户信息到 Excel。
5. **角色管理**:
- `get_user_role_allocated_list_services`: 获取已分配角色列表。
- `add_user_role_services`: 新增用户角色关联信息。
- `delete_user_role_services`: 删除用户角色关联信息。
#### 异常处理:
- 使用 `ServiceException` 自定义异常处理,确保在执行数据库操作时能够回滚事务并返回相应错误消息。
#### 数据模型与响应模型:
- 使用了一系列的数据模型(如 `UserModel`, `UserDetailModel`, `CrudResponseModel`)来表示不同的请求与响应结构,确保数据的一致性与完整性。
### 总结:
该文件定义了用户管理的核心服务,能够处理用户的基本操作,包括用户信息的增删改查,权限校验,及导入导出功能,确保了用户系统的高效和安全管理。
全部 0条评论