feat: 多班级版 v2.0 - Go后端重写 + 43轮代码审查

- 后端从 Python FastAPI 重写为 Go Gin(端口 56789)
- 多班级完全隔离
- 超级管理员独立登录
- 课代表作业管理、排行榜分项排行
- 角色加减分上下限可配置
- 家长改密功能(可开关)
- 周度/月度重置功能
- MySQL 5.7 兼容
- 43轮代码审查+全部修复
- Apache 2.0 许可证
This commit is contained in:
2026-06-22 10:06:10 +08:00
parent 4084afc53c
commit d6dec878bd
214 changed files with 12622 additions and 9725 deletions

View File

@@ -1,11 +1,11 @@
<?php
/**
* 班级操行分管理系统 - 前端配置
* 多班级版班级管理系统 - 前端配置
*
* 开发者: Canglan
* 联系方式: admin@sea-studio.top
* 版权归属: Sea Network Technology Studio
* 许可证: MIT License
* 许可证: Apache License 2.0
*
* 版权所有 © Sea Network Technology Studio
*/
@@ -60,20 +60,38 @@ define('SITE_NAME', $config['SITE_NAME']);
define('SESSION_TIMEOUT', (int)$config['SESSION_TIMEOUT']);
define('ICP_ENABLED', $config['ICP_ENABLED'] !== 'false');
define('ICP_NUMBER', $config['ICP_NUMBER'] ?? '');
// 会话配置
// 注意:此处不含 /api 前缀,前端 JS 会自动拼接 /api + path + /login
define('SUPER_ADMIN_LOGIN_PATH', ($config['SUPER_ADMIN_LOGIN_PATH'] ?? '/super-admin'));
// 会话配置
ini_set('session.cookie_httponly', 1);
ini_set('session.use_only_cookies', 1);
ini_set('session.cookie_secure', 1);
// 开发环境允许 HTTP生产环境强制 HTTPS
$appEnv = $config['APP_ENV'] ?? 'production';
ini_set('session.cookie_secure', $appEnv === 'production' ? 1 : 0);
ini_set('session.cookie_samesite', 'Lax');
ini_set('session.gc_maxlifetime', 7200);
ini_set('session.gc_maxlifetime', SESSION_TIMEOUT);
session_name('CLASS_SESSION');
session_start();
// 应用层会话超时检查
if (isset($_SESSION['login_time']) && (time() - $_SESSION['login_time'] > SESSION_TIMEOUT)) {
session_unset();
session_destroy();
if (strpos($_SERVER['REQUEST_URI'] ?? '', '/api/') === false) {
header('Location: /index.php');
exit();
}
http_response_code(401);
header('Content-Type: application/json; charset=utf-8');
echo json_encode(['success' => false, 'message' => '会话已过期,请重新登录']);
exit();
}
// 时区设置
date_default_timezone_set('Asia/Shanghai');
// 生产环境关闭错误显示
error_reporting(0);
ini_set('display_errors', 0);
// 生产环境关闭错误显示(保留错误日志记录,仅隐藏页面输出)
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
ini_set('display_errors', 0);
ini_set('log_errors', 1);