技术栈:Go (Gin + GORM) + PHP + MySQL 5.7 + Redis 主要功能: - 多班级完全隔离(class_id 贯穿全系统) - 后端从 Python FastAPI 重写为 Go Gin(端口 56789) - 超级管理员独立登录(env 配置路径,默认账密 admin/Admin123) - 科任老师/课代表新角色 - 课代表作业管理页面 - 排行榜分项排行(操行分/考勤/作业) - 角色加减分上下限由班主任配置 - 家长改密功能(可开关) - 班级角色按需开关 - 宿舍号格式:南0-000 - 周度/月度重置功能 - MySQL 5.7 兼容 - Nginx 反向代理部署 开发者: Canglan 版权归属: Sea Network Technology Studio 许可证: Apache License 2.0
70 lines
1.8 KiB
PHP
70 lines
1.8 KiB
PHP
<?php
|
||
/**
|
||
* 检查数据库版本是否需要升级(代理至后端 API)
|
||
*/
|
||
|
||
require_once __DIR__ . '/../config.php';
|
||
|
||
header('Content-Type: application/json; charset=utf-8');
|
||
|
||
// 只有班主任才能检查升级
|
||
if (!isset($_SESSION['user_id']) || $_SESSION['user_type'] !== 'admin') {
|
||
echo json_encode(['error' => '未授权']);
|
||
exit();
|
||
}
|
||
|
||
$role = $_SESSION['role'] ?? '';
|
||
if ($role !== '班主任') {
|
||
echo json_encode(['needs_upgrade' => false]);
|
||
exit();
|
||
}
|
||
|
||
// 从 session 获取 JWT token
|
||
$token = $_SESSION['jwt_token'] ?? '';
|
||
if (empty($token)) {
|
||
echo json_encode(['error' => '会话已过期,请重新登录']);
|
||
exit();
|
||
}
|
||
|
||
// 调用后端 API
|
||
$apiUrl = API_BASE_URL . '/api/upgrade/check';
|
||
|
||
$ch = curl_init();
|
||
curl_setopt_array($ch, [
|
||
CURLOPT_URL => $apiUrl,
|
||
CURLOPT_RETURNTRANSFER => true,
|
||
CURLOPT_TIMEOUT => API_TIMEOUT,
|
||
CURLOPT_HTTPHEADER => [
|
||
'Authorization: Bearer ' . $token,
|
||
'Content-Type: application/json'
|
||
],
|
||
CURLOPT_SSL_VERIFYPEER => true,
|
||
CURLOPT_SSL_VERIFYHOST => 2
|
||
]);
|
||
|
||
$apiResponse = curl_exec($ch);
|
||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||
curl_close($ch);
|
||
|
||
if (empty($apiResponse)) {
|
||
echo json_encode(['error' => '无法连接升级服务']);
|
||
exit();
|
||
}
|
||
|
||
$result = json_decode($apiResponse, true);
|
||
if (!$result) {
|
||
echo json_encode(['error' => '升级服务返回数据格式错误']);
|
||
exit();
|
||
}
|
||
|
||
// 后端返回非200时,尝试解析实际错误信息
|
||
if ($httpCode !== 200 || !isset($result['success']) || !$result['success']) {
|
||
$errorMsg = $result['message'] ?? ($result['error'] ?? '升级检查失败');
|
||
echo json_encode(['error' => $errorMsg]);
|
||
exit();
|
||
}
|
||
|
||
// 转发后端返回的升级数据
|
||
$data = $result['data'] ?? [];
|
||
echo json_encode($data);
|