mirror of
https://github.com/ZeroCatDev/ClassworksKV.git
synced 2025-07-01 20:09:23 +00:00
137 lines
3.5 KiB
JavaScript
137 lines
3.5 KiB
JavaScript
var createError = require("http-errors");
|
|
var express = require("express");
|
|
var path = require("path");
|
|
var cookieParser = require("cookie-parser");
|
|
var logger = require("morgan");
|
|
const bodyParser = require('body-parser');
|
|
|
|
var indexRouter = require("./routes/index");
|
|
var usersRouter = require("./routes/users");
|
|
|
|
var app = express();
|
|
|
|
var cors = require("cors");
|
|
app.options("*", cors());
|
|
app.use(cors())
|
|
|
|
//全局变量
|
|
global.dirname = __dirname;
|
|
|
|
|
|
// view engine setup
|
|
app.set("views", path.join(__dirname, "views"));
|
|
app.set("view engine", "ejs");
|
|
app.use(bodyParser.urlencoded({ extended: true }));
|
|
app.use(bodyParser.json());
|
|
app.use(logger("dev"));
|
|
app.use(express.json());
|
|
app.use(express.urlencoded({ extended: false }));
|
|
app.use(cookieParser());
|
|
app.use(express.static(path.join(__dirname, "public")));
|
|
|
|
const { PrismaClient } = require("@prisma/client");
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
// 上传作业数据
|
|
app.post("/upload", async (req, res) => {
|
|
try {
|
|
const date = new Date().toISOString().split("T")[0];
|
|
const data = req.body;
|
|
|
|
// 使用 upsert 来确保每个日期只有一条记录
|
|
await prisma.homework.upsert({
|
|
where: {
|
|
date: date,
|
|
},
|
|
update: {
|
|
data: data,
|
|
},
|
|
create: {
|
|
date: date,
|
|
data: data,
|
|
},
|
|
});
|
|
|
|
res.json({
|
|
status: true,
|
|
msg: "上传成功",
|
|
});
|
|
} catch (error) {
|
|
console.error("Upload error:", error);
|
|
res.json({
|
|
status: false,
|
|
msg: "上传失败:" + error.message,
|
|
});
|
|
}
|
|
});
|
|
|
|
// 下载作业数据
|
|
app.get("/download", async (req, res) => {
|
|
try {
|
|
const date = req.query.date;
|
|
|
|
const homework = await prisma.homework.findFirst({
|
|
where: {
|
|
date: date,
|
|
},
|
|
});
|
|
|
|
if (!homework) {
|
|
throw new Error("该日期未上传数据");
|
|
}
|
|
|
|
res.json({
|
|
status: true,
|
|
msg: "下载成功",
|
|
...homework.data,
|
|
});
|
|
} catch (error) {
|
|
console.error("Download error:", error);
|
|
res.json({
|
|
status: false,
|
|
msg: "下载失败:" + error.message,
|
|
});
|
|
}
|
|
});
|
|
app.get("/config", async (req, res) => {
|
|
res.json({
|
|
"//": "学生名字列表(推荐按学号顺序排列)除最后一项外,每个学生姓名后面必须加一个逗号",
|
|
"//": "如果不需要“出勤”功能,请把下面“:”后面的“[]”中的内容删除即可",
|
|
studentList: ["张三", "李四", "王五", "赵六", "钱七"],
|
|
"//": "作业框排版(前面的中括号中的科目显示在分割线左侧,后面在右侧)除每个中括号中的最后一项外,每个科目后面必须加一个逗号",
|
|
homeworkArrange: [
|
|
["语文", "数学", "英语"],
|
|
["物理", "化学", "生物"],
|
|
["政治", "历史", "地理"],
|
|
],
|
|
"//": "这里需填入部署ServerAPI的服务器url",
|
|
"//": "端口默认17312无需改动(除非更改Python代码)",
|
|
"//": "127.0.0.1仅适用于本地测试,实际部署请使用公网/内网ip地址或域名",
|
|
url: "http://localhost:3030",
|
|
});
|
|
});
|
|
app.get("/test", async (req, res) => {
|
|
res.render("test.ejs");
|
|
})
|
|
app.use("/", indexRouter);
|
|
app.use("/users", usersRouter);
|
|
|
|
// catch 404 and forward to error handler
|
|
app.use(function (req, res, next) {
|
|
next(createError(404));
|
|
});
|
|
|
|
// error handler
|
|
app.use(function (err, req, res, next) {
|
|
// set locals, only providing error in development
|
|
res.locals.message = err.message;
|
|
res.locals.error = req.app.get("env") === "development" ? err : {};
|
|
|
|
// render the error page
|
|
res.status(err.status || 500);
|
|
res.render("error");
|
|
});
|
|
|
|
module.exports = app;
|