You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
6.2 KiB
195 lines
6.2 KiB
|
11 months ago
|
# 访客管理系统项目文档
|
||
|
|
|
||
|
|
## 项目概述
|
||
|
|
|
||
|
|
这是一个基于 Laravel 9 框架开发的企业访客管理系统,主要用于管理企业的访客预约、门岗登记、审核流程等功能。系统采用前后端分离架构,提供了完整的 API 接口。
|
||
|
|
|
||
|
|
## 主要功能模块
|
||
|
|
|
||
|
|
### 1. 访客预约管理
|
||
|
|
- **功能描述**: 支持访客在线预约访问,填写访问信息、时间、区域等
|
||
|
|
- **核心文件**: `app/Models/Visit.php`, `app/Http/Controllers/Mobile/VisitController.php`
|
||
|
|
- **访问类型**:
|
||
|
|
- 访客 (TYPE_VISITOR = 1)
|
||
|
|
- 访客车辆 (TYPE_VISITOR_CAR = 2)
|
||
|
|
- 物流车辆 (TYPE_LOGISTICS_CAR = 3)
|
||
|
|
|
||
|
|
### 2. 审核流程管理
|
||
|
|
- **功能描述**: 多级审核流程,支持审核状态跟踪
|
||
|
|
- **核心文件**: `app/Models/VisitAudit.php`, `app/Http/Controllers/Admin/VisitAuditController.php`
|
||
|
|
- **审核状态**:
|
||
|
|
- 待学习 (AUDIT_STATUS_PENDING_STUDY = -1)
|
||
|
|
- 待审核 (AUDIT_STATUS_PENDING = 0)
|
||
|
|
- 通过/待进厂 (AUDIT_STATUS_APPROVED = 1)
|
||
|
|
- 驳回 (AUDIT_STATUS_REJECTED = 2)
|
||
|
|
- 已进厂 (AUDIT_STATUS_ENTERED = 3)
|
||
|
|
- 已离厂 (AUDIT_STATUS_LEFT = 4)
|
||
|
|
|
||
|
|
### 3. 门岗管理系统
|
||
|
|
- **功能描述**: 门岗端进行访客登记、ID卡绑定、进出厂记录等
|
||
|
|
- **核心文件**: `app/Http/Controllers/GateController.php`, `app/Models/GateLog.php`
|
||
|
|
- **主要功能**:
|
||
|
|
- 访客列表查询和筛选
|
||
|
|
- ID卡绑定 (bind_card)
|
||
|
|
- 进厂登记 (enter)
|
||
|
|
- 离厂登记 (leave)
|
||
|
|
- 货车图片上传 (upload_vehicle)
|
||
|
|
|
||
|
|
### 4. 学习培训模块
|
||
|
|
- **功能描述**: 访客进厂前的安全学习和考试
|
||
|
|
- **核心文件**: `app/Models/Study.php`, `app/Models/StudyAsk.php`, `app/Models/StudyLog.php`
|
||
|
|
- **相关控制器**: `app/Http/Controllers/Admin/StudyController.php`, `StudyAskController.php`
|
||
|
|
|
||
|
|
### 5. 系统配置管理
|
||
|
|
- **功能描述**: 系统参数配置、访问区域管理、时间段管理等
|
||
|
|
- **核心文件**:
|
||
|
|
- `app/Models/Config.php` - 系统配置
|
||
|
|
- `app/Models/VisitArea.php` - 访问区域
|
||
|
|
- `app/Models/VisitTime.php` - 访问时间段
|
||
|
|
- `app/Models/Blacklist.php` - 黑名单管理
|
||
|
|
|
||
|
|
### 6. 用户权限管理
|
||
|
|
- **功能描述**: 基于角色的权限控制系统
|
||
|
|
- **核心文件**: `app/Models/Admin.php`, `app/Models/Role.php`, `app/Models/Permission.php`
|
||
|
|
- **技术实现**: 使用 Spatie Laravel Permission 包
|
||
|
|
|
||
|
|
### 7. 多语言支持
|
||
|
|
- **功能描述**: 支持多语言国际化
|
||
|
|
- **实现方式**: 通过 `set.locale` 中间件实现
|
||
|
|
- **语言文件**: `lang/` 目录下的语言包
|
||
|
|
|
||
|
|
## 技术架构
|
||
|
|
|
||
|
|
### 后端技术栈
|
||
|
|
- **框架**: Laravel 9.x
|
||
|
|
- **PHP版本**: ^8.0.2
|
||
|
|
- **数据库**: MySQL
|
||
|
|
- **认证**: Laravel Sanctum (JWT)
|
||
|
|
- **权限管理**: Spatie Laravel Permission
|
||
|
|
- **API文档**: Swagger (darkaonline/l5-swagger)
|
||
|
|
|
||
|
|
### 核心依赖包
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"darkaonline/l5-swagger": "^8.6", // API文档生成
|
||
|
|
"spatie/laravel-permission": "^5.5", // 权限管理
|
||
|
|
"owen-it/laravel-auditing": "^13.6", // 操作审计
|
||
|
|
"maatwebsite/excel": "^3.1", // Excel导入导出
|
||
|
|
"overtrue/wechat": "~5.0", // 微信SDK
|
||
|
|
"lpilp/guomi": "^2.0", // 国密加密
|
||
|
|
"overtrue/pinyin": "^5.0" // 拼音转换
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### API 路由结构
|
||
|
|
|
||
|
|
#### 门岗端接口 (`/api/gate/`)
|
||
|
|
- `GET /visits` - 获取访客列表
|
||
|
|
- `POST /visits/detail` - 获取访客详情
|
||
|
|
- `POST /visits/update` - 更新访客状态
|
||
|
|
- `GET /visits/use-code` - 核销访客
|
||
|
|
|
||
|
|
#### 管理后台接口 (`/api/admin/`)
|
||
|
|
- `/visits/*` - 访客管理
|
||
|
|
- `/studies/*` - 学习内容管理
|
||
|
|
- `/study-asks/*` - 学习题目管理
|
||
|
|
- `/visit-times/*` - 访问时间管理
|
||
|
|
- `/configs/*` - 系统配置
|
||
|
|
- `/blacklists/*` - 黑名单管理
|
||
|
|
- `/visit-areas/*` - 访问区域管理
|
||
|
|
|
||
|
|
#### 移动端接口 (`/api/mobile/`)
|
||
|
|
- `/user/*` - 用户相关
|
||
|
|
- `/visit/*` - 访客预约相关
|
||
|
|
|
||
|
|
## 数据库设计
|
||
|
|
|
||
|
|
### 核心数据表
|
||
|
|
- `visits` - 访客预约记录表
|
||
|
|
- `visit_audits` - 审核记录表
|
||
|
|
- `visit_logs` - 访客操作日志表
|
||
|
|
- `gate_logs` - 门岗操作日志表
|
||
|
|
- `admins` - 管理员表
|
||
|
|
- `visit_areas` - 访问区域表
|
||
|
|
- `visit_times` - 访问时间段表
|
||
|
|
- `studies` - 学习内容表
|
||
|
|
- `study_asks` - 学习题目表
|
||
|
|
|
||
|
|
## 安全特性
|
||
|
|
|
||
|
|
### 认证与授权
|
||
|
|
- 使用 Laravel Sanctum 进行 API 认证
|
||
|
|
- 基于角色的权限控制 (RBAC)
|
||
|
|
- 支持多端认证 (admin/mobile)
|
||
|
|
|
||
|
|
### 数据安全
|
||
|
|
- 支持国密加密算法 (SM2)
|
||
|
|
- 操作审计日志记录
|
||
|
|
- 软删除保护重要数据
|
||
|
|
|
||
|
|
### 加密命令
|
||
|
|
项目提供了 SM2 加密/解密命令:
|
||
|
|
- `php artisan sm2:encrypt` - 加密数据
|
||
|
|
- `php artisan sm2:decrypt` - 解密数据
|
||
|
|
|
||
|
|
## 部署要求
|
||
|
|
|
||
|
|
### 环境要求
|
||
|
|
- PHP >= 8.0.2
|
||
|
|
- MySQL >= 5.7
|
||
|
|
- Composer
|
||
|
|
- Node.js (用于前端资源编译)
|
||
|
|
|
||
|
|
### 安装步骤
|
||
|
|
1. 克隆项目代码
|
||
|
|
2. 运行 `composer install` 安装依赖
|
||
|
|
3. 复制 `.env.example` 为 `.env` 并配置数据库
|
||
|
|
4. 运行 `php artisan key:generate` 生成应用密钥
|
||
|
|
5. 运行 `php artisan migrate` 执行数据库迁移
|
||
|
|
6. 运行 `php artisan db:seed` 填充初始数据
|
||
|
|
7. 配置 Web 服务器指向 `public` 目录
|
||
|
|
|
||
|
|
## API 文档
|
||
|
|
|
||
|
|
系统集成了 Swagger API 文档,可通过以下方式访问:
|
||
|
|
- 开发环境: `http://domain/api/documentation`
|
||
|
|
- 控制器: `app/Http/Controllers/SwaggerController.php`
|
||
|
|
|
||
|
|
## 日志系统
|
||
|
|
|
||
|
|
### 访客操作日志
|
||
|
|
- **表**: `visit_logs`
|
||
|
|
- **类型**: 进厂、离厂、审核等操作记录
|
||
|
|
|
||
|
|
### 门岗操作日志
|
||
|
|
- **表**: `gate_logs`
|
||
|
|
- **功能**: 记录门岗的所有操作行为
|
||
|
|
|
||
|
|
### 系统审计日志
|
||
|
|
- **实现**: Laravel Auditing 包
|
||
|
|
- **功能**: 自动记录模型的增删改操作
|
||
|
|
|
||
|
|
## 国际化支持
|
||
|
|
|
||
|
|
系统支持多语言,通过中间件 `set.locale` 实现:
|
||
|
|
- 语言包位置: `lang/` 目录
|
||
|
|
- 支持动态语言切换
|
||
|
|
- API 接口均支持多语言响应
|
||
|
|
|
||
|
|
## 文件上传管理
|
||
|
|
|
||
|
|
- **控制器**: `app/Http/Controllers/Admin/UploadController.php`
|
||
|
|
- **模型**: `app/Models/Upload.php`
|
||
|
|
- **功能**: 支持图片、文档等文件上传和管理
|
||
|
|
|
||
|
|
## 开发建议
|
||
|
|
|
||
|
|
1. **代码规范**: 遵循 PSR-4 自动加载标准
|
||
|
|
2. **API 设计**: 遵循 RESTful 设计规范
|
||
|
|
3. **错误处理**: 使用统一的 API 响应格式
|
||
|
|
4. **数据验证**: 使用 Laravel Validator 进行数据验证
|
||
|
|
5. **日志记录**: 重要操作需要记录详细日志
|
||
|
|
|
||
|
|
## 联系信息
|
||
|
|
|
||
|
|
如需了解更多项目详情或技术支持,请联系开发团队。
|