mirror of
https://github.com/ZeroCatDev/ClassworksKV.git
synced 2025-07-02 04:39:23 +00:00
159 lines
4.1 KiB
JavaScript
159 lines
4.1 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.json", async (req, res) => {
|
|
var studentList=[];
|
|
await prisma.config
|
|
.findFirst({ where: { id: 1 } })
|
|
.then((config) => {
|
|
console.log(config)
|
|
studentList = (config.student).split(",");
|
|
res.json({
|
|
"//": "学生名字列表(推荐按学号顺序排列)除最后一项外,每个学生姓名后面必须加一个逗号",
|
|
"//": "如果不需要“出勤”功能,请把下面“:”后面的“[]”中的内容删除即可",
|
|
studentList: studentList,
|
|
"//": "作业框排版(前面的中括号中的科目显示在分割线左侧,后面在右侧)除每个中括号中的最后一项外,每个科目后面必须加一个逗号",
|
|
homeworkArrange: [
|
|
["语文", "数学", "英语"],
|
|
["物理", "化学", "生物"],
|
|
["政治", "历史", "地理"],
|
|
],
|
|
"//": "这里需填入部署ServerAPI的服务器url",
|
|
"//": "端口默认17312无需改动(除非更改Python代码)",
|
|
"//": "127.0.0.1仅适用于本地测试,实际部署请使用公网/内网ip地址或域名",
|
|
url: "http://localhost:3030",
|
|
});
|
|
});
|
|
|
|
});
|
|
app.post("/setstudentlist", async (req, res) => {
|
|
var studentList = req.body.studentList.join(",");
|
|
await prisma.config.upsert({
|
|
where: {
|
|
id: req.body.id,
|
|
},
|
|
update: {
|
|
student: studentList,
|
|
},
|
|
create: {
|
|
id: req.body.id,
|
|
student: studentList,
|
|
},
|
|
});
|
|
});
|
|
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;
|