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.
ss-visit/PROJECT_DOCUMENTATION.md

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. **日志记录**: 重要操作需要记录详细日志
## 联系信息
如需了解更多项目详情或技术支持,请联系开发团队。