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

6.2 KiB

访客管理系统项目文档

项目概述

这是一个基于 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)

核心依赖包

{
  "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. 日志记录: 重要操作需要记录详细日志

联系信息

如需了解更多项目详情或技术支持,请联系开发团队。