Skip to content

mkaaad/batch-check

Repository files navigation

batch-checkin

一个 Flutter 应用,用于批量自动签到重邮 LMS 课堂。支持管理多个账号,扫码签到,以及后台定时签到。

截图

卡片列表 二维码签到 二维码登录
管理多个 LMS 账号,实时查看签到状态 扫描课堂二维码,自动为所有账号签到 企业微信扫码登录,获取 LMS Session

功能

  • 多账号管理:添加多个账号,统一管理签到状态
  • 二维码签到:扫描课堂二维码,自动为所有已登录账号执行签到
  • 二维码登录:通过统一认证平台(IDS)扫码登录,自动获取 LMS Session
  • 后台定时签到:使用 Workmanager 在后台定期刷新和签到(Android)
  • 签到状态可视化:每门课签到成功/失败一目了然
  • Session 自动续期:服务端返回新 sessionId 时自动更新

快速开始

环境要求

  • Flutter SDK ^3.9.2
  • Dart SDK ^3.9.2

构建

# 获取依赖
flutter pub get

# 运行(调试)
flutter run

# 构建 Android APK
flutter build apk --release

# 构建 Android App Bundle
flutter build appbundle --release

GitHub Actions 自动构建

推送 tag 即可触发自动构建并发布 Release:

git tag v1.2.0
git push origin --tags

使用说明

添加账号

  1. 点击右下角 + 按钮
  2. 使用企业微信扫描弹出的二维码完成统一认证登录
  3. 登录成功后自动获取姓名和 LMS Session

签到

  1. 点击底部 二维码签到 按钮
  2. 扫描课堂上的二维码
  3. 自动为所有有效账号执行签到
  4. 签到结果实时显示在卡片上

刷新与续期

  • 点击卡片右侧的刷新图标手动刷新课程状态
  • 过期卡片(session 失效)会显示警告标识,点击即可重新登录

技术细节

二维码签到流程

  1. 扫描课堂二维码,原始结果格式:/j?p=0~2cra!3~TOKEN!4~gi5v
  2. 提取 !3~...!4~ 之间的实际 token
  3. 获取点名列表,筛选未签到的二维码点名
  4. 对每个符合条件的点名调用签到 API
  5. 收集签到结果并展示

架构

lib/
├── main.dart                    # 入口
├── models/
│   └── card_model.dart          # 卡片模型
├── pages/
│   ├── card_list_page.dart      # 主界面 - 卡片列表
│   ├── qr_scanner_page.dart     # 扫码页面
│   └── qr_login_dialog.dart     # 二维码登录弹窗
├── services/
│   ├── checkin_service.dart     # 签到 API
│   ├── ids_service.dart         # 统一认证登录
│   └── session_store.dart       # Session 持久化
└── widgets/                     # 公共组件

依赖

用途
http HTTP 请求
mobile_scanner 二维码扫描
qr_flutter 生成二维码
pointycastle AES 加密(登录密码)
uuid 生成设备 ID
shared_preferences Session 持久化
workmanager 后台定时签到

许可证

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors