10 KiB
分享码日志模型
**本文档引用的文件** - [ShareCodeLog.js](file://backend/src/models/ShareCodeLog.js) - [shareCodeLogs.js](file://backend/src/routes/shareCodeLogs.js) - [log.vue](file://frontend/src/views/share-code/log.vue) - [shareCodeLog.js](file://frontend/src/api/shareCodeLog.js) - [response.js](file://backend/src/utils/response.js) - [database.js](file://backend/src/config/database.js) - [logger.js](file://backend/src/config/logger.js) - [env.js](file://backend/src/config/env.js) - [app.js](file://backend/src/app.js) - [index.js](file://backend/src/routes/index.js)目录
简介
分享码日志模型是音频管理系统中的重要组成部分,用于跟踪和记录设备分享码的生成、使用和管理过程。该系统通过记录设备MAC地址、分享码、操作类型、用户IP地址、EQ数据快照以及时间戳等关键信息,为音频设备的分享功能提供了完整的审计和追踪能力。
本系统采用前后端分离架构,后端基于Node.js和Express框架,前端使用Vue.js构建用户界面。数据存储采用MySQL数据库,通过Sequelize ORM进行对象关系映射。
项目结构
分享码日志功能涉及以下主要文件和模块:
graph TB
subgraph "后端架构"
A[app.js 应用入口] --> B[routes/index.js 路由汇总]
B --> C[shareCodeLogs.js 分享码日志路由]
C --> D[ShareCodeLog.js 模型定义]
C --> E[response.js 响应处理]
C --> F[logger.js 日志配置]
D --> G[database.js 数据库配置]
end
subgraph "前端架构"
H[log.vue 视图组件] --> I[shareCodeLog.js API封装]
I --> J[请求拦截器]
end
K[MySQL数据库] <- --> G
L[浏览器] <- --> H
图表来源
章节来源
核心组件
数据模型设计
分享码日志模型采用Sequelize ORM定义,包含以下核心字段:
| 字段名 | 类型 | 约束 | 描述 |
|---|---|---|---|
| id | INTEGER | 主键, 自增 | 日志记录唯一标识符 |
| mac_addr | STRING(17) | 非空 | 设备MAC地址,格式如AA:BB:CC:DD:EE:FF |
| share_code | CHAR(5) | 非空 | 5位分享码 |
| action | ENUM | 非空 | 操作类型:export(导出)或import(导入) |
| ip_addr | STRING(45) | 非空, 默认空串 | 用户IP地址,支持IPv4/IPv6 |
| eq_data | JSON | 非空 | EQ数据快照,以JSON格式存储 |
| expire_at | DATE | 可空 | 分享码到期时间(仅导出时设置) |
| create_at | DATE | 非空, 默认当前时间 | 操作时间戳 |
数据库索引优化
模型定义了三个关键索引以优化查询性能:
idx_mac_addr: 基于MAC地址的索引,支持设备级别的快速检索idx_share_code: 基于分享码的索引,支持分享码级别的快速检索idx_create_at: 基于创建时间的索引,支持时间范围查询优化
章节来源
架构概览
分享码日志系统的整体架构采用经典的三层架构模式:
sequenceDiagram
participant Browser as 浏览器
participant Frontend as 前端应用
participant API as API服务器
participant DB as MySQL数据库
participant Logger as 日志系统
Browser->>Frontend : 访问分享码日志页面
Frontend->>API : GET /api/share-code/logs
API->>API : 验证用户身份
API->>DB : 查询分享码日志数据
DB-->>API : 返回查询结果
API->>Logger : 记录查询日志
API-->>Frontend : 返回JSON响应
Frontend->>Browser : 渲染日志表格
Note over Browser,DB : 用户可通过界面筛选和排序日志记录
图表来源
详细组件分析
后端路由实现
后端路由层负责处理HTTP请求并返回标准化的响应格式:
查询参数处理
路由支持多种查询条件,包括:
- 设备过滤:MAC地址模糊匹配
- 分享码过滤:分享码模糊匹配
- 操作类型过滤:export或import精确匹配
- IP地址过滤:IP地址模糊匹配
- 时间范围过滤:基于create_at字段的时间区间查询
分页和排序机制
系统实现了灵活的分页和排序功能:
- 分页参数:skip(偏移量)和limit(每页数量),限制最大1000条记录
- 排序字段:支持按id和create_at排序
- 排序方向:支持升序(asc)和降序(desc)
响应数据格式
所有API响应遵循统一的格式规范:
{
code: number, // 1成功, 2无数据, 0错误
msg: string, // 响应消息
data: object|null // 返回的数据或null
}
前端界面实现
前端采用Vue.js构建响应式用户界面,提供丰富的交互功能:
搜索功能
用户可以通过多种维度筛选日志记录:
- MAC地址输入框,支持标准MAC格式输入
- 分享码输入框,限制最多5个字符
- 操作类型下拉选择,提供导出/导入选项
- IP地址输入框,支持IPv4/IPv6格式
- 时间范围选择器,精确到秒级的时间区间
数据展示
日志表格显示关键信息:
- ID:记录唯一标识
- MAC:设备MAC地址
- 分享码:5位分享码
- 动作:导出或导入状态
- IP:操作者IP地址
- 到期时间:分享码过期时间
- 操作时间:记录创建时间
- EQ快照:查看详细的EQ数据
JSON数据可视化
系统提供专门的对话框展示EQ数据快照,支持:
- 树形结构展示JSON数据
- 支持展开/折叠操作
- 不同数据类型的彩色高亮显示
- 滚动条支持大量数据浏览
章节来源
数据库配置和连接
系统使用MySQL作为数据存储,配置特点包括:
- UTF-8字符集支持,确保国际化兼容性
- 开发环境下启用SQL日志输出,便于调试
- 关闭自动时间戳字段,使用自定义create_at字段
- 冻结表名,避免复数形式的表名变化
章节来源
依赖关系分析
分享码日志系统的依赖关系呈现清晰的层次结构:
graph TD
A[ShareCodeLog.js] --> B[database.js]
C[shareCodeLogs.js] --> A
C --> D[response.js]
C --> E[logger.js]
F[log.vue] --> G[shareCodeLog.js]
G --> H[request.js]
subgraph "外部依赖"
I[Sequelize ORM]
J[Express框架]
K[Winston日志]
L[Element Plus UI]
end
B --> I
C --> J
E --> K
F --> L
图表来源
外部依赖管理
系统对外部依赖的管理遵循以下原则:
- ORM框架:Sequelize提供数据库抽象层
- Web框架:Express处理HTTP请求和响应
- 日志系统:Winston提供结构化日志记录
- 前端UI:Element Plus提供组件库支持
章节来源
性能考虑
查询优化策略
系统通过以下方式优化查询性能:
- 索引优化:为高频查询字段建立专用索引
- 分页限制:防止大数据量查询影响系统性能
- 条件过滤:支持多维度精确过滤减少数据传输
- 时间范围优化:利用create_at索引支持高效的时间范围查询
缓存策略
虽然当前实现未集成缓存层,但系统具备良好的扩展性:
- 可在路由层添加Redis缓存
- 支持热点数据的短期缓存
- 提供缓存失效策略
并发处理
系统采用异步处理模式:
- 所有数据库操作使用Promise
- 支持高并发请求处理
- 错误处理采用统一的异常捕获机制
故障排除指南
常见问题诊断
数据库连接问题
症状:应用启动时报数据库连接错误 解决方案:
- 检查数据库配置参数
- 验证数据库服务状态
- 确认网络连接正常
权限认证问题
症状:访问API返回认证失败 解决方案:
- 检查用户登录状态
- 验证Token有效性
- 确认用户权限级别
查询性能问题
症状:日志查询响应缓慢 解决方案:
- 检查数据库索引是否生效
- 优化查询条件组合
- 调整分页参数
日志分析
系统提供完善的日志记录机制:
- 请求级别的详细日志
- 错误信息的结构化记录
- 性能指标的监控日志
章节来源
结论
分享码日志模型通过精心设计的数据结构和完整的功能实现,为音频设备分享功能提供了可靠的审计和追踪能力。系统采用现代化的技术栈,具有良好的可扩展性和维护性。
主要优势
- 完整的数据追踪:记录分享码生成、使用和管理的全过程
- 灵活的查询功能:支持多维度条件筛选和排序
- 友好的用户界面:提供直观的日志查看和数据分析功能
- 高性能设计:通过索引优化和分页机制确保系统性能
- 完善的错误处理:提供统一的错误处理和日志记录机制
发展建议
- 增加分享码生命周期管理:实现自动过期和清理机制
- 增强统计分析功能:提供更丰富的数据报表和趋势分析
- 引入缓存机制:提升高频查询的响应速度
- 扩展权限控制:细化不同用户的访问权限
该系统为音频设备分享功能提供了坚实的技术基础,能够满足当前业务需求并为未来的功能扩展预留了充足的空间。