# Ramom School QR Code Attendance - 学校二维码考勤插件
## 项目概述
- **项目类型**:CodeIgniter插件/Addon
- **主要功能**:为Ramom多分校学校管理系统添加二维码考勤功能,支持学生和员工通过扫描ID卡上的二维码进行考勤
- **技术栈**:
- 后端:PHP, CodeIgniter 3.x
- 前端:HTML5, CSS3, JavaScript, Bootstrap
- 二维码:QRCode.js库
- 数据库:MySQL
## 模块结构
### 目录结构
```
ramom_school_qrcode_addon/
├── application/
│ ├── controllers/ # 控制器
│ │ ├── Qrcode_attendance.php # 考勤主控制器
│ │ ├── Qrcode_auto_submission.php # 自动提交控制器
│ │ └── Qr_code_settings.php # 设置控制器
│ ├── models/ # 数据模型
│ │ ├── Qrcode_attendance_model.php
│ │ └── Qrcode_auto_submission_model.php
│ └── views/ # 视图模板
│ ├── card_manage/ # 卡片管理视图
│ ├── qrcode_attendance/ # 考勤视图
│ ├── qrcode_auto_submission/ # 自动提交视图
│ └── layout/ # 布局视图
├── assets/ # 静态资源
│ ├── css/qr-code.css # 二维码样式
│ ├── js/qrcode_attendance.js # 考勤JavaScript
│ └── vendor/qrcode/ # QRCode.js库
└── config.json # 插件配置
```
### 主要功能模块
1. **二维码考勤模块**
- 学生考勤扫描
- 员工考勤扫描(支持上下班时间记录)
- 实时考勤确认弹窗
- 迟到/早退标记
2. **ID卡管理模块**
- ID卡模板设计
- 二维码生成与打印
- 加密二维码(Base64编码)
3. **自动提交模块**
- 定时自动考勤提交
- 缺勤自动标记
- 家长短信通知
4. **报表模块**
- 学生考勤报表
- 员工考勤报表
- 按日期筛选
## 核心业务逻辑
### 1. 二维码生成与验证流程
```
用户数据 → Base64编码 → 二维码生成 → ID卡打印 → 扫描解码 → 验证用户 → 记录考勤
```
**编码格式**:`类型标识-用户ID`(如:`s-123`表示学生,`e-456`表示员工)
### 2. 考勤记录流程
```
扫描二维码 → 解码用户ID → 查询用户信息 → 显示确认弹窗 → 提交考勤 → 记录到数据库
```
**关键特性**:
- 无需选择班级、部门等,自动识别
- 支持迟到标记和备注
- 员工支持上下班时间记录
- 防止重复考勤检查
### 3. 自动考勤提交(Cron Job)
```
定时任务 → 检查未考勤学生 → 自动标记为缺勤 → 发送短信通知家长
```
**配置要求**:
- 服务器Cron Job每10分钟运行一次
- 可配置各班级考勤截止时间
### 4. 权限控制
- 基于Ramom系统的权限系统
- 支持角色级别的访问控制
- 分校数据隔离
## 核心代码分析
### Qrcode_attendance.php - 考勤控制器
```php
class Qrcode_attendance extends Admin_Controller
{
public function getUserByQrcode()
{
// 1. 解码二维码数据(Base64解码)
$userData = trim(base64_decode($this->input->post('data')));
$userData = explode("-", $userData);
// 2. 验证二维码格式
if ($userData[0] != 'e' && $userData[0] != 's') {
// 无效二维码处理
}
// 3. 区分学生和员工处理
if ($userData[0] == 'e') {
// 员工考勤处理(支持上下班)
} else {
// 学生考勤处理
}
// 4. 检查重复考勤
// 5. 返回用户信息到确认弹窗
}
}
```
### 关键特性
1. **二维码加密**
- 使用Base64编码用户数据
- 格式:`类型前缀-用户ID`
- 防止直接读取敏感信息
2. **浏览器原生扫描**
- 无需第三方APP
- 支持Android和iOS原生相机
- 使用getUserMedia API访问摄像头
3. **实时反馈**
- 扫描成功音效
- 确认弹窗显示用户详情
- 即时考勤状态更新
4. **数据同步**
- 与主系统考勤表同步
- 二维码考勤和手动考勤统一报表
### 数据库集成
- 复用Ramom系统的`student_attendance`表
- 复用Ramom系统的`staff_attendance`表
- 添加`qr_code`字段标记考勤方式
### JavaScript核心功能
```javascript
// QRCode.js库集成
// 摄像头访问和二维码扫描
// AJAX提交考勤数据
// 实时反馈和音效
```
## 安装要求
### 前置条件
- Ramom多分校学校管理系统 v7.0+
- PHP 7.4+
- MySQL 5.7+
- 已安装Ramom系统并正常运行
### 安装步骤
1. 下载插件压缩包
2. 登录Ramom系统后台
3. 进入Addon Manager → Install Addon
4. 输入购买码
5. 上传`ramom_qr_attendence_addon.zip`
6. 点击Install Now
7. 清除浏览器缓存
## 配置说明
### 基本设置
- **二维码文本**:可自定义显示在ID卡上的文字
- **相机选择**:前后摄像头切换(移动设备)
- **自动提交**:启用/禁用自动考勤提交
- **确认弹窗**:启用/禁用扫描后确认弹窗
### Cron Job配置
```bash
# 每10分钟运行一次
curl http://yourdomain.com/qrcode_auto_submission/cron_job/your-secret-key
```
## 版本历史
### v3.0 (2025-12-31)
- 添加自动考勤提交功能
- 添加缺勤学生短信通知
- 兼容Ramom Multi Branch School v7.0
- 修复数据表导出问题
### v2.0 (2024-02-08)
- 插件化安装支持
- 自动识别学生和员工
- 自动考勤选项(无需确认弹窗)
... (content truncated)