const uuidv4 = require('uuid'); const express = require('express'); const multer = require('multer'); const cors = require('cors'); const app = express(); const fs = require('fs'); const zlib = require('zlib'); const tar = require('tar'); const axios = require('axios'); const { promisify } = require('util'); const {exec} = require('child_process'); const moment=require('moment'); var mysql = require('mysql'); var q = require('qiao-zip'); const qj=require('./shezhikecheng.js'); const dabao=require('./dabao.js'); const { basename, join, extname} = require("node:path"); const {c, r} = require("tar"); const {response} = require("express"); const {homedir} = require("node:os"); const readline = require("node:readline"); const parsex=require('./parseexcel') const crypto = require('crypto'); const makeexcel=require('./makeexcel') const speakeasy = require('speakeasy'); const xlsx = require('xlsx') const xlsxnode=require('node-xlsx'); console.log(uuidv4.v4()) var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '416416', database : 'neigongda' }); connection.connect(); app.use(cors({ origin: ['http://localhost:3000','http://localhost:89'], })); app.use(express.urlencoded({extended: false})); // 现在就方便多了,express的两个方法一执行就行啦 app.use(express.json({limit: '100mb', extended: true})); const port = process.env.PORT || 3400; const storage = multer.diskStorage({ destination: function (req, file, cb) { fs.mkdir('uploads/'+req.headers.xuehao, { recursive: true }, (err) => { if (err) { console.error(err); return; } console.log('文件夹已存在或成功创建!'); }); cb(null, 'uploads/'+req.headers.xuehao+'/') // 确保这个文件夹已经存在 }, filename: function (req, file, cb) { const xh=file.originalname; console.log(xh); cb(null, xh) } }) const upload = multer({ storage: storage }); async function newbug(bug,place,input){ const sql="INSERT INTO errbug(time,bug,place) VALUES(?,?,?)" await new Promise((resolve, reject) => { connection.query(sql, [moment().format(), JSON.stringify({ message: bug.message, stack: bug.stack, input: input }, null, 4), place], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } app.get('/apitea/allkezxdtlist',async function (req, res) { const sqlzxdtlist = "SELECT * FROM kechengbiao WHERE teacher=" + req.query.tea;//查询课程信息 const resultzxdtlistall = await new Promise((resolve, reject) => { connection.query(sqlzxdtlist, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); let zxdtlist = []; for(let j=0; j { connection.query(sqlzxdtinfor, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const tanme = resultzxdt.name; const tid = resultzxdt.id; const start = resultzxdt.start; const end = resultzxdt.end; const allth = JSON.parse(resultzxdt.timu).all.t0 const sqlt0 = "SELECT * FROM tm WHERE id=\"" + allth + "\"" const result0 = await new Promise((resolve, reject) => { connection.query(sqlzxdtinfor, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const ydtx = result0.length; const titea = { name: tanme, id: tid, start: start, end: end, ydtx: ydtx, all: allstu, classname: classname }; zxdtlist.push(titea); } } } res.send(zxdtlist) }) app.get('/apitea/allkezxdtlist_new',async function (req, res) { //req.query.tea;//查询课程信息 const sqlselect="SELECT * FROM tmj_ex WHERE tea=?" let result=await new Promise((resolve, reject) => { connection.query(sqlselect,[req.query.tea], (error, results, fields) => { if (error)throw error; resolve(results); }) }) for(let i=0;i { connection.query(stusql,[result[i].fbkc], (error,results,fields)=>{ if(error)throw error resolve(results) }) }) let wb=""; sturesult.map((kcname,index)=>{ wb+=kcname.classname+"," }) wb=wb.slice(0,-1) result[i].kcwb=wb; const studaansql="SELECT COUNT(*) AS num FROM tmj_stu WHERE ksh=? AND zt=?" const daan=await new Promise((resolve, reject) => { connection.query(studaansql,[result[i].id,"已提交"], (error,results,fields)=>{ if(error)throw error resolve(results) }) }) result[i].finish=daan[0].num; } res.send(result); }) app.get('/apitea/zxdtlist',async function (req, res) { const sqlzxdtlist = "SELECT * FROM kechengbiao WHERE classid=" + req.query.kc;//查询课程信息 const resultzxdtlist = await new Promise((resolve, reject) => { connection.query(sqlzxdtlist, (error, results, fields) => { if (error) reject(error); resolve(JSON.parse(results[0].timu)); }); }); const resultallinfor = await new Promise((resolve, reject) => { connection.query(sqlzxdtlist, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const classname=resultallinfor.classname const allstu=JSON.parse(resultallinfor.student).length // res.send(resultzxdtlist); let zxdtlist=[]; for (let i = 0; i < resultzxdtlist.length; i++) { const sqlzxdtinfor = "SELECT * FROM timuji WHERE id=" + resultzxdtlist[i];//查询答题信息 const resultzxdt = await new Promise((resolve, reject) => { connection.query(sqlzxdtinfor, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const tanme=resultzxdt.name; const tid=resultzxdt.id; const start=resultzxdt.start; const end=resultzxdt.end; const allth=JSON.parse(resultzxdt.timu).all.t0 const sqlt0="SELECT * FROM tm WHERE id=\""+allth+"\"" const result0 = await new Promise((resolve, reject) => { connection.query(sqlzxdtinfor, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const ydtx=result0.length; const titea={name:tanme,id:tid,start:start,end:end,ydtx:ydtx,all:allstu,class:classname}; zxdtlist.push(titea); } res.send(zxdtlist) }) app.get('/apitea/zxdtlist_new',async function (req, res) { const sqlzxdtlist = "SELECT * FROM kechengbiao WHERE classid=" + req.query.kc;//查询课程信息 const resultzxdtlist = await new Promise((resolve, reject) => { connection.query(sqlzxdtlist, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const sqlselectzxdt="SELECT * FROM tmj_ex WHERE JSON_CONTAINS( "+`'["${resultzxdtlist.teacherid}"]'`+",fbkc,'$')" let result=await new Promise((resolve, reject) => { connection.query(sqlselectzxdt,[req.query.tea], (error, results, fields) => { if (error)throw error; resolve(results); }) }) for(let i=0;i { connection.query(stusql,[result[i].fbkc], (error,results,fields)=>{ if(error)throw error resolve(results) }) }) let wb=""; sturesult.map((kcname,index)=>{ wb+=kcname.classname+"," }) wb=wb.slice(0,-1) result[i].kcwb=wb; const studaansql="SELECT COUNT(*) AS num FROM tmj_stu WHERE ksh=? AND zt=?" const daan=await new Promise((resolve, reject) => { connection.query(studaansql,[result[i].id,"已提交"], (error,results,fields)=>{ if(error)throw error resolve(results) }) }) result[i].finish=daan[0].num; } res.send(result); }) app.get("/apitea/ptastu",async function (req,res){ const sqlstd = "SELECT * FROM tm WHERE id=" + req.query.timu; const resultptastd = await new Promise((resolve, reject) => { connection.query(sqlstd, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); console.log(resultptastd); const sql1t = "SELECT * FROM pta WHERE th=\'" +req.query.timu + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC";//查出已答同学 console.log(sql1t) const resultstuti= await new Promise((resolve, reject) => { connection.query(sql1t, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const tname=resultptastd.tanme const studaan=JSON.parse(resultstuti[0].daan).t; const buffer = Buffer.from(resultptastd.pj, 'base64'); const cacheDir = join(homedir(), '.cache'); console.log(cacheDir); // 将Buffer写入文件 const uuid=uuidv4.v4() fs.writeFileSync(cacheDir+"\\"+uuid+".zip", buffer); fs.mkdirSync(cacheDir+"\\"+uuid); await q.unzip(cacheDir+"\\"+uuid+".zip", cacheDir+"\\"+uuid); const data = fs.readFileSync(cacheDir+"\\"+uuid+"\\tm.json", 'utf8'); let daan=JSON.parse(data).t; let plyl=[]; let stdprintall=0; let stuprintall=0; const jgall=JSON.parse(resultstuti[0].daan).by const memoryall=JSON.parse(resultstuti[0].daan).memory const timeall=JSON.parse(resultstuti[0].daan).time.toFixed(2); const tjsjall=JSON.parse(resultstuti[0].daan).tjsj for(let i=0;i { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); if(resulttimuinfor.length>0) { const tname = resulttimuinfor[0].tname let allstu=JSON.parse(resulttimuinfor[0].all).stu const tigroup = JSON.parse(resulttimuinfor[0].timu).allti const tmprintall = JSON.parse(resulttimuinfor[0].timu).all.allprint; const sql1 = "SELECT * FROM pta WHERE th=\'" + tmprintall + "\' ";//查出已答同学 console.log(sql1) const resultstuinfor = await new Promise((resolve, reject) => { connection.query(sql1, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); let daan = []; let tistdprint = 0; for (const titi of tigroup) { const sqlstd = "SELECT * FROM tm WHERE id=" + titi; console.log(sql) const resultptastd = await new Promise((resolve, reject) => { connection.query(sqlstd, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); tistdprint = tistdprint + resultptastd.fen daan.push(resultptastd); } let stu = [] console.log(resultstuinfor) for (const tongxue of resultstuinfor) { let stuti = {} const sqlstu = "SELECT * FROM student WHERE xuehao=\'" + tongxue.xuehao + "\'";//查出已答同学 const stuname = await new Promise((resolve, reject) => { connection.query(sqlstu, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); stuti.name = stuname.studentname; stuti.xzb = stuname.nianjizhaungye;//行政班 stuti.xuehao = tongxue.xuehao; allstu = allstu.filter(function(item) { return item !== tongxue.xuehao }); stuti.start = JSON.parse(tongxue.daan).time//开始时间 let ti = []; const tigroup = JSON.parse(resulttimuinfor[0].timu).allti; let allprint = 0; for (const titi of tigroup) { //查询学生对题目的作答 const sql1t = "SELECT * FROM pta WHERE th=\'" + titi + "\' and xuehao= \'" + tongxue.xuehao + "\' ORDER BY paixu DESC";//查出已答同学 console.log(sql1t) const resultstuti = await new Promise((resolve, reject) => { connection.query(sql1t, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); console.log(resultstuti[0]) const tistuda = resultstuti[0]; let print if (JSON.parse(resultstuti[0].daan).printall !== undefined) { print = JSON.parse(resultstuti[0].daan).printall } else { print = JSON.parse(resultstuti[0].daan).defen } allprint = allprint + print; tistuda.print = print ti.push({ti: tistuda}); } stuti.print = allprint stuti.t = ti stu.push(stuti) } let wdtx=[] for (let k=0; k { connection.query(sqlstu, (error, results, fields) => { if (error) reject(error); if(results.length > 0) { resolve(results[0]); }else{ resolve({xuehao:allstu[k]}); } }); }); wdtx.push(stuname) } res.send({ti: resulttimuinfor, daan: daan, stu: stu, stdprint: tistdprint,stuno:wdtx}); }else{ res.send({ti: [], daan:[], stu: [], stdprint: -1}); } }) app.get('/api/ptalisttm',async (req, res) => { try{ let duoxuetiprint=[] let panduantiprint=[] let danxuetiprint=[] let tiankongtiprint=[] let ptaprint=[] let allfen=0; let stufen=0; let jd=0; let allpta=0; const sql = "SELECT * FROM timuji WHERE id=\'" + req.query.id + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); let ptalist=JSON.parse(result[0].timu).pta; for (const element of ptalist) { //查学生作答 const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const sqlstd = "SELECT * FROM tm WHERE id=" +element ; console.log(sql) const resultptastd = await new Promise((resolve, reject) => { connection.query(sqlstd, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); let cl={}; if(resultpta!==undefined){ const stdfen=resultptastd.fen; const fen=JSON.parse(resultpta.daan).printall; allfen=allfen+stdfen; stufen=stufen+fen; jd++; allpta++; if(fen===0){ cl.color="red" cl.wb="答案错误" }else if(stdfen===fen){ cl.color="green" cl.wb="答案正确" }else { cl.color="yellow" cl.wb="答案部分正确" } const memory= parseInt(JSON.parse(resultpta.daan).memory); const time=parseInt(JSON.parse(resultpta.daan).time) if(memory>63353){ cl.color="purple" cl.wb="内存超限" } if(time>600){ cl.color="purple" if(cl.wb==="内存超限") {cl.wb="内存超限 时间超限"} else{ cl.wb="时间超限" } } //cl.daan=JSON.parse(resultpta.daan) cl.tmid=element cl.fen=fen; cl.stdfen=stdfen; cl.zt="已答" }else{ const stdfen=resultptastd.fen; allfen=allfen+stdfen; //stufen=stufen+fen; //jd++; allpta++; cl.color="black" cl.wb="未做答" cl.tmid=element cl.stdfen=" "; cl.fen="-"; cl.zt="未答" } ptaprint.push(cl); //duoxuetiprint.push(JSON.parse(resultpta.daan).defen) } ptalist=JSON.parse(result[0].timu).panduanti; var color=[]; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const sqlstd = "SELECT * FROM tm WHERE id=" +element ; console.log(sql) const resultptastd = await new Promise((resolve, reject) => { connection.query(sqlstd, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); let cl={} if(resultpta===undefined || resultpta.daan==="未作答"){ const stdfen=resultptastd.fen; allfen=allfen+stdfen; //stufen=stufen+fen; //jd++; allpta++; cl.color="black" cl.wb="未做答" cl.tmid=element cl.stdfen=" "; cl.fen="-"; cl.zt="未答" }else{ const stdfen=resultptastd.fen; const fen=JSON.parse(resultpta.daan).defen; allfen=allfen+parseInt(stdfen); stufen=stufen+parseInt(fen); jd++; allpta++; if(fen===0){ cl.color="red" cl.wb="答案错误" }else if(stdfen===fen){ cl.color="green" cl.wb="答案正确" }else { cl.color="yellow" cl.wb="答案部分正确" } cl.tmid=element cl.fen=fen; cl.stdfen=stdfen; cl.zt="已答" cl.stddaan=JSON.parse(resultptastd.tm).daan; cl.daan=JSON.parse(resultpta.daan).xuexiang; } panduantiprint.push(cl) } console.log(0); ptalist=JSON.parse(result[0].timu).danxueti; for (const element of ptalist) { console.log(3); const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const sqlstd = "SELECT * FROM tm WHERE id=" +element ; console.log(sql) const resultptastd = await new Promise((resolve, reject) => { connection.query(sqlstd, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); console.log(4) let cl={} console.log(resultptastd) if(resultpta===undefined || resultpta.daan==="未作答"){ const stdfen=resultptastd.fen; // const fen=JSON.parse(resultpta.daan).defen; allfen=allfen+parseInt(stdfen); //stufen=stufen+parseInt(fen); //jd++; allpta++; cl.color="black" cl.wb="未做答" cl.tmid=element cl.stdfen=" "; cl.fen="-"; cl.zt="未答" }else{ const stdfen=resultptastd.fen; const fen=JSON.parse(resultpta.daan).defen; allfen=allfen+parseInt(stdfen); stufen=stufen+parseInt(fen); jd++; allpta++; console.log(fen) if(fen===0){ cl.color="red" cl.wb="答案错误" }else if(stdfen===fen){ cl.color="green" cl.wb="答案正确" }else { cl.color="yellow" cl.wb="答案部分正确" } cl.tmid=element cl.fen=fen; cl.stdfen=stdfen; cl.zt="已答" cl.stddaan=JSON.parse(resultptastd.tm).daan; cl.daan=JSON.parse(resultpta.daan).xuexiang; } danxuetiprint.push(cl) console.log(5) } console.log(1); ptalist=JSON.parse(result[0].timu).tiankongti; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); console.log(resultpta) const sqlstd = "SELECT * FROM tm WHERE id=" +element ; console.log(sql) const resultptastd = await new Promise((resolve, reject) => { connection.query(sqlstd, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); let cl={} if(resultpta===undefined || resultpta.daan==="未作答"){ cl.color="black" cl.wb="未做答" cl.tmid=element cl.stdfen=" "; cl.fen="-"; cl.zt="未答" const stdfen=resultptastd.fen; //const fen=JSON.parse(resultpta.daan).defen; allfen=allfen+parseInt(stdfen); //stufen=stufen+parseInt(fen); //jd++; allpta++; }else{ const stdfen=resultptastd.fen; const fen=JSON.parse(resultpta.daan).defen; //const stdfen=resultptastd.fen; //const fen=JSON.parse(resultpta.daan).defen; allfen=allfen+parseInt(stdfen); stufen=stufen+parseInt(fen); jd++; allpta++; if(fen===0){ cl.color="red" cl.wb="答案错误" }else if(stdfen===fen){ cl.color="green" cl.wb="答案正确" }else { cl.color="yellow" cl.wb="答案部分正确" } cl.tmid=element cl.fen=fen; cl.stdfen=stdfen; cl.zt="已答" cl.stddaan=JSON.parse(resultptastd.tm).daan; cl.daan=JSON.parse(resultpta.daan).xuexiang; } tiankongtiprint.push(cl) } ptalist=JSON.parse(result[0].timu).duoxueti; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); console.log(resultpta) const sqlstd = "SELECT * FROM tm WHERE id=" +element ; console.log(sql) const resultptastd = await new Promise((resolve, reject) => { connection.query(sqlstd, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); let cl={} if(resultpta===undefined || resultpta.daan==="未作答"){ const stdfen=resultptastd.fen; //const fen=JSON.parse(resultpta.daan).defen; allfen=allfen+parseInt(stdfen); // stufen=stufen+parseInt(fen); // jd++; allpta++; cl.color="black" cl.wb="未做答" cl.tmid=element cl.stdfen=" "; cl.fen="-"; cl.zt="未答" }else{ const stdfen=resultptastd.fen; const fen=JSON.parse(resultpta.daan).defen; allfen=allfen+parseInt(stdfen); stufen=stufen+parseInt(fen); jd++; allpta++; if(fen===0){ cl.color="red" cl.wb="答案错误" }else if(stdfen===fen){ cl.color="green" cl.wb="答案正确" }else { cl.color="yellow" cl.wb="答案部分正确" } cl.tmid=element cl.fen=fen; cl.stdfen=stdfen; cl.zt="已答" cl.stddaan=JSON.parse(resultptastd.tm).daan; cl.daan=JSON.parse(resultpta.daan).xuexiang; } duoxuetiprint.push(cl) } const alldate={jd:jd,allpta:allpta,allfen:allfen,stufen:stufen}; res.send({ptaprint:JSON.stringify(ptaprint),duoxuetiprint:JSON.stringify(duoxuetiprint),danxuetiprint:JSON.stringify(danxuetiprint),panduantiprint:JSON.stringify(panduantiprint),tiankongtiprint:JSON.stringify(tiankongtiprint),alldate:alldate}); } catch(err){} }) // 设置路由和上传字段 app.post('/api/jdttj',async (req, res) => { try{ const sql = "SELECT * FROM pta WHERE xuehao = ? AND th=?"; let result = await new Promise((resolve, reject) => { connection.query(sql, [req.body.xuehao,req.body.th], (err, results) => { if (err) reject(err); else resolve(results); }); }); console.log(result); let jsonsj=result[0].daan; const uuidv4=result[0].uuid; const wjs=[]; if(JSON.parse(jsonsj).sftj==="no"){ //没提交 const folderPath = 'nginx/html/homework/'+uuidv4; const folderList = fs.readdirSync(folderPath) console.log(folderList); folderList.forEach((item) => { const json64= fs.readFileSync('nginx/html/homework/'+uuidv4+'/'+item); const base64Data = json64.toString('base64'); const wjjson={file:basename(item),json64:base64Data}; wjs.push(wjjson); console.log(wjjson) }) let fh=JSON.parse(jsonsj); fh.wj=JSON.stringify(wjs); fh.sftj="no"; const sql = 'UPDATE pta SET daan=? WHERE xuehao=? and th=?'; await new Promise((resolve, reject) => { connection.query(sql, [JSON.stringify(fh), req.body.xuehao, req.body.th], (error, results, fields) => { if (error) throw error; // 处理查询结果 // console.log(results); }); }); } }catch(err){ console.log(err); } }) app.post('/api/upload', upload.single('file'), (req, res) => { const file = req.file; console.log(file); if (!file) { return res.status(400).send('No file uploaded.'); } res.send('File uploaded successfully.'); }); const storagehw = multer.diskStorage({ destination: function (req, file, cb) { fs.mkdir('nginx/html/homework/'+req.headers.xuehao, { recursive: true }, (err) => { if (err) { console.error(err); return; } console.log('文件夹已存在或成功创建!'); }); cb(null, 'nginx/html/homework/'+req.headers.xuehao+'/') // 确保这个文件夹已经存在 }, filename: function (req, file, cb) { const xh=file.originalname; console.log(xh); cb(null, xh) } }) const uploadhw = multer({ storage: storagehw }); app.post('/api/hwdelete',(req, res) => { const lj='nginx/html/homework/'+req.body.uuid+'/'+req.body.filename; try { fs.unlinkSync(lj); console.log('文件已成功删除'); } catch (err) { console.error('删除文件时出错:', err); } }) // 设置路由和上传字段 app.post('/api/uploadhm', uploadhw.single('file'), (req, res) => { const file = req.file; console.log(file); if (!file) { return res.status(400).send('No file uploaded.'); } res.send('File uploaded successfully.'); }); app.get('/api/chaxujiatiao', (req, res) => { stu=req.query.xuehao; var sql = "SELECT * FROM jiatiao WHERE xuehao = "+"'"+stu+"';"; console.log(sql); connection.query(sql,function (err, result) { res.send(result); }) }) app.get('/api/cxtm',(req, res) => { const sql = "SELECT * FROM pta WHERE xuehao = ? AND th=? ORDER BY paixu DESC"; console.log(sql); console.log(req.params.xuehao); console.log(req.params.th) connection.query(sql, [req.query.xuehao,req.query.th], (err, results) => { if(results.length === 0){ res.send("未作答") }else { if (results[0].daan === "未作答") { res.send("未作答"); } else { let daan = JSON.parse(results[0].daan); console.log(daan); res.send(results[0].daan); } } }); }) app.get('/api/print',async (req, res) => { try{ let duoxuetiprint=[] let panduantiprint=[] let danxuetiprint=[] let tiankongtiprint=[] let ptaprint=[] const sql = "SELECT * FROM timuji WHERE id=\'" + req.query.id + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); let ptalist=JSON.parse(result[0].timu).duoxueti; var color=[]; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); duoxuetiprint.push(JSON.parse(resultpta.daan).defen) } ptalist=JSON.parse(result[0].timu).panduanti; var color=[]; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); panduantiprint.push(JSON.parse(resultpta.daan).defen) } ptalist=JSON.parse(result[0].timu).danxueti; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); danxuetiprint.push(JSON.parse(resultpta.daan).defen) } ptalist=JSON.parse(result[0].timu).tiankongti; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); console.log(resultpta) tiankongtiprint.push(JSON.parse(resultpta.daan).defen) } ptalist=JSON.parse(result[0].timu).pta; var color=[]; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); let red=0; let green=0; ptaprint.push(JSON.parse(resultpta.daan).printall) } res.send({ptaprint:JSON.stringify(ptaprint),duoxuetiprint:JSON.stringify(duoxuetiprint),danxuetiprint:JSON.stringify(danxuetiprint),panduantiprint:JSON.stringify(panduantiprint),tiankongtiprint:JSON.stringify(tiankongtiprint)}); } catch(err){} }) app.get('/api/ptacolor', async (req, res) => { try { const sql = "SELECT * FROM timuji WHERE id=\'" + req.query.id + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const ptalist=JSON.parse(result[0].timu).pta; var color=[]; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" + element + "\' and xuehao= \'" + req.query.xuehao + "\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); if (resultpta !== undefined) { let red = 0; let green = 0; JSON.parse(resultpta.daan).t.forEach(daan => { if (daan.print === 0) { red++; } else { green++; } }) if (green === 0) { color.push("red"); } else if (red === 0) { color.push("green"); } else { color.push("yellow"); } }else{ color.push("#000000"); } } res.send(color) }catch(err){ console.log(err); } }) app.get('/api/duoxueticolor', async (req, res) => { try { const sql = "SELECT * FROM timuji WHERE id=\'" + req.query.id + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const ptalist=JSON.parse(result[0].timu).duoxueti; var color=[]; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); if(resultpta.daan!=="未作答") { if (JSON.parse(resultpta.daan).defen === 0) { color.push("red"); } else { color.push("green"); } }else { color.push("#000000"); } } res.send(color) }catch(err){ console.log(err); } }) app.get('/api/panduancolor', async (req, res) => { try { const sql = "SELECT * FROM timuji WHERE id=\'" + req.query.id + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const ptalist=JSON.parse(result[0].timu).panduanti; var color=[]; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); if(resultpta.daan!=="未作答") { if (JSON.parse(resultpta.daan).defen === 0) { color.push("red"); } else { color.push("green"); } }else { color.push("#000000"); } } res.send(color) }catch(err){ console.log(err); } }) app.get('/api/danxueticolor', async (req, res) => { try { const sql = "SELECT * FROM timuji WHERE id=\'" + req.query.id + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const ptalist=JSON.parse(result[0].timu).danxueti; var color=[]; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); if(resultpta.daan!=="未作答") { if (JSON.parse(resultpta.daan).defen === 0) { color.push("red"); } else { color.push("green"); } }else { color.push("#000000"); } } res.send(color) }catch(err){ console.log(err); } }) app.get('/api/danxueticolor', async (req, res) => { try { const sql = "SELECT * FROM timuji WHERE id=\'" + req.query.id + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const ptalist=JSON.parse(result[0].timu).danxueti; var color=[]; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); if(resultpta.daan!=="未作答") { if (JSON.parse(resultpta.daan).defen === 0) { color.push("red"); } else { color.push("green"); } }else { color.push("#000000"); } } res.send(color) }catch(err){ console.log(err); } }) app.get('/api/panduanticolor', async (req, res) => { try { const sql = "SELECT * FROM timuji WHERE id=\'" + req.query.id + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const ptalist=JSON.parse(result[0].timu).panduanti; var color=[]; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); if(resultpta.daan!=="未作答") { if (JSON.parse(resultpta.daan).defen === 0) { color.push("red"); } else { color.push("green"); } }else { color.push("#000000"); } } res.send(color) }catch(err){ console.log(err); } }) app.get('/api/tiankongticolor', async (req, res) => { try { const sql = "SELECT * FROM timuji WHERE id=\'" + req.query.id + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const ptalist=JSON.parse(result[0].timu).tiankongti; var color=[]; for (const element of ptalist) { const sql = "SELECT * FROM pta WHERE th=\'" +element + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) const resultpta = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); console.log(resultpta) if(resultpta.daan!=="未作答") { const all=JSON.parse(resultpta.daan).xuexiang.length; if (JSON.parse(resultpta.daan).defen === all) { color.push("green"); } else if (JSON.parse(resultpta.daan).defen === 0) { color.push("red"); } else { color.push("yellow") } }else { color.push("#000000"); } console.log(color) } res.send(color) }catch(err){ console.log(err); } }) app.get('/api/dizhimoban', (req, res) => { stu=req.query.student; var sql = "SELECT * FROM dizhimoban WHERE xuehao = "+"'"+stu+"';"; console.log(sql); connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } jg=[]; result.forEach(function(value, index) { const json=JSON.parse(value.dizhijson); jg[index] = json; }); res.send(jg); }); }) app.get('/api/dizhimobanbing', (req, res) => { stu=req.query.student; var sql = "SELECT * FROM dizhimobanbing WHERE xuehao = "+"'"+stu+"';"; console.log(sql); connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } jg=[]; result.forEach(function(value, index) { const json=JSON.parse(value.dizhijson); jg[index] = json; }); res.send(jg); }); }) app.get('/api/shijiamoban', (req, res) => { stu=req.query.student; var sql = "SELECT * FROM shijiamoban WHERE xuehao = "+"'"+stu+"';"; console.log(sql); connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } jg=[]; result.forEach(function(value, index) { jg[index] = value.mobanjson; jg[index].id=value.id; }); res.send(jg); }); }) app.get('/api/studentinformation',async (req, res) => { stu=req.query.student; var sql = "SELECT * FROM student WHERE xuehao = "+"'"+stu+"';"; console.log(sql); let stuinfor=await new Promise((resolve,reject)=>{ connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } resolve(result[0]); }); }) const sqlsx="SELECT * FROM shixi WHERE xuehao = ?"; let stuinforsx=await new Promise((resolve,reject)=>{ connection.query(sqlsx,[stu],function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } resolve(result); }); }) stuinfor.shixihao=JSON.stringify(stuinforsx); res.send(stuinfor); }) app.get('/api/teacherinformation', (req, res) => { tea=req.query.teacher; var sql = "SELECT * FROM teacher WHERE xuegonghao = "+"'"+tea+"';"; console.log(sql); connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } res.send(result[0]); }); }) app.get('/api/jiaqiluhu', (req, res) => { //stu=req.query.student; var sql = "SELECT * FROM jiaqi"; console.log(sql); connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } flag=1; result.forEach(function(value, index) { const dateFormat = 'YYYY-MM-DD'; const start=moment(value.lssj, dateFormat).subtract(7, 'days'); const end=moment(value.endtime, dateFormat); console.log(end); console.log(start); if(moment().isBetween(start,end)){ console.log(end); res.send(value); flag=2; } }) if(flag===1) { res.send({}); } }); }) app.get('/api/parentsinformation', (req, res) => { stu=req.query.student; var sql = "SELECT * FROM parents WHERE stdentid = "+"'"+stu+"';"; console.log(sql); connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } res.send(result); }); }) app.get('/api/jiatiaocx', (req, res) => { const stu=req.query.uuid; var sql = "SELECT * FROM jiatiao WHERE uuid = "+"'"+stu+"';"; console.log(sql); connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } if(result[0].leixing==='binjia'){ fs.mkdir('uploads/'+req.query.uuid, { recursive: true }, (err) => { if (err) { console.error(err); return; } JSON.parse(result[0].zzclbase64).map((value,index)=>{ var dataBuffer = Buffer.from(value.base64, 'base64'); fs.writeFile('uploads/'+req.query.uuid+"/"+value.wj, dataBuffer, function(err) { }); }); console.log('文件夹已存在或成功创建!'); }); } if(result.length===0){ res.send({zt:'错误'}); }else { result[0].zt="ok"; res.send(result[0]); } }); }) function stucx(stu) { var sql = "SELECT * FROM student WHERE xuehao = "+"'"+stu+"';"; console.log(sql); let yy={}; connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); } return JSON.stringify(result[0]); }); console.log(yy); } app.get('/api/jiatiaocxfdy', async (req, res) => { try { const fdy = req.query.fdy; // 创建目录 if(!fs.existsSync(`nginx/html/${fdy}`)) { await fs.mkdir(`nginx/html/${fdy}`, (err) => { console.log(err); }); } // 数据库查询 const sql = "SELECT * FROM jiatiao WHERE fdy = ? AND tj !=2"; const result = await new Promise((resolve, reject) => { connection.query(sql, [fdy], (err, results) => { if (err) reject(err); else resolve(results); }); }); // 处理查询结果 const resultfdy = []; for (const value of result) { const stujt = { jt: value.jtnr, leixing: value.leixing, uuid: value.uuid, }; // 查询学生信息 const sql1 = "SELECT * FROM student WHERE xuehao = ?"; const resultxuesheng = await new Promise((resolve, reject) => { connection.query(sql1, [value.xuehao], (err, results) => { if (err) reject(err); else resolve(results); }); }); stujt.stu = JSON.stringify(resultxuesheng); // 处理特定类型的记录 if (value.leixing === 'binjia') { const uuidDir = `nginx/html/${fdy}/${value.uuid}`; if(!fs.existsSync(uuidDir)) { await fs.mkdir(uuidDir, (err) => { console.log(err); }); } // 解析并写入文件 const files = JSON.parse(value.zzclbase64); const wj = []; for (const file of files) { const dataBuffer = Buffer.from(file.base64, 'base64'); const filePath = `${uuidDir}/${file.wj}`; await fs.writeFile(filePath, dataBuffer,(err) => { console.log(err); }); const wjfile = { url: `localhost:89/${fdy}/${value.uuid}/${file.wj}` ,filePath:`${file.wj}` }; wj.push(wjfile); } stujt.wj = wj; } resultfdy.push(stujt); } // 发送响应 res.json(resultfdy); } catch (err) { console.error(err); res.status(500).send('Internal Server Error'); } }); app.get('/api/jiatiaocxfdylx', async (req, res) => { try { const fdy = req.query.fdy; const leixing=req.query.leixing; // 创建目录 if(!fs.existsSync(`nginx/html/${fdy}`)) { await fs.mkdir(`nginx/html/${fdy}`, (err) => { console.log(err); }); } // 数据库查询 const sql = "SELECT * FROM jiatiao WHERE fdy = ? AND tj = ?"; const result = await new Promise((resolve, reject) => { connection.query(sql, [fdy,leixing], (err, results) => { if (err) reject(err); else resolve(results); }); }); // 处理查询结果 const resultfdy = []; for (const value of result) { const stujt = { jt: value.jtnr, leixing: value.leixing, uuid: value.uuid, }; // 查询学生信息 const sql1 = "SELECT * FROM student WHERE xuehao = ?"; const resultxuesheng = await new Promise((resolve, reject) => { connection.query(sql1, [value.xuehao], (err, results) => { if (err) reject(err); else resolve(results); }); }); stujt.stu = JSON.stringify(resultxuesheng); // 处理特定类型的记录 if (value.leixing === 'binjia') { const uuidDir = `nginx/html/${fdy}/${value.uuid}`; if(!fs.existsSync(uuidDir)) { await fs.mkdir(uuidDir, (err) => { console.log(err); }); } // 解析并写入文件 const files = JSON.parse(value.zzclbase64); const wj = []; for (const file of files) { const dataBuffer = Buffer.from(file.base64, 'base64'); const filePath = `${uuidDir}/${file.wj}`; await fs.writeFile(filePath, dataBuffer,(err) => { console.log(err); }); const wjfile = { url: `localhost:89/${fdy}/${value.uuid}/${file.wj}` ,filePath:`${file.wj}` }; wj.push(wjfile); } stujt.wj = wj; } resultfdy.push(stujt); } // 发送响应 res.json(resultfdy); } catch (err) { console.error(err); res.status(500).send('Internal Server Error'); } }); app.get('/api/sjmobancx', (req, res) => { id=req.query.uuid; var sql = "SELECT * FROM shijiamoban WHERE id = "+"'"+id+"';"; console.log(sql); connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } if(result.length===0){ res.send({zt:'错误'}); }else { result[0].zt="ok"; res.send(result[0]); } }); }) app.get('/api/shixiinformation', (req, res) => { sx=req.query.shixi; var sql = "SELECT * FROM shixi WHERE shixihao = "+"'"+sx+"';"; console.log(sql); connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } res.send(result[0]); }); }); app.get('/api/ptatm', (req, res) => { id=req.query.id; var sql = "SELECT * FROM tm WHERE id = "+"'"+id+"';"; console.log(sql+"1234"); connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } res.send(result[0]); }); }); app.post('/api/ptadaan', (req, res) => { const sql = 'UPDATE pta SET daan=? WHERE xuehao=? and th=?'; connection.query(sql, [req.body.daan,req.body.xuehao,req.body.th], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) app.post('/api/fabucommit', (req, res) => { const sql = 'INSERT INTO commit(uuid,likes,dislikes,author,neirong,fabutime,xuehao,xuhao,filelist) VALUES(?,?,?,?,?,?,?,?,?)'; connection.query(sql, [uuidv4.v4(),JSON.stringify(req.body.likes),JSON.stringify(req.body.dislikes),req.body.author,req.body.neirong,req.body.fabutime,req.body.xuehao,req.body.xuhao,JSON.stringify(req.body.filelist)], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); res.send({status:"ok"}) }) app.post('/api/newcommitgroup', async (req, res) => { const sql="SELECT COUNT(*) AS rows FROM commitgroup;" const rownum=await new Promise((resolve, reject) => { connection.query(sql,(err, result) => { resolve(result); }) }) const sqlinsert="INSERT INTO commitgroup(xuhao,teacher,zhuti,student,fabukecheng) VALUES(?,?,?,?,?)" await new Promise((resolve, reject) => { connection.query(sqlinsert,[rownum[0].rows+1,req.body.tea,"[]","[]","[]"],(err, result)=>{ if (err) throw err; resolve(result); // 处理查询结果 console.log(result); }) }) res.send(rownum) }) app.post('/api/updatelike',async (req, res) => { const sql = "SELECT * FROM commit WHERE uuid=\'" + req.body.uuid + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); let likes=JSON.parse(result[0].likes); if(!likes.includes(req.body.xuehao)){ likes.push(req.body.xuehao); }else{ likes=likes.filter(item => item !== req.body.xuehao); } const sqlupdate = 'UPDATE commit SET likes=? WHERE uuid=?'; await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(likes),req.body.uuid], (error, results, fields) => { if (error) reject(error); resolve(results); }); }); res.send(likes); }) app.get('/api/cxcommittimu', (req, res) => { const sql="SELECT * FROM commitgroup WHERE xuhao=?"; connection.query(sql,[req.query.xuhao],function (err, result) { if (err){ throw err; } if(result.length>0) { res.send(result[0]); }else{ res.send("nocommit") } }) }) app.post('/api/updatedislike',async (req, res) => { const sql = "SELECT * FROM commit WHERE uuid=\'" + req.body.uuid + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); let likes=JSON.parse(result[0].dislikes); if(!likes.includes(req.body.xuehao)){ likes.push(req.body.xuehao); }else{ likes=likes.filter(item => item !== req.body.xuehao); } const sqlupdate = 'UPDATE commit SET dislikes=? WHERE uuid=?'; await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(likes),req.body.uuid], (error, results, fields) => { if (error) reject(error); resolve(results); }); }); res.send(likes); }) app.get("/apitea/classlist_ex",async (req, res) => { const sql="SELECT classid,classname,teacherid,classbh FROM kechengbiao WHERE teacher=?" const claasslist=await new Promise((resolve, reject) => { connection.query(sql,[req.query.tea],(error, results, fields) => { if (error) reject(error); resolve(results); }) }) res.send(claasslist); }) app.get('/apitea/gettaolong',async (req, res) => { const sql="SELECT * FROM commitgroup WHERE xuhao=?" let results = await new Promise((resolve, reject) => { connection.query(sql,[req.query.xuhao],(error, results, fields) => { resolve(results[0]); }) }) if(results) { let fabuclass = JSON.parse(results.fabukecheng); console.log(fabuclass) const sqlclass = "SELECT classid,classname,teacherid,classbh FROM kechengbiao WHERE teacher=?" let claasslist = await new Promise((resolve, reject) => { connection.query(sqlclass, [req.query.tea], (error, results, fields) => { if (error) reject(error); resolve(results); }) }) for (let i = 0; i < claasslist.length; i++) { console.log(123) if (fabuclass.includes(parseInt(claasslist[i].teacherid))) { console.log("yes") claasslist[i].choose = true; } } results.fabu = claasslist; res.send(results); } }) app.post("/apitea/fabukaoshi",async (req, res) => { let student=[]; const fabuclass=req.body.fabuclass;//获取发布班级 for(let i=0;i { connection.query(sqlclass,[fabuclass[i]],(error, results, fields) => { if (error) reject(error); resolve(results[0]); }) }) student=[...student,...JSON.parse(claasslist.student)]; } student=[...new Set(student)]; console.log(student); const sqlupdate = 'UPDATE kaoshipaper SET paper=?,std=?,xx=?,stu=? WHERE uuid=?'; await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(req.body.paper),JSON.stringify(req.body.std),JSON.stringify(req.body.xx),JSON.stringify(student),req.body.xuhao], (error, results, fields) => { if (error) reject(error); resolve(results); }); }); }) app.post("/aptea/fabutaolong",async (req, res) => { const sql="SELECT * FROM commitgroup WHERE xuhao=?" let results = await new Promise((resolve, reject) => { connection.query(sql,[req.body.xuhao],(error, results, fields) => { resolve(results[0]); }) }) let student=[]; const fabuclass=JSON.parse(results.fabukecheng); for(let i=0;i { connection.query(sqlclass,[fabuclass[i]],(error, results, fields) => { if (error) reject(error); resolve(results[0]); }) }) student=[...student,...JSON.parse(claasslist.student)]; } student=[...new Set(student)]; const sqlupdate = 'UPDATE commitgroup SET student=? WHERE xuhao=?'; await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(student),req.body.xuhao], (error, results, fields) => { if (error) reject(error); resolve(results); }); }); res.send(student); }) app.post("/apitea/updatetaolong",async (req, res) => { let fabuclass=[]; req.body.classinfor.map((value,index)=>{ if(value.choose===true){ fabuclass.push(parseInt(value.teacherid)) } }) const sql = 'UPDATE commitgroup SET title=?,zhuti=?,fabukecheng=? WHERE xuhao=?'; console.log(req.body.seconds); connection.query(sql, [req.body.title,JSON.stringify(req.body.zhuti),JSON.stringify(fabuclass),req.body.id], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) app.get('/api/taolong',async (req, res) => { const sql="SELECT * FROM commitgroup WHERE teacher=?"; let reasult = await new Promise((resolve, reject) => { connection.query(sql,[req.query.tea],(error, results, fields) => { if(error) reject(error); resolve(results); }) }) for(let i=0;i { connection.query(sqlcommit,[reasult[i].xuhao],(error, results, fields) => { if (error) reject(error); resolve(results); }) }) let stufinish=[] resultcommit.map((value) => { stufinish.push(value.xuehao) }) stufinish=[...new Set(stufinish)]; reasult[i].stufinish=stufinish; for(let j=0;j { connection.query(sqlclass, [JSON.parse(reasult[i].fabukecheng)[j]], (error, results, fields) => { if (error) reject(error); resolve(results); }) }) console.log(resultclass) resultclass.map((value,index)=>{ kechengname=kechengname+" "+value.classname+"@"+value.classbh const temp=JSON.parse(value.student); stu=[...stu,...temp] }) } let uniqueArr = [...new Set(stu)]; reasult[i].studentshiji=uniqueArr; reasult[i].classnamelist=kechengname; } res.send(reasult); }) app.get('/api/getstucommit',async (req, res) => { const sql = "SELECT xuhao,teacher,title,zhuti,student,teacher.name AS teaname\n" + "FROM commitgroup\n" + "LEFT JOIN teacher ON teacher.xuegonghao = commitgroup.teacher\n" + "WHERE JSON_CONTAINS(student, "+`'["${req.query.xuehao}"]'`+", '$');" ; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const temp=[...result]; for(let i=0;i { connection.query(sql, [req.query.xuehao,temp[i].xuhao], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) if(stu.length===0){ temp[i].zt="nofinish" }else{ temp[i].zt="finish" } } res.send(temp); }) app.get("/apitea/askks",async (req, res) => { //WHERE JSON_CONTAINS(stu,?, '$'); const sqlpaper="SELECT * FROM kaoshipaper WHERE JSON_CONTAINS(tea,?, '$')" // const sqllist="SELECT * FROM askforks WHERE xuehao = ? ;" const resultkslist=await new Promise((resolve, reject) => { connection.query(sqlpaper, ["["+req.query.tea+"]"], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) let resultlist=[]; for(let i=0;i { connection.query(sqllist, [resultkslist[i].uuid], (error, results, fields) => { if (error) reject(error); resolve(results); }) }) resultlist=[...resultlist,...resultone]; } console.log(resultlist) const askks=[...resultlist]; for(let i=0;i { connection.query(sqltm, [resultlist[i].ksh], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) askks[i].tm=JSON.parse(resultm[0].paper)[resultlist[i].th] askks[i].daan=JSON.parse(resultm[0].std)[resultlist[i].th] askks[i].showdaan=false; } res.send(askks); }) app.post("/api/updateksask",async (req, res) => { const sql = 'UPDATE askforks SET filelist=?,neirong=? WHERE id=?'; console.log(req.body.seconds); connection.query(sql, [req.body.filelist,req.body.neirong,req.body.id], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) app.get("/api/selectaskforks",async (req, res) => { const sqllist="SELECT * FROM askforks WHERE xuehao = ? ;" const resultlist=await new Promise((resolve, reject) => { connection.query(sqllist, [req.query.xuehao], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) let temp=[...resultlist] for(let i=0;i { connection.query(sqltm, [temp[i].ksh], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) temp[i].tm=JSON.parse(resulttimu[0].paper)[temp[i].th]; } res.send(temp); }) app.get("/kaoshi/selectlist",async (req, res) => { const sqllist="SELECT * FROM kaoshipaper WHERE JSON_CONTAINS(stu,?, '$');" const resultlist=await new Promise((resolve, reject) => { connection.query(sqllist, ["[\""+req.query.xuehao+"\"]"], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) let temp=[...resultlist] let allprint=-1; let stuprint=-1; for(let i=0;i0){ const sqlend = "SELECT * FROM kaoshiend WHERE ks=? AND xuehao=?" const resultend=await new Promise((resolve, reject) => { connection.query(sqlend, [resultlist[i].uuid,req.query.xuehao], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) const stddaan=JSON.parse(resultlist[i].std) let jue=[] if(resultend[0]) { jue=JSON.parse(resultend[0].ksdaan); } let needteacher=false;//是否需要老师阅卷 let finishteacher=true//老师是否完成阅卷 for(let i=0;i { connection.query(sqlend, [resultlist[i].uuid,req.query.xuehao], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) if(resultend.length>0){ zt="已提交" }else{ const sqling = "SELECT * FROM kaoshing WHERE ks=? AND xuehao=?" const resulting=await new Promise((resolve, reject) => { connection.query(sqlend, [resultlist[i].uuid,req.query.xuehao], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) if(resulting.length>0){ zt="已开始作答" }else{ zt="未开始作答" } } } console.log(zt) if(allprint!==-1){ temp[i].alllprint=allprint; temp[i].printstu=stuprint; }else{ temp[i].alllprint="_"; temp[i].printstu="_"; } temp[i].zt=zt; } res.send(temp); }) app.get('/api/selectcommit', (req, res) => { const sql='SELECT * FROM commit WHERE xuhao=?'; connection.query(sql,[req.query.xuhao],function (err, result) { if(err){throw err} const temp=[...result]; for(let i=0;i { const sql = 'INSERT INTO sp(uuid,starttime,xuehao,spxh) VALUES(?,?,?,?)'; connection.query(sql, [req.body.uuid,req.body.starttime,req.body.xuehao,req.body.spxh], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) app.post('/api/xgymk', (req, res) => { const sql = 'UPDATE sp SET seconds=?,endtime=? WHERE uuid=?'; console.log(req.body.seconds); connection.query(sql, [req.body.seconds,req.body.endtime,req.body.uuid], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) app.post('/api/changemobansj', (req, res) => { const sql = 'UPDATE shijiamoban SET mobanjson=?,mobanmc=? WHERE id=?'; connection.query(sql, [req.body.moban,req.body.mobanmc,req.body.id1], (error, results, fields) => { if (error) throw error; res.send({status:"ok"}) // 处理查询结果 console.log(results); }); }) app.post('/api/fdycl', (req, res) => { const sql = 'UPDATE jiatiao SET tj=?,huifunr=? WHERE uuid=?'; connection.query(sql, [req.body.hf,req.body.tj,req.body.id1], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) app.post('/api/tijiaoshijia', (req, res) => { // let xuehao=req console.log(req.body); const sql = 'INSERT INTO jiatiao(uuid,jtnr,xuehao,fdy,tj,leixing) VALUES(?,?,?,?,?,"shijia")'; let jsonsql={}; // 执行预编译的SQL语句,并传入参数 connection.query(sql, [req.body.uuid,req.body.jtnr,req.body.xuehao,req.body.fdy,req.body.tj], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); if(req.body.azq==='true'){ jsonsql=JSON.parse(req.body.jtnr); const startdays=moment(jsonsql.startdate).days(); const starthours=moment(jsonsql.startdate).hours(); const startminutes=moment(jsonsql.startdate).minutes(); const startseconds=moment(jsonsql.startdate).seconds(); const enddays=moment(jsonsql.enddate).days(); const endhours=moment(jsonsql.enddate).hours(); const endminutes=moment(jsonsql.enddate).minutes(); const endseconds=moment(jsonsql.enddate).seconds(); const startj={ "qf": "z", "day":startdays.toString(), "hour": starthours.toString(), "minute": startminutes.toString(), }; const endj={ "qf": "z", "day":enddays.toString(), "hour": enddays.toString(), "minute": enddays.toString(), } const mobanjson={ "start":startj, "end":endj, "sfhxzs":jsonsql.sfhxzs, "cxfs":jsonsql.cxfs, "xxdz":jsonsql.xxdz, "sflx":jsonsql.sflx, "xxyy":jsonsql.xxyy, "qf":"z", "cx":moment(jsonsql.enddate).diff(moment(jsonsql.startdate),'days').toString(), "daynum":moment(jsonsql.enddate).diff(moment(jsonsql.startdate)).toString(), "mbmc":"A" } const sql = 'INSERT INTO shijiamoban(mobanmc,mobanjson,xuehao) VALUES(?,?,?)'; // 执行预编译的SQL语句,并传入参数 connection.query(sql, ["A",JSON.stringify(mobanjson),req.body.xuehao], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); console.log(startdays); } if(req.body.ayq==='true'){ jsonsql=JSON.parse(req.body.jtnr); const startdays=moment(jsonsql.startdate).date(); const starthours=moment(jsonsql.startdate).hours(); const startminutes=moment(jsonsql.startdate).minutes(); const startseconds=moment(jsonsql.startdate).seconds(); const enddays=moment(jsonsql.enddate).date(); const endhours=moment(jsonsql.enddate).hours(); const endminutes=moment(jsonsql.enddate).minutes(); const endseconds=moment(jsonsql.enddate).seconds(); const startj={ "qf": "y", "day":startdays.toString(), "hour": starthours.toString(), "minute": startminutes.toString(), }; const endj={ "qf": "y", "day":enddays.toString(), "hour": enddays.toString(), "minute": enddays.toString(), } const mobanjson={ "start":startj, "end":endj, "sfhxzs":jsonsql.sfhxzs, "cxfs":jsonsql.cxfs, "xxdz":jsonsql.xxdz, "sflx":jsonsql.sflx, "xxyy":jsonsql.xxyy, "qf":"y", "cx":moment(jsonsql.enddate).diff(moment(jsonsql.startdate),'days').toString(), "daynum":moment(jsonsql.enddate).diff(moment(jsonsql.startdate)).toString(), "mbmc":"Y" } const sql = 'INSERT INTO shijiamoban(mobanmc,mobanjson,xuehao) VALUES(?,?,?)'; // 执行预编译的SQL语句,并传入参数 connection.query(sql, ["Y",JSON.stringify(mobanjson),req.body.xuehao], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); console.log(startdays); } if(req.body.anq==='true'){ jsonsql=JSON.parse(req.body.jtnr); const startmonth=moment(jsonsql.startdate).month(); const startdays=moment(jsonsql.startdate).days(); const starthours=moment(jsonsql.startdate).hours(); const startminutes=moment(jsonsql.startdate).minutes(); const startseconds=moment(jsonsql.startdate).seconds(); const endmonth=moment(jsonsql.enddate).month(); const enddays=moment(jsonsql.enddate).days(); const endhours=moment(jsonsql.enddate).hours(); const endminutes=moment(jsonsql.enddate).minutes(); const endseconds=moment(jsonsql.enddate).seconds(); const startj={ "qf": "n", "day":startdays.toString(), "month":startmonth.toString(), "hour": starthours.toString(), "minute": startminutes.toString(), }; const endj={ "qf": "n", "day":enddays.toString(), "hour": enddays.toString(), "month":endmonth.toString(), "minute": enddays.toString(), } const mobanjson={ "start":startj, "end":endj, "sfhxzs":jsonsql.sfhxzs, "cxfs":jsonsql.cxfs, "xxdz":jsonsql.xxdz, "sflx":jsonsql.sflx, "xxyy":jsonsql.xxyy, "qf":"n", "cx":moment(jsonsql.enddate).diff(moment(jsonsql.startdate),'days').toString(), "daynum":moment(jsonsql.enddate).diff(moment(jsonsql.startdate)).toString(), "mbmc":"C" } const sql = 'INSERT INTO shijiamoban(mobanmc,mobanjson,xuehao) VALUES(?,?,?)'; // 执行预编译的SQL语句,并传入参数 connection.query(sql, ["C",JSON.stringify(mobanjson),req.body.xuehao], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); console.log(startdays); } const sql1 = 'SELECT * FROM dizhimoban WHERE xxdz = \''+jsonsql.xxdz+'\';'; // 执行预编译的SQL语句,并传入参数 connection.query(sql1, (error, results, fields) => { if (error) throw error; if(results.length===0){ const dizhi= { "sfhxzs": jsonsql.sfhxzs, "cxfs": jsonsql.cxfs, "xxdz": jsonsql.xxdz, "sflx": jsonsql.sflx, "mbmc":"dzA", "mdd":"目的地" } const sql = 'INSERT INTO dizhimoban(xuehao,mobanmc,dizhijson,xxdz) VALUES(?,?,?,?)'; connection.query(sql, [req.body.xuehao,"dzA",JSON.stringify(dizhi),req.body.xuexxdz], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); } // 处理查询结果 console.log(results); }); }) //修改 app.post('/api/kecb',(req,res)=>{ const start=req.body.start; const end=req.body.end; const xuehao=req.body.xuehao; console.log(1367); const startxueiq=moment("2024-09-02T00:00:27+08:00"); const daystart=moment(start).diff(startxueiq,"days"); const dayend=moment(end).diff(startxueiq,"days"); console.log(daystart); const minutestart=moment(start).minutes()+moment(start).hours()*60; const minutesend=moment(end).minutes()+moment(end).hours()*60; let kestart=0; if(minutestart<500){ kestart=1; }else if(minutestart<620){ kestart=2; }else if(minutestart<840){ kestart=3; }else if(minutestart<960){ kestart=4; }else { kestart=5; } let keend=0; if(minutesend>1060){ keend=4; }else if(minutesend<940){ keend=3; }else if(minutesend<720){ keend=2; }else if(minutesend<600){ keend=1; }else { keend=0; } const kaishi=daystart*4+kestart; const jieshu=dayend*4+keend; const sql = 'SELECT xunhuan(?,?,?)'; connection.query(sql, [kaishi,jieshu,xuehao], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); console.log(dayend); }) app.post('/api/changeshijia', (req, res) => { // let xuehao=req console.log(req.body); const sql = 'UPDATE jiatiao SET jtnr=?,tj=?,leixing=? WHERE uuid=?'; let jsonsql={}; // 执行预编译的SQL语句,并传入参数 connection.query(sql, [req.body.jtnr,req.body.tj,"shijia",req.body.uuid], (error, results, fields) => { if (error) throw error; res.send({status:"ok"}) // 处理查询结果 console.log(results); }); if(req.body.azq==='true'){ jsonsql=JSON.parse(req.body.jtnr); const startdays=moment(jsonsql.startdate).days(); const starthours=moment(jsonsql.startdate).hours(); const startminutes=moment(jsonsql.startdate).minutes(); const startseconds=moment(jsonsql.startdate).seconds(); const enddays=moment(jsonsql.enddate).days(); const endhours=moment(jsonsql.enddate).hours(); const endminutes=moment(jsonsql.enddate).minutes(); const endseconds=moment(jsonsql.enddate).seconds(); const startj={ "qf": "z", "day":startdays.toString(), "hour": starthours.toString(), "minute": startminutes.toString(), }; const endj={ "qf": "z", "day":enddays.toString(), "hour": enddays.toString(), "minute": enddays.toString(), } const mobanjson={ "start":startj, "end":endj, "sfhxzs":jsonsql.sfhxzs, "cxfs":jsonsql.cxfs, "xxdz":jsonsql.xxdz, "sflx":jsonsql.sflx, "xxyy":jsonsql.xxyy, "qf":"z", "cx":moment(jsonsql.enddate).diff(moment(jsonsql.startdate),'days').toString(), "daynum":moment(jsonsql.enddate).diff(moment(jsonsql.startdate)).toString(), "mbmc":"A" } const sql = 'INSERT INTO shijiamoban(mobanmc,mobanjson,xuehao) VALUES(?,?,?)'; // 执行预编译的SQL语句,并传入参数 connection.query(sql, ["A",JSON.stringify(mobanjson),req.body.xuehao], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); console.log(startdays); } if(req.body.ayq==='true'){ jsonsql=JSON.parse(req.body.jtnr); const startdays=moment(jsonsql.startdate).date(); const starthours=moment(jsonsql.startdate).hours(); const startminutes=moment(jsonsql.startdate).minutes(); const startseconds=moment(jsonsql.startdate).seconds(); const enddays=moment(jsonsql.enddate).date(); const endhours=moment(jsonsql.enddate).hours(); const endminutes=moment(jsonsql.enddate).minutes(); const endseconds=moment(jsonsql.enddate).seconds(); const startj={ "qf": "y", "day":startdays.toString(), "hour": starthours.toString(), "minute": startminutes.toString(), }; const endj={ "qf": "y", "day":enddays.toString(), "hour": enddays.toString(), "minute": enddays.toString(), } const mobanjson={ "start":startj, "end":endj, "sfhxzs":jsonsql.sfhxzs, "cxfs":jsonsql.cxfs, "xxdz":jsonsql.xxdz, "sflx":jsonsql.sflx, "xxyy":jsonsql.xxyy, "qf":"y", "cx":moment(jsonsql.enddate).diff(moment(jsonsql.startdate),'days').toString(), "daynum":moment(jsonsql.enddate).diff(moment(jsonsql.startdate)).toString(), "mbmc":"Y" } const sql = 'INSERT INTO shijiamoban(mobanmc,mobanjson,xuehao) VALUES(?,?,?)'; // 执行预编译的SQL语句,并传入参数 connection.query(sql, ["Y",JSON.stringify(mobanjson),req.body.xuehao], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); console.log(startdays); } if(req.body.anq==='true'){ jsonsql=JSON.parse(req.body.jtnr); const startmonth=moment(jsonsql.startdate).month(); const startdays=moment(jsonsql.startdate).days(); const starthours=moment(jsonsql.startdate).hours(); const startminutes=moment(jsonsql.startdate).minutes(); const startseconds=moment(jsonsql.startdate).seconds(); const endmonth=moment(jsonsql.enddate).month(); const enddays=moment(jsonsql.enddate).days(); const endhours=moment(jsonsql.enddate).hours(); const endminutes=moment(jsonsql.enddate).minutes(); const endseconds=moment(jsonsql.enddate).seconds(); const startj={ "qf": "n", "day":startdays.toString(), "month":startmonth.toString(), "hour": starthours.toString(), "minute": startminutes.toString(), }; const endj={ "qf": "n", "day":enddays.toString(), "hour": enddays.toString(), "month":endmonth.toString(), "minute": enddays.toString(), } const mobanjson={ "start":startj, "end":endj, "sfhxzs":jsonsql.sfhxzs, "cxfs":jsonsql.cxfs, "xxdz":jsonsql.xxdz, "sflx":jsonsql.sflx, "xxyy":jsonsql.xxyy, "qf":"n", "cx":moment(jsonsql.enddate).diff(moment(jsonsql.startdate),'days').toString(), "daynum":moment(jsonsql.enddate).diff(moment(jsonsql.startdate)).toString(), "mbmc":"C" } const sql = 'INSERT INTO shijiamoban(mobanmc,mobanjson,xuehao) VALUES(?,?,?)'; // 执行预编译的SQL语句,并传入参数 connection.query(sql, ["C",JSON.stringify(mobanjson),req.body.xuehao], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); console.log(startdays); } const sql1 = 'SELECT * FROM dizhimoban WHERE xxdz = \''+jsonsql.xxdz+'\';'; // 执行预编译的SQL语句,并传入参数 connection.query(sql1, (error, results, fields) => { if (error) throw error; if(results.length===0){ const dizhi= { "sfhxzs": jsonsql.sfhxzs, "cxfs": jsonsql.cxfs, "xxdz": jsonsql.xxdz, "sflx": jsonsql.sflx, "mbmc":"dzA", "mdd":"目的地" } const sql = 'INSERT INTO dizhimoban(xuehao,mobanmc,dizhijson,xxdz) VALUES(?,?,?,?)'; connection.query(sql, [req.body.xuehao,"dzA",JSON.stringify(dizhi),req.body.xuexxdz], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); } // 处理查询结果 console.log(results); }); }) app.post("/api/tijiaobing", function (req, res) { try{ const filenames = fs.readdirSync(__dirname+'/uploads/'+req.body.uuid); const sql = 'INSERT INTO jiatiao(uuid,jtnr,xuehao,fdy,tj,zzcl,zzclbase64,leixing) VALUES(?,?,?,?,?,?,?,"binjia")'; let jsonsql={}; // 执行预编译的SQL语句,并传入参数 const wjgroup=[]; filenames.forEach(filename=>{ const data = fs.readFileSync(__dirname+'/uploads/'+req.body.uuid+'/'+filename); data.toString('base64'); const wj={ wj:filename, base64:data.toString('base64'), } wjgroup.push(wj); }) connection.query(sql, [req.body.uuid,req.body.jtnr,req.body.xuehao,req.body.fdy,req.body.tj,JSON.stringify(filenames),JSON.stringify(wjgroup)], (error, results, fields) => { if (error) throw error; // 处理查询结果 }); const sql1 = 'SELECT * FROM dizhimoban WHERE xxdz = \''+jsonsql.xxdz+'\';'; // 执行预编译的SQL语句,并传入参数 connection.query(sql1, (error, results, fields) => { if (error) throw error; if (results.length === 0) { const dizhi = { "sfhxzs": jsonsql.sfhxzs, "cxfs": jsonsql.cxfs, "xxdz": jsonsql.xxdz, "sflx": jsonsql.sflx, "mbmc": "dzA", "mdd": "目的地" } const sql = 'INSERT INTO dizhimoban(xuehao,mobanmc,dizhijson,xxdz) VALUES(?,?,?,?)'; connection.query(sql, [req.body.xuehao, "dzA", JSON.stringify(dizhi), req.body.xuexxdz], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); } }) // 处理查 const sql2 = 'SELECT * FROM dizhimobanbing WHERE xxdz = \''+jsonsql.xxdz+'\';'; // 执行预编译的SQL语句,并传入参数 connection.query(sql2, (error, results, fields) => { if (error) throw error; if (results.length === 0) { const dizhi = { "sfhxzs": jsonsql.sfhxzs, "cxfs": jsonsql.cxfs, "xxdz": jsonsql.xxdz, "sflx": jsonsql.sflx, "mbmc": "dzA", "mdd": "目的地" } const sql = 'INSERT INTO dizhimobanbing(xuehao,mobanmc,dizhijson,xxdz) VALUES(?,?,?,?)'; connection.query(sql, [req.body.xuehao, "dzA", JSON.stringify(dizhi), req.body.xuexxdz], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); } }) console.log(req.body) } catch (err) { console.error(err); } }) function executeCommandWithTimeout(command, timeout) { // 创建一个promise return new Promise((resolve, reject) => { // 设置定时器来超时终止命令 const timer = setTimeout(() => { reject(new Error('Command execution timed out.')); if (childProcess) { childProcess.kill(); // 终止命令执行 } }, timeout); // 执行命令 const startTime = process.hrtime(); const childProcess = exec(command, (error, stdout, stderr) => { // 清除定时器 clearTimeout(timer); if (error) { reject(error); return; } resolve({ stdout, stderr }); }); const endTime = process.hrtime(startTime); // 计算总的纳秒数 const timeInNanoSeconds = endTime[0] * 1e9 + endTime[1]; // 转换为秒 const timeInSeconds = timeInNanoSeconds / 1e9; console.log(`程序运行时间: ${timeInSeconds} 秒`); }); } app.post("/api/ptatj", function (req, res) { fs.writeFile(req.body.uuid+'.c', req.body.code, (err) => { if (err) throw err; exec(`gcc ${req.body.uuid}.c -o${req.body.uuid}.exe`, (error, stdout, stderr) => { if (error) { console.error(`执行的错误: ${error}`); return; } const startTime = process.hrtime(); executeCommandWithTimeout(`${req.body.uuid}.exe re1.out`, 5000) .then(({ stdout, stderr }) => { console.log(stdout); console.error(stderr); }) .catch(error => { console.error(error.message); }); const endTime = process.hrtime(startTime); // 计算总的纳秒数 const timeInNanoSeconds = endTime[0] * 1e9 + endTime[1]; // 转换为秒 const timeInSeconds = timeInNanoSeconds / 1e9; console.log(`程序运行时间: ${timeInSeconds} 秒`); // exec(`${req.body.uuid}.exe re.out`) console.log(`stdout: ${stdout}`); if (stderr) { console.log(`stderr: ${stderr}`); } }); console.log('数据已成功写入文件'); }); }) app.post("/api/changebing", function (req, res) { try{ const filenames = fs.readdirSync(__dirname+'/uploads/'+req.body.uuid); const sql = 'UPDATE jiatiao SET jtnr=?,tj=?,leixing=?,zzcl=?,zzclbase64=? WHERE uuid=?'; let jsonsql={}; // 执行预编译的SQL语句,并传入参数 const wjgroup=[]; filenames.forEach(filename=>{ const data = fs.readFileSync(__dirname+'/uploads/'+req.body.uuid+'/'+filename); data.toString('base64'); const wj={ wj:filename, base64:data.toString('base64'), } wjgroup.push(wj); }) connection.query(sql, [req.body.jtnr,req.body.tj,req.body.leixing,JSON.stringify(filenames),JSON.stringify(wjgroup),req.body.uuid], (error, results, fields) => { if (error) throw error; // 处理查询结果 res.send({status:"ok"}) }); const sql1 = 'SELECT * FROM dizhimoban WHERE xxdz = \''+jsonsql.xxdz+'\';'; // 执行预编译的SQL语句,并传入参数 connection.query(sql1, (error, results, fields) => { if (error) throw error; if (results.length === 0) { const dizhi = { "sfhxzs": jsonsql.sfhxzs, "cxfs": jsonsql.cxfs, "xxdz": jsonsql.xxdz, "sflx": jsonsql.sflx, "mbmc": "dzA", "mdd": "目的地" } const sql = 'INSERT INTO dizhimoban(xuehao,mobanmc,dizhijson,xxdz) VALUES(?,?,?,?)'; connection.query(sql, [req.body.xuehao, "dzA", JSON.stringify(dizhi), req.body.xuexxdz], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); } }) // 处理查 const sql2 = 'SELECT * FROM dizhimobanbing WHERE xxdz = \''+jsonsql.xxdz+'\';'; // 执行预编译的SQL语句,并传入参数 connection.query(sql2, (error, results, fields) => { if (error) throw error; if (results.length === 0) { const dizhi = { "sfhxzs": jsonsql.sfhxzs, "cxfs": jsonsql.cxfs, "xxdz": jsonsql.xxdz, "sflx": jsonsql.sflx, "mbmc": "dzA", "mdd": "目的地" } const sql = 'INSERT INTO dizhimobanbing(xuehao,mobanmc,dizhijson,xxdz) VALUES(?,?,?,?)'; connection.query(sql, [req.body.xuehao, "dzA", JSON.stringify(dizhi), req.body.xuexxdz], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); } }) console.log(req.body) } catch (err) { console.error(err); } }) app.post("/api/includemobansj", function (req, res) { const sql = 'INSERT INTO shijiamoban(mobanmc,mobanjson,xuehao) VALUES(?,?,?)'; console.log(req.body.moban); connection.query(sql, [req.body.mobanmc,req.body.moban,req.body.xuehao], (error, results, fields) => { if (error) throw error; // 处理查询结果 }); }) app.get("/api/denglu", function (req, res) { const sql="SELECT * FROM student WHERE xuehao=\'"+req.query.xuehao+"\'"; console.log(sql) connection.query(sql,(error, results, fields) => { if(error)throw error; console.log(results); if(results.length === 0) { res.send({mes:'wuzhanghao'})//无账号 }else if(results[0].passage===req.query.mima){ res.send({mes:'ok'}) }else { res.send({mes:'mimachuowu'})//密码错误 } }) }) app.get("/api/splist", function (req, res) { const sql="SELECT * FROM splist WHERE id=\'"+req.query.id1+"\'"; console.log(sql) connection.query(sql,(error, results, fields) => { res.send(results[0].list); //if(error)console.log(error); console.log(results[0].list); }) }) app.get("/api/tmlist", function (req, res) { const sql="SELECT * FROM timuji WHERE id=\'"+req.query.id+"\'"; console.log(sql) connection.query(sql,(error, results, fields) => { if(results.length >0) { res.send(results[0].timu); console.log(results[0].timu); //if(error)console.log(error); console.log(results[0].timu); }else{ res.send("题目错误") } }) }) app.get("/api/createtime", async function (req, res) { const sql = "SELECT * FROM timuji WHERE id=\'" + req.query.id + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); if(result.length !== 0) { const t0 = JSON.parse(result[0].timu).all.t0; const limittime = JSON.parse(result[0].timu).all.seconds; const sql1 = "SELECT * FROM pta WHERE th=\'" + t0 + "\' AND xuehao = \'" + req.query.xuehao + "\'"; console.log(sql1) const resultt0 = await new Promise((resolve, reject) => { connection.query(sql1, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); if (resultt0.length !== 0) { res.send({timestart: JSON.parse(resultt0[0].daan), limittime: limittime}); } else { const timestart = moment().format('YYYY-MM-DD HH:mm:ss'); const inset = "INSERT INTO pta (xuehao,daan,th,class,tmjth) VALUES (?,?,?,?,?);" await new Promise((resolve, reject) => { connection.query(inset, [req.query.xuehao, JSON.stringify({time: timestart}), t0, req.query.class, 0], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) res.send({timestart: timestart, limittime: limittime}); } }else{ res.send({timestart: "无", limittime: "无"}); } }) app.get("/api/createsql", async function (req, res) { try { const sql = "SELECT * FROM timuji WHERE id=\'" + req.query.id + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const limittime = JSON.parse(result[0].timu).all.seconds; const t0 = JSON.parse(result[0].timu).all.t0; JSON.parse(result[0].timu).danxueti.map(async (valuepta, index) => { const inset = "INSERT INTO pta (uuid,xuehao,daan,th,class,tmjth,timuji) VALUES (?,?,?,?,?,?,?);" await new Promise((resolve, reject) => { connection.query(inset, [uuidv4.v4(),req.query.xuehao, "未作答", valuepta, req.query.class, 0,req.query.timuji], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) }) JSON.parse(result[0].timu).duoxueti.map(async (valuepta, index) => { const inset = "INSERT INTO pta (uuid,xuehao,daan,th,class,tmjth,timuji) VALUES (?,?,?,?,?,?,?);" await new Promise((resolve, reject) => { connection.query(inset, [uuidv4.v4(),req.query.xuehao, "未作答", valuepta, req.query.class, 0,req.query.timuji], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) }) JSON.parse(result[0].timu).panduanti.map(async (valuepta, index) => { const inset = "INSERT INTO pta (uuid,xuehao,daan,th,class,tmjth,timuji) VALUES (?,?,?,?,?,?,?);" await new Promise((resolve, reject) => { connection.query(inset, [uuidv4.v4(),req.query.xuehao, "未作答", valuepta, req.query.class, 0,req.query.timuji], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) }) JSON.parse(result[0].timu).tiankongti.map(async (valuepta, index) => { const inset = "INSERT INTO pta (uuid,xuehao,daan,th,class,tmjth,timuji) VALUES (?,?,?,?,?,?,?);" await new Promise((resolve, reject) => { connection.query(inset, [uuidv4.v4(),req.query.xuehao, "未作答", valuepta, req.query.class, 0,req.query.timuji], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) }) res.send("ok") }catch (e) { console.log(e); } }) app.get("/api/checktime", async function (req, res) { const sql = "SELECT * FROM timuji WHERE id=\'" + req.query.id + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); if(result.length > 0) { const starttime = moment(result[0].start); const endtime = moment(result[0].end); const t0 = JSON.parse(result[0].timu).all.t0; const limittime = JSON.parse(result[0].timu).all.seconds; const sql1 = "SELECT * FROM pta WHERE th=\'" + t0 + "\' AND xuehao = \'" + req.query.xuehao + "\'"; console.log(sql1) const resultt0 = await new Promise((resolve, reject) => { connection.query(sql1, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); console.log(resultt0) if (moment().diff(starttime, 'seconds') < 0) { res.send({ timestart: JSON.parse(resultt0[0].daan), limittime: limittime, zt: "beforestart", starttime: starttime, endtime: endtime }); } else if (moment().diff(endtime, 'seconds') > 0) { res.send({ timestart: JSON.parse(resultt0[0].daan), limittime: limittime, zt: "finish", starttime: starttime, endtime: endtime }); } else { if (resultt0.length !== 0) { res.send({ timestart: JSON.parse(resultt0[0].daan), limittime: limittime, zt: "start", starttime: starttime, endtime: endtime }); } else { res.send({zt: "nostart", starttime: starttime, endtime: endtime, limittime: limittime}); } } }else{ res.send({zt: "errornopiece"}); } }) app.get("/api/jiaotiaoteachercx", function (req, res) { const sql="SELECT * FROM kechengbiao WHERE teacher=\'"+req.query.teacher+"\'"; console.log(sql) connection.query(sql,(error, results, fields) => { if(error)throw error; // console.log(results); res.send(JSON.stringify(results)); }) }) app.get("/api/kechengcx1", function (req, res) { const sql="SELECT * FROM kechengbiao WHERE classid=\'"+req.query.xuehao+"\'"; console.log(sql) connection.query(sql,(error, results, fields) => { if(error)throw error; // console.log(results); res.send(JSON.stringify(results[0])); }) }) app.get("/api/dengluteacher", function (req, res) { const sql="SELECT * FROM teacher WHERE xuegonghao=\'"+req.query.teacher+"\'"; console.log(sql) connection.query(sql,(error, results, fields) => { if(error)throw error; console.log(results); if(results.length === 0) { res.send({mes:'wuzhanghao'})//无账号 }else if(results[0].passage===req.query.mima){ if(results[0].quexian===1) { res.send({mes: 'ok',zw:'任课老师'}) }else if(results[0].quexian===2){ res.send({mes:'ok',zw:'辅导员'}) } }else { res.send({mes:'mimachuowu'})//密码错误 } }) }) app.post("/api/tijiaoshixi", function (req, res) { try{ const sql = 'INSERT INTO jiatiao(uuid,jtnr,xuehao,fdy,tj,leixing) VALUES(?,?,?,?,?,"shixi")'; connection.query(sql, [req.body.uuid,req.body.jtnr,req.body.xuehao,req.body.fdy,req.body.tj], (error, results, fields) => { if (error) throw error; // 处理查询结果 }); const jsonsql=JSON.parse(req.body.jtnr); const sql1 = 'SELECT * FROM dizhimoban WHERE xxdz = \''+jsonsql.xxdz+'\';'; // 执行预编译的SQL语句,并传入参数 connection.query(sql1, (error, results, fields) => { if (error) throw error; if (results.length === 0) { const dizhi = { "sfhxzs": jsonsql.sfhxzs, "cxfs": jsonsql.cxfs, "xxdz": jsonsql.xxdz, "sflx": jsonsql.sflx, "mbmc": "dzA", "mdd": "目的地" } const sql = 'INSERT INTO dizhimoban(xuehao,mobanmc,dizhijson,xxdz) VALUES(?,?,?,?)'; connection.query(sql, [req.body.xuehao, "dzA", JSON.stringify(dizhi), req.body.xuexxdz], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); } }) } catch (err) { console.error(err); } console.log(req.body) }) app.post("/api/xiugaimima",function (req, res) { const sql='UPDATE student SET passage=? WHERE xuehao=?'; console.log(sql); connection.query(sql,[req.body.pass,req.body.xuehao],(error, results, fields) => { if (error) throw error; }) }) app.post("/api/xiugaimimatea",function (req, res) { const sql='UPDATE student SET passage=? WHERE xuegonghao=?'; console.log(sql); connection.query(sql,[req.body.pass,req.body.xuehao],(error, results, fields) => { if (error) throw error; }) }) app.post("/api/xiugaizt1",function (req, res) { const sql='UPDATE jiatiao SET tj=? WHERE uuid=?'; console.log(sql); connection.query(sql,[req.body.zx,req.body.uuid],(error, results, fields) => { if (error) throw error; }) res.send({mes:'修改成功'}) }) app.post("/api/deletemoban1",function (req, res) { const sql='DELETE FROM shijiamoban WHERE id=?'; console.log(sql); connection.query(sql,[req.body.uuid],(error, results, fields) => { if (error) throw error; }) }) app.post("/api/deletezt1",function (req, res) { const sql='DELETE FROM jiatiao WHERE uuid=?'; console.log(sql); connection.query(sql,[req.body.uuid],(error, results, fields) => { if (error) throw error; }) }) app.post("/api/changeshixi", function (req, res) { try{ const sql = 'UPDATE jiatiao SET jtnr=?,tj=?,leixing=? WHERE uuid=?'; connection.query(sql, [req.body.jtnr,req.body.tj,"shixi",req.body.uuid], (error, results, fields) => { if (error) throw error; // 处理查询结果 res.send({status:"ok"}) }); const jsonsql=JSON.parse(req.body.jtnr); const sql1 = 'SELECT * FROM dizhimoban WHERE xxdz = \''+jsonsql.xxdz+'\';'; // 执行预编译的SQL语句,并传入参数 connection.query(sql1, (error, results, fields) => { if (error) throw error; if (results.length === 0) { const dizhi = { "sfhxzs": jsonsql.sfhxzs, "cxfs": jsonsql.cxfs, "xxdz": jsonsql.xxdz, "sflx": jsonsql.sflx, "mbmc": "dzA", "mdd": "目的地" } const sql = 'INSERT INTO dizhimoban(xuehao,mobanmc,dizhijson,xxdz) VALUES(?,?,?,?)'; connection.query(sql, [req.body.xuehao, "dzA", JSON.stringify(dizhi), req.body.xuexxdz], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); } }) } catch (err) { console.error(err); } console.log(req.body) }) app.post("/api/tijiaojqlh", function (req, res) { try{ const sql = 'INSERT INTO jiatiao(uuid,jtnr,xuehao,fdy,tj,leixing) VALUES(?,?,?,?,?,"jqlh")'; connection.query(sql, [req.body.uuid,req.body.jtnr,req.body.xuehao,req.body.fdy,req.body.tj], (error, results, fields) => { if (error) throw error; // 处理查询结果 res.send({status:"ok"}) }); const jsonsql=JSON.parse(req.body.jtnr); const sql1 = 'SELECT * FROM dizhimoban WHERE xxdz = \''+jsonsql.xxdz+'\';'; // 执行预编译的SQL语句,并传入参数 connection.query(sql1, (error, results, fields) => { if (error) throw error; if (results.length === 0) { const dizhi = { "sfhxzs": jsonsql.sfhxzs, "cxfs": jsonsql.cxfs, "xxdz": jsonsql.xxdz, "sflx": jsonsql.sflx, "mbmc": "dzA", "mdd": "目的地" } const sql = 'INSERT INTO dizhimoban(xuehao,mobanmc,dizhijson,xxdz) VALUES(?,?,?,?)'; connection.query(sql, [req.body.xuehao, "dzA", JSON.stringify(dizhi), jsonsql.xxdz], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); } }) } catch (err) { console.error(err); } console.log(req.body) }) app.post("/api/changejqlh", function (req, res) { try{ const sql = 'UPDATE jiatiao SET jtnr=?,tj=?,leixing=? WHERE uuid=?'; connection.query(sql, [req.body.jtnr,req.body.tj,"jqlh",req.body.uuid], (error, results, fields) => { if (error) throw error; // 处理查询结果 res.send({status:"ok"}) }); const jsonsql=JSON.parse(req.body.jtnr); const sql1 = 'SELECT * FROM dizhimoban WHERE xxdz = \''+jsonsql.xxdz+'\';'; // 执行预编译的SQL语句,并传入参数 connection.query(sql1, (error, results, fields) => { if (error) throw error; if (results.length === 0) { const dizhi = { "sfhxzs": jsonsql.sfhxzs, "cxfs": jsonsql.cxfs, "xxdz": jsonsql.xxdz, "sflx": jsonsql.sflx, "mbmc": "dzA", "mdd": "目的地" } const sql = 'UPDATE jiatiao SET jtnr=?,tj=?,leixing=? WHERE uuid=?'; connection.query(sql, [req.body.jtnr,req.body.tj,"jqlh",req.body.uuid], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); } }) } catch (err) { console.error(err); } console.log(req.body) }) app.get("/api/chaxunptacode",function (req, res) { const sql = "SELECT * FROM pta WHERE th=\'" +req.query.th + "\' and xuehao= \'"+ req.query.xuehao +"\' ORDER BY paixu DESC"; console.log(sql) connection.query(sql, (error, results, fields) => { if (error) reject(error); res.send(results[0]); }); }) app.get("/api/timujistu",async function (req, res) { const sql = "SELECT * FROM student WHERE xuehao=\'" + req.query.xuehao + "\'"; console.log(sql) const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const timuji=JSON.parse(result[0].timuji); console.log(timuji) const timu1=[] timuji.map(async (value, index) => { const sql = "SELECT * FROM timuji WHERE id=\'" + value + "\'"; console.log(sql) const resulttimuji = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }); const t=JSON.parse(resulttimuji[0].timu); let tsum=0; // "pta": [1], "danxueti": [2], "duoxueti": [4], "panduanti": [5], "tiankongti": [3]} //tsum=t. if(t.pta!==undefined){ tsum=tsum+t.pta.length } if(t.danxueti!==undefined){ tsum=tsum+t.danxueti.length } if(t.duoxueti!==undefined){ tsum=tsum+t.duoxueti.length } if(t.panduanti!==undefined){ tsum=tsum+t.panduanti.length } if(t.tiankongti!==undefined){ tsum=tsum+t.tiankongti.length } const teacher=JSON.parse(resulttimuji[0].all).teacher; const school=JSON.parse(resulttimuji[0].all).danwei; const class1=JSON.parse(resulttimuji[0].all).class; const timujiall={sum:tsum,ti:t,teacher:teacher,danwei:school,class:class1,starttime:resulttimuji[0].start,endtime:resulttimuji[0].end}; // console.log(timujiall) timu1.push(JSON.stringify(timujiall)); }) console.log(timu1) res.send(timu1); }) app.get("/api/timujistunew", async function (req, res) { try { const xuehao = req.query.xuehao; if (!xuehao) { return res.status(400).send('xuehao is required'); } const studentResult = await queryDatabase(`SELECT * FROM student WHERE xuehao=?`, [xuehao]); if (studentResult.length === 0) { return res.status(404).send('Student not found'); } const timuji = JSON.parse(studentResult[0].timuji); if(timuji) { const timuPromises = timuji.map(async (value) => { const timujiResult = await queryDatabase(`SELECT * FROM timuji WHERE id=?`, [value]); if (timujiResult.length === 0) { return null; } const t = JSON.parse(timujiResult[0].timu); const all = JSON.parse(timujiResult[0].all); const tstart = timujiResult[0].start; const tend = timujiResult[0].end; const tname = timujiResult[0].name; const tsum = (t.pta || []).length + (t.danxueti || []).length + (t.duoxueti || []).length + (t.panduanti || []).length + (t.tiankongti || []).length; return { id: timujiResult[0].id, sum: tsum, ti: t, teacher: all.teacher, danwei: all.danwei, class: all.class, kemu: all.kemu, starttime: timujiResult[0].start, endtime: timujiResult[0].end, name: tname, }; }); const timu1 =await Promise.all(timuPromises); res.send(timu1); }else{ res.send([]) } } catch (error) { console.error(error); res.status(500).send('Internal Server Error'); } }); async function queryDatabase(sql, params) { return new Promise((resolve, reject) => { connection.query(sql, params, (error, results, fields) => { if (error) { reject(error); } else { resolve(results); } }); }); } //上传与处理题目 const storagetm = multer.diskStorage({ destination: function (req, file, cb) { fs.mkdir('nginx/html/'+req.headers.th, { recursive: true }, (err) => { if (err) { console.error(err); return; } console.log('文件夹已存在或成功创建!'); }); cb(null, 'nginx/html/'+req.headers.th+'/') // 确保这个文件夹已经存在 }, filename: function (req, file, cb) { const th=req.headers.xx;//选项 console.log(th); cb(null, th+extname(file.originalname)) if(req.headers.lx==="xx"){ var contentText = fs.readFileSync('nginx/html/'+req.headers.th+'/tm.json','utf-8'); var content = JSON.parse(contentText); content.xuexiang.push('/'+th+extname(file.originalname)) fs.writeFileSync('nginx/html/'+req.headers.th+'/tm.json',JSON.stringify(content)); }else if(req.headers.lx==="tm"){ var contentText1 = fs.readFileSync('nginx/html/'+req.headers.th+'/tm.json','utf-8'); var content1 = JSON.parse(contentText1); console.log(); content1.tm='/'+th+extname(file.originalname); fs.writeFileSync('nginx/html/'+req.headers.th+'/tm.json',JSON.stringify(content1)); } } }) const uploadtm = multer({ storage: storagetm }); app.post('/api/uploadtm', uploadtm.single('file'), (req, res) => { const file = req.file; console.log(file); if (!file) { return res.status(400).send('No file uploaded.tm'); } res.send('File uploaded successfully.'); }); app.post('/apitea/deletexuexiang',function(req,res){ var contentText1 = fs.readFileSync('nginx/html/'+req.body.th+'/tm.json','utf-8'); var content1 = JSON.parse(contentText1); console.log(req.body.xx) var file = content1.xuexiang[req.body.xx]; console.log(file); fs.unlinkSync('nginx/html/'+req.body.th+file) content1.xuexiang.splice(req.body.xx,1); fs.writeFileSync('nginx/html/'+req.body.th+'/tm.json',JSON.stringify(content1)); }) app.post('/apitea/uplatetm',function(req,res){ console.log(req.body) if(req.body.leixing==="编程题") { const sql = 'UPDATE prepletimu SET information=? WHERE id=?'; connection.query(sql, [JSON.stringify(req.body.infor), req.body.id], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); // res.send({mes:"yes"}); }else if(req.body.leixing==="单选题"){ const jsontest=fs.readFileSync('nginx/html/'+req.body.id+'/tm.json') JSONpa=JSON.parse(jsontest); let infor=req.body.infor; infor.tm=JSONpa.tm; //infor.xuexiang=JSONpa.xuexiang; const sql = 'UPDATE prepletimu SET information=? WHERE id=?'; connection.query(sql, [JSON.stringify(req.body.infor), req.body.id], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }else if(req.body.leixing==="多选题"){ const jsontest=fs.readFileSync('nginx/html/'+req.body.id+'/tm.json') JSONpa=JSON.parse(jsontest); let infor=req.body.infor; infor.tm=JSONpa.tm; //infor.xuexiang=JSONpa.xuexiang; const sql = 'UPDATE prepletimu SET information=? WHERE id=?'; connection.query(sql, [JSON.stringify(req.body.infor), req.body.id], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }else if(req.body.leixing==="填空题"){ const jsontest=fs.readFileSync('nginx/html/'+req.body.id+'/tm.json') JSONpa=JSON.parse(jsontest); let infor=req.body.infor; infor.tm=JSONpa.tm; //infor.xuexiang=JSONpa.xuexiang; const sql = 'UPDATE prepletimu SET information=? WHERE id=?'; connection.query(sql, [JSON.stringify(req.body.infor), req.body.id], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }else if(req.body.leixing==="判断题"){ const jsontest=fs.readFileSync('nginx/html/'+req.body.id+'/tm.json') JSONpa=JSON.parse(jsontest); let infor=req.body.infor; infor.tm=JSONpa.tm; //infor.xuexiang=JSONpa.xuexiang; const sql = 'UPDATE prepletimu SET information=? WHERE id=?'; connection.query(sql, [JSON.stringify(req.body.infor), req.body.id], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); } // res.send({mes:"no"}); }) app.get('/apitea/gettm',function(req,res){ const sqlzxdtlist = "SELECT * FROM prepletimu WHERE id=" + req.query.id;//查询课程信息 connection.query(sqlzxdtlist, (error, results, fields) => { if (error) throw error; console.log(results); res.send(results[0]); }); }) app.get('/apitea/gettmj',async function(req,res){ const sql = "SELECT * FROM perparetmj WHERE id=\'" + req.query.th + "\'"; console.log(sql) try { const result = await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const sqltm = "SELECT * FROM prepletimu WHERE tmj=\'" + req.query.th + "\'"; console.log(sqltm) const tmj = JSON.parse(result.timu); let tmlist = []; for (let i = 0; i < tmj.length; i++) { const sqltm = "SELECT * FROM prepletimu WHERE id=\'" + tmj[i] + "\'"; const resulttm = await new Promise((resolve, reject) => { connection.query(sqltm, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); tmlist.push(resulttm); } result.tm = tmlist res.send(result) }catch (e) { console.log(e) } }) app.post('/apitea/updatename',function(req,res){ const sql = 'UPDATE prepletimu SET tname=? WHERE id=?'; connection.query(sql, [req.body.tname, req.body.id], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) app.get('/apitea/getclass',function(req,res){ const sql = "SELECT * FROM kechengbiao WHERE teacher=\'" + req.query.tea + "\'"; console.log(sql) connection.query(sql, (error, results, fields) => { if (error) reject(error); res.send(results) }); }) app.post('/apitea/updattmj',function(req,res){ const sql = 'UPDATE perparetmj SET tname=?,information=?,`limit`=?,starttime=?,endtimw=? WHERE id=?'; connection.query(sql, [req.body.tname,JSON.stringify(req.body.information),req.body.limit,req.body.start,req.body.end,req.body.id], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) app.get('/apitea/gettmjlist',function(req,res){ const sql = "SELECT * FROM perparetmj WHERE tea=\'" + req.query.tea + "\'"; console.log(sql) connection.query(sql, (error, results, fields) => { if (error) throw error; res.send(results) }); }) app.post('/apitea/newtimu',async function(req,res){ let tid=0; if(req.body.tlx==="编程题"){ const infor={"tmname":" ", "srgs":[""], "scgs":[" "], "sryl":"", "scyl":" ", "stdcode":" ", "testprint":[] } const sql="INSERT INTO prepletimu (leixing,information,teacher,tmj,tname) VALUES (?,?,?,?,?)" const result = await new Promise((resolve, reject) => { connection.query(sql,["编程题",JSON.stringify(infor),req.body.tea,req.body.tmj," "], (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const sqlid="SELECT * FROM prepletimu WHERE id = LAST_INSERT_ID();" const resultid = await new Promise((resolve, reject) => { connection.query(sqlid, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); tid=resultid.id }else if(req.body.tlx==="单选题"){ const infor={ xuexiang:[], daan:" ", tm:"/tm.png" } const sql="INSERT INTO prepletimu (leixing,information,teacher,tmj,tname) VALUES (?,?,?,?,?)" const result = await new Promise((resolve, reject) => { connection.query(sql,["单选题",JSON.stringify(infor),req.body.tea,req.body.tmj," "], (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const sqlid="SELECT * FROM prepletimu WHERE id = LAST_INSERT_ID();" const resultid = await new Promise((resolve, reject) => { connection.query(sqlid, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); tid=resultid.id }else if(req.body.tlx==="多选题"){ const infor={ xuexiang:[], daan:[], tm:"/tm.png" } const sql="INSERT INTO prepletimu (leixing,information,teacher,tmj,tname) VALUES (?,?,?,?,?)" const result = await new Promise((resolve, reject) => { connection.query(sql,["多选题",JSON.stringify(infor),req.body.tea,req.body.tmj," "], (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const sqlid="SELECT * FROM prepletimu WHERE id = LAST_INSERT_ID();" const resultid = await new Promise((resolve, reject) => { connection.query(sqlid, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); tid=resultid.id }else if(req.body.tlx==="填空题"){ const infor={ tm:"/tm.png", daan:[ ], } const sql="INSERT INTO prepletimu (leixing,information,teacher,tmj,tname) VALUES (?,?,?,?,?)" const result = await new Promise((resolve, reject) => { connection.query(sql,["填空题",JSON.stringify(infor),req.body.tea,req.body.tmj," "], (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const sqlid="SELECT * FROM prepletimu WHERE id = LAST_INSERT_ID();" const resultid = await new Promise((resolve, reject) => { connection.query(sqlid, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); tid=resultid.id }else if(req.body.tlx==="判断题"){ const infor={ daan:" ", tm:"/tm.png" } const sql="INSERT INTO prepletimu (leixing,information,teacher,tmj,tname) VALUES (?,?,?,?,?)" const result = await new Promise((resolve, reject) => { connection.query(sql,["判断题",JSON.stringify(infor),req.body.tea,req.body.tmj," "], (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const sqlid="SELECT * FROM prepletimu WHERE id = LAST_INSERT_ID();" const resultid = await new Promise((resolve, reject) => { connection.query(sqlid, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); tid=resultid.id } const sqlid=`SELECT * FROM perparetmj WHERE id = ${req.body.tmj}` const resultid = await new Promise((resolve, reject) => { connection.query(sqlid, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); let timu=JSON.parse(resultid.timu); timu.push(tid) const sqlupdate = 'UPDATE perparetmj SET timu=? WHERE id=?'; await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(timu),req.body.tmj], (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); fs.mkdirSync("nginx/html/"+tid.toString()); const tm={ tm:"/tm.png", xuexiang:[] } fs.copyFileSync("nginx/html/tmbefore.png","nginx/html/"+tid.toString()+"/tm.png") fs.writeFileSync("nginx/html/"+tid.toString()+"/tm.json",JSON.stringify(tm)); const sqladd=`SELECT * FROM prepletimu WHERE id = ${tid}` const resultadd = await new Promise((resolve, reject) => { connection.query(sqladd, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); res.send(resultadd); }) app.post("/apitea/fabu",async function(req,res){ const sqlid=`SELECT * FROM perparetmj WHERE id = ${req.body.tmj}` const resultid = await new Promise((resolve, reject) => { connection.query(sqlid, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); let pta=[];//编程题 let danxueti=[];//单选题 let duoxueti= [];//多选题 let panduanti=[];//判断题 let tiankongti= [];//填空题 let allprint=0; const timu=JSON.parse(resultid.timu)//查询题目 for(let i=0;i { connection.query(sqltm, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); if(resulttm.leixing==="编程题"){ pta.push(timu[i]) // { // "tmname": "在未来的智慧城市中,有一家名为“智停无忧”的智能停车场,它采用先进的技术来管理车辆进出,并根据停车时长自动计算费用。请你编写一个C语言程序,实现停车场收费计算,需要处理以下几种情况:如果停车时间为1小时以内(含1小时),免费; 如果停车时间1小时以上,8小时以内(含8小时),则按照每小时5元的价格收费; 如果停车时间为8小时以上,前8小时按照每小时5元的价格收费,超过8小时后,每增加1小时,按照每小时10元的价格收费。停车费用封顶为300元。", // "srgs": "输入可能包括多行。每行代表一个字符串,除了空格外,标点符号和普通字母一样处理。你可以认为一行的字符总数不会超过50000个,单词数不会超过600,每个单词的长度也不会超过30。", //"scgs": "输出包括多行,每行对应输入的一行,为翻转后的字符串。输出时去掉多余的空格。只在每个单词之前以1个空格间隔。输出的每行末尾没有空格。", // "sryl": ["9","10"], //"scyl": ["您停车9小时,需要支付50元","您停车9小时,需要支付50元test"] // } // {"tmname":"QWERTYUIO","srgs":["2","3","4","","","","","","","","","","",""],"scgs":["4","5","6","","","","","","","","","","",""],"sryl":"2\n4\n55555555555\n3\n4","scyl":"2\n3\n4","stdcode":"#include\nint main()","testprint":[{"tname":" 123","stdout":" 4567","stdin":" 1243","print":"5"}]} const ptatm={ tmname:JSON.parse(resulttm.information).tmname, sryl:JSON.parse(resulttm.information).srgs, scyl:JSON.parse(resulttm.information).scgs, srgs:JSON.parse(resulttm.information).sryl, scgs:JSON.parse(resulttm.information).scyl, } let fen=0; const tname=resulttm.tname; const leixing=1;//编程题 const stdcode=JSON.parse(resulttm.information).stdcode; const csd=JSON.parse(resulttm.information).testprint; let tm=[]; const uuid=uuidv4.v4(); fs.mkdirSync(`tmtemp/${uuid}/`) for(let j=0;j { connection.query(sqladd,[leixing,pj,JSON.stringify(ptatm),timu[i],stdcode,fen,tname], (error, results, fields) => { if (error) reject(error); resolve(0); }); }); }else if(resulttm.leixing==="单选题"){ danxueti.push(timu[i]); let xuexiang=[] JSON.parse(resulttm.information).xuexiang.map((value,index)=>{ xuexiang.push(`/${timu[i]}/${value}`) }) const tm=`/${timu[i]}${JSON.parse(resulttm.information).tm}`; const daan=JSON.parse(resulttm.information).daan; const information={ xuexiang:xuexiang, tm:tm, daan:daan, } const leixing=2; const fen=5; allprint+=fen; const tname=resulttm.tname; const sqladd = 'INSERT INTO tm(leixing,tm,id,fen,tanme) VALUES(?,?,?,?,?)'; await new Promise((resolve, reject) => { connection.query(sqladd,[leixing,JSON.stringify(information),timu[i],fen,tname], (error, results, fields) => { if (error) reject(error); resolve(0); }); }); }else if(resulttm.leixing==="多选题"){ let xuexiang=[] duoxueti.push(timu[i]); JSON.parse(resulttm.information).xuexiang.map((value,index)=>{ xuexiang.push(`/${timu[i]}/${value}`) }) const tm=`/${timu[i]}${JSON.parse(resulttm.information).tm}`; const daan=JSON.parse(resulttm.information).daan; const information={ xuexiang:xuexiang, tm:tm, daan:daan, } const leixing=4;//多选题 const fen=5; const tname=resulttm.tname; allprint+=fen; const sqladd = 'INSERT INTO tm(leixing,tm,id,fen,tanme) VALUES(?,?,?,?,?)'; await new Promise((resolve, reject) => { connection.query(sqladd,[leixing,JSON.stringify(information),timu[i],fen,tname], (error, results, fields) => { if (error) reject(error); resolve(0); }); }); }else if(resulttm.leixing==="填空题"){ tiankongti.push(timu[i]); const tm=`/${timu[i]}${JSON.parse(resulttm.information).tm}`; const daan=JSON.parse(resulttm.information).daan; const information={ tk:{A0:" "}, tm:tm, daan:daan, } const leixing=3;//填空题 const fen=daan.length; allprint+=fen; const tname=resulttm.tname; const sqladd = 'INSERT INTO tm(leixing,tm,id,fen,tanme) VALUES(?,?,?,?,?)'; await new Promise((resolve, reject) => { connection.query(sqladd,[leixing,JSON.stringify(information),timu[i],fen,tname], (error, results, fields) => { if (error) reject(error); resolve(0); }); }); }else if(resulttm.leixing==="判断题"){ panduanti.push(timu[i]); const tm=`/${timu[i]}${JSON.parse(resulttm.information).tm}`; const daan=JSON.parse(resulttm.information).daan; const information={ tm:tm, daan:daan, } const leixing=5;//判断题 const fen=5; allprint+=fen; const tname=resulttm.tname; const sqladd = 'INSERT INTO tm(leixing,tm,id,fen,tanme) VALUES(?,?,?,?,?)'; await new Promise((resolve, reject) => { connection.query(sqladd,[leixing,JSON.stringify(information),timu[i],fen,tname], (error, results, fields) => { if (error) reject(error); resolve(0); }); }); } } const seconds=resultid.limit; let limit; if(resultid.limit<0){ limit="time" }else{ limit="none" } const t0=1000+parseInt(req.body.tmj) const timusql={ all: {t0: t0, limit: limit, seconds: seconds, allprint: allprint}, pta: pta, allti: timu, danxueti: danxueti, duoxueti: duoxueti, panduanti: panduanti, tiankongti: tiankongti } const name=resultid.tname; const start=moment(resultid.starttime).format('YYYY-MM-DD HH:MM:SS'); const end=moment(resultid.endtime).format('YYYY-MM-DD HH:MM:SS'); const sqltea=`SELECT * FROM teacher WHERE id = ${resultid.tea}` const resulttea = await new Promise((resolve, reject) => { connection.query(sqltea, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const teachername=resulttea.name; const banji=JSON.parse(resultid.information).class; for(let k=0;k { connection.query(sqlclass, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); const stu=JSON.parse(resultclass.student); const kemu=resultclass.classname; const class1=resultclass.classname; const allinfor={ stu: stu, kemu:kemu, class: class1, "danwei": "内蒙古工业大学", "teacher": teachername }; const sqladd = 'INSERT INTO timuji(name,id,timu,all,start,end) VALUES(?,?,?,?,?,?)'; timusql.all.t0=timusql.all.t0+banji[k]; await new Promise((resolve, reject) => { connection.query(sqladd,[resultid.tname,resultid.id*10+k,timusql,allinfor,start,end], (error, results, fields) => { if (error) reject(error); resolve(0); }); }); //添加题目集号到课程表 const sqlread=`SELECT * FROM kechengbiao WHERE teacherid = ${banji[k]}` const resultread = await new Promise((resolve, reject) => { connection.query(sqlread, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); let timu=JSON.parse(resultread.timu); timu.push(resultid.id*10+k); const sqlwrite=`UPDATE kechengbiao SET timu=? WHERE teacherid = ${banji[k]}` await new Promise((resolve, reject) => { connection.query(sqlwrite,[JSON.stringify(timu)], (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); for(let j=0;j { connection.query(sqlreadstu, (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); let timustu=JSON.parse(resultreadstu.timuji); timustu.push(resultid.id*10+k); const sqlwritestu=`UPDATE student SET timuji=? WHERE xuehao = ${stu[j]}` await new Promise((resolve, reject) => { connection.query(sqlwritestu,[JSON.stringify(timustu)], (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }); } //添加题目集给同学 } res.send({AB:123}) }) app.post("/api/askfortea",function(req,res){ const sql = 'INSERT INTO askfortea(`uuid`,tmj,th,filelist,neirong,xuehao,`return`,returnlist) VALUES(?,?,?,?,?,?,?,?)'; connection.query(sql, [req.body.uuid,req.body.tmj,req.body.th,JSON.stringify(req.body.filelist),req.body.neirong,req.body.xuehao,"no","no"], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) const removeDuplicatesByUUID = (items) => { const seenUUIDs = {}; const filteredItems = []; for (const item of items) { if (!seenUUIDs[item.uuid]) { filteredItems.push(item); seenUUIDs[item.uuid] = true; } } return filteredItems; }; app.get("/api/askfortea",function(req,res){ const sql="SELECT `uuid`,askfortea.tmj,askfortea.th,filelist,neirong,xuehao,`return`,returnlist,tm.tanme AS tname,timuji.name AS tmjname FROM askfortea INNER JOIN tm ON tm.id = askfortea.th INNER JOIN timuji ON timuji.id = askfortea.tmj\n" + "WHERE xuehao=\""+req.query.xuehao+"\""; connection.query(sql, (error, results, fields) => { if (error) throw error; const uniqueArray = removeDuplicatesByUUID(results) // 处理查询结果 res.send(uniqueArray); }); }) app.get('/api/getkc', (req, res) => { var sql = "SELECT * FROM kcxx WHERE kch = "+"'"+req.query.kch+"' AND teacherid= '"+req.query.teacherid+"';"; console.log(sql); connection.query(sql,function (err, result) { if(result.length > 0) { res.send(result[0]); }else{ res.send("no"); } }) }) app.post("/api/askkcbnew",(req,res)=>{ // temp.push({filelist:[],uuid:uid,neirong:" ",title:"提问1",return:"no",returnlist:"no",tea:teaask}); const sql = 'INSERT INTO askforteakcb(uuid,xuehao,tea,kch,title,filelist,neirong,`return`,returnlist,teacherid) VALUES(?,?,?,?,?,?,?,?,?,?)'; connection.query(sql, [req.body.uuid,req.body.xuehao,req.body.tea,req.body.kch,req.body.title,JSON.stringify(req.body.filelist), req.body.neirong,req.body.returnpost,req.body.returnlist,req.body.teacherid], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) app.post("/kaoshi/askks",(req,res)=>{ // temp.push({filelist:[],uuid:uid,neirong:" ",title:"提问1",return:"no",returnlist:"no",tea:teaask}); const sql = 'INSERT INTO askforks(uuid,ksh,th,xuehao,filelist,neirong,`return`,returnlist) VALUES(?,?,?,?,?,?,?,?)'; connection.query(sql, [req.body.uuid,req.body.ksh,req.body.th,req.body.xuehao,JSON.stringify(req.body.filelist), req.body.neirong,"no","no"], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); res.send("no") }) app.post("/api/uddateaskforkc",(req,res)=>{ var sql = "UPDATE askforteakcb SET filelist = ?, neirong = ?,title=? WHERE uuid=?;"; connection.query(sql, [JSON.stringify(req.body.filelist),req.body.neirong,req.body.title,req.body.uuid], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) app.post("/api/uddateaskfortm",(req,res)=>{ var sql = "UPDATE askfortea SET filelist = ?, neirong = ? WHERE uuid=?;"; connection.query(sql, [JSON.stringify(req.body.filelist),req.body.neirong,req.body.uuid], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) app.post("/apitea/returnaskfortm",(req,res)=>{ var sql = "UPDATE askfortea SET returnlist = ?, `return` = ? WHERE uuid=?;"; connection.query(sql, [req.body.returnlist,req.body.return,req.body.uuid], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) app.post("/apitea/returnaskks",(req,res)=>{ var sql = "UPDATE askforks SET returnlist = ?, `return` = ? WHERE `id`=?;"; connection.query(sql, [req.body.returnlist,req.body.return,req.body.id], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); }) app.post("/apitea/returnaskforkc",(req,res)=>{ var sql = "UPDATE askforteakcb SET returnlist = ?, `return` = ? WHERE uuid=?;"; connection.query(sql, [req.body.returnlist,req.body.return,req.body.uuid], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results) res.send(results[0]); }); }) app.post("/kaoshi/update",(req,res)=>{ const sql = 'UPDATE kaoshing SET infor=? WHERE xuehao=? and ks=?'; console.log(sql) connection.query(sql, [JSON.stringify(req.body.date), req.body.xuehao, req.body.ks], (error, results, fields) => { if (error) throw error; // 处理查询结果 // console.log(results); }); res.send({status:"ok"}) }) app.get("/kaoshi/selectfirst",async (req,res)=> { //看有没有被提交 const sqlpaper = "SELECT * FROM kaoshipaper WHERE uuid=?"; const resultpaper = await new Promise((resolve, reject) => { connection.query(sqlpaper, [req.query.ks], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) //看是否开始答题 const sqlstutm = "SELECT * FROM kaoshing WHERE xuehao=? and ks=?;"; const resulttm = await new Promise((resolve, reject) => { connection.query(sqlstutm, [req.query.xuehao, req.query.ks], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) const sqlstuend = "SELECT * FROM kaoshiend WHERE xuehao=? and ks=?;"; const resultend = await new Promise((resolve, reject) => { connection.query(sqlstuend, [req.query.xuehao, req.query.ks], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) let stu; let end; if(resulttm.length>0){ stu = resulttm[0] }else { stu="no" } if(resultend.length>0){ end = resultend[0] }else { end="no" } res.send({paper:resultpaper[0],stu:stu,end:end}) }) app.get("/kaoshi/select",async (req,res)=>{ //看有没有被提交 const sqlstuend = "SELECT * FROM kaoshiend WHERE xuehao=? and ks=?;"; const resultend = await new Promise((resolve, reject) => { connection.query(sqlstuend,[req.query.xuehao,req.query.ks], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) //看是否开始答题 const sqlstutm = "SELECT * FROM kaoshing WHERE xuehao=? and ks=?;"; const resulttm = await new Promise((resolve, reject) => { connection.query(sqlstutm,[req.query.xuehao,req.query.ks], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) if (resulttm.length > 0) { if(resultend.length > 0) { resulttm[0].end="end" }else { resulttm[0].end="noend" } resulttm[0].infor=JSON.parse(resulttm[0].infor); res.send(resulttm[0]); }else{ const sqlpaper = "SELECT * FROM kaoshipaper WHERE uuid=?;"; const resultpaper = await new Promise((resolve, reject) => { connection.query(sqlpaper,[req.query.ks], (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }) console.log(resultpaper); let xx=JSON.parse(resultpaper.xx) xx.start=moment().format(); const ks=resultpaper.uuid; const sql = 'INSERT INTO kaoshing(ks,xuehao,infor,xx) VALUES(?,?,?,?)'; const resultinsert = await new Promise((resolve, reject) => { connection.query(sql, [ks, req.query.xuehao, resultpaper.paper, JSON.stringify(xx)], (error, results, fields) => { if (error) throw error; resolve(123); // 处理查询结果 console.log(124); }); }) console.log(123) res.send({ ks:ks, xuehao:req.query.xuehao, infor:JSON.parse(resultpaper.paper), xx:JSON.stringify(xx) }) } }) app.get("/kaoshi/showtea",async (req,res)=>{ //看有没有被提交 const sqlstuend = "SELECT * FROM kaoshiend WHERE xuehao=? and ks=?;"; const resultend = await new Promise((resolve, reject) => { connection.query(sqlstuend,[req.query.xuehao,req.query.ks], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) //看是否开始答题 const stuql="SELECT studentname,shoujihao,nianjizhaungye,xueyuan FROM student WHERE xuehao=\""+req.query.xuehao+"\""; const sturesults= await new Promise((resolve, reject) => { connection.query(stuql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }) const sqlpaper = "SELECT * FROM kaoshipaper WHERE uuid=?;"; const resultpaper = await new Promise((resolve, reject) => { connection.query(sqlpaper,[req.query.ks], (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }) // console.log(resultpaper); let xx=JSON.parse(resultpaper.xx) // xx.start=moment().format(); const ks=resultpaper.uuid; console.log(123) res.send({ ks:ks, xuehao:req.query.xuehao, infor:JSON.parse(resultend[0].ksdaan), stu:sturesults[0], allprint:resultend[0].allprint, xx:JSON.stringify(xx), std:JSON.parse(resultpaper.std), }) }) app.get("/api/getkcaskfortea",(req,res)=>{ var sql = "SELECT * FROM askforteakcb WHERE xuehao = "+"'"+req.query.xuehao+"' AND kch = '"+req.query.kch+"'"; console.log(sql); connection.query(sql,function (err, result) { const temp=[...result]; result.map((value,index)=>{ temp[index].filelist=JSON.parse(value.filelist); }) if(result.length > 0) { res.send(temp); }else{ res.send([]); } }) }) app.get("/api/askfortealist",async function(req,res){ const sql="SELECT `uuid`,askfortea.tmj,askfortea.th,filelist,neirong,xuehao,`return`,returnlist,tm.tanme AS tname,timuji.name AS tmjname FROM askfortea INNER JOIN tm ON tm.id = askfortea.th INNER JOIN timuji ON timuji.id = askfortea.tmj\n" + "WHERE xuehao=\""+req.query.xuehao+"\""; const results= await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }) const uniqueArray = removeDuplicatesByUUID(results) const temparray=[...uniqueArray]; for(let i=0;i { connection.query(sqltm,[uniqueArray[i].th], (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }) uniqueArray[i].filelist=JSON.parse(uniqueArray[i].filelist); uniqueArray[i].tminfor=resulttm; } res.send(uniqueArray); }) app.get("/api/askforteakclist",async function(req,res){ const sql="SELECT * FROM askforteakcb WHERE xuehao=\""+req.query.xuehao+"\""; const results= await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }) const uniqueArray = removeDuplicatesByUUID(results) const temparray=[...uniqueArray]; for(let i=0;i { connection.query(classsql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }) uniqueArray[i].kc=kcresults[0]; uniqueArray[i].filelist=JSON.parse(uniqueArray[i].filelist) } res.send(uniqueArray); }) app.get("/kaoshi/result",async function(req,res){ const sql="SELECT * FROM kaoshing WHERE ks=? AND xuehao=?"; const resulting= await new Promise((resolve, reject) => { connection.query(sql,[req.query.ks,req.query.xuehao], (error, results, fields) => { if (error) reject(error); console.log(results) resolve(results); }); }) if(resulting.length===0){ //未作答 console.log("未作答") const sql="SELECT * FROM kaoshipaper WHERE uuid=?"; const resultpaper= await new Promise((resolve, reject) => { connection.query(sql,[req.query.ks], (error, results, fields) => { if (error) reject(error); resolve(results); }); })//查出原卷 const jue=JSON.parse(resultpaper[0].paper)//原卷 const stddaan=JSON.parse(resultpaper[0].std)//标准答案 let jueres=[] for(let i=0;i { connection.query(sql,[req.query.ks,req.query.xuehao], (error, results, fields) => { if (error) reject(error); resolve(results); }); })//查出原卷 if(resultend.length!==0){ //学生已提交 stupaper=resultend[0]; }else{ const sqltj = 'INSERT INTO kaoshiend(ks,ksdaan,infor,xuehao,tijiaotime) VALUES(?,?,?,?,?)'; //补充提交 await new Promise((resolve, reject) => { connection.query(sqltj, [req.query.ks, resulting[0].infor, resulting[0].xx, req.query.xuehao, moment().format()], (error, results, fields) => { if (error) throw error; resolve(results); // 处理查询结果 console.log(results); }); //提交后在查询 }) const sqlcx="SELECT * FROM kaoshiend WHERE ks=? AND xuehao=?"; const resultend= await new Promise((resolve, reject) => { connection.query(sqlcx,[req.query.ks,req.query.xuehao], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) stupaper=resultend[0]; } //得到学生卷 const sqlpaper="SELECT * FROM kaoshipaper WHERE uuid=?"; const resultpaper= await new Promise((resolve, reject) => { connection.query(sqlpaper,[req.query.ks], (error, results, fields) => { if (error) reject(error); resolve(results); }); })//查出原卷 const stddaan=JSON.parse(resultpaper[0].std)//标准答案 const jue=JSON.parse(stupaper.ksdaan); let printall=0;//总分 let stdprint=0;//总分 let jueall= []; let needteacher=false;//是否需要老师阅卷 let finishteacher=true//老师是否完成阅卷 for(let i=0;i { connection.query(sql,[req.body.ks,req.body.xuehao], (error, results, fields) => { if (error) reject(error); resolve(results); }); }) console.log(results) if(results.length === 0){ //未提交重新提交 const sql = 'INSERT INTO kaoshiend(ks,ksdaan,infor,xuehao,tijiaotime) VALUES(?,?,?,?,?)'; console.log(sql) connection.query(sql, [req.body.ks,JSON.stringify(req.body.ksdaan),JSON.stringify(req.body.infor),req.body.xuehao,moment().format()], (error, results, fields) => { if (error) throw error; // 处理查询结果 console.log(results); }); } res.send({status:"ok"}) }) app.get("/apitea/askforteakclist",async function(req,res){ const sql="SELECT * FROM askforteakcb WHERE tea=\""+req.query.teacher+"\""; const results= await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }) const uniqueArray = removeDuplicatesByUUID(results) const temparray=[...uniqueArray]; for(let i=0;i { connection.query(classsql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }) const stuql="SELECT studentname,shoujihao,nianjizhaungye FROM student WHERE xuehao=\""+uniqueArray[i].xuehao+"\""; const sturesults= await new Promise((resolve, reject) => { connection.query(stuql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }) uniqueArray[i].kc=kcresults[0]; uniqueArray[i].stu=sturesults[0]; uniqueArray[i].filelist=JSON.parse(uniqueArray[i].filelist) } res.send(uniqueArray); }) app.get("/apitea/askforti", async function(req,res){ const sql="SELECT * FROM kechengbiao WHERE teacher=\""+req.query.teacher+"\""; let timujigroup=[]; const results= await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }) for(i=0;i arr.indexOf(item) === index); let askforti=[]; for(let i=0;i { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }) Array.prototype.push.apply(askforti,resultti); } //console.log(uniqueArray); // 输出: [1, 2, 3, 4] const uniqueArray = removeDuplicatesByUUID(askforti) const temparray=[...uniqueArray]; for(let i=0;i { connection.query(sqltm,[uniqueArray[i].th], (error, results, fields) => { if (error) reject(error); resolve(results[0]); }); }) uniqueArray[i].filelist=JSON.parse(uniqueArray[i].filelist); uniqueArray[i].tminfor=resulttm; } res.send(uniqueArray); }) app.get("/apitea/taolongstu",async function(req,res){ const sql="SELECT * FROM commitgroup WHERE xuhao=\""+req.query.xuhao+"\""; let stulist=[]; const results= await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }) const stu=JSON.parse(results[0].student); console.log(stu) for(let i=0;i { connection.query(sqlstu, [stu[i]],(error, results, fields) => { if (error) reject(error); resolve(results); }) }) if(sture.length>0) { console.log(sture) stulist.push(sture[0]) } } const sqlcommit="SELECT * FROM commit WHERE xuhao=\""+req.query.xuhao+"\""; let finish=[]; let nofinish=[...stu] console.log(nofinish) const resultscommit= await new Promise((resolve, reject) => { connection.query(sqlcommit, (error, results, fields) => { if (error) reject(error); resolve(results); }); }) resultscommit.map((value,index)=>{ if(!finish.includes(value.xuehao)){ finish.push(value.xuehao); } if(nofinish.includes(value.xuehao)){ nofinish=nofinish.filter((item,index)=>item!==value.xuehao.toString()); console.log(nofinish); } }) let finishlist=[]; for (let i=0;i { connection.query(sqlstu, [finish[i]],(error, results, fields) => { if (error) reject(error); resolve(results[0]); }) }) if(stu) finishlist.push(stu) } let nofinishlist=[]; for (let i=0;i { connection.query(sqlstu, [nofinish[i]],(error, results, fields) => { if (error) reject(error); resolve(results[0]); }) }) nofinishlist.push(stu) } res.send({all:stulist,finish:finishlist,nofinish:nofinishlist}); }) app.post("/kaoshi/teauplate",async function(req,res){ let tea=[]; req.body.teapanjue.map((value,index)=>{ tea.push(parseInt(value.xuegonghao)); }) const sql="UPDATE kaoshipaper SET paperbj=?,stdbj=?,xxbj=?,fabukecheng=?,tea=? WHERE uuid=?" await new Promise((resolve, reject) => { connection.query(sql,[JSON.stringify(req.body.paper,null,4),JSON.stringify(req.body.std,null,4),JSON.stringify(req.body.xx,4),JSON.stringify(req.body.fabu),JSON.stringify(tea),req.body.uuid],(error, results, fields) => { if(error)throw error; resolve(results); console.log(results); console.log(1345) }) }) res.send({status:"ok"}) }) app.get("/api/teaselect",async function(req,res){ const sqltea="SELECT name,xuegonghao,iphone FROM teacher WHERE xuegonghao=?"; const tea=await new Promise((resolve, reject) => { connection.query(sqltea,[req.query.tea],(error, results, fields) => { if (error) reject(error); resolve(results); }) }) if(tea.length>0){ res.send(tea[0]) }else{ res.send("error") } }) app.get("/kaoshi/teaget",async function(req,res){ const sqltea="SELECT name,xuegonghao,iphone FROM teacher WHERE xuegonghao=?"; const tea=await new Promise((resolve, reject) => { connection.query(sqltea,[req.query.tea],(error, results, fields) => { if (error) reject(error); resolve(results); }) }) const sql="SELECT * FROM kaoshipaper WHERE uuid=?"; const paper=await new Promise((resolve, reject) => { connection.query(sql,[req.query.ksh],(error, results, fields) => { if(error)throw error; resolve(results); }) }) console.log(tea) if(paper.length>0){ let temppaper={...paper[0]} let tealist=[] for(let i=0;i { connection.query(sqltea,[JSON.parse(temppaper.tea)[i]],(error, results, fields) => { if (error) reject(error); resolve(results); }) }) tealist.push(tea[0]); } temppaper.tea=tealist; res.send(temppaper); }else{ const sqlinsert = 'INSERT INTO kaoshipaper(`uuid`,paperbj,tea,`stdbj`,xxbj,maintea) VALUES(?,?,?,?,?,?)'; const re=new Promise((resolve, reject) => { connection.query(sqlinsert,[req.query.ksh,"[]",JSON.stringify([parseInt(tea[0].xuegonghao)]),"[]",JSON.stringify({ limit:-1, name:" ", timestart:" ", timeend:" ", }),req.query.tea], (error, results, fields) => { if(error)throw error; resolve(results); }) }) res.send({ uuid:req.query.ksh, paperbj:"[]", tea:[parseInt(tea[0].xuegonghao)], stdbj:"[]", xxbj:JSON.stringify({ limit:-1, name:" ", timestart:" ", timeend:" ", }) }); } }) app.get("/kaoshi/teafajaun",async function(req,res){ const sql="SELECT * FROM kaoshipaper WHERE uuid=?"; const paper=await new Promise((resolve, reject) => { connection.query(sql,[req.query.ksh],(error, results, fields) => { if(error)throw error; resolve(results); }) }) }) app.get("/kaoshi/teatilist",async function(req,res){ const sql="SELECT `id`,ksdaan FROM kaoshiend WHERE ks=?"; const resulttimu=await new Promise((resolve, reject) => { connection.query(sql,[parseInt(req.query.ksh)],(error, results, fields) => { if(error)throw error; resolve(results); }) }) let ksdaan=[]; for(let i=0;i { connection.query(sqlupdate, [JSON.stringify(temp, null, 4), resulttimu[i].id], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } else { let temp = {...studaan}; temp.id = resulttimu[i].id; ksdaan.push(temp); } }else if(studaan.lx==="填空题"){ if (studaan.sr ==="") { let temp = JSON.parse(resulttimu[i].ksdaan); temp[parseInt(req.query.tid)].teacherprint = 0; temp[parseInt(req.query.tid)].teacherid=202413501062//机器对空白自动打零 const sqlupdate = 'UPDATE kaoshiend SET ksdaan=? WHERE id=?'; const up = await new Promise((resolve, reject) => { connection.query(sqlupdate, [JSON.stringify(temp, null, 4), resulttimu[i].id], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } else { let temp = {...studaan}; temp.id = resulttimu[i].id; ksdaan.push(temp); } } } let infor={}; let flag=false; let all=0; let now;//发送的时候在第几个 ksdaan.map((value,index)=>{ if(value.teacherid===undefined||value.teacherid===req.query.teacherid) { all++; } if(value.teacherid===undefined&&flag===false){ flag=true; now=all; infor.ti=value; } }) if(infor.ti===undefined){ ksdaan.map((value,index)=>{ if(value.teacherid===req.query.teacherid){ //flag=true; now=all; infor.ti=value; } }) } infor.all=all; infor.now=now; res.send(infor); }) app.get("/kaoshi/teatiafter",async function(req,res){ const sql="SELECT `id`,ksdaan FROM kaoshiend WHERE ks=?"; const resulttimu=await new Promise((resolve, reject) => { connection.query(sql,[parseInt(req.query.ksh)],(error, results, fields) => { if(error)throw error; resolve(results); }) }) let ksdaan=[]; for(let i=0;i { connection.query(sqlupdate, [JSON.stringify(temp, null, 4), resulttimu[i].id], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } else { let temp = {...studaan}; temp.id = resulttimu[i].id; ksdaan.push(temp); } }else if(studaan.lx==="填空题"){ if (studaan.sr ==="") { let temp = JSON.parse(resulttimu[i].ksdaan); temp[parseInt(req.query.tid)].teacherprint = 0; temp[parseInt(req.query.tid)].teacherid=202413501062//机器对空白自动打零 const sqlupdate = 'UPDATE kaoshiend SET ksdaan=? WHERE id=?'; const up = await new Promise((resolve, reject) => { connection.query(sqlupdate, [JSON.stringify(temp, null, 4), resulttimu[i].id], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } else { let temp = {...studaan}; temp.id = resulttimu[i].id; ksdaan.push(temp); } } } let infor={}; let flag=false; let all=0; let now;//发送的时候在第几个 let muqian; for(let i=0;i { connection.query(sql, [req.body.id], (error, results, fields) => { if (error) throw error; resolve(results); }) }) let json1=JSON.parse(result[0].ksdaan) if(json1[req.body.tid].teacherid===undefined||json1[req.body.tid].teacherid==req.query.teacherid){ json1[req.body.tid].teacherid=req.body.teacherid; json1[req.body.tid].teacherprint=parseInt(req.body.print); console.log(json1) const sql="UPDATE kaoshiend SET ksdaan=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sql, [JSON.stringify(json1,null,4),req.body.id], (error, results, fields) => { if (error) throw error; resolve(results); }) }) res.send("yes") }else{ res.send("已判") } }) app.get("/kaoshi/teatibefore",async function(req,res){ const sql="SELECT `id`,ksdaan FROM kaoshiend WHERE ks=?"; // temp[parseInt(req.query.tid)].teacherprint = 0; //temp[parseInt(req.query.tid)].teacherid=202413501062//机器对空白自动打零 const resulttimu=await new Promise((resolve, reject) => { connection.query(sql,[parseInt(req.query.ksh)],(error, results, fields) => { if(error)throw error; resolve(results); }) }) let ksdaan=[]; for(let i=0;i { connection.query(sqlupdate, [JSON.stringify(temp, null, 4), resulttimu[i].id], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } else { let temp = {...studaan}; temp.id = resulttimu[i].id; ksdaan.push(temp); } }else if(studaan.lx==="填空题"){ if (studaan.sr ==="") { let temp = JSON.parse(resulttimu[i].ksdaan); temp[parseInt(req.query.tid)].teacherprint = 0; temp[parseInt(req.query.tid)].teacherid=202413501062//机器对空白自动打零 const sqlupdate = 'UPDATE kaoshiend SET ksdaan=? WHERE id=?'; const up = await new Promise((resolve, reject) => { connection.query(sqlupdate, [JSON.stringify(temp, null, 4), resulttimu[i].id], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } else { let temp = {...studaan}; temp.id = resulttimu[i].id; ksdaan.push(temp); } } } let infor={}; let flag=false; let all=0; let now;//发送的时候在第几个 let muqian; for(let i=0;i=0;i--){ console.log(12) let value=ksdaan[i]; console.log(1233) console.log(ksdaan[i]); if(value.teacherid===undefined||value.teacherid==req.query.teacherid) { all--; } if((value.teacherid===undefined||value.teacherid==req.query.teacherid)&&flag===false){ flag=true; now=all; infor.ti=value; } } all=0; for (let i=0;i{ const sqlstd="SELECT * FROM kaoshipaper WHERE uuid=?"; const resultstd=await new Promise((resolve, reject) => { connection.query(sqlstd,[req.query.ksh],(error, results, fields) => { if(error)throw error; resolve(results[0]); }) }) if(JSON.parse(resultstd.xx).pan_jue_finsih===false) { const sql = "SELECT * FROM kaoshiend WHERE ks=?"; const resultksdaan = await new Promise((resolve, reject) => { connection.query(sql, [parseInt(req.query.ksh)], (error, results, fields) => { if (error) throw error; resolve(results); }) }) let finish = true; for (let i = 0; i < resultksdaan.length; i++) { const ksdaan = JSON.parse(resultksdaan[i].ksdaan); ksdaan.map((value, index) => { if (value.lx === "填空题") { console.log(resultstd) const stddaan = JSON.parse(resultstd.std); if (stddaan[i].panjaun === "teacher") { if (value.teacherid === undefined) { finish = false } } } if (value.lx === "简答题") { if (value.teacherid === undefined) { finish = false } } }) } if(finish===true){ let jsonxx=JSON.parse(resultstd.xx); jsonxx.pan_jue_finsih=true const sqlupdate = 'UPDATE kaoshipaper SET xx=? WHERE `uuid`=?'; const up = await new Promise((resolve, reject) => { connection.query(sqlupdate, [JSON.stringify(jsonxx, null, 4), req.query.ksh], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } let infor=[] let allprint=[] if(finish===true){ for (let i = 0; i < resultksdaan.length; i++) { const ksdaan = JSON.parse(resultksdaan[i].ksdaan); let num=0; let ksdaantemp=[...ksdaan] ksdaan.map((value, index) => { if (value.lx === "填空题") { console.log(resultstd) const stddaan = JSON.parse(resultstd.std); if (stddaan[index].panjaun === "teacher") { num=num+value.teacherprint ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=value.teacherprint }else{ if(value.sr.trimStart()===stddaan[index].std.trimStart()){ num=num+stddaan[index].print ksdaantemp[index].way="computer" ksdaantemp[index].printstu=stddaan[index].print } } } else if (value.lx === "简答题") { const stddaan = JSON.parse(resultstd.std); num=num+value.teacherprint //ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=value.teacherprint }else if(value.lx==="多选题"){ let zq=true const stddaan = JSON.parse(resultstd.std); value.daan.map((item,xuaho)=>{ if(!stddaan[index].std.includes(item)){} zq=false }) if(value.daan.length!==stddaan[index].std.length){ zq=false } if(zq){ num=num+stddaan[index].print //ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=stddaan[index].print }else{ ksdaantemp[index].printstu=0 } }else if(value.lx==="单选题"){ const stddaan = JSON.parse(resultstd.std); if(value.daan===stddaan[index].std){ num=num+stddaan[index].print //ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=stddaan[index].print }else{ ksdaantemp[index].printstu=0 num=num+0 } }else if(value.lx==="判断题"){ const stddaan = JSON.parse(resultstd.std); if(value.daan===stddaan[index].std){ num=num+stddaan[index].print //ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=stddaan[index].print }else{ ksdaantemp[index].printstu=0 } } }) const sqlupdate = 'UPDATE kaoshiend SET ksdaan=?,allprint=? WHERE id=?'; //resultksdaan[i]. await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(ksdaantemp,null,4),num,resultksdaan[i].id],(error, results) => { if (error) throw error; resolve(results); }) }) allprint.push(num) infor.push({infor:ksdaantemp,num:num}) } } res.send({finish: finish}) }else{ res.send({finish: true}) } }) app.get("/teaapi/kaoshishow",async (req,res)=>{ //查考试已完成阅卷和正在阅卷 const sql="SELECT * FROM kaoshipaper WHERE JSON_CONTAINS(tea, "+`'[${req.query.tea}]'`+", '$');" let result=await new Promise((resolve, reject) => { connection.query(sql,(error, results, fields) => { if(error)throw error; resolve(results); }) }) for(let i=0;i0){ //考试未开始 result[i].zt="test_no_start" }else if(moment().diff(moment(xx.timeend),'s')<0){ //考试未结束 result[i].zt="testing" const entersql="SELECT * FROM kaoshing WHERE ks=?" const enterresult=await new Promise((resolve, reject) => { connection.query(entersql,[result[i].uuid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const newenterresult = Array.from(new Set(enterresult.map(item => item.xuehao))).map(xuehao => { return enterresult.find(item => item.xuehao === xuehao); }); const endsql="SELECT * FROM kaoshiend WHERE ks=?" const endresult=await new Promise((resolve, reject) => { connection.query(endsql,[result[i].uuid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const newendresult = Array.from(new Set(endresult.map(item => item.xuehao))).map(xuehao => { return enterresult.find(item => item.xuehao === xuehao); }); result[i].enterstu=newenterresult.length; result[i].endstu=newendresult.length; }else{ let pan_jue_finish; //考试已结束 let resultstd=result[i] if(JSON.parse(result[i].xx).pan_jue_finsih===false) { const sql = "SELECT * FROM kaoshiend WHERE ks=?"; const resultksdaan = await new Promise((resolve, reject) => { connection.query(sql, [parseInt(result[i].uuid)], (error, results, fields) => { if (error) throw error; resolve(results); }) }) let finish = true; for (let j = 0; j < resultksdaan.length; j++) { const ksdaan = JSON.parse(resultksdaan[j].ksdaan); ksdaan.map((value, index) => { if (value.lx === "填空题") { console.log(resultstd) const stddaan = JSON.parse(resultstd.std); if (stddaan[j].panjaun === "teacher") { if (value.teacherid === undefined) { finish = false } } } if (value.lx === "简答题") { if (value.teacherid === undefined) { finish = false } } }) } if(finish===true){ let jsonxx=JSON.parse(resultstd.xx); jsonxx.pan_jue_finsih=true const sqlupdate = 'UPDATE kaoshipaper SET xx=? WHERE `uuid`=?'; const up = await new Promise((resolve, reject) => { connection.query(sqlupdate, [JSON.stringify(jsonxx, null, 4), result[i].uuid], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } let infor=[] let allprint=[] if(finish===true){ for (let j = 0; j < resultksdaan.length; j++) { const ksdaan = JSON.parse(resultksdaan[j].ksdaan); let num=0; let ksdaantemp=[...ksdaan] ksdaan.map((value, index) => { if (value.lx === "填空题") { console.log(resultstd) const stddaan = JSON.parse(resultstd.std); if (stddaan[index].panjaun === "teacher") { num=num+value.teacherprint ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=value.teacherprint }else{ if(value.sr.trimStart()===stddaan[index].std.trimStart()){ num=num+stddaan[index].print ksdaantemp[index].way="computer" ksdaantemp[index].printstu=stddaan[index].print } } } else if (value.lx === "简答题") { const stddaan = JSON.parse(resultstd.std); num=num+value.teacherprint //ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=value.teacherprint }else if(value.lx==="多选题"){ let zq=true const stddaan = JSON.parse(resultstd.std); value.daan.map((item,xuaho)=>{ if(!stddaan[index].std.includes(item)){} zq=false }) if(value.daan.length!==stddaan[index].std.length){ zq=false } if(zq){ num=num+stddaan[index].print //ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=stddaan[index].print }else{ ksdaantemp[index].printstu=0 } }else if(value.lx==="单选题"){ const stddaan = JSON.parse(resultstd.std); if(value.daan===stddaan[index].std){ num=num+stddaan[index].print //ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=stddaan[index].print }else{ ksdaantemp[index].printstu=0 num=num+0 } }else if(value.lx==="判断题"){ const stddaan = JSON.parse(resultstd.std); if(value.daan===stddaan[index].std){ num=num+stddaan[index].print //ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=stddaan[index].print }else{ ksdaantemp[index].printstu=0 } } }) const sqlupdate = 'UPDATE kaoshiend SET ksdaan=?,allprint=? WHERE id=?'; //resultksdaan[i]. await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(ksdaantemp,null,4),num,resultksdaan[i].id],(error, results) => { if (error) throw error; resolve(results); }) }) allprint.push(num) infor.push({infor:ksdaantemp,num:num}) } } pan_jue_finish=finish // res.send({finish: finishr}) }else{ pan_jue_finish=true // res.send({finish: true}) } //判断完成 if(pan_jue_finish===true) { result[i].zt = "finish_pan_jue" }else{ result[i].zt = "pan_jue" } const entersql="SELECT * FROM kaoshing WHERE ks=?" const enterresult=await new Promise((resolve, reject) => { connection.query(entersql,[result[i].uuid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const newenterresult = Array.from(new Set(enterresult.map(item => item.xuehao))).map(xuehao => { return enterresult.find(item => item.xuehao === xuehao); }); const endsql="SELECT * FROM kaoshiend WHERE ks=?" const endresult=await new Promise((resolve, reject) => { connection.query(endsql,[result[i].uuid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const newendresult = Array.from(new Set(endresult.map(item => item.xuehao))).map(xuehao => { return enterresult.find(item => item.xuehao === xuehao); }); result[i].enterstu=newenterresult.length; result[i].endstu=newendresult.length; } if(!result[i].std){ result[i].zt="wei_fa_bu" } } res.send(result); }) app.get("/kaoshi/teaprint",async (req,res)=>{ const sql="SELECT * FROM kaoshiend WHERE ks=? ORDER BY allprint DESC"; const chengji=await new Promise((resolve, reject) => { connection.query(sql,[req.query.ksh],(error, results, fields) => { if (error) throw error; resolve(results); }) }) let printA=0 if(chengji.length>0) { printA=chengji[0].allprint; } let paiming=1 chengji.map((value,index)=>{ if(value.allprint===printA){ chengji[index].paiming=paiming; }else{ printA=value.allprint; paiming=index+1; chengji[index].paiming=paiming; } }) for (let i=0;i { connection.query(sqlinfor,[chengji[i].xuehao],(error, results, fields) => { if(error)throw error; resolve(results); }) }) chengji[i].stuinfor=stu[0] } const sqlupdate="SELECT * FROM kaoshipaper WHERE uuid=?"; const std=await new Promise((resolve, reject) => { connection.query(sqlupdate,[req.query.ksh],(error, results, fields) => { if (error) throw error; resolve(results[0]); }) }) res.send({chengji:chengji,std:std}) }) app.get("/apitea/teakechengbiao",async (req,res)=>{ const sql="SELECT * FROM kechengbiao WHERE teacher=?"; const kecheng=await new Promise((resolve, reject) => { connection.query(sql,[req.query.tea],(error, results, fields) => { if(error)throw error; resolve(results); }) }) let kechengbiao=[]; for(let i=0;i<31;i++){ let zhou=[]; for (let j=0;j<7;j++){ const day=[ { zhou:i,//第几周 day:j,//每周第几天 jie:1, classid:0//class号 },{ zhou:i,//第几周 day:j,//每周第几天 jie:2, classid:0//class号 },{ zhou:i,//第几周 day:j,//每周第几天 jie:3, classid:0//class号 },{ zhou:i,//第几周 day:j,//每周第几天 jie:4, classid:0//class号 } ] zhou.push(day) } kechengbiao.push(zhou) } kecheng.map((ke,indexke)=>{ const kelist=JSON.parse(ke.classzou); kelist.map((kezhou,indexzhou)=>{ kezhou.class.map((keday,indexday)=>{ kechengbiao[parseInt(kezhou.zhou)-1][parseInt(keday.day)-1][parseInt(keday.jie)-1].classid={ name:ke.classname, id:ke.classid, teacherid:ke.teacherid, classbh:ke.classbh, place:ke.place, color:ke.color, } kechengbiao[parseInt(kezhou.zhou)-1][parseInt(keday.day)-1][parseInt(keday.jie)-1].kch=keday.ke }) }) }) res.send(kechengbiao) }) app.get("/apitea/getclassinfor",async (req,res)=>{ const sql="SELECT * FROM kcxx WHERE kch=? AND teacherid=?"; const result=await new Promise((resolve, reject) => { connection.query(sql,[req.query.kch,req.query.teacherid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) if(result.length===0){ res.send("no") }else{ result[0].xkh=JSON.parse(result[0].xkh) result[0].skq=JSON.parse(result[0].skq) res.send(result[0]) } }) app.post("/apitea/addkcxx",async (req,res)=>{ const informoban={ "filelist": [ ], "preparebeizhu": "练习题", "timu": [ ] } const sql = 'INSERT INTO kcxx(tea,kch,skq,xkh,teacherid) VALUES(?,?,?,?,?)'; const reasult=await new Promise((resolve, reject) => { connection.query(sql,[req.body.tea,req.body.kch,JSON.stringify(informoban),JSON.stringify(informoban),req.body.teacherid],(error, results, fields) => { if(error)throw error; resolve(results) }) }) }) app.post("/apitea/uplatekcxxskq",async (req,res)=>{ const sql="UPDATE kcxx SET skq=? WHERE kch=? and teacherid=?" const reasult=await new Promise((resolve, reject) => { connection.query(sql,[JSON.stringify(req.body.infor),req.body.kch,req.body.teacherid],(error, results, fields) => { if(error)throw error; resolve(results) }) }) }) app.post("/apitea/uplatekcxxxkq",async (req,res)=>{ const sql="UPDATE kcxx SET xkh=? WHERE kch=? and teacherid=?" const reasult=await new Promise((resolve, reject) => { connection.query(sql,[JSON.stringify(req.body.infor),req.body.kch,req.body.teacherid],(error, results, fields) => { if(error)throw error; resolve(results) }) }) }) app.get("/apitea/cxtimuji",async (req,res)=>{ const sqlcx="SELECT * FROM timuji WHERE `name` REGEXP ?" const result=await new Promise((resolve, reject) => { connection.query(sqlcx,[`.*${req.query.name}.*`],(error, results, fields) => { if(error)throw error; resolve(results) }) }) for(let i=0;i { connection.query(sqlkechengbiao, (err, results, fields) => { if (err) throw err; console.log(results); resolve(results) }); }) let kename=""; let classid=[]; kecheng.map((value,index)=>{ kename+=","+value.classname; classid.push(value.teacherid); }) if(kename.length>3){ kename=kename.substring(1) } result[i].kename=kename; result[i].classid=classid; } res.send(result) }) app.get("/teaapi/askforkckcb",async (req,res)=>{ const sql="SELECT * FROM askforteakcb WHERE kch=? AND teacherid=?" const reasult=await new Promise((resolve, reject) => { connection.query(sql,[req.query.kch,req.query.teacherid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const uniqueArray = removeDuplicatesByUUID(reasult) const temparray=[...uniqueArray]; for(let i=0;i { connection.query(classsql, (error, results, fields) => { if (error) reject(error); resolve(results); }); }) const stusql="SELECT studentname,xuehao,shoujihao,xueyuan,nianjizhaungye FROM student WHERE xuehao=?" const stureasult=await new Promise((resolve, reject) => { connection.query(stusql, [temparray[i].xuehao],(error, results, fields) => { if(error)throw error; resolve(results); }) }) uniqueArray[i].stu=stureasult[0] uniqueArray[i].kc=kcresults[0]; uniqueArray[i].filelist=JSON.parse(uniqueArray[i].filelist) } res.send(uniqueArray) }) app.get("/apischool/addschoolxlsx",async (req,res)=>{ const school=await parsex.sheetlist(req.query.xlsx) ; res.send(school); }) async function addkcbtojson(jsonwb,kch){ let jsonjs=JSON.parse(jsonwb); const sqlreadkc="SELECT * FROM kechengbiaotest WHERE teacherid=?" const kcreasult=await new Promise((resolve, reject) => { connection.query(sqlreadkc, [kch.teacherid],(error, results, fields) => { if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) let kclist=[] JSON.parse(kcreasult[0].classzou).map((zou,zouindex)=>{ zou.class.map((ke,keindex)=>{ kclist.push(ke.ke) }) }) jsonjs.map((keone,index)=>{ if(kclist.includes(keone.time)) { jsonjs[index].ke = parseInt(kch.classid) } }) return JSON.stringify(jsonjs) } app.post("/apischool/addstudent",async (req,res)=>{ const stuinfor=req.body.stu console.log(stuinfor) let stuexcel=await makeexcel.makeExcel(stuinfor) for(let i=0;i { connection.query(sqlbanji,[stuinfor[i].classid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) const sqlkecheng="SELECT * FROM zhuanye WHERE id=?" const kecheng=await new Promise((resolve, reject) => { connection.query(sqlkecheng,[reasultbanji[0].zhaunyeid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) let stukecb=[]; for(let i=0;i<31;i++){ for(let j=1;j<7;j++){ for(let k=1;k<4;k++){ stukecb.push({ ke:0, time:`n${i}z${j}A${k}` }) } } } let stukecbwb=JSON.stringify(stukecb) const pyfa=JSON.parse(kecheng[0].pyfa); for(let i=0;i { connection.query(sqlkcstu,[pyfa[0].publicclass[i].classid],(error,results,fields)=>{ if (error) throw error; resolve(results); }) }) let stulist=[]; if(stu[0].student) { stulist=JSON.parse(stu[0].student) } stulist.push(stuinfor[i].xuehao) const updatesql="UPDATE kechengbiaotest SET student=? WHERE classid=?" await new Promise((resolve, reject) => { connection.query(updatesql,[JSON.stringify(stulist),pyfa[0].publicclass[i].classid],(error,results,fields)=>{ if (error) throw error; resolve(results); }) }) } for(let i=0;i { connection.query(sqlkcstu,[pyfa[0].zhuanyeclass[i].classid],(error,results,fields)=>{ if (error) throw error; resolve(results); }) }) let stulist=[]; if(stu[0].student) { stulist=JSON.parse(stu[0].student) } stulist.push(stuinfor[i].xuehao) const updatesql="UPDATE kechengbiaotest SET student=? WHERE classid=?" await new Promise((resolve, reject) => { connection.query(updatesql,[JSON.stringify(stulist),pyfa[0].zhuanyeclass[i].classid],(error,results,fields)=>{ if (error) throw error; resolve(results); }) }) } const sqlinsert="INSERT INTO student (fudaoyaunid,kecb,studentname, xuehao, shoujihao, xingbian, xueyuan, nianjizhaungye, passage, morenpassword, ruxuetime,idcard)\n" + "SELECT ?,?,?,?,?,?,?,?,?,?,?,?" + "WHERE NOT EXISTS (\n" + " SELECT 1\n" + " FROM student\n" + " WHERE shoujihao = ?\n" + ");\n" console.log(123) const result=await new Promise((resolve, reject) => { connection.query(sqlinsert,[reasultbanji[0].teacherid,stukecbwb,stuinfor[i].name,stuinfor[i].xuehao,stuinfor[i].iphone,stuinfor[i].xingbian,stuinfor[i].xueyuan,stuinfor[i].classid,stuinfor[i].passage,stuinfor[i].morenpassword,stuinfor[i].ruxuetime,stuinfor[i].idcard,stuinfor[i].iphone],(error, results, fields) => { if (error) throw error; resolve(results); }) }) } res.send({stu:stuexcel}) //console.log(stuinfor.length) }) app.get("/apischool/selectteacher",async (req,res)=>{ const sql="SELECT name,iphone FROM teacher WHERE xuegonghao=?" connection.query(sql,[req.query.tea],(error, results, fields) => { if(error)throw error; if(results.length===0){ res.send("no"); }else{ res.send(results[0]); } }) }) app.post("/apischool/uplatekcbkc",async (req,res)=>{ const sql="UPDATE kechengbiao SET bianjikc=? WHERE classid=?" console.log(req.body) connection.query(sql,[JSON.stringify(req.body.bianjikc,null,4),req.body.classid],(error, results, fields) => { }) }) app.post("/apischool/uplatekcinfor",(req,res)=>{ const sql="UPDATE kechengbiao SET classname=?,teacherid=?,classbh=?,teacher=?,color=?,place=? WHERE classid=?" connection.query(sql,[req.body.classname,req.body.teacherid,req.body.classbh,req.body.teacher,req.body.color,req.body.place,req.body.classid],(error,reasult,field)=>{ }) }) app.get("/apischool/getkcinfor_bianji",(req,res)=>{ const sql="SELECT * FROM kechengbiao WHERE classid=?" connection.query(sql,[req.query.classid],(error, results, fields) => { res.send(results[0]); }) }) app.get("/apischool/getkechenglist",async (req,res)=>{ const sql="SELECT * FROM kechengbiao " let result=await new Promise((resolve, reject) => { connection.query(sql,(error, results, fields) => { if(error)throw error; resolve(results); }) }) for(let i=0;i { connection.query(sqltea,[result[i].teacher],(error, results, fields) => { if(error)throw error; resolve(results); }) }) if(tea.length===0){ result[i].teaname="no"; }else{ result[i].teaname=tea[0].name; } } res.send(result) }) app.get("/apischool/newkcb",async (req,res)=>{ const sqlnum="SELECT * FROM kechengall" const resultnum=await new Promise((resolve, reject) => { connection.query(sqlnum,(error, results, fields) => { if(error)throw error; resolve(results); }) }) let num=resultnum.length; let sqlinsert="INSERT INTO kechengall(id,kechenglist) VALUES(?,?)" let kechengbiao=[]; for(let i=0;i<31;i++){ let zhou=[]; for (let j=0;j<7;j++){ const day=[ { zhou:i,//第几周 day:j,//每周第几天 jie:1, classid:0//class号 },{ zhou:i,//第几周 day:j,//每周第几天 jie:2, classid:0//class号 },{ zhou:i,//第几周 day:j,//每周第几天 jie:3, classid:0//class号 },{ zhou:i,//第几周 day:j,//每周第几天 jie:4, classid:0//class号 } ] zhou.push(day) } kechengbiao.push(zhou) } const resultinsert=await new Promise((resolve, reject) => { connection.query(sqlinsert,[num+1,JSON.stringify(kechengbiao)],(error, results, fields) => { if(error)throw error; resolve(results); }) }) res.send({num:num}) }) app.post("/apischool/fabukc",async (req,res)=>{ const sqlselect="SELECT * FROM kechengbiaotest WHERE kechengid=?" const result=await new Promise((resolve, reject) => { connection.query(sqlselect,[req.body.classid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) for(let i=0;i { let zhoukc = []; zhou.map((day, dayindex) => { day.map((ke, keindex) => { if (ke.classid != 0) { let keone = {ke: `n${ke.zhou}z${ke.day + 1}A${ke.jie}`, day: ke.day + 1, jie: ke.jie} zhoukc.push(keone); qj[`n${ke.zhou}z${ke.day + 1}A${ke.jie}`] = []; } }) }) if (zhoukc.length !== 0) { const kcone = { zhou: zhouindex + 1, class: zhoukc } kc.push(kcone) } }) //console.log(qj); //console.log(kc) const sqlupdate = 'UPDATE kechengbiaotest SET classtime=?,classzou=?,timu=? WHERE classid=?'; await new Promise((resolve, reject) => { connection.query(sqlupdate, [JSON.stringify(qj), JSON.stringify(kc), req.body.classid, "[]"], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } const sqlfabu="UPDATE kechengall SET fabu=? WHERE id=?"; await new Promise((resolve, reject) => { connection.query(sqlfabu,["已发布",req.body.classid],(error, results, fields) => { if (error) throw error; resolve(results); }) }) res.send({status:"ok"}) }) app.get("/apischool/getstudent",async (req,res)=>{ const sql="SELECT * FROM studenttest"; const result=await new Promise((resolve, reject) => { connection.query(sql,(error,results,fields)=>{ if(error)throw error; resolve(results); }) }) res.send(result) }) app.get("/apischool/getteacher",async (req,res)=>{ const sql="SELECT * FROM teacher"; const result=await new Promise((resolve, reject) => { connection.query(sql,(error,results,fields)=>{ if(error)throw error; resolve(results); }) }) res.send(result) }) app.get("/apischool/paixustudent",async (req,res)=>{ if(req.query.search==="") { const sql = `SELECT * FROM studenttest ORDER BY ${req.query.px} ${req.query.sxnx}` const result=await new Promise((resolve, reject) => { connection.query(sql,(error,results,field)=>{ if(error)throw error; resolve(results); }) }) res.send(result) }else{ const fg=req.query.search.replace(/ /g,"%") const sql=`SELECT * FROM \`studenttest\` WHERE CONCAT(studentname,xuehao,shoujihao,xueyuan,nianjizhaungye) LIKE ? ORDER BY ${req.query.px} ${req.query.sxnx}` const result=await new Promise((resolve, reject) => { connection.query(sql,[`%${fg}%`],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) res.send(result) } }) app.get("/apischool/paixuteacher",async (req,res)=>{ if(req.query.search==="") { const sql = `SELECT * FROM teacher ORDER BY ${req.query.px} ${req.query.sxnx}` const result=await new Promise((resolve, reject) => { connection.query(sql,(error,results,field)=>{ if(error)throw error; resolve(results); }) }) res.send(result) }else{ const fg=req.query.search.replace(/ /g,"%") const sql=`SELECT * FROM teacher WHERE CONCAT(name,xuegonghao,zzmm,iphone) LIKE ? ORDER BY ${req.query.px} ${req.query.sxnx}` const result=await new Promise((resolve, reject) => { connection.query(sql,[`%${fg}%`],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) res.send(result) } }) app.post("/apischool/addxueyuan",async (req,res)=>{ try { const md5 = crypto.createHash('md5'); md5.update(req.body.password); //const password = md5.digest('hex'); const sqlchaxun = "SELECT * FROM xueyuan WHERE id=?"; const result = await new Promise((resolve, reject) => { connection.query(sqlchaxun, [req.body.xueyuanid], (error, results, field) => { if (error) throw error; resolve(results); }) }) if (result.length === 0) { const password = md5.digest('hex'); const sqlinsertxueyuan = "INSERT INTO xueyuan(id,name,zhuanye,password,leaderid,leadername,jiejian,zt) VALUES(?,?,?,?,?,?,?)" await new Promise((resolve, reject) => { connection.query(sqlinsertxueyuan, [req.body.xueyuanid, req.body.xueyuanname, JSON.stringify(req.body.zhuanye), password, req.body.leaderid, req.body.leadername, req.body.jiejian, "已发布"], (error, results, field) => { if (error) throw error; resolve(results); }) }) } else { const updatesql = "UPDATE xueyuan SET id=?,name=?,zhuanye=?,password=?,leaderid=?,leadername=?,jiejian=?,zt=? WHERE id=?"; const password = md5.digest('hex'); console.log(updatesql) await new Promise((resolve, reject) => { connection.query(updatesql, [req.body.xueyuanid, req.body.xueyuanname, JSON.stringify(req.body.zhuanye), password, req.body.leaderid, req.body.leadername, req.body.jiejian, "已发布", req.body.xueyuanid], (error, results, field) => { if (error) throw error; resolve(results); }) }) } const xid = req.body.xueyuanid; const zhuanye = req.body.zhuanye; for (let i = 0; i < zhuanye.length; i++) { try { const sqlinsertzhaunye = "INSERT INTO zhuanye(id,name,jianjie,xueyuanid,classs) VALUES(?,?,?,?,?)" await new Promise((resolve, reject) => { connection.query(sqlinsertzhaunye, [xid.toString() + zhuanye[i].zyid, zhuanye[i].title, zhuanye[i].jianjie, req.body.xueyuanid, "[]"], (error, results, field) => { if (error) throw error; resolve(results); }) }) }catch (e) { console.log(e) } } res.send({status:"ok"}) }catch (e) { console.error(e); } }) app.post("/apischool/baochunxueyuan",async (req,res)=>{ const md5 = crypto.createHash('md5'); md5.update(req.body.password); const sqlchaxun="SELECT * FROM xueyuan WHERE id=?"; const result=await new Promise((resolve, reject) => { connection.query(sqlchaxun,[req.body.xueyuanid],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) if (result.length===0) { const password = md5.digest('hex'); const sqlinsertxueyuan = "INSERT INTO xueyuan(id,`name`,zhuanye,`password`,leaderid,leadername,jiejian,zt) VALUES(?,?,?,?,?,?,?,?)" await new Promise((resolve, reject) => { connection.query(sqlinsertxueyuan, [req.body.xueyuanid, req.body.xueyuanname, JSON.stringify(req.body.zhuanye), password, req.body.leaderid, req.body.leadername, req.body.jiejian, "未发布"], (error, results, field) => { if (error) throw error; resolve(results); }) }) }else{ const updatesql="UPDATE xueyuan SET id=?,name=?,zhuanye=?,password=?,leaderid=?,leadername=?,jiejian=?,zt=? WHERE id=?"; const password = md5.digest('hex'); await new Promise((resolve, reject) => { connection.query(updatesql, [req.body.xueyuanid, req.body.xueyuanname, JSON.stringify(req.body.zhuanye), password, req.body.leaderid, req.body.leadername, req.body.jiejian,"未发布",req.body.xueyuanid], (error, results, field) => { if (error) throw error; resolve(results); }) }) } res.send({status:"ok"}) }) app.get("/apischool/getbjxueyuan",async (req,res)=>{ const sql="SELECT * FROM xueyuan WHERE id=?"; const reasult=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xueyuanid],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) res.send(reasult) }) app.get("/apischool/getxueyuanlist",async (req,res)=>{ const sql="SELECT * FROM xueyuan"; const reasult=await new Promise((resolve, reject) => { connection.query(sql,(err,results,field)=>{ if(err)throw err; resolve(results); }) }) res.send(reasult) }) app.get("/apixueyuan/getxueyuaname",async (req,res)=>{ const sql="SELECT name FROM xueyuan WHERE id=?"; const reasult=await new Promise((resolve, reject) => { connection.query(sql,[req.query.id],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) res.send(reasult[0]) }) app.post("/apixueyuan/password",async(req,res)=>{ const sql="SELECT * FROM xueyuan WHERE id=?"; const reasult=await new Promise((resolve, reject) => { connection.query(sql,[req.body.id],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) if(reasult.length===0){ res.send({status:"系统错误 无此学院"}) }else { if (req.body.password === reasult[0].password) { res.send({status:"ok",name:reasult[0].name}) }else{ res.send({status:"err"}); } } }) app.post("/apixueyuanany/password",async(req,res)=>{ const sql="SELECT * FROM xueyuan WHERE name=?"; const reasult=await new Promise((resolve, reject) => { connection.query(sql,[req.body.name],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) if(reasult.length===0){ res.send({status:"系统错误 无此学院"}) }else { if (req.body.password === reasult[0].password) { res.send({status:"ok",xyid:reasult[0].id}) }else{ res.send({status:"err"}); } } }) app.post("/apischool/password",async(req,res)=>{ const sql="SELECT * FROM information WHERE xiang='password'"; const reasult=await new Promise((resolve, reject) => { connection.query(sql,[req.body.name],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) if(reasult.length===0){ res.send({status:"系统错误 无此学院"}) }else { if (req.body.password === reasult[0].value) { res.send({status:"ok",xyid:reasult[0].id}) }else{ res.send({status:"err"}); } } }) app.get("/apixueyuan/getzhuanye",async (req,res)=>{ const sql="SELECT * FROM zhuanye WHERE xueyuanid=?"; const reasult=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xueyaunid],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) for(let i=0;i { connection.query(sqlclsss,[reasult[i].id],(err,results,field)=>{ resolve(results); }) }) reasult[i].classcout=reasultclass.length; } res.send(reasult) }) app.get("/apixueyuan/getkechengbiao",async (req,res)=>{ const sql="SELECT classname,teacher,place FROM kechengbiao WHERE teacherid=? AND classzou IS NOT NULL"; let result=await new Promise((resolve, reject) => { connection.query(sql,[req.query.id],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) if(result.length>0) { const sqltea = "SELECT * FROM teacher WHERE xuegonghao=?" let tea = await new Promise((resolve, reject) => { connection.query(sqltea, [result[0].teacher], (err, results, field) => { if(err)throw err; resolve(results); }) }) if(tea.length>0) { result[0].teachername = tea[0].name; result[0].status = "ok" } res.send(result[0]) }else{ res.send({status:"err"}) } }) app.post("/apixueyuan/saveclass",async (req,res)=>{ const sql="UPDATE banjiclass SET classname1=?,classname2=?,kclist=?,teacherid=?,teachername=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sql,[req.body.classname1,req.body.classname2,JSON.stringify(req.body.kclist),req.body.teacherid,req.body.teachername,req.body.id],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) res.send({status:"ok"}) }) app.get("/apixueyuan/getbjclass",async (req,res)=>{ const sql="SELECT * FROM banjiclass WHERE id=?" let reasult=await new Promise((resolve, reject) => { connection.query(sql,[req.query.id],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) if(reasult.length>0){ const sqltea="SELECT * FROM teacher WHERE xuegonghao=?"; const reasulttea=await new Promise((resolve, reject) => { connection.query(sqltea,[reasult[0].teacherid],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) if(reasulttea.length>0) { reasult[0].teachername = reasulttea[0].name; } } res.send(reasult[0]) }) app.post("/apixueyuan/fubuclass",async (req,res)=>{ const sql="UPDATE banjiclass SET zt=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sql,["已发布",req.body.id],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) }) app.get("/apixueyuan/newclassid",async (req,res)=>{ const sqlgetlength="SELECT COUNT(*) AS leng FROM banjiclass" const resultlength=await new Promise((resolve, reject) => { connection.query(sqlgetlength,(err,results,field)=>{ if(err)throw err; resolve(results); }) }) const len=resultlength[0].leng; const sql="INSERT INTO banjiclass(id,xueyuanid,zhaunyeid,zt) VALUES(?,?,?,?)"; await new Promise((resolve, reject) => { connection.query(sql,[len+1,req.query.xueyuan,req.query.zhuanye,"未发布"],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) res.send(resultlength) }) app.get("/apixueyuan/getclass_zhuanye",async (req,res)=>{ const sql="SELECT * FROM banjiclass WHERE xueyuanid=? AND zhaunyeid=?" let reasult=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xueyuan,req.query.zhuanye],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) for(let i=0;i { connection.query(sqllist,[reasult[i].classname1+reasult[i].classname2],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) console.log(stucount) reasult[i].stulen=stucount[0].jishu } res.send(reasult) }) app.get("/apischool/getclass_newstu",async (req,res)=>{ const sqlxueyuan ="SELECT * FROM xueyuan" const xueyuan=await new Promise((resolve, reject) => { connection.query(sqlxueyuan,(err,results,field)=>{ if(err)throw err; resolve(results); }) }) const xueyuanlist={}; for(let i=0;i { connection.query(sql,[xueyuan[i].id],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) xueyuanlist[xueyuan[i].name]=classxx } res.send(xueyuanlist) }) app.get("/apixueyuan/get_allstu",async (req,res)=>{ const sqlstu="SELECT * FROM student WHERE xueyuan=?" const reastudent=await new Promise((resolve, reject) => { connection.query(sqlstu,[req.query.xueyuan],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) res.send(reastudent) }) app.get("/apixueyuan/get_stulist",async (req,res)=>{ const sqlclass="SELECT * FROM banjiclass WHERE zhaunyeid=?" const reasultclass=await new Promise((resolve, reject) => { connection.query(sqlclass,[req.query.zhuanye],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) let stu=[]; for(let i=0;i { connection.query(sqlstu,[req.query.xueyuan,reasultclass[i].classname1+reasultclass[i].classname2],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) stu=[...stu,...reastudent] } res.send(stu) }) app.get("/apixueyuan/getpaixu_allstu",async (req,res)=>{ if(req.query.search==="") { const sql = `SELECT * FROM student WHERE xueyuan=? ORDER BY ${req.query.px} ${req.query.sxnx} ` const result=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xueyuan],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) // stu=[...stu,...result] res.send(result) //console.log(result) }else{ const fg=req.query.search.replace(/ /g,"%") const sql=`SELECT * FROM \`student\` WHERE CONCAT(studentname,xuehao,shoujihao,xueyuan,nianjizhaungye) LIKE ? AND xueyuan=? ORDER BY ${req.query.px} ${req.query.sxnx}` const result=await new Promise((resolve, reject) => { connection.query(sql,[`%${fg}%`,req.query.xueyuan],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) res.send(result) //stu=[...stu,...result] } //res.send(result); }) app.get("/apixueyuan/getpaixu_stulist",async (req,res)=>{ const sqlclass="SELECT * FROM banjiclass WHERE zhaunyeid=?" const reasultclass=await new Promise((resolve, reject) => { connection.query(sqlclass,[req.query.zhuanye],(err,results,field)=>{ if(err)throw err; resolve(results); }) }) let stu=[]; console.log(reasultclass) for(let i=0;i { connection.query(sql,[req.query.xueyuan,reasultclass[i].classname1+reasultclass[i].classname2],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) stu=[...stu,...result] //res.send(result) console.log(result) }else{ const fg=req.query.search.replace(/ /g,"%") const sql=`SELECT * FROM \`student\` WHERE CONCAT(studentname,xuehao,shoujihao,xueyuan,nianjizhaungye) LIKE ? AND xueyuan=? AND nianjizhaungye=? ORDER BY ${req.query.px} ${req.query.sxnx}` const result=await new Promise((resolve, reject) => { connection.query(sql,[`%${fg}%`,req.query.xueyuan,reasultclass[i].classname1+reasultclass[i].classname2],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) //res.send(result) stu=[...stu,...result] } } res.send(stu) }) app.get("/apixueyuan/getkslist",async (req,res)=>{ const sql="SELECT * FROM banjiclass WHERE xueyuanid=? AND zhaunyeid=?" const reasultclass=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xueyuan,req.query.zhuanye],(err,result,field)=>{ if(err)throw err; resolve(result); }) }) let kecheng=[] let stulist=[] for(let i=0;i { connection.query(sqlstuclass,[reasultclass[i].classname1+reasultclass[i].classname2],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) stureasultclass.map((stuname,indexstu)=>{ stulist.push(stuname.xuehao) }) } reasultclass.map((banji,index)=>{ const kc=JSON.parse(banji.kclist); if(kc) { kc.zhuanyeclass.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) kc.publicclass.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) kc.stuchoose.map((choose, indexchoose) => { choose.kechenglist.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) }) kc.stuchoose.map((choose, indexchoose) => { choose.kechenglist.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) }) } }) const sqlkclist="SELECT * FROM zhuanye WHERE id=?" const kechengnewlist=await new Promise((resolve, reject) => { connection.query(sqlkclist,[req.query.zhuanye],(error,results,field)=>{ if(error)throw error; resolve(results[0]); }) }) let kechengnew=[]; if(JSON.parse(kechengnewlist.kclist)) { JSON.parse(kechengnewlist.kclist).map((value, index) => { kechengnew.push(value.teacherid) }) kecheng = [...new Set(kechengnew)] let ksp = []; for (let i = 0; i < kecheng.length; i++) { const kc = "SELECT * FROM kaoshipaper WHERE JSON_CONTAINS(fabukecheng, " + `'["${kecheng[i]}"]'` + ", '$');" const kspaper = await new Promise((resolve, reject) => { connection.query(kc, (error, results, field) => { if (error) throw error; resolve(results); }) }) ksp = [...ksp, ...kspaper]; } ksp.map((kspone, indexone) => { const stutimu = JSON.parse(kspone.stu) let stukc = []; console.log(stutimu) console.log(stulist) stutimu.map((stuone, indexstuone) => { if (stulist.includes(stuone)) { stukc.push(stuone); } }) ksp[indexone].sturea = stukc; }) res.send(ksp) }else{ res.send([]) } }) app.get("/apixueyuan/gettaolonglist",async (req,res)=>{ const sql="SELECT * FROM banjiclass WHERE xueyuanid=? AND zhaunyeid=?" const reasultclass=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xueyuan,req.query.zhuanye],(err,result,field)=>{ if(err)throw err; resolve(result); }) }) let kecheng=[] let stulist=[] for(let i=0;i { connection.query(sqlstuclass,[reasultclass[i].classname1+reasultclass[i].classname2],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) stureasultclass.map((stuname,indexstu)=>{ stulist.push(stuname.xuehao) }) } reasultclass.map((banji,index)=>{ const kc=JSON.parse(banji.kclist); if(kc) { kc.zhuanyeclass.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) kc.publicclass.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) kc.stuchoose.map((choose, indexchoose) => { choose.kechenglist.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) }) kc.stuchoose.map((choose, indexchoose) => { choose.kechenglist.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) }) } }) const sqlkclist="SELECT * FROM zhuanye WHERE id=?" const kechengnewlist=await new Promise((resolve, reject) => { connection.query(sqlkclist,[req.query.zhuanye],(error,results,field)=>{ if(error)throw error; resolve(results[0]); }) }) let kechengnew=[]; if(JSON.parse(kechengnewlist.kclist)) { JSON.parse(kechengnewlist.kclist).map((value, index) => { kechengnew.push(value.teacherid) }) kecheng = [...new Set(kechengnew)] let ksp = []; for (let i = 0; i < kecheng.length; i++) { const kc = "SELECT * FROM commitgroup WHERE JSON_CONTAINS(fabukecheng, " + `'[${kecheng[i]}]'` + ", '$');" console.log(kc) const kspaper = await new Promise((resolve, reject) => { connection.query(kc, (error, results, field) => { if (error) throw error; resolve(results); }) }) ksp = [...ksp, ...kspaper]; } ksp.map((kspone, indexone) => { const stutimu = JSON.parse(kspone.student) let stukc = []; console.log(stutimu) console.log(stulist) stutimu.map((stuone, indexstuone) => { if (stulist.includes(stuone)) { stukc.push(stuone); } }) ksp[indexone].sturea = stukc; }) for (let i = 0; i < ksp.length; i++) { const sqlcommit = "SELECT * FROM commit WHERE xuhao=?" const reasultcommit = await new Promise((resolve, reject) => { connection.query(sqlcommit, [ksp[i].xuhao], (error, results, field) => { if (error) throw error; resolve(results); }) }) const commitstu = []; const commit = []; reasultcommit.map((valuecommit, indexcommit) => { if (stulist.includes(valuecommit.xuehao)) { commit.push(valuecommit) commitstu.push(valuecommit.xuehao) } }) ksp[i].commit = commit; ksp[i].commitstu = commitstu } res.send(ksp) }else{ res.send([]) } }) app.get("/apixueyuan/gettmjlist",async (req,res)=>{ const sql="SELECT * FROM banjiclass WHERE xueyuanid=? AND zhaunyeid=?" const reasultclass=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xueyuan,req.query.zhuanye],(err,result,field)=>{ if(err)throw err; resolve(result); }) }) let kecheng=[] let stulist=[] for(let i=0;i { connection.query(sqlstuclass,[reasultclass[i].classname1+reasultclass[i].classname2],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) stureasultclass.map((stuname,indexstu)=>{ stulist.push(stuname.xuehao) }) } reasultclass.map((banji,index)=>{ const kc=JSON.parse(banji.kclist); if(kc) { kc.zhuanyeclass.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) kc.publicclass.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) kc.stuchoose.map((choose, indexchoose) => { choose.kechenglist.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) }) kc.stuchoose.map((choose, indexchoose) => { choose.kechenglist.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) }) } }) const sqlkclist="SELECT * FROM zhuanye WHERE id=?" const kechengnewlist=await new Promise((resolve, reject) => { connection.query(sqlkclist,[req.query.zhuanye],(error,results,field)=>{ if(error)throw error; resolve(results[0]); }) }) if(JSON.parse(kechengnewlist.kclist)) { let kechengnew = []; JSON.parse(kechengnewlist.kclist).map((value, index) => { kechengnew.push(value.teacherid) }) kecheng = [...new Set(kechengnew)] let ksp = []; for (let i = 0; i < kecheng.length; i++) { const kc = "SELECT * FROM perparetmj WHERE JSON_CONTAINS(information, " + `'["${kecheng[i]}"]'` + ", '$.class');" const kspaper = await new Promise((resolve, reject) => { connection.query(kc, (error, results, field) => { if (error) throw error; resolve(results); }) }) ksp = [...ksp, ...kspaper]; } for (let i = 0; i < ksp.length; i++) { const kspone = ksp[i]; const kspclass = JSON.parse(kspone.information).class; let tmjstu = [] for (let j = 0; j < kspclass.length; j++) { const sqlkc = "SELECT * FROM kechengbiao WHERE teacherid=?"; const stureasult = await new Promise((resolve, reject) => { connection.query(sqlkc, [kspclass[j]], (error, results, field) => { if (error) throw error; resolve(results); }) }) const stuone = JSON.parse(stureasult[0].student); tmjstu = [...tmjstu, ...stuone]; } let stukc = []; tmjstu.map((stuone, indexstuone) => { if (stulist.includes(stuone)) { stukc.push(stuone); } }) ksp[i].sturea = stukc; } res.send(ksp) }else{ res.send([]) } }) app.post("/apixueyuan/changepassword",async (req,res)=>{ try { const sql = "SELECT password FROM xueyuan WHERE id=?" const pass = await new Promise((resolve, reject) => { connection.query(sql, [req.body.xueyuan], (error, results, field) => { // if (error) throw error; resolve(results); }) }) if (pass.length === 0) { res.send({status: "无此学院"}) } else { const md5 = crypto.createHash('md5'); const yuan = md5.update(req.body.yuanpass).digest('hex'); if (yuan === pass[0].password) { const sqlupdate = "UPDATE xueyuan SET password=? WHERE id=?" const md51 = crypto.createHash('md5'); await new Promise((resolve, reject) => { connection.query(sqlupdate, [md51.update(req.body.newpass).digest('hex'), req.body.xueyuan], (error, results, field) => { if (error) throw error; resolve(results); }) }) res.send({status: "ok"}) } else { res.send({status: "原密码错误"}) } } }catch (e) { //throw e; await newbug(e,"/apixueyuan/changepassword",req.body); console.log(e); } }) app.get("/apitea/stumanageinfor",async(req,res)=>{ try { const sqlstu = "SELECT * FROM student WHERE xuehao=?" const reasult = await new Promise((resolve, reject) => { connection.query(sqlstu, [req.query.stu], (error, results, field) => { if (error) { newbug(error, "/apitea/stuinfor", req.query) console.log(error) } resolve(results) }) }) console.log(123) if (reasult.length > 0) { const sql = "SELECT * FROM teacher WHERE id=?" const teareasult = await new Promise((resolve, reject) => { connection.query(sql, [reasult[0].fudaoyaunid], (error, results, field) => { if (error) { newbug(error, "/apitea/stuinfor", req.query) console.log(error) } resolve(results) }) }) if(teareasult.length > 0) { reasult[0].fdyname = teareasult[0].name; } const sqlbanji="SELECT * FROM `banjiclass` WHERE CONCAT(classname1,classname2)=?" const banjireasult=await new Promise((resolve, reject) => { connection.query(sqlbanji,[reasult[0].nianjizhaungye],(error, results, field) => { if (error) { newbug(error, "/apitea/stuinfor", req.query) console.log(error) } resolve(results) }) }) const sqlzy="SELECT * FROM zhuanye WHERE id=?" const zyreasult=await new Promise((resolve, reject) => { connection.query(sqlzy,[banjireasult[0].zhaunyeid],(error,results,field) => { if (error) { newbug(error, "/apitea/stuinfor", req.query) console.log(error) } resolve(results) }) }) reasult[0].zy=zyreasult[0].name delete reasult[0].kecb res.send(reasult[0]) console.log(1234) }else{ res.send({err:"yes"}) } }catch (e) { console.log(e) if (e) { newbug(e, "/apitea/stuinfor", req.query) } res.send({err:"ok"}) } }) app.post("/apitea/updatestuinfor",async(req,res)=>{ const sql="UPDATE student SET studentname=?,shoujihao=?,xingbian=?,gongyumingche=?,shushemc=?,ruxuetime=?,idcard=?,zzmm=? WHERE xuehao=?" await new Promise((resolve, reject) => { connection.query(sql,[req.body.infor.studentname,req.body.infor.shoujihao,req.body.infor.xingbian,req.body.infor.gongyumingche,req.body.infor.shushemc,req.body.infor.ruxuetime,req.body.infor.idcard,req.body.infor.zzmm,req.body.infor.xuehao],(error,results,field)=>{ if (error) { newbug(error, "/apitea/updatestuinfor", req.query) console.log(error) } resolve(results) }) }) res.send({err:"ok"}) // console.log(req.body); }) app.get("/apitea/getteaparent",async(req,res)=>{ const sql="SELECT * FROM parents WHERE stdentid=?"; const reasult=await new Promise((resolve, reject) => { connection.query(sql,[req.query.stu],(error, results, fields) => { if (error) { newbug(error, "/apitea/getteaparent", req.query) console.log(error) } resolve(results) }) }) res.send(reasult) }) app.post("/apitea/updateparents",async(req,res)=>{ const sql="UPDATE parents SET name=?,iphone=?,guanxi=? WHERE id=?"; await new Promise((resolve, reject) => { connection.query(sql,[req.body.parents.name,req.body.parents.iphone,req.body.parents.guanxi,req.body.parents.id],(error, results, fields) => { if (error) { newbug(error, "/apitea/updateparents", req.query) console.log(error) } resolve(results) }) }) res.send({ok:"ok"}) }) app.get("/apitea/stunewparent",async(req,res)=>{ const sqllen="SELECT COUNT(*) AS leng FROM parents" const reasultlen=await new Promise((resolve, reject) => { connection.query(sqllen,(error,results,fields) => { if (error) { newbug(error, "/apitea/stunewparent", req.query) console.log(error) } resolve(results) }) }) const sqlinsert="INSERT INTO parents(id,stdentid) VALUES(?,?)" await new Promise((resolve, reject) => { connection.query(sqlinsert,[parseInt(reasultlen[0].leng+1),req.query.xuehao],(error,results,fields) => { if (error) { newbug(error, "/apitea/stunewparent", req.query) console.log(error) } resolve(results) }) }) res.send({length:reasultlen[0].leng+1}) }) app.post("/apixueyuan/changezhuanye",async (req,res)=>{ const sql="UPDATE zhuanye SET name=?,jianjie=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sql,[req.body.name,req.body.jianjie,req.body.id],(error,results,fields) => { if (error) { newbug(error, "/apixueyuan/changezhuanye", req.body) console.log(error) } resolve(results) }) }) }) app.post("/apixueyuan/addzhuanye",async (req,res)=>{ const sqlinsert="INSERT INTO zhuanye(id,name,jianjie,xueyuanid,classs) VALUES(?,?,?,?,?)" await new Promise((resolve, reject) => { connection.query(sqlinsert,[req.body.id,req.body.name,req.body.jianjie,req.body.xueyuanid,req.body.classs],(error,results,fields) => { if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results) }) }) const sqlselect="SELECT * FROM xueyuan WHERE id=?" const reasult=await new Promise((resolve, reject) => { connection.query(sqlselect,[req.body.xueyuanid],(error,results,fields) => { if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results) }) }) let zhuanye=JSON.parse(reasult[0].zhuanye); zhuanye.push({zyid: req.body.id, title: req.body.name, jianjie:req.body.jianjie}) const sqlupdate="UPDATE xueyuan SET zhuanye=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(zhuanye,null,4),req.body.xueyuanid],(error,results,fields) => { if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results) }) }) }) async function huqoukecheng(kecheng){ let kechenglist=[] for(let i=0;i { connection.query(sqlkc,[kecheng[i]],(error,results,field)=>{ if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results[0]) }) }) if(kc) { delete kc.classzou delete kc.classtime const sqltea = "SELECT * FROM teacher WHERE xuegonghao=?" const teareasult = await new Promise((resolve, reject) => { connection.query(sqltea, [kc.teacher], (error, results, fields) => { if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results) }) }) if(teareasult.length>0) { kc.teaname = teareasult[0].name; const sqlstu = "SELECT studentname,xuehao,shoujihao,xingbian,xueyuan,nianjizhaungye,zzmm FROM `student` WHERE kecb LIKE ?" const stureasult = await new Promise((resolve, reject) => { connection.query(sqlstu, [`%"ke": ${kc.classid}%`], (error, results, field) => { if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results) }) }) kc.stulist = stureasult; kechenglist.push(kc); } }else{ kechenglist.push("nokecheng") } } return kechenglist } app.get("/apixueyuan/addclassinfor",async(req,res)=>{ const result=await huqoukecheng([req.query.teacherid]); res.send(result[0]); }) app.get("/apixueyuan/getkecheng",async (req,res)=>{ const sql="SELECT * FROM banjiclass WHERE xueyuanid=? AND zhaunyeid=?" const reasultclass=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xueyuan,req.query.zhuanye],(err,result,field)=>{ if(err)throw err; resolve(result); }) }) let kecheng=[] let stulist=[] for(let i=0;i { connection.query(sqlstuclass,[reasultclass[i].classname1+reasultclass[i].classname2],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) stureasultclass.map((stuname,indexstu)=>{ stulist.push(stuname.xuehao) }) } //旧代码废弃开始 if(1===2) { reasultclass.map((banji, index) => { const kc = JSON.parse(banji.kclist); kc.zhuanyeclass.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) kc.publicclass.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) kc.stuchoose.map((choose, indexchoose) => { choose.kechenglist.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) }) kc.stuchoose.map((choose, indexchoose) => { choose.kechenglist.map((zyk, indexzyk) => { kecheng.push(zyk.classid) }) }) }) kecheng = [...new Set(kecheng)] } //旧代码废弃 结束 const sqlkclist="SELECT * FROM zhuanye WHERE id=?" const kechengnewlist=await new Promise((resolve, reject) => { connection.query(sqlkclist,[req.query.zhuanye],(error,results,field)=>{ if(error)throw error; resolve(results[0]); }) }) let kechengnew=[]; if(JSON.parse(kechengnewlist.kclist)) { JSON.parse(kechengnewlist.kclist).map((value, index) => { kechengnew.push(value.teacherid) }) console.log(kechengnew) kechengnew = [...new Set(kechengnew)] res.send(await huqoukecheng(kechengnew)) } }) app.get("/apixueyuan/get_addstu",async (req,res)=>{ const sql="SELECT * FROM banjiclass WHERE xueyuanid=? AND zhaunyeid=?" const reasultclass=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xueyuan,req.query.zhuanye],(err,result,field)=>{ if(err)throw err; resolve(result); }) }) let kecheng=[] let stulist=[] for(let i=0;i { connection.query(sqlstuclass,[reasultclass[i].classname1+reasultclass[i].classname2],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) stureasultclass.map((stuname,indexstu)=>{ if(!JSON.parse(req.query.readystu).includes(stuname.xuehao)) { stuname.choose = false stulist.push(stuname) } }) } res.send(stulist); }) app.post("/apixueyuan/addstutokc",async (req,res)=>{ const sqlkcb="SELECT * FROM kechengbiao WHERE classid=?" const kcb=await new Promise((resolve, reject) => { connection.query(sqlkcb,[req.body.classid],(error,results,field)=>{ if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results) }) }) const kctime=JSON.parse(kcb[0].classzou) let kcbiao=[]; kctime.map((valuezou,indexzou)=>{ valuezou.class.map((valueke,indexke)=>{ kcbiao.push(valueke.ke) }) }) const stu=JSON.parse(req.body.stu); for(let i=0;i { connection.query(sqlstu,[stu[i]],(error,results,field)=>{ if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results) }) }) let kclisttemp=[]; if(stureasult[0].kecb) { kclisttemp=JSON.parse(stureasult[0].kecb) }else{ for(let i=0;i<31;i++){ for(let j=1;j<=7;j++){ for(let k=1;k<=4;k++){ kclisttemp.push({ ke: 0, time: `n${i}z${j}A${k}` }) } } } } let kclisttemp2=[...kclisttemp]; kclisttemp.map((value1,index)=>{ // console.log(value1) if(kcbiao.includes(value1.time)){ // console.log(123) kclisttemp2[index].ke=parseInt(kcb[0].classid) } }) const sqlupdate="UPDATE student SET kecb=? WHERE xuehao=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(kclisttemp2),stureasult[0].xuehao],(error,results,field)=>{ if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results) }) }) //res.send({ke:kclisttemp2,kek:kcbiao}); } let stukc=JSON.parse(kcb[0].student) stukc=[...stukc,...stu]; stukc=[...new Set(stukc)] //res.send(stukc); const sqlupdatestu="UPDATE kechengbiao SET student=? WHERE classid=?" await new Promise((resolve, reject) => { connection.query(sqlupdatestu,[JSON.stringify(stukc),kcb[0].classid],(error,results,field)=>{ if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results) }) }) res.send({status:"ok"}) }) app.post("/apixueyuan/yuantuike",async(req,res)=>{ const sqlkcb="SELECT * FROM kechengbiao WHERE classid=?" const kcb=await new Promise((resolve, reject) => { connection.query(sqlkcb,[req.body.classid],(error,results,field)=>{ if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results) }) }) const kctime=JSON.parse(kcb[0].classzou) let kcbiao=[]; kctime.map((valuezou,indexzou)=>{ valuezou.class.map((valueke,indexke)=>{ kcbiao.push(valueke.ke) }) }) const sqlstu="SELECT * FROM student WHERE xuehao=?" const stureasult=await new Promise((resolve, reject) => { connection.query(sqlstu,[req.body.stu],(error,results,field)=>{ if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results) }) }) let kclisttemp=[]; if(stureasult[0].kecb) { kclisttemp=JSON.parse(stureasult[0].kecb) }else{ for(let i=0;i<31;i++){ for(let j=1;j<=7;j++){ for(let k=1;k<=4;k++){ kclisttemp.push({ ke: 0, time: `n${i}z${j}A${k}` }) } } } } let kclisttemp2=[...kclisttemp]; kclisttemp.map((value1,index)=>{ // console.log(value1) if(kcbiao.includes(value1.time)){ // console.log(123) kclisttemp2[index].ke=0 } }) const sqlupdate="UPDATE student SET kecb=? WHERE xuehao=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(kclisttemp2),stureasult[0].xuehao],(error,results,field)=>{ if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results) }) }) let stukc=JSON.parse(kcb[0].student) stukc=stukc.filter(stu=>stu!==req.body.stu) const sqlupdatestu="UPDATE kechengbiao SET student=? WHERE classid=?" await new Promise((resolve, reject) => { connection.query(sqlupdatestu,[JSON.stringify(stukc),kcb[0].classid],(error,results,field)=>{ if (error) { newbug(error, "/apixueyuan/addzhuanye", req.body) console.log(error) } resolve(results) }) }) res.send({status:"ok"}) }) app.get("/apiclass/getxueke",async(req,res)=>{ const sqlbanji="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const banji=await new Promise((resolve, reject) => { connection.query(sqlbanji,[req.query.banji],(error,results,field)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results[0]) }) }) if(banji) { const sqlstubanji = "SELECT studentname,xuehao,shoujihao,xingbian,xueyuan,nianjizhaungye,zzmm FROM student WHERE nianjizhaungye=?" const stulist = await new Promise((resolve, reject) => { connection.query(sqlstubanji, [banji.classname1 + banji.classname2], (error, results, field) => { if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const kcall = JSON.parse(banji.kclist); //系统自选 if (kcall) { let systemkcall = kcall.systemchoose; for (let i = 0; i < systemkcall.length; i++) { const systemonekc = systemkcall[i].kechenglist; let kc = [] systemonekc.map((valuekc, index) => { kc.push(valuekc.classid) }) systemkcall[i].kcinfor = await huqoukecheng(kc); let stu = []; systemkcall[i].kcinfor.map((valuekc, indexkc) => { valuekc.stulist.map((valuestu, indexstu) => { stu.push(valuestu.xuehao) }) }) let stuallno = stulist.filter(word => !stu.includes(word.xuehao)) systemkcall[i].nostu = stuallno systemkcall[i].addsystemchoose = {stulist: []} } let studentkcall = kcall.stuchoose for (let i = 0; i < studentkcall.length; i++) { const stuonekc = studentkcall[i].kechenglist; let kc = [] stuonekc.map((valuekc, index) => { kc.push(valuekc.classid) }) studentkcall[i].kcinfor = await huqoukecheng(kc); let stu = []; studentkcall[i].kcinfor.map((valuekc, indexkc) => { valuekc.stulist.map((valuestu, indexstu) => { stu.push(valuestu.xuehao) }) }) let stuallno = stulist.filter(word => !stu.includes(word.xuehao)) studentkcall[i].nostu = stuallno studentkcall[i].addsystemchoose = {stulist: []} } let publickc = kcall.publicclass; let kclist = []; publickc.map((kc, kcindex) => { kclist.push(kc.classid) }) let publickcinfor = await huqoukecheng(kclist) let zhuanyekc = kcall.zhuanyeclass kclist = []; zhuanyekc.map((zy, zyindex) => { kclist.push(zy.classid) }) let zhaunyekcinfor = await huqoukecheng(kclist) res.send({ systemchoose: systemkcall, studentchoose: studentkcall, publickc: publickcinfor, zhaunyekc: zhaunyekcinfor }) } else { res.send({ systemchoose: [], studentchoose: [], publickc: [], zhaunyekc: [] }) } }else { res.send({ systemchoose: [], studentchoose: [], publickc: [], zhaunyekc: [] }) } }) app.post("/apiclass/addsyschoosekc",async(req,res)=>{ const sqlsselect="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const reasult=await new Promise((resolve, reject) => { connection.query(sqlsselect,[req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) console.log(reasult) let kclist=JSON.parse(reasult[0].kclist) kclist.systemchoose[req.body.index].kechenglist.push(JSON.parse(req.body.addsystem)); const sqlupdatebanji="UPDATE banjiclass SET kclist=? WHERE CONCAT(classname1,classname2)=?" await new Promise((resolve, reject) => { connection.query(sqlupdatebanji,[JSON.stringify(kclist),req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send(JSON.stringify(kclist)) }) app.post("/apiclass/addstuchoosekc",async(req,res)=>{ const sqlsselect="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const reasult=await new Promise((resolve, reject) => { connection.query(sqlsselect,[req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) console.log(reasult) let kclist=JSON.parse(reasult[0].kclist) kclist.stuchoose[req.body.index].kechenglist.push(JSON.parse(req.body.addsystem)); const sqlupdatebanji="UPDATE banjiclass SET kclist=? WHERE CONCAT(classname1,classname2)=?" await new Promise((resolve, reject) => { connection.query(sqlupdatebanji,[JSON.stringify(kclist),req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send(JSON.stringify(kclist)) }) app.post("/apiclass/addpublickc",async (req,res)=>{ const sqlsselect="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const reasult=await new Promise((resolve, reject) => { connection.query(sqlsselect,[req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) console.log(reasult) let kclist=JSON.parse(reasult[0].kclist) kclist.publicclass.push(JSON.parse(req.body.addsystem)); const sqlupdatebanji="UPDATE banjiclass SET kclist=? WHERE CONCAT(classname1,classname2)=?" await new Promise((resolve, reject) => { connection.query(sqlupdatebanji,[JSON.stringify(kclist),req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send(JSON.stringify(kclist)) }) app.post("/apiclass/addzhuanyekc",async (req,res)=>{ const sqlsselect="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const reasult=await new Promise((resolve, reject) => { connection.query(sqlsselect,[req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) console.log(reasult) let kclist=JSON.parse(reasult[0].kclist) kclist.zhuanyeclass.push(JSON.parse(req.body.addsystem)); const sqlupdatebanji="UPDATE banjiclass SET kclist=? WHERE CONCAT(classname1,classname2)=?" await new Promise((resolve, reject) => { connection.query(sqlupdatebanji,[JSON.stringify(kclist),req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send(JSON.stringify(kclist)) }) app.post("/apibanji/addsystemchoose",async (req,res)=>{ const sqlsselect="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const reasult=await new Promise((resolve, reject) => { connection.query(sqlsselect,[req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) console.log(reasult) let kclist=JSON.parse(reasult[0].kclist) kclist.systemchoose.push(JSON.parse(req.body.addsystem)); const sqlupdatebanji="UPDATE banjiclass SET kclist=? WHERE CONCAT(classname1,classname2)=?" await new Promise((resolve, reject) => { connection.query(sqlupdatebanji,[JSON.stringify(kclist),req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const sqlstubanji="SELECT studentname,xuehao,shoujihao,xingbian,xueyuan,nianjizhaungye,zzmm FROM student WHERE nianjizhaungye=?" const stulist=await new Promise((resolve, reject) => { connection.query(sqlstubanji,[req.body.classname],(error,results,field)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send(stulist) }) app.post("/apibanji/addstuchoose",async (req,res)=>{ const sqlsselect="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const reasult=await new Promise((resolve, reject) => { connection.query(sqlsselect,[req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) console.log(reasult) let kclist=JSON.parse(reasult[0].kclist) kclist.systemchoose.push(JSON.parse(req.body.addsystem)); const sqlupdatebanji="UPDATE banjiclass SET kclist=? WHERE CONCAT(classname1,classname2)=?" await new Promise((resolve, reject) => { connection.query(sqlupdatebanji,[JSON.stringify(kclist),req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const sqlstubanji="SELECT studentname,xuehao,shoujihao,xingbian,xueyuan,nianjizhaungye,zzmm FROM student WHERE nianjizhaungye=?" const stulist=await new Promise((resolve, reject) => { connection.query(sqlstubanji,[req.body.classname],(error,results,field)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send(stulist) }) app.post("/apibanji/changestuchoose",async (req,res)=>{ const sqlsselect="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const reasult=await new Promise((resolve, reject) => { connection.query(sqlsselect,[req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) console.log(reasult) let kclist=JSON.parse(reasult[0].kclist) //kclist.systemchoose.push(JSON.parse(req.body.addsystem)); kclist.systemchoose[req.body.index].kechengname=req.body.name const sqlupdatebanji="UPDATE banjiclass SET kclist=? WHERE CONCAT(classname1,classname2)=?" await new Promise((resolve, reject) => { connection.query(sqlupdatebanji,[JSON.stringify(kclist),req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const sqlstubanji="SELECT studentname,xuehao,shoujihao,xingbian,xueyuan,nianjizhaungye,zzmm FROM student WHERE nianjizhaungye=?" const stulist=await new Promise((resolve, reject) => { connection.query(sqlstubanji,[req.body.classname],(error,results,field)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send(stulist) }) app.post("/apibanji/changesyschoose",async (req,res)=>{ const sqlsselect="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const reasult=await new Promise((resolve, reject) => { connection.query(sqlsselect,[req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) console.log(reasult) let kclist=JSON.parse(reasult[0].kclist) //kclist.systemchoose.push(JSON.parse(req.body.addsystem)); kclist.stuchoose[req.body.index].kechengname=req.body.name const sqlupdatebanji="UPDATE banjiclass SET kclist=? WHERE CONCAT(classname1,classname2)=?" await new Promise((resolve, reject) => { connection.query(sqlupdatebanji,[JSON.stringify(kclist),req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const sqlstubanji="SELECT studentname,xuehao,shoujihao,xingbian,xueyuan,nianjizhaungye,zzmm FROM student WHERE nianjizhaungye=?" const stulist=await new Promise((resolve, reject) => { connection.query(sqlstubanji,[req.body.classname],(error,results,field)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send(stulist) }) app.get("/apiclass/chaxunsyj",async(req,res)=>{ const sqlclass="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const reasultclass =await new Promise((resolve, reject) => { connection.query(sqlclass,[req.query.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) console.log(reasultclass) const sqlxueyuan="SELECT * FROM xueyuan WHERE id=?" if(reasultclass[0]) { const xueyuan = await new Promise((resolve, reject) => { connection.query(sqlxueyuan, [reasultclass[0].xueyuanid], (error, results, field) => { if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send(xueyuan[0]) } }) app.post("/apixueyuan/savekcallinfor",async(req,res)=>{ const sqlupdate="UPDATE kechengall SET name=?,kch=?,jianjie=?,color=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[req.body.name,req.body.kch,req.body.jianjie,req.body.color,req.body.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const sqlupdatekc="UPDATE kechengbiaotest SET color=?,classname=? WHERE kechengid=?" await new Promise((resolve, reject) => { connection.query(sqlupdatekc,[req.body.color,req.body.name,req.body.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) }) app.post("/apixueyuan/savekcallkcb",async(req,res)=>{ const sqlupdate="UPDATE kechengall SET kechenglist=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(req.body.kcb),req.body.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const kecheng=req.body.kcb; let qj={}; let kc=[]; kecheng.map((zhou,zhouindex)=>{ let zhoukc=[]; zhou.map((day,dayindex)=>{ day.map((ke,keindex)=>{ if(ke.classid!=0){ let keone={ke:`n${ke.zhou}z${ke.day+1}A${ke.jie}`,day:ke.day+1,jie:ke.jie} zhoukc.push(keone); qj[`n${ke.zhou}z${ke.day+1}A${ke.jie}`]=[]; } }) }) if(zhoukc.length!==0){ const kcone={ zhou:zhouindex+1, class:zhoukc } kc.push(kcone) } }) const sqlupdatetime="UPDATE kechengbiaotest SET classzou=?,bianjikc=? WHERE kechengid=?" await new Promise((resolve, reject) => { connection.query(sqlupdatetime,[JSON.stringify(kc),JSON.stringify(req.body.kcb),req.body.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const sqlbanji="SELECT * FROM kechengbiaotest WHERE kechengid=?" let banjilist=await new Promise((resolve, reject) => { connection.query(sqlbanji,[req.body.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }); console.log(banjilist.length) for(let i=0;i { connection.query(sqlupdateclasstime,[JSON.stringify(classtimeqj),banjilist[i].classid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) } }) app.post("/apixueyuan/savekcallkcb_add_stu",async(req,res)=>{ const sqlselect_old="SELECT * FROM kechengall WHERE id=?" const old_result=await new Promise((resolve, reject) => { connection.query(sqlselect_old,[req.body.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const timekc_old=[]; old_result.map((zhouvalue,zhouindex)=>{ zhouvalue.map((dayvalue,dayindex)=>{ dayvalue.map((kevalue,keindex)=>{ timekc_old.push(`n${kevalue.zhou}z${kevalue.day+1}A${kevalue.jie}`) }) }) }) const sqlupdate="UPDATE kechengall SET kechenglist=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(req.body.kcb),req.body.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const kecheng=req.body.kcb; let qj={}; let kc=[]; let kcnew=[] kecheng.map((zhou,zhouindex)=>{ let zhoukc=[]; zhou.map((day,dayindex)=>{ day.map((ke,keindex)=>{ if(ke.classid!=0){ let keone={ke:`n${ke.zhou}z${ke.day+1}A${ke.jie}`,day:ke.day+1,jie:ke.jie} zhoukc.push(keone); qj[`n${ke.zhou}z${ke.day+1}A${ke.jie}`]=[]; kcnew.push(`n${ke.zhou}z${ke.day+1}A${ke.jie}`) } }) }) if(zhoukc.length!==0){ const kcone={ zhou:zhouindex+1, class:zhoukc } kc.push(kcone) } }) const sqlupdatetime="UPDATE kechengbiaotest SET classzou=?,bianjikc=? WHERE kechengid=?" await new Promise((resolve, reject) => { connection.query(sqlupdatetime,[JSON.stringify(kc),JSON.stringify(req.body.kcb),req.body.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const sqlbanji="SELECT * FROM kechengbiaotest WHERE kechengid=?" let banjilist=await new Promise((resolve, reject) => { connection.query(sqlbanji,[req.body.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }); console.log(banjilist.length) for(let i=0;i { connection.query(sqlstu, (error, results, fields) => { if (error) throw error; resolve(results) }) }) const sturesult_temp=[...sturesult] for(let stu_i=0;stu_i{ if(kcnew.includes(keone.time)){ kcstu[keindex].ke=parseInt(banjilist[0].classid) }else if(timekc_old.includes(keone.time)){ kcstu[keindex].ke=0 } }) const sqlupdate_stu="UPDATE student SET kecb=? WHERE studentid=?" await new Promise((resolve, reject) => { connection.query(sqlupdate_stu,[JSON.stringify(kcstu),sturesult[stu_i].studentid], (error,results,fields)=>{ if (error) throw error; resolve(results) }) }) } const xiang=banjilist[i] console.log(i) //console.log(xiang) let classtimeqj=JSON.parse(xiang.classtime) classtimeqj={...qj,...classtimeqj}; const sqlupdateclasstime="UPDATE kechengbiaotest SET classtime=? WHERE classid=?" await new Promise((resolve, reject) => { connection.query(sqlupdateclasstime,[JSON.stringify(classtimeqj),banjilist[i].classid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) } res.send({status:"ok"}) }) app.post("/apixueyaun/addbanjitokc",async(req,res)=>{ const sqlcount="SELECT * FROM `kechengbiaotest` ORDER BY classid DESC LIMIT 1;" let len=await new Promise((resolve, reject) => { connection.query(sqlcount,(error,results,fields)=>{ resolve(results[0].classid) }) }) let length=parseInt(len)+1 const kecheng=req.body.kcb; let qj={}; let kc=[]; kecheng.map((zhou,zhouindex)=>{ let zhoukc=[]; zhou.map((day,dayindex)=>{ day.map((ke,keindex)=>{ if(ke.classid!=0){ let keone={ke:`n${ke.zhou}z${ke.day+1}A${ke.jie}`,day:ke.day+1,jie:ke.jie} zhoukc.push(keone); qj[`n${ke.zhou}z${ke.day+1}A${ke.jie}`]=[]; } }) }) if(zhoukc.length!==0){ const kcone={ zhou:zhouindex+1, class:zhoukc } kc.push(kcone) } }) //console.log(qj); //console.log(kc) // const sqlupdate= 'UPDATE kechengbiao SET classtime=?,classzou=?,timu=? WHERE classid=?' ; //await new Promise((resolve, reject) => { // connection.query(sqlupdate,[JSON.stringify(qj),JSON.stringify(kc),req.body.classid,"[]"],(error, results, fields) => { // if(error)throw error; // resolve(results); // }) // }) const sqlinsert="INSERT INTO kechengbiaotest(student,classtime,classzou,color,timu,kechengid,bianjikc,classid) VALUES(?,?,?,?,?,?,?,?)" await new Promise((resolve, reject) => { connection.query(sqlinsert,["[]",JSON.stringify(qj),JSON.stringify(kc),req.body.color,"[]",req.body.kechengid,JSON.stringify(req.body.kcb),length+1],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send({id:length+1,studentnum:120}) }) app.post("/apixueyaun/addbanjitokcupdate",async(req,res)=>{ const sqlcount="SELECT * FROM `kechengbiaotest` ORDER BY classid DESC LIMIT 1;" let len=await new Promise((resolve, reject) => { connection.query(sqlcount,(error,results,fields)=>{ resolve(results[0].classid) }) }) let length=parseInt(len)+1 const kecheng=req.body.kcb; let qj={}; let kc=[]; kecheng.map((zhou,zhouindex)=>{ let zhoukc=[]; zhou.map((day,dayindex)=>{ day.map((ke,keindex)=>{ if(ke.classid!=0){ let keone={ke:`n${ke.zhou}z${ke.day+1}A${ke.jie}`,day:ke.day+1,jie:ke.jie} zhoukc.push(keone); qj[`n${ke.zhou}z${ke.day+1}A${ke.jie}`]=[]; } }) }) if(zhoukc.length!==0){ const kcone={ zhou:zhouindex+1, class:zhoukc } kc.push(kcone) } }) //console.log(qj); //console.log(kc) // const sqlupdate= 'UPDATE kechengbiao SET classtime=?,classzou=?,timu=? WHERE classid=?' ; //await new Promise((resolve, reject) => { // connection.query(sqlupdate,[JSON.stringify(qj),JSON.stringify(kc),req.body.classid,"[]"],(error, results, fields) => { // if(error)throw error; // resolve(results); // }) // }) const sqlinsert="INSERT INTO kechengbiaotest(student,classtime,classzou,color,timu,kechengid,bianjikc,classid,place,studentnum,teaname,teacherid,teacher,classbh,classname) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" await new Promise((resolve, reject) => { connection.query(sqlinsert,["[]",JSON.stringify(qj),JSON.stringify(kc),req.body.color,"[]",req.body.kechengid,JSON.stringify(req.body.kcb),length+1,req.body.place,req.body.studentnum,req.body.teaname,req.body.teacherid,req.body.teacher,req.body.classbh,req.body.classname],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send({id:length+1,studentnum:120}) }) async function getkcks(kcteacherid){ const sql="SELECT * FROM kaoshipaper WHERE JSON_CONTAINS(fabukecheng, "+`'["${kcteacherid}"]'`+", '$');" let result=await new Promise((resolve, reject) => { connection.query(sql,(error, results, fields) => { if(error)throw error; resolve(results); }) }) for(let i=0;i0){ //考试未开始 result[i].zt="test_no_start" }else if(moment().diff(moment(xx.timeend),'s')<0){ //考试未结束 result[i].zt="testing" const entersql="SELECT * FROM kaoshing WHERE ks=?" const enterresult=await new Promise((resolve, reject) => { connection.query(entersql,[result[i].uuid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const newenterresult = Array.from(new Set(enterresult.map(item => item.xuehao))).map(xuehao => { return enterresult.find(item => item.xuehao === xuehao); }); const endsql="SELECT * FROM kaoshiend WHERE ks=?" const endresult=await new Promise((resolve, reject) => { connection.query(endsql,[result[i].uuid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const newendresult = Array.from(new Set(endresult.map(item => item.xuehao))).map(xuehao => { return enterresult.find(item => item.xuehao === xuehao); }); result[i].enterstu=newenterresult.length; result[i].endstu=newendresult.length; }else{ let pan_jue_finish; //考试已结束 let resultstd=result[i] if(JSON.parse(result[i].xx).pan_jue_finsih===false) { const sql = "SELECT * FROM kaoshiend WHERE ks=?"; const resultksdaan = await new Promise((resolve, reject) => { connection.query(sql, [parseInt(result[i].uuid)], (error, results, fields) => { if (error) throw error; resolve(results); }) }) let finish = true; for (let j = 0; j < resultksdaan.length; j++) { const ksdaan = JSON.parse(resultksdaan[j].ksdaan); ksdaan.map((value, index) => { if (value.lx === "填空题") { console.log(resultstd) const stddaan = JSON.parse(resultstd.std); if (stddaan[j].panjaun === "teacher") { if (value.teacherid === undefined) { finish = false } } } if (value.lx === "简答题") { if (value.teacherid === undefined) { finish = false } } }) } if(finish===true){ let jsonxx=JSON.parse(resultstd.xx); jsonxx.pan_jue_finsih=true const sqlupdate = 'UPDATE kaoshipaper SET xx=? WHERE `uuid`=?'; const up = await new Promise((resolve, reject) => { connection.query(sqlupdate, [JSON.stringify(jsonxx, null, 4), result[i].uuid], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } let infor=[] let allprint=[] if(finish===true){ for (let j = 0; j < resultksdaan.length; j++) { const ksdaan = JSON.parse(resultksdaan[j].ksdaan); let num=0; let ksdaantemp=[...ksdaan] ksdaan.map((value, index) => { if (value.lx === "填空题") { console.log(resultstd) const stddaan = JSON.parse(resultstd.std); if (stddaan[index].panjaun === "teacher") { num=num+value.teacherprint ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=value.teacherprint }else{ if(value.sr.trimStart()===stddaan[index].std.trimStart()){ num=num+stddaan[index].print ksdaantemp[index].way="computer" ksdaantemp[index].printstu=stddaan[index].print } } } else if (value.lx === "简答题") { const stddaan = JSON.parse(resultstd.std); num=num+value.teacherprint //ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=value.teacherprint }else if(value.lx==="多选题"){ let zq=true const stddaan = JSON.parse(resultstd.std); value.daan.map((item,xuaho)=>{ if(!stddaan[index].std.includes(item)){} zq=false }) if(value.daan.length!==stddaan[index].std.length){ zq=false } if(zq){ num=num+stddaan[index].print //ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=stddaan[index].print }else{ ksdaantemp[index].printstu=0 } }else if(value.lx==="单选题"){ const stddaan = JSON.parse(resultstd.std); if(value.daan===stddaan[index].std){ num=num+stddaan[index].print //ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=stddaan[index].print }else{ ksdaantemp[index].printstu=0 num=num+0 } }else if(value.lx==="判断题"){ const stddaan = JSON.parse(resultstd.std); if(value.daan===stddaan[index].std){ num=num+stddaan[index].print //ksdaantemp[index].way="teacher" ksdaantemp[index].printstu=stddaan[index].print }else{ ksdaantemp[index].printstu=0 } } }) const sqlupdate = 'UPDATE kaoshiend SET ksdaan=?,allprint=? WHERE id=?'; //resultksdaan[i]. await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(ksdaantemp,null,4),num,resultksdaan[i].id],(error, results) => { if (error) throw error; resolve(results); }) }) allprint.push(num) infor.push({infor:ksdaantemp,num:num}) } } pan_jue_finish=finish // res.send({finish: finishr}) }else{ pan_jue_finish=true // res.send({finish: true}) } //判断完成 if(pan_jue_finish===true) { result[i].zt = "finish_pan_jue" }else{ result[i].zt = "pan_jue" } const entersql="SELECT * FROM kaoshing WHERE ks=?" const enterresult=await new Promise((resolve, reject) => { connection.query(entersql,[result[i].uuid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const newenterresult = Array.from(new Set(enterresult.map(item => item.xuehao))).map(xuehao => { return enterresult.find(item => item.xuehao === xuehao); }); const endsql="SELECT * FROM kaoshiend WHERE ks=?" const endresult=await new Promise((resolve, reject) => { connection.query(endsql,[result[i].uuid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const newendresult = Array.from(new Set(endresult.map(item => item.xuehao))).map(xuehao => { return enterresult.find(item => item.xuehao === xuehao); }); result[i].enterstu=newenterresult.length; result[i].endstu=newendresult.length; } if(!result[i].std){ result[i].zt="wei_fa_bu" } } return result; } async function getkcleaarntaolong(kcteacherid){ const sql="SELECT * FROM commitgroup WHERE JSON_CONTAINS(fabukecheng, "+`'[${kcteacherid}]'`+", '$')"; let reasult = await new Promise((resolve, reject) => { connection.query(sql,(error, results, fields) => { if(error) reject(error); resolve(results); }) }) for(let i=0;i { connection.query(sqlcommit,[reasult[i].xuhao],(error, results, fields) => { if (error) reject(error); resolve(results); }) }) let stufinish=[] resultcommit.map((value) => { stufinish.push(value.xuehao) }) stufinish=[...new Set(stufinish)]; reasult[i].stufinish=stufinish; for(let j=0;j { connection.query(sqlclass, [JSON.parse(reasult[i].fabukecheng)[j]], (error, results, fields) => { if (error) reject(error); resolve(results); }) }) console.log(resultclass) resultclass.map((value,index)=>{ kechengname=kechengname+" "+value.classname+"@"+value.classbh const temp=JSON.parse(value.student); stu=[...stu,...temp] }) } let uniqueArr = [...new Set(stu)]; reasult[i].studentshiji=uniqueArr; reasult[i].classnamelist=kechengname; } return reasult; } async function getkctmj(kcteacheid){ const sql = `SELECT * FROM perparetmj WHERE information LIKE "%\\\"${kcteacheid}\\\"%"`; console.log(sql) const kctmj=await new Promise((resolve, reject) => { connection.query(sql, (error, results, fields) => { if (error) throw error; resolve(results) }); }) return kctmj } app.get("/apixueyaun/getkechengmanage",async(req,res)=>{ const sqlkcall="SELECT * FROM kechengall WHERE id=?" const kcallresult=await new Promise((resolve, reject) => { connection.query(sqlkcall,[req.query.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const kcb=JSON.parse(kcallresult[0].kechenglist); const sqlkc="SELECT * FROM kechengbiaotest WHERE kechengid=?" const kclist=await new Promise((resolve, reject) => { connection.query(sqlkc,[req.query.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) for(let kc_i=0;kc_i{ const sqlupdate="UPDATE kechengbiaotest SET teacherid=?,teacher=?,teaname=?,place=?,studentnum=?,classbh=? WHERE classid=?" console.log(req.body) await new Promise((resolve, reject) => { connection.query(sqlupdate,[req.body.teacherid,req.body.teacher,req.body.teaname,req.body.place,req.body.studentnum,req.body.classbh,req.body.classid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) }) app.post("/apixueyuan/deletekcbanji",async(req,res)=>{ const sql="DELETE FROM kechengbiaotest WHERE classid=?" console.log(req.body) await new Promise((resolve, reject) => { connection.query(sql,[req.body.classid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) }) app.get("/apixueyuan/newkcall",async(req,res)=>{ let kechengbiao=[]; for(let i=0;i<31;i++){ let zhou=[]; for (let j=0;j<7;j++){ const day=[ { zhou:i,//第几周 day:j,//每周第几天 jie:1, classid:0//class号 },{ zhou:i,//第几周 day:j,//每周第几天 jie:2, classid:0//class号 },{ zhou:i,//第几周 day:j,//每周第几天 jie:3, classid:0//class号 },{ zhou:i,//第几周 day:j,//每周第几天 jie:4, classid:0//class号 } ] zhou.push(day) } kechengbiao.push(zhou) } const sqlinsert="INSERT INTO kechengall (kechenglist) VALUES(?)" await new Promise((resolve, reject) => { connection.query(sqlinsert,[JSON.stringify(kechengbiao)],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const sqlread="SELECT * FROM kechengall ORDER BY id DESC LIMIT 1" const newid=await new Promise((resolve, reject) => { connection.query(sqlread,(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send(newid[0]); }) app.get("/apixueyuan/getkechengbiaotestinfor",async(req,res)=>{ const sql="SELECT * FROM kechengbiaotest WHERE teacherid=?" const result=await new Promise((resolve, reject) => { connection.query(sql,[req.query.teacherid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send(result[0]); }) app.post("/apixueyuan/savepyfa",async (req,res)=>{ const sqlupdate="UPDATE zhuanye SET pyfa=?,kclist=?,infor=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(req.body.xueyear),JSON.stringify(req.body.kclist),JSON.stringify(req.body.infor),req.body.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) res.send({status:"ok"}) }) app.get("/apixueyuan/openpyfa",async (req,res)=>{ const sqlrea="SELECT * FROM zhuanye WHERE id=?" let reasultA=await new Promise((resolve, reject) => { connection.query(sqlrea,[req.query.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) if(reasultA[0].pyfa) { let reasult = JSON.parse(reasultA[0].pyfa); console.log(reasult) const reasulttemp = [...reasult]; for (let i = 0; i < reasult.length; i++) { const pyfaone = reasult[i]; for (let j = 0; j < pyfaone.publicclass.length; j++) { const sqlselect = "SELECT classid,classname,teacherid,classbh,student,teaname,studentnum FROM kechengbiaotest WHERE classid=?" reasulttemp[i].publicclass[j] = await new Promise((resolve, reject) => { connection.query(sqlselect, [reasulttemp[i].publicclass[j].classid], (error, results, fields) => { if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results[0]) }) }) } for (let j = 0; j < pyfaone.zhuanyeclass.length; j++) { const sqlselect = "SELECT classid,classname,teacherid,classbh,student,teaname,studentnum FROM kechengbiaotest WHERE classid=?" reasulttemp[i].zhuanyeclass[j] = await new Promise((resolve, reject) => { connection.query(sqlselect, [reasulttemp[i].zhuanyeclass[j].classid], (error, results, fields) => { if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results[0]) }) }) } for (let j = 0; j < pyfaone.systemchoose.length; j++) { const onechoose = pyfaone.systemchoose[j]; for (let k = 0; k < onechoose.ke.length; k++) { const sqlselect = "SELECT classid,classname,teacherid,classbh,student,teaname,studentnum FROM kechengbiaotest WHERE classid=?" reasulttemp[i].systemchoose[j].ke[k] = await new Promise((resolve, reject) => { connection.query(sqlselect, [reasulttemp[i].systemchoose[j].ke[k].classid], (error, results, fields) => { if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results[0]) }) }) } } for (let j = 0; j < pyfaone.studnetchoose.length; j++) { const onechoose = pyfaone.studnetchoose[j]; for (let k = 0; k < onechoose.ke.length; k++) { const sqlselect = "SELECT classid,classname,teacherid,classbh,student,teaname,studentnum FROM kechengbiaotest WHERE classid=?" reasulttemp[i].studnetchoose[j].ke[k] = await new Promise((resolve, reject) => { connection.query(sqlselect, [reasulttemp[i].studnetchoose[j].ke[k].classid], (error, results, fields) => { if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results[0]) }) }) } } } reasultA[0].pyfa = JSON.stringify(reasulttemp) let kclist = []; const kcold = JSON.parse(reasultA[0].kclist); for (let i = 0; i < kcold.length; i++) { const sqlselect = "SELECT classid,classname,teacherid,classbh,student,teaname,studentnum FROM kechengbiaotest WHERE classid=?" const kcone = await new Promise((resolve, reject) => { connection.query(sqlselect, [kcold[i].classid], (error, results, fields) => { if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results[0]) }) }) kclist.push(kcone) } reasultA[0].kclist = kclist console.log(12) res.send(reasultA[0]); }else{ res.send({ststus:"new"}) } }) app.get("/apixueyuan/readxueke",async (req,res)=>{ const sql="SELECT * FROM student WHERE xuehao=?" const reasultstu=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xuehao],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) const sqlbanji="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const reasultbanji=await new Promise((resolve, reject) => { connection.query(sqlbanji,[reasultstu[0].nianjizhaungye],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) const sqlkecheng="SELECT * FROM zhuanye WHERE id=?" const kecheng=await new Promise((resolve, reject) => { connection.query(sqlkecheng,[reasultbanji[0].zhaunyeid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) let ruxueyear=moment(reasultstu[0].ruxuetime).year(); let moment1=moment(`${ruxueyear}-09-01`) let month=Math.ceil(moment().diff(moment1,'months')/6); if(month<1){ month=1; } let xueke=JSON.parse(kecheng[0].pyfa)[month-1].studnetchoose for(let i=0;i { connection.query(sqlke,[xuekeone.ke[j].teacherid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results[0]) }) }) delete reasultke.classtime; xueke[i].ke[j]={...reasultke} //reasult[a].ke[j] } } res.send({month:month,xueke:xueke}) }) app.get("/apistu/xueke",async (req,res)=>{ const sql="SELECT * FROM student WHERE xuehao=?" let reasult=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xuehao],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) //console.log(reasult[0].chooseke) res.send(reasult[0].chooseke) }) app.post("/api/xuekesave",async (req,res)=>{ const sqlkcget="SELECT * FROM kechengbiaotest WHERE classid=?" const kc=await new Promise((resolve, reject) => { connection.query(sqlkcget,[req.body.classid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) let kecheng=[]; let kclist=JSON.parse(kc[0].classzou) kclist.map((zouvalue,zouindex)=>{ zouvalue.class.map((kevalue,keindex)=>{ kecheng.push( kevalue.ke ) }) }) let stulist=JSON.parse(kc[0].student); // stulist=stulist.filter(item=>item!==req.body.xuehao) stulist.push(req.body.xuehao); const updatesql="UPDATE kechengbiaotest SET student=? WHERE classid=?" await new Promise((resolve, reject) => { connection.query(updatesql,[JSON.stringify(stulist),req.body.classid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) const sqlstu="SELECT * FROM student WHERE xuehao=?" const stureasult=await new Promise((resolve, reject) => { connection.query(sqlstu,[req.body.xuehao],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) console.log(stureasult) let temp=[...JSON.parse(stureasult[0].kecb)] JSON.parse(stureasult[0].kecb).map((kcvalue,indexke)=>{ if(kecheng.includes(kcvalue.time)){ temp[indexke].ke=parseInt(req.body.classid); } }) console.log(temp); const sqlupdate="UPDATE student SET kecb=?,chooseke=? WHERE xuehao=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(temp),JSON.stringify(req.body.chooseke),req.body.xuehao],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) res.send(temp); }) app.post("/api/xueketuike",async (req,res)=>{ const sqlkcget="SELECT * FROM kechengbiaotest WHERE classid=?" const kc=await new Promise((resolve, reject) => { connection.query(sqlkcget,[req.body.classid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) let kecheng=[]; let kclist=JSON.parse(kc[0].classzou) kclist.map((zouvalue,zouindex)=>{ zouvalue.class.map((kevalue,keindex)=>{ kecheng.push( kevalue.ke ) }) }) let stulist=JSON.parse(kc[0].student); // stulist.push(req.body.xuehao); stulist=stulist.filter(item=>item!==req.body.xuehao) const updatesql="UPDATE kechengbiaotest SET student=? WHERE classid=?" await new Promise((resolve, reject) => { connection.query(updatesql,[JSON.stringify(stulist),req.body.classid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) const sqlstu="SELECT * FROM student WHERE xuehao=?" const stureasult=await new Promise((resolve, reject) => { connection.query(sqlstu,[req.body.xuehao],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) console.log(stureasult) let temp=[...JSON.parse(stureasult[0].kecb)] JSON.parse(stureasult[0].kecb).map((kcvalue,indexke)=>{ if(kecheng.includes(kcvalue.time)){ temp[indexke].ke=0; } }) console.log(temp); const sqlupdate="UPDATE student SET kecb=?,chooseke=? WHERE xuehao=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(temp),JSON.stringify(req.body.chooseke),req.body.xuehao],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) res.send(temp); }) app.get("/apixueyuan/zyinfor",async(req,res)=>{ const sqlzy="SELECT * FROM zhuanye WHERE id=?" const reasult=await new Promise((resolve, reject) => { connection.query(sqlzy,[req.query.zhuanye],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) res.send(reasult[0]); }) async function getxueyuanzystu(zhuanyeid){ const sqlbanji="SELECT * FROM banjiclass WHERE zhaunyeid=?" const zybj=await new Promise((resolve, reject) => { connection.query(sqlbanji,[zhuanyeid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) const sqlstu="SELECT * FROM student WHERE nianjizhaungye=?" let stulist=[] for(let i=0;i { connection.query(sqlstu,[zybj[i].classname1+zybj[i].classname2],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) stuone.map((stua,indexa)=>{ stulist.push(stua.xuehao) }) } return stulist } async function getxueyuanzystu_xx(zhuanyeid){ const sqlbanji="SELECT * FROM banjiclass WHERE zhaunyeid=?" const zybj=await new Promise((resolve, reject) => { connection.query(sqlbanji,[zhuanyeid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) const sqlstu="SELECT * FROM student WHERE nianjizhaungye=?" let stulist=[] for(let i=0;i { connection.query(sqlstu,[zybj[i].classname1+zybj[i].classname2],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) stuone.map((stua,indexa)=>{ let temp={...stua} if(stua.chooseke){ temp.chooseke=JSON.parse(stua.chooseke) }else{ temp.chooseke={status:"no"} } delete temp.kecb delete temp.morenpassword stulist.push(temp) }) } return stulist } async function updatekc(xuehao){ let stulista=[...xuehao] let kestu={} for(let a=0;a { connection.query(sqlstu,[stulista[a]],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) const sqlbanji = "SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const reasultbanji = await new Promise((resolve, reject) => { connection.query(sqlbanji, [stuinfor[0].nianjizhaungye], (error, results, fields) => { if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) if(reasultbanji[0]) { const sqlkecheng = "SELECT * FROM zhuanye WHERE id=?" const kecheng = await new Promise((resolve, reject) => { connection.query(sqlkecheng, [reasultbanji[0].zhaunyeid], (error, results, fields) => { if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) let stukecb = []; for (let i = 0; i < 31; i++) { for (let j = 1; j < 7; j++) { for (let k = 1; k < 4; k++) { stukecb.push({ ke: 0, time: `n${i}z${j}A${k}` }) } } } let stukecbwb = JSON.stringify(stukecb) let stuchoose = {} if (JSON.parse(stuinfor[0].chooseke)) { stuchoose = JSON.parse(stuinfor[0].chooseke) } let month=0; if(stuinfor[0].ruxuetime) { let ruxueyear = moment(stuinfor[0].ruxuetime).year(); let moment1 = moment(`${ruxueyear}-09-01`) month = Math.ceil(moment().diff(moment1, 'months') / 6); } console.log(month) if(month<0){ month=0; } const pyfa = JSON.parse(kecheng[0].pyfa); for (let i = 0; i < pyfa[month].publicclass.length; i++) { stukecbwb = await addkcbtojson(stukecbwb, pyfa[month].publicclass[i]) const sqlkcstu = "SELECT * FROM kechengbiaotest WHERE classid=?" const stu = await new Promise((resolve, reject) => { connection.query(sqlkcstu, [pyfa[month].publicclass[i].classid], (error, results, fields) => { if (error) throw error; resolve(results); }) }) let stulist = []; if (stu[0].student) { stulist = JSON.parse(stu[0].student) } stulist.push(stuinfor[i].xuehao) const updatesql = "UPDATE kechengbiaotest SET student=? WHERE classid=?" await new Promise((resolve, reject) => { connection.query(updatesql, [JSON.stringify(stulist), pyfa[month].publicclass[i].classid], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } for (let i = 0; i < pyfa[0].zhuanyeclass.length; i++) { stukecbwb = await addkcbtojson(stukecbwb, pyfa[month].zhuanyeclass[i]) const sqlkcstu = "SELECT * FROM kechengbiaotest WHERE classid=?" const stu = await new Promise((resolve, reject) => { connection.query(sqlkcstu, [pyfa[month].zhuanyeclass[i].classid], (error, results, fields) => { if (error) throw error; resolve(results); }) }) let stulist = []; if (stu[0].student) { stulist = JSON.parse(stu[0].student) } stulist.push(stuinfor[i].xuehao) const updatesql = "UPDATE kechengbiaotest SET student=? WHERE classid=?" await new Promise((resolve, reject) => { connection.query(updatesql, [JSON.stringify(stulist), pyfa[month].zhuanyeclass[i].classid], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } //更新学生培养方案后加入学生已选课 let xueke = []; pyfa[0].systemchoose.map((value, index) => { xueke.push(value.xkh); }) pyfa[0].studnetchoose.map((value, index) => { xueke.push(value.xkh) }) for (let b = 0; b < xueke.length; b++) { if (stuchoose[xueke[b]]) {//此课选课存在 stukecbwb = await addkcbtojson(stukecbwb, stuchoose[xueke[b]]) const sqlkcstu = "SELECT * FROM kechengbiaotest WHERE classid=?" const stu = await new Promise((resolve, reject) => { connection.query(sqlkcstu, [stuchoose[xueke[b]].classid], (error, results, fields) => { if (error) throw error; resolve(results); }) }) let stulist = []; if (stu[0].student) { stulist = JSON.parse(stu[0].student) } stulist.push(stuinfor[0].xuehao) const updatesql = "UPDATE kechengbiaotest SET student=? WHERE classid=?" await new Promise((resolve, reject) => { connection.query(updatesql, [JSON.stringify(stulist), stuchoose[xueke[b]].classid], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } } const updatesql = "UPDATE student SET kecb=? WHERE xuehao=?" await new Promise((resolve, reject) => { connection.query(updatesql, [stukecbwb, stulista[a]], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } } } async function updatepyfabefore(zhuanyeid){ const sqlzy="SELECT * FROM zhuanye WHERE id=?" const reasult=await new Promise((resolve, reject) => { connection.query(sqlzy,[zhuanyeid],(error, results, fields) => { if (error) throw error; resolve(results); }) }) const pyfa=JSON.parse(reasult[0].pyfa) let kclist=[] pyfa.map((yearvalue,yearindex)=>{ yearvalue.publicclass.map((kevalue,indexke)=>{ kclist.push(kevalue.classid) }) yearvalue.zhuanyeclass.map((kevalue,indexke)=>{ kclist.push(kevalue.classid) }) yearvalue.systemchoose.map((kelist,kelistindex)=>{ kelist.ke.map((kevalue,indexke)=>{ kclist.push(kevalue.classid) }) }) yearvalue.studnetchoose.map((kelist,kelistindex)=>{ kelist.ke.map((kevalue,indexke)=>{ kclist.push(kevalue.classid) }) }) }) const stulisttx=await getxueyuanzystu(zhuanyeid); //先清除以前的本专业同学 for(let b=0;b { connection.query(sqlkcstu, [kclist[b]], (error, results, fields) => { if (error) throw error; resolve(results); }) }) let stulist = []; if (stu[0].student) { stulist = JSON.parse(stu[0].student) } //stulist.push(stuinfor[i].xuehao) stulist=stulist.filter(item=>!stulisttx.includes(item)) const updatesql = "UPDATE kechengbiaotest SET student=? WHERE classid=?" await new Promise((resolve, reject) => { connection.query(updatesql, [JSON.stringify(stulist), kclist[b]], (error, results, fields) => { if (error) throw error; resolve(results); }) }) } } app.post("/apixueyuan/updatepyfa",async (req,res)=>{ await updatepyfabefore(req.body.zhuanyeid) const sqlupdate="UPDATE zhuanye SET pyfa=?,kclist=?,infor=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(req.body.xueyear),JSON.stringify(req.body.kclist),JSON.stringify(req.body.infor),req.body.id],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const stu=await getxueyuanzystu(req.body.zhuanyeid); await updatekc(stu) res.send({status:"ok"}) }) app.post("/apischool/updatestukb",async (req,res)=>{ const sqlupdatekc="UPDATE kechengbiaotest SET kecb=?" await new Promise((resolve, reject) => { connection.query(sqlupdatekc,["[]"],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) const sqlstu="SELECT * FROM student" const stu= await new Promise((resolve, reject) => { connection.query(sqlstu,(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.body) console.log(error) } resolve(results) }) }) let stulist=[]; stu.map((value,index)=>{ stulist.push(value.xuehao) }) await updatekc(stulist) res.send({status:"ok"}) }) app.get("/apixueyuan/getpyfastu",async(req,res)=>{ const sqlzy="SELECT * FROM zhuanye WHERE id=?" const reasultA=await new Promise((resolve, reject) => { connection.query(sqlzy,[req.query.zhuanyeid],(error, results, fields) => { if (error) throw error; resolve(results); }) }) let stulist=await getxueyuanzystu_xx(req.query.zhuanyeid) let reasult=[] if(reasultA.length!==0&&JSON.parse(reasultA[0].pyfa)!==null) { JSON.parse(reasultA[0].pyfa).map((xueyear, index) => { let sys = [...xueyear.systemchoose]; for (let k = 0; k < sys.length; k++) { sys[k].xueyearlimit = index + 1 } reasult = [...reasult, ...sys]; }) for (let i = 0; i < reasult.length; i++) { let ke = [] for (let j = 0; j < reasult[i].ke.length; j++) { const sqlselect = "SELECT classid,classname,teacherid,classbh,student,teaname,studentnum FROM kechengbiaotest WHERE classid=?" const kcreasult = await new Promise((resolve, reject) => { connection.query(sqlselect, [reasult[i].ke[j].classid], (error, results, fields) => { if (error) throw error; resolve(results); }) }) ke.push(kcreasult) } reasult[i].ke = ke; let stu = [] stulist.map((stuone, index) => { let month = 1; if (stuone.ruxuetime) { let ruxueyear = moment(stuone.ruxuetime).year(); let moment1 = moment(`${ruxueyear}-09-01`) month = Math.ceil(moment().diff(moment1, 'months') / 6); } if (reasult[i].xueyearlimit === month) { stu.push(stuone) } }) reasult[i].stu = stu } res.send(reasult) }else{ res.send({statu:"err"}) } }) app.get("/apixueyuan/getpyfastuchoose",async(req,res)=>{ const sqlzy="SELECT * FROM zhuanye WHERE id=?" const reasultA=await new Promise((resolve, reject) => { connection.query(sqlzy,[req.query.zhuanyeid],(error, results, fields) => { if (error) throw error; resolve(results); }) }) let stulist=await getxueyuanzystu_xx(req.query.zhuanyeid) let reasult=[] if(reasultA.length!==0&&JSON.parse(reasultA[0].pyfa)!==null) { JSON.parse(reasultA[0].pyfa).map((xueyear, index) => { let sys = [...xueyear.studnetchoose]; for (let k = 0; k < sys.length; k++) { sys[k].xueyearlimit = index + 1 } reasult = [...reasult, ...sys]; }) for (let i = 0; i < reasult.length; i++) { let ke = [] for (let j = 0; j < reasult[i].ke.length; j++) { const sqlselect = "SELECT classid,classname,teacherid,classbh,student,teaname,studentnum FROM kechengbiaotest WHERE classid=?" const kcreasult = await new Promise((resolve, reject) => { connection.query(sqlselect, [reasult[i].ke[j].classid], (error, results, fields) => { if (error) throw error; resolve(results); }) }) ke.push(kcreasult) } reasult[i].ke = ke; let stu = [] stulist.map((stuone, index) => { let month = 1; if (stuone.ruxuetime) { let ruxueyear = moment(stuone.ruxuetime).year(); let moment1 = moment(`${ruxueyear}-09-01`) month = Math.ceil(moment().diff(moment1, 'months') / 6); } if (reasult[i].xueyearlimit === month) { stu.push(stuone) } }) reasult[i].stu = stu } res.send(reasult) }else{ res.send({statu:"err"}) } }) app.post("/apixueyuan/saveteaxueke",async(req,res)=>{ let stulisst=[...req.body.stu] let addxiang={...req.body.ke} for(let i=0;i { connection.query(sqlselectstu,[stulisst[i]],(error,results,fields)=>{ if (error) throw error; resolve(results); }) }) let stukc= await addkcbtojson(stu[0].kecb, addxiang); let choosestu={}; if(stu[0].chooseke){ choosestu=JSON.parse(stu[0].chooseke) } choosestu[req.body.xkh]=addxiang; const sqlupdate="UPDATE student SET kecb=?,chooseke=? WHERE xuehao=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[stukc,JSON.stringify(choosestu),stulisst[i]],(error,results,fields)=>{ if (error) throw error; resolve(results); }) }) } const sqlkcstu = "SELECT * FROM kechengbiaotest WHERE classid=?" const stu = await new Promise((resolve, reject) => { connection.query(sqlkcstu, [addxiang.classid], (error, results, fields) => { if (error) throw error; resolve(results); }) }) let stulist = []; if (stu[0].student) { stulist = JSON.parse(stu[0].student) } stulist=[...stulist,...stulisst] const updatesql = "UPDATE kechengbiaotest SET student=? WHERE classid=?" await new Promise((resolve, reject) => { connection.query(updatesql, [JSON.stringify(stulist), addxiang.classid], (error, results, fields) => { if (error) throw error; resolve(results); }) }) res.send({status:"ok"}) }) app.post("/apixueyuan/tuike",async(req,res)=>{ const sqlstu="SELECT * FROM student WHERE xuehao=?" const resultstu=await new Promise((resolve, reject) => { connection.query(sqlstu,[req.body.xuehao],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) let stuchoose=JSON.parse(resultstu[0].chooseke) if(stuchoose[req.body.xkh]){ delete stuchoose[req.body.xkh] } let jsonjs=JSON.parse(resultstu[0].kecb); const sqlreadkc="SELECT * FROM kechengbiaotest WHERE classid=?" const kcreasult=await new Promise((resolve, reject) => { connection.query(sqlreadkc, [req.body.classid],(error, results, fields) => { if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) let kclist=[] JSON.parse(kcreasult[0].classzou).map((zou,zouindex)=>{ zou.class.map((ke,keindex)=>{ kclist.push(ke.ke) }) }) jsonjs.map((keone,index)=>{ if(kclist.includes(keone.time)) { jsonjs[index].ke = 0 } }) const sqlupdate="UPDATE student SET kecb=?,chooseke=? WHERE xuehao=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(jsonjs),JSON.stringify(stuchoose),req.body.xuehao],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) let stukc=JSON.parse(kcreasult[0].student).filter(item=>item!==req.body.xuehao) const updatekc="UPDATE kechengbiaotest SET student=? WHERE classid=?" await new Promise((resolve, reject) => { connection.query(updatekc,[JSON.stringify(stukc),req.body.classid],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) res.send({status:"ok"}) }) app.get("/apistu/getpyfa",async(req,res)=>{ const sqlstu="SELECT * FROM student WHERE xuehao=?" const resultstu=await new Promise((resolve, reject) => { connection.query(sqlstu,[req.query.xuehao],(error,results,fields)=>{ if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) const sqlbanji="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" if(resultstu.length!==0) { const resultbanji = await new Promise((resolve, reject) => { connection.query(sqlbanji, [resultstu[0].nianjizhaungye], (error, results, fields) => { if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) const sqlpyfa = "SELECT * FROM zhuanye WHERE id=?" const resultpyfa = await new Promise((resolve, reject) => { connection.query(sqlpyfa, [resultbanji[0].zhaunyeid], (error, results, fields) => { if (error) { newbug(error, "/apiclass/getxueke", req.query) console.log(error) } resolve(results) }) }) let pyfa = JSON.parse(resultpyfa[0].pyfa) let pyfaall = [] pyfa.map((xueyearvalue, xueyearindex) => { let kconeyear = []; xueyearvalue.publicclass.map((kcvalue, kcindex) => { let tempkc = {...kcvalue} tempkc.kclx = "公共课" tempkc.kcchoose = "必修" tempkc.banji = "yes" kconeyear.push(tempkc) }) xueyearvalue.zhuanyeclass.map((kcvalue, kcindex) => { let tempkc = {...kcvalue} tempkc.kclx = "公共课" tempkc.kcchoose = "必修" tempkc.banji = "yes" kconeyear.push(tempkc) }) xueyearvalue.systemchoose.map((choosevalue, chooseindex) => { let prename = []; choosevalue.ke.map((kcvalue, kcindex) => { prename.push(kcvalue.classname) }) prename = [...new Set(prename)] if (prename.length === 1) { let tempkc = {...choosevalue.ke[0]} tempkc.kclx = choosevalue.xklx; tempkc.kcchoose = "必修" tempkc.banji = "choose" kconeyear.push(tempkc) } else { choosevalue.ke.map((kcvalue, kcindex) => { let tempkc = {...kcvalue} tempkc.kclx = choosevalue.xklx tempkc.kcchoose = "限选" tempkc.banji = "choose" kconeyear.push(tempkc) }) } }) xueyearvalue.studnetchoose.map((choosevalue, chooseindex) => { let prename = []; choosevalue.ke.map((kcvalue, kcindex) => { prename.push(kcvalue.classname) }) prename = [...new Set(prename)] if (prename.length === 1) { let tempkc = {...choosevalue.ke[0]} tempkc.kclx = choosevalue.xklx; tempkc.kcchoose = "必修" tempkc.banji = "choose" kconeyear.push(tempkc) } else { choosevalue.ke.map((kcvalue, kcindex) => { let tempkc = {...kcvalue} tempkc.kclx = choosevalue.xklx tempkc.kcchoose = "自选" tempkc.banji = "choose" kconeyear.push(tempkc) }) } }) pyfaall.push({ kclist: kconeyear, sx: xueyearvalue.sx, xuhao: xueyearvalue.xuhao }) }) res.send({pyfa:pyfaall,infor:JSON.parse(resultpyfa[0].infor)}) }else{ res.send({pyfa:[],infor:{xuezhiyear:0}}) } }) app.get("/apifdy/getbanji",async (req,res)=>{ const sqlbj="SELECT * FROM banjiclass WHERE teacherid=?" let bjresult=await new Promise((resolve, reject) => { connection.query(sqlbj,[req.query.fdy], (error, results, fields) => { if(error)throw error; resolve(results); }) }) for(let i=0;i { connection.query(sqlzy,[bjresult[i].zhaunyeid], (error, results, fields) => { if(error)throw error; resolve(results[0]); }) }) bjresult[i].zyname=zy.name; // const zyresult=await new Promise((resolve, reject) => {}) } res.send(bjresult); }) app.get("/apifdy/getkclist",async (req,res)=>{ const sqlstu="SELECT * FROM student WHERE nianjizhaungye=?" const stu=await new Promise((resolve, reject) => { connection.query(sqlstu,[req.query.banji], (error, results, fields) => { if(error)throw error; resolve(results); }) }) let stulist=[] stu.map((stuone,index)=>{ stulist.push(stuone.xuehao) }) const sqlkc="SELECT * FROM `kechengbiaotest` WHERE JSON_OVERLAPS1(student,?)" const kcresult=await new Promise((resolve, reject) => { connection.query(sqlkc, [JSON.stringify(stulist)], (error, results, fields) => { if(error)throw error; resolve(results); }) }) //课程开始 for(let j=0;j { connection.query(sqltea, [kcresult[j].teacher], (err, results, field) => { if (err) throw err; resolve(results); }) }) if (tea.length > 0) { kcresult[j].teachername = tea[0].name; kcresult[j].status = "ok" } } //课程结束 let kclist=[] let kclistwb=[] kcresult.map((kcone,kcindex)=>{ kclist.push(parseInt(kcone.teacherid)) kclistwb.push(kcone.teacherid) }) const sqlcommit="SELECT * FROM `commitgroup` WHERE JSON_OVERLAPS1(fabukecheng,?)" const resultcommit=await new Promise((resolve, reject) => { connection.query(sqlcommit,[JSON.stringify(kclist)], (error, results, fields) => { if(error)throw error; resolve(results); }) }) //comit start resultcommit.map((kspone,indexone)=>{ const stutimu=JSON.parse(kspone.student) let stukc=[]; console.log(stutimu) console.log(stulist) stutimu.map((stuone,indexstuone)=>{ if(stulist.includes(stuone)){ stukc.push(stuone); } }) resultcommit[indexone].sturea=stukc; }) for(let i=0;i { connection.query(sqlcommit,[resultcommit[i].xuhao],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) const commitstu=[]; const commit=[]; reasultcommitxiang.map((valuecommit,indexcommit)=>{ if(stulist.includes(valuecommit.xuehao)){ commit.push(valuecommit) commitstu.push(valuecommit.xuehao) } }) resultcommit[i].commit=commit; resultcommit[i].commitstu=commitstu } //commit end const sqltmj="SELECT * FROM `perparetmj` WHERE JSON_OVERLAPS1(information->'$.class',?)" const ksp=await new Promise((resolve, reject) => { connection.query(sqltmj,[JSON.stringify(kclistwb)], (error, results, fields) => { if(error)throw error; resolve(results); }) }) for(let i=0;i { connection.query(sqlkc,[kspclass[j]],(error,results,field)=>{ if(error)throw error; resolve(results); }) }) const stuone=JSON.parse(stureasult[0].student); tmjstu=[...tmjstu,...stuone]; } let stukc=[]; tmjstu.map((stuone,indexstuone)=>{ if(stulist.includes(stuone)){ stukc.push(stuone); } }) ksp[i].sturea=stukc; } const sqlks="SELECT * FROM `kaoshipaper` WHERE JSON_OVERLAPS1(fabukecheng,?)" const resultks=await new Promise((resolve, reject) => { connection.query(sqlks,[JSON.stringify(kclistwb)], (error, results, fields) => { if(error)throw error; resolve(results); }) }) resultks.map((kspone,indexone)=>{ const stutimu=JSON.parse(kspone.stu) let stukc=[]; console.log(stutimu) console.log(stulist) if(stutimu) { stutimu.map((stuone, indexstuone) => { if (stulist.includes(stuone)) { stukc.push(stuone); } }) } resultks[indexone].sturea=stukc; }) let kechengnew=[]; kcresult.map((kcone,index)=>{ kechengnew.push(kcone.teacherid) }) res.send({tmj:ksp,ks:resultks,commit:resultcommit,kc:await huqoukecheng(kechengnew),stu:stu}); }) app.get("/apistu/sendyzm",async(req,res)=>{ const sql="SELECT * FROM student WHERE xuehao=?" console.log(req.query) const sjh=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xuehao],(error, results, fields) => { if(error)throw error; resolve(results); }) }) console.log(sjh[0].shoujihao) const token =crypto.randomInt(100000, 999999).toString(); console.log(token) const uuid=uuidv4.v4(); const sqlinsert="INSERT INTO yzm(uuid,yzm,xuehao) VALUES(?,?,?)" await new Promise((resolve, reject) => { connection.query(sqlinsert,[uuid,token,req.query.xuehao],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const result=await axios.post("http://106.ihuyi.com/webservice/sms.php?method=Submit",{ account:"C08954976", password:"7a668c9bb62aa8485ac91eef1bf82e9c", mobile:sjh[0].shoujihao, content:`您的验证码是:${token}。请不要把验证码泄露给其他人。` },{ headers:{ "Content-Type": "application/x-www-form-urlencoded" } }) console.log(result) res.send({yzm:uuid}) }) app.get("/apitea/sendyzm",async(req,res)=>{ const sql="SELECT * FROM teacher WHERE xuegonghao=?" console.log(req.query) const sjh=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xgh],(error, results, fields) => { if(error)throw error; resolve(results); }) }) console.log(sjh[0].iphone) const token =crypto.randomInt(100000, 999999).toString(); console.log(token) const uuid=uuidv4.v4(); const sqlinsert="INSERT INTO yzm(uuid,yzm,xuehao) VALUES(?,?,?)" await new Promise((resolve, reject) => { connection.query(sqlinsert,[uuid,token,req.query.xgh],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const result=await axios.post("http://106.ihuyi.com/webservice/sms.php?method=Submit",{ account:"C08954976", password:"7a668c9bb62aa8485ac91eef1bf82e9c", mobile:sjh[0].iphone, content:`您的验证码是:${token}。请不要把验证码泄露给其他人。` },{ headers:{ "Content-Type": "application/x-www-form-urlencoded" } }) console.log(result) res.send({yzm:uuid}) }) app.get("/apistu/getpassword",async(req,res)=>{ const yzmsql="SELECT * FROM yzm WHERE uuid=?" const yzm=await new Promise((resolve, reject) => { connection.query(yzmsql,[req.query.uuid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) if(yzm[0].yzm===req.query.yzm) { const sql = "SELECT * FROM student WHERE xuehao=?" const sjh = await new Promise((resolve, reject) => { connection.query(sql, [yzm[0].xuehao], (error, results, fields) => { if (error) throw error; resolve(results); }) }) res.send({password: sjh[0].passage,status:"ok",xuehao:sjh[0].xuehao}) }else{ res.send({status:"err"}) } }) app.get("/apitea/getpassword",async(req,res)=>{ const yzmsql="SELECT * FROM yzm WHERE uuid=?" const yzm=await new Promise((resolve, reject) => { connection.query(yzmsql,[req.query.uuid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) if(yzm[0].yzm===req.query.yzm) { const sql = "SELECT * FROM teacher WHERE xuegonghao=?" const sjh = await new Promise((resolve, reject) => { connection.query(sql, [yzm[0].xuehao], (error, results, fields) => { if (error) throw error; resolve(results); }) }) if(sjh[0].quexian===1) { res.send({status: 'ok',zw:'任课老师',password: sjh[0].passage,xuehao:sjh[0].xuegonghao}) }else if(sjh[0].quexian===2){ res.send({status:'ok',zw:'辅导员',password: sjh[0].passage,xuehao:sjh[0].xuegonghao}) } }else{ res.send({status:"err"}) } }) app.post("/apischool/addtea",async(req,res)=>{ const tealist=req.body.tea for(let i=0;i { connection.query(sqlinsert,[teaone.name,teaone.iphone,md,teaone.zw,teaone.xuegonghao,teaone.sex,teaone.idcard,teaone.zzmm],(error, results, fields) => { if(error)throw error; resolve(results) }) }) } res.send({status:"ok"}) }) app.get("/apschool/getteainfor",async(req,res)=>{ const sql="SELECT * FROM teacher WHERE xuegonghao=?" const result=await new Promise((resolve, reject) => { connection.query(sql,[req.query.tea],(error, results, fields) => { if(error)throw error resolve(results); }) }) res.send(result[0]) }) app.post("/apitea/changinfor",async(req,res)=>{ const teainfor=req.body.infor; const updatesql="UPDATE teacher SET name=?,xinbian=?,idcard=?,iphone=?,zzmm=? WHERE xuegonghao=?" await new Promise((resolve, reject) => { connection.query(updatesql,[teainfor.name,teainfor.xinbian,teainfor.idcard,teainfor.iphone,teainfor.zzmm,teainfor.xuegonghao],(error, results, fields) => { if(error)throw error; resolve(results) }) }) res.send({status:"ok"}) }) app.get("/apitea/getpjbz",async(req,res)=>{ const sqlkc="SELECT classid,classname,teacherid,classbh,pjbz FROM `kechengbiaotest` WHERE teacherid=?" const result=await new Promise((resolve, reject) => { connection.query(sqlkc,[req.query.teacherid],(error, results, fields) => { if(error)throw error; resolve(results) }) }) if(result.length!==0) { res.send(result[0]) }else{ res.send({err:"ok"}) } }) app.post("/apitea/savepjbz",async(req,res)=>{ const sql="UPDATE kechengbiaotest SET pjbz=? WHERE teacherid=?" await new Promise((resolve, reject) => { connection.query(sql,[JSON.stringify(req.body.pjbz),req.body.teacherid],(error, results, fields) => { if(error)throw error; resolve(results) }) }) res.send({ok:"ok"}) }) app.get("/apistu/getstucjd",async(req,res)=>{ const sqlkc="SELECT * FROM kechengbiaotest WHERE teacherid=?" const kcresult=await new Promise((resolve, reject) => { connection.query(sqlkc,[req.query.teacherid],(error, results, fields) => { if(error)throw error; resolve(results) }) }) if(kcresult.length!==0) { const sqlstu = `SELECT * FROM student WHERE kecb LIKE \"%\\\"ke\\\": ${kcresult[0].classid}%\"` const sturesult = await new Promise((resolve, reject) => { connection.query(sqlstu, [req.query.bj], (error, results, fields) => { if (error) throw error; resolve(results) }) }) for (let i = 0; i < sturesult.length; i++) { sturesult[i].cjd = JSON.parse(sturesult[i].cjd) } res.send(sturesult) }else{ res.send([]); } }) app.post("/apitea/savecjd",async(req,res)=>{ const stuall=[...req.body.stulist] for(let i=0;i { connection.query(sqlselect,[stuall[i].xuehao],(error, results, fields) => { if(error)throw error; resolve(results) }) }) const cjbjson=JSON.parse(result[0].cjd) let all=0; Object.entries(stuall[i].cjd).map((print,printindex)=>{ if(print[0]!=='all'&&print[0]!=='zt') { all += print[1] } console.log(print) }) console.log(all) cjbjson[req.body.teacherid]=stuall[i].cjd; cjbjson[req.body.teacherid].all=all; const updatesql="UPDATE student SET cjd=? WHERE xuehao=?" await new Promise((resolve, reject) => { connection.query(updatesql,[JSON.stringify(cjbjson),stuall[i].xuehao],(error, results, fields) => { if(error)throw error; resolve(results) }) }) } res.send({status:"ok"}) }) app.post("/apitea/fabucjd",async(req,res)=>{ const stuall=[...req.body.stulist] for(let i=0;i { connection.query(sqlselect,[stuall[i].xuehao],(error, results, fields) => { if(error)throw error; resolve(results) }) }) const cjbjson=JSON.parse(result[0].cjd) let all=0; Object.entries(stuall[i].cjd).map((print,printindex)=>{ if(print[0]!=="all") { all += print[1] } }) cjbjson[req.body.teacherid]=stuall[i].cjd; cjbjson[req.body.teacherid].all=all; cjbjson[req.body.teacherid].zt="已发布" const updatesql="UPDATE student SET cjd=? WHERE xuehao=?" await new Promise((resolve, reject) => { connection.query(updatesql,[JSON.stringify(cjbjson),stuall[i].xuehao],(error, results, fields) => { if(error)throw error; resolve(results) }) }) } res.send({status:"ok"}) }) app.get("/apitea/getcjd",async(req,res)=>{ const sqlkcb="SELECT * FROM kechengbiaotest WHERE teacher=?" const cjdresult=await new Promise((resolve, reject) => { connection.query(sqlkcb,[req.query.tea],(error, results, fields) => { if(error)throw error; resolve(results); }) }) for(let i=0;i { connection.query(sqlstu,(error, results, fields) => { if(error)throw error; resolve(results); }) }) let finish=0; let allprint=0; let zt=true sturesult.map((stuone,stuindex)=>{ if(stuone.cjd){ const cjdjson=JSON.parse(stuone.cjd)[cjdresult[i].teacherid]; if(cjdjson){ finish++; if(cjdjson.zt!=="已发布"){ zt=false } allprint+=cjdjson.all } } }) cjdresult[i].all=allprint cjdresult[i].finish=finish; if(zt===true&&sturesult.length===finish){ cjdresult[i].zt="已完成" }else{ cjdresult[i].zt="未完成" } } res.send(cjdresult) }) app.get("/apistu/getcjd",async(req,res)=>{ const kclist="SELECT * FROM kechengbiaotest WHERE JSON_CONTAINS(student,?, '$')"; const stusql="SELECT * FROM student WHERE xuehao=?" const sturesult=await new Promise((resolve, reject) => { connection.query(stusql,[req.query.stu],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const sqlbanji="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const banjiresult=await new Promise((resolve, reject) => { connection.query(sqlbanji,[sturesult[0].nianjizhaungye],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const sqlzy="SELECT * FROM zhuanye WHERE id=?" const zyresult=await new Promise((resolve, reject) => { connection.query(sqlzy,[banjiresult[0].zhaunyeid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const pyfa=JSON.parse(zyresult[0].pyfa)[parseInt(req.query.year)] const teacherid=[] pyfa.publicclass.map((ke,index)=>{ teacherid.push(ke.teacherid) }) pyfa.zhuanyeclass.map((ke,index)=>{ teacherid.push(ke.teacherid) }) pyfa.systemchoose.map((choose,indexchoose)=>{ choose.ke.map((ke,index)=>{ teacherid.push(ke.teacherid) }) }) pyfa.studnetchoose.map((choose,indexchoose)=>{ choose.ke.map((ke,index)=>{ teacherid.push(ke.teacherid) }) }) const cjd=JSON.parse(sturesult[0].cjd) const kcresult=[]; for(let i=0;i { connection.query(sqlget,[teacherid[i]],(error, results, fields) => { if(error)throw error; resolve(results[0]); }) }) kcresult.push(onekeresult) } // await new Promise((resolve, reject) => { // connection.query(kclist,[`[\"${req.query.stu}\"]`],(error, results, fields) => { // if(error)throw error; // resolve(results); // }) // }) let kcall=[]; kcresult.map((kcone,kcindex)=>{ const pjbz=JSON.parse(kcone.pjbz) let printall=0; if(pjbz) { pjbz.map((pjbzone, indexpjbz) => { printall += pjbzone.print; }) } if(cjd) { if (cjd[kcone.teacherid]) { if (cjd[kcone.teacherid].zt === "已发布") { let kctemp = {...kcone, ...cjd[kcone.teacherid], zf: printall} delete kctemp.classtime; delete kctemp.classzou; delete kctemp.student; kcall.push(kctemp) } } } }) res.send({cjd:kcall,infor:JSON.parse(zyresult[0].infor)}); }) app.get("/apistu/lurucj",async function(req,res){ const fileContent = xlsx.readFile(req.query.xlsx); // 读取excel文件 const name = fileContent.SheetNames[0] // 获取excel第一张sheet的名字 const sheet = fileContent.Sheets[name] // 获取excel第一张sheet中的数据 const jsonData = xlsx.utils.sheet_to_json(sheet) res.send(jsonData) }) app.get("/apixueyuan/getzycjdyear",async function(req,res){ const sqlzy="SELECT * FROM zhuanye WHERE id=?" const pyfaresult=await new Promise((resolve, reject) => { connection.query(sqlzy,[req.query.zy],(error, results, fields) => { if(error)throw error; resolve(results); }) }) //teacheridlist const sqlbj="SELECT * FROM banjiclass WHERE zhaunyeid=?" const banjiresult=await new Promise((resolve, reject) => { connection.query(sqlbj,[req.query.zy],(error, results, fields) => { if(error)throw error; resolve(results); }) }) //获取学生信息 console.log(banjiresult) let stulist=[]; for(let bj_i=0;bj_i { connection.query(sqlstu,[banjiresult[bj_i].classname1+banjiresult[bj_i].classname2],(error, results, fields) => { if(error)throw error; resolve(results); }) }) stulist=[...stulist,...stuonegroup] } let infor={} stulist.map((stuone,stuindex)=>{ let all=0; let allnum=0 if(stuone.cjd){ let ruxueyear=moment(stuone.ruxuetime).year(); let moment1=moment(`${ruxueyear}-09-01`) let month=Math.ceil(moment().diff(moment1,'months')/6); const cjd=JSON.parse(stuone.cjd) let teacherid=[] infor=JSON.parse(pyfaresult[0].infor); const pyfa=JSON.parse(pyfaresult[0].pyfa)[req.query.xq] console.log(pyfa) if(pyfa) { pyfa.publicclass.map((ke, index) => { teacherid.push(ke.teacherid) }) pyfa.zhuanyeclass.map((ke, index) => { teacherid.push(ke.teacherid) }) pyfa.systemchoose.map((choose, indexchoose) => { choose.ke.map((ke, index) => { teacherid.push(ke.teacherid) }) }) pyfa.studnetchoose.map((choose, indexchoose) => { choose.ke.map((ke, index) => { teacherid.push(ke.teacherid) }) }) } teacherid=[...new Set(teacherid)] teacherid.map((kcvalue,kcindex)=>{ if(cjd[kcvalue]){ if(cjd[kcvalue].zt==="已发布"){ if(typeof cjd[kcvalue].all==="number"){ all+=cjd[kcvalue].all; allnum++; } } } }) stulist[stuindex].all=all; stulist[stuindex].allnum=allnum; if(req.query.xq-1>month){ stulist[stuindex].delete=true } delete stulist[stuindex].kecb } }) stulist=stulist.filter(item=>item.delete!==true) res.send({cjd:stulist,infor:infor}) }) app.get("/apixueyuan/getzycjd",async function(req,res){ const sqlzy="SELECT * FROM zhuanye WHERE id=?" const pyfaresult=await new Promise((resolve, reject) => { connection.query(sqlzy,[req.query.zy],(error, results, fields) => { if(error)throw error; resolve(results); }) }) //teacheridlist const sqlbj="SELECT * FROM banjiclass WHERE zhaunyeid=?" let banjiresult=await new Promise((resolve, reject) => { connection.query(sqlbj,[req.query.zy],(error, results, fields) => { if(error)throw error; resolve(results); }) }) //获取学生信息 console.log(banjiresult) banjiresult=banjiresult.filter(item=>item.classname1!==null&&item.classname2!==null) let stulist=[]; for(let bj_i=0;bj_i { connection.query(sqlstu,[banjiresult[bj_i].classname1+banjiresult[bj_i].classname2],(error, results, fields) => { if(error)throw error; resolve(results); }) }) stulist=[...stulist,...stuonegroup] } let infor={} stulist.map((stuone,stuindex)=>{ let all=0; let allnum=0 if(stuone.cjd){ let ruxueyear=moment().year(); let moment1=moment(`${ruxueyear}-09-01`) let month=Math.ceil(moment().diff(moment1,'months')/6); const cjd=JSON.parse(stuone.cjd) let teacherid=[] infor=JSON.parse(pyfaresult[0].infor); if(JSON.parse(pyfaresult[0].pyfa)) { const pyfa = JSON.parse(pyfaresult[0].pyfa)[month] console.log(pyfa) if (pyfa) { pyfa.publicclass.map((ke, index) => { teacherid.push(ke.teacherid) }) pyfa.zhuanyeclass.map((ke, index) => { teacherid.push(ke.teacherid) }) pyfa.systemchoose.map((choose, indexchoose) => { choose.ke.map((ke, index) => { teacherid.push(ke.teacherid) }) }) pyfa.studnetchoose.map((choose, indexchoose) => { choose.ke.map((ke, index) => { teacherid.push(ke.teacherid) }) }) } } teacherid=[...new Set(teacherid)] teacherid.map((kcvalue,kcindex)=>{ if(cjd[kcvalue]){ if(cjd[kcvalue].zt==="已发布"){ if(typeof cjd[kcvalue].all==="number"){ all+=cjd[kcvalue].all; allnum++; } } } }) stulist[stuindex].all=all; stulist[stuindex].allnum=allnum; delete stulist[stuindex].kecb } }) res.send({cjd:stulist,infor:infor}) }) app.get("/apitea/getfdycjd",async function(req,res){ const sqlstu="SELECT * FROM student WHERE nianjizhaungye=?" console.log(req.query.banji) let sturesult=await new Promise((resolve, reject) => { connection.query(sqlstu,[req.query.banji],(error, results, fields) => { if(error)throw error; resolve(results); }) }) // console.log(sturesult) let ruxueyear=moment().year() if(sturesult[0]) { ruxueyear= moment(sturesult[0].ruxuetime).year(); } let moment1=moment(`${ruxueyear}-09-01`) let month=Math.ceil(moment().diff(moment1,'months')/6); console.log(month) if(month<0){ month=0 } const sqlbanji="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const banji=await new Promise((resolve, reject) => { connection.query(sqlbanji,[req.query.banji],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const sqlpyfa="SELECT * FROM zhuanye WHERE id=?" if(banji.length!==0) { const pyfaresult = await new Promise((resolve, reject) => { connection.query(sqlpyfa, [banji[0].zhaunyeid], (error, results, fields) => { if (error) throw error; resolve(results); }) }) let teacherid = [] const infor = JSON.parse(pyfaresult[0].infor); const pyfa = JSON.parse(pyfaresult[0].pyfa)[month] console.log(pyfa) pyfa.publicclass.map((ke, index) => { teacherid.push(ke.teacherid) }) pyfa.zhuanyeclass.map((ke, index) => { teacherid.push(ke.teacherid) }) pyfa.systemchoose.map((choose, indexchoose) => { choose.ke.map((ke, index) => { teacherid.push(ke.teacherid) }) }) pyfa.studnetchoose.map((choose, indexchoose) => { choose.ke.map((ke, index) => { teacherid.push(ke.teacherid) }) }) teacherid = [...new Set(teacherid)] sturesult.map((stuone, stuindex) => { let all = 0; let allnum = 0 if (stuone.cjd) { const cjd = JSON.parse(stuone.cjd) teacherid.map((kcvalue, kcindex) => { if (cjd[kcvalue]) { if (cjd[kcvalue].zt === "已发布") { if (typeof cjd[kcvalue].all === "number") { all += cjd[kcvalue].all; allnum++; } } } }) sturesult[stuindex].all = all; sturesult[stuindex].allnum = allnum; } }) res.send({cjd:sturesult,infor:infor}) }else{ res.send({cjd:[],infor:{xuezhiyear:0}}) } }) app.get("/apitea/getfdycjdyear",async function(req,res){ const sqlstu="SELECT * FROM student WHERE nianjizhaungye=?" console.log(req.query.banji) let sturesult=await new Promise((resolve, reject) => { connection.query(sqlstu,[req.query.banji],(error, results, fields) => { if(error)throw error; resolve(results); }) }) // console.log(sturesult) let ruxueyear=moment(sturesult[0].ruxuetime).year(); let moment1=moment(`${ruxueyear}-09-01`) let month=Math.ceil(moment().diff(moment1,'months')/6); console.log(month) const sqlbanji="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const banji=await new Promise((resolve, reject) => { connection.query(sqlbanji,[req.query.banji],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const sqlpyfa="SELECT * FROM zhuanye WHERE id=?" const pyfaresult=await new Promise((resolve, reject) => { connection.query(sqlpyfa,[banji[0].zhaunyeid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) let teacherid=[] const pyfa=JSON.parse(pyfaresult[0].pyfa)[req.query.year] console.log(pyfa) pyfa.publicclass.map((ke,index)=>{ teacherid.push(ke.teacherid) }) pyfa.zhuanyeclass.map((ke,index)=>{ teacherid.push(ke.teacherid) }) pyfa.systemchoose.map((choose,indexchoose)=>{ choose.ke.map((ke,index)=>{ teacherid.push(ke.teacherid) }) }) pyfa.studnetchoose.map((choose,indexchoose)=>{ choose.ke.map((ke,index)=>{ teacherid.push(ke.teacherid) }) }) teacherid=[...new Set(teacherid)] sturesult.map((stuone,stuindex)=>{ let all=0; let allnum=0 if(stuone.cjd){ const cjd=JSON.parse(stuone.cjd) teacherid.map((kcvalue,kcindex)=>{ if(cjd[kcvalue]){ if(cjd[kcvalue].zt==="已发布"){ if(typeof cjd[kcvalue].all==="number"){ all+=cjd[kcvalue].all; allnum++; } } } }) sturesult[stuindex].all=all; sturesult[stuindex].allnum=allnum; } }) res.send(sturesult) }) app.get("/apitea/getstucjd",async function(req,res){ const sqlstu="SELECT * FROM student WHERE xuehao=?" const sturesult=await new Promise((resolve, reject) => { connection.query(sqlstu,[req.query.xuehao],(error, results, fields) => { if(error)throw error; resolve(results) }) }) console.log(req.query.xuehao) const sqlbanji="SELECT * FROM banjiclass WHERE CONCAT(classname1,classname2)=?" const banjiresult=await new Promise((resolve, reject) => { connection.query(sqlbanji,[sturesult[0].nianjizhaungye],(error, results, fields) => { if(error)throw error; resolve(results) }) }) const sqlzy="SELECT * FROM zhuanye WHERE id=?" const zyresult=await new Promise((resolve, reject) => { connection.query(sqlzy,[banjiresult[0].zhaunyeid],(error, results, fields) => { if(error)throw error; resolve(results); }) }) const pyfa=JSON.parse(zyresult[0].pyfa)[parseInt(req.query.year)] const teacherid=[] pyfa.publicclass.map((ke,index)=>{ teacherid.push(ke.teacherid) }) pyfa.zhuanyeclass.map((ke,index)=>{ teacherid.push(ke.teacherid) }) pyfa.systemchoose.map((choose,indexchoose)=>{ choose.ke.map((ke,index)=>{ teacherid.push(ke.teacherid) }) }) pyfa.studnetchoose.map((choose,indexchoose)=>{ choose.ke.map((ke,index)=>{ teacherid.push(ke.teacherid) }) }) const cjd=JSON.parse(sturesult[0].cjd) const kcresult=[]; if(cjd) { for (let i = 0; i < teacherid.length; i++) { const sqlget = "SELECT * FROM kechengbiaotest WHERE teacherid=?" const onekeresult = await new Promise((resolve, reject) => { connection.query(sqlget, [teacherid[i]], (error, results, fields) => { if (error) throw error; resolve(results[0]); }) }) kcresult.push(onekeresult) } // await new Promise((resolve, reject) => { // connection.query(kclist,[`[\"${req.query.stu}\"]`],(error, results, fields) => { // if(error)throw error; // resolve(results); // }) // }) let kcall = []; kcresult.map((kcone, kcindex) => { const pjbz = JSON.parse(kcone.pjbz) let printall = 0; if (pjbz) { pjbz.map((pjbzone, indexpjbz) => { printall += pjbzone.print; }) } if (cjd[kcone.teacherid]) { if (cjd[kcone.teacherid].zt === "已发布") { let kctemp = {...kcone, ...cjd[kcone.teacherid], zf: printall} delete kctemp.classtime; delete kctemp.classzou; delete kctemp.student; kcall.push(kctemp) } } }) res.send({cjd: kcall, infor: JSON.parse(zyresult[0].infor), stu: sturesult[0]}); }else{ for (let i = 0; i < teacherid.length; i++) { const sqlget = "SELECT * FROM kechengbiaotest WHERE teacherid=?" const onekeresult = await new Promise((resolve, reject) => { connection.query(sqlget, [teacherid[i]], (error, results, fields) => { if (error) throw error; resolve(results[0]); }) }) kcresult.push(onekeresult) } // await new Promise((resolve, reject) => { // connection.query(kclist,[`[\"${req.query.stu}\"]`],(error, results, fields) => { // if(error)throw error; // resolve(results); // }) // }) let kcall = []; kcresult.map((kcone, kcindex) => { const pjbz = JSON.parse(kcone.pjbz) let printall = 0; if (pjbz) { pjbz.map((pjbzone, indexpjbz) => { printall += pjbzone.print; }) } let kctemp = {...kcone, all:0, zf: 0} delete kctemp.classtime; delete kctemp.classzou; delete kctemp.student; kcall.push(kctemp) }) res.send({cjd: kcall, infor: JSON.parse(zyresult[0].infor), stu: sturesult[0]}); } }) app.post("/apitea/dyccjdxlsx",async (req,res)=>{ const buffer=xlsxnode.build(req.body.xlsx) fs.writeFileSync('node.xlsx',buffer); res.send(buffer.toString("base64")) } ) app.get("/apitea/kcstulist",async (req,res)=>{ //const sqlstu="SELECT studentname,xuehao,shoujihao,xingbian,xueyuan,nianjizhaungye FROM student WHERE classid=?" const sqlstu=`SELECT studentname,xuehao,shoujihao,xingbian,xueyuan,nianjizhaungye FROM student WHERE kecb LIKE \"%\\\"ke\\\": ${req.query.classid}%\"` const sturesult=await new Promise((resolve, reject) => { connection.query(sqlstu,(error, results, fields) => { if(error)throw error; resolve(results); }) }) res.send(sturesult) }) app.post("/api/addshixixm",async (req,res)=>{ const uuid=uuidv4.v4(); const sqlinsert="INSERT INTO shixi(starttime,endtime,cx,sflx,dz,shixihao,danwei,cxfs,sfhxzs,xiangxi,zt,xuehao,name) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)" await new Promise((resolve, reject) => { connection.query(sqlinsert,[req.body.sx.startDatesx,req.body.sx.endDatesx,-1*moment(req.body.sx.startDatesx).diff(moment(req.body.sx.endDatesx),'day'), req.body.sx.Sflx,req.body.sx.dzsx,uuid,req.body.sx.danwei,req.body.sx.cxfssx,req.body.sx.sfhxzssx,req.body.sx.xiangxi,req.body.sx.zt,req.body.xuehao,req.body.sx.name],(error,result,field)=>{ if(error)throw error resolve(result) }) }) res.send({uuid:uuid}) }) app.post("/api/updateshixixm",async (req,res)=>{ const uuid=uuidv4.v4() const sqlinsert="UPDATE shixi SET starttime=?,endtime=?,cx=?,sflx=?,dz=?,danwei=?,cxfs=?,sfhxzs=?,xiangxi=?,name=? WHERE shixihao=?" await new Promise((resolve, reject) => { connection.query(sqlinsert,[req.body.sx.startDatesx,req.body.sx.endDatesx,-1*moment(req.body.sx.startDatesx).diff(moment(req.body.sx.endDatesx),'day'), req.body.sx.Sflx,req.body.sx.dzsx,req.body.sx.danwei,req.body.sx.cxfssx,req.body.sx.sfhxzssx,req.body.sx.xiangxi,req.body.sx.name,req.body.uuid],(error,result,field)=>{ if(error)throw error resolve(result) }) }) res.send({uuid:uuid}) }) app.get("/api/selectshixixm",async (req,res)=>{ const sql="SELECT * FROM shixi WHERE shixihao=?" const resultsx=await new Promise((resolve, reject) => { connection.query(sql,[req.query.shixi],(error, results, fields) => { if(error)throw error resolve(results) }) }) resultsx[0].startDatesx=resultsx[0].starttime resultsx[0].endDatesx=resultsx[0].endtime resultsx[0].endDatesx=resultsx[0].endtime resultsx[0].Sflx=resultsx[0].sflx resultsx[0].dzsx=resultsx[0].dz resultsx[0].cxfssx=resultsx[0].cxfs resultsx[0].sfhxzssx=parseInt(resultsx[0].sfhxzs) res.send(resultsx[0]) }) app.get("/api/getsxlist",async (req,res)=>{ const sqlsx="SELECT * FROM shixi WHERE xuehao=?" const sx=await new Promise((resolve, reject) => { connection.query(sqlsx,[req.query.xuehao],(error, results, fields) => { if(error)throw error resolve(results) }) }) res.send(sx) }) app.post("/api/changsxzt",async (req,res)=>{ const updatesql="UPDATE shixi SET zt=? WHERE shixihao=?" await new Promise((resolve, reject) => { connection.query(updatesql,[req.body.zt,req.body.shixihao],(error, results, fields) => { if(error)throw error resolve(results) }) }) res.send({status:"ok"}) }) app.get("/apitea/getsxlist",async (req,res)=>{ const sqlstu="SELECT studentname,xuehao,shoujihao,xingbian,xueyuan,nianjizhaungye FROM student WHERE nianjizhaungye=?" const sturesult=await new Promise((resolve, reject) => { connection.query(sqlstu,[req.query.bj],(error, results, fields) => { if(error)throw error resolve(results) }) }) let xuehao=[]; sturesult.map((stu,index)=>{ xuehao.push(stu.xuehao) }) const sqlsxlsit="SELECT * FROM `shixi` WHERE JSON_CONTAINS(?,JSON_ARRAY(xuehao), '$')" const sxlist=await new Promise((resolve, reject) => { connection.query(sqlsxlsit,[JSON.stringify(xuehao)],(error, results, fields) => { if(error)throw error resolve(results) }) }) sxlist.map((sxlistvalue,sxindex)=>{ let index=sturesult.findIndex(x=>x.xuehao===sxlistvalue.xuehao) if(index!==-1) { sxlist[sxindex] = {...sxlist[sxindex], ...sturesult[index]} } }) res.send(sxlist) }) app.get("/apixueyuan/getsxlist",async (req,res)=>{ const sqlstu="SELECT studentname,xuehao,shoujihao,xingbian,xueyuan,nianjizhaungye FROM student WHERE xueyuan=?" const sturesult=await new Promise((resolve, reject) => { connection.query(sqlstu,[req.query.xueyuan],(error, results, fields) => { if(error)throw error resolve(results) }) }) let xuehao=[]; sturesult.map((stu,index)=>{ xuehao.push(stu.xuehao) }) const sqlsxlsit="SELECT * FROM `shixi` WHERE JSON_CONTAINS(?,JSON_ARRAY(xuehao), '$')" const sxlist=await new Promise((resolve, reject) => { connection.query(sqlsxlsit,[JSON.stringify(xuehao)],(error, results, fields) => { if(error)throw error resolve(results) }) }) sxlist.map((sxlistvalue,sxindex)=>{ let index=sturesult.findIndex(x=>x.xuehao===sxlistvalue.xuehao) if(index!==-1) { sxlist[sxindex] = {...sxlist[sxindex], ...sturesult[index]} } }) res.send(sxlist) }) app.post("/apistu/heshiqx",async (req,res)=>{ const sql="SELECT passage FROM student WHERE xuehao=?" const result=await new Promise((resolve, reject) => { connection.query(sql,[req.body.xuehao],(error, results, fields) => { if(error)throw error resolve(results) }) }) if(result.length!==0) { if (result[0].passage === req.body.passage) { res.send("ok") } else { res.send("没有权限") } }else{ res.send("请登录") } }) app.post("/apitea/heshiqx",async (req,res)=>{ const sql="SELECT passage FROM teacher WHERE xuegonghao=?" const result=await new Promise((resolve, reject) => { connection.query(sql,[req.body.xuegonghao],(error, results, fields) => { if(error)throw error resolve(results) }) }) if(result.length!==0) { if (result[0].passage === req.body.passage) { res.send("ok") } else { res.send("没有权限") } }else{ res.send("请登录") } }) app.get("/tool/bjidtoname",async (req,res)=>{ const sql="SELECT * FROM banjiclass WHERE id=?" const result=await new Promise((resolve, reject) => { connection.query(sql,[req.query.id],(error, results, fields) => { if(error)throw error resolve(results) }) }) if(result[0].classname1&&result[0].classname2){ //result[0] res.send(result[0]) }else{ res.send(result[0]) } }) app.post("/apixueyuan/banjiinfroupdate",async (req,res)=>{ const sqlupdate="UPDATE banjiclass SET classname1=?,classname2=?,teacherid=?,teachername=? WHERE id=?" const result=await new Promise((resolve, reject) => { connection.query(sqlupdate,[req.body.infor.classname1,req.body.infor.classname2,req.body.infor.teacherid,req.body.infor.teachername,req.body.id],(error, results, fields) => { if(error)throw error resolve(results) }) }) res.send({status:"ok"}) }) app.post("/apixueyuan/fabubanji",async (req,res)=>{ const sql="UPDATE banjiclass SET zt=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sql,["已发布",req.body.id],(error, results, fields) => { if(error)throw error resolve(results) }) }) res.send({status:"ok"}) }) app.get("/apischool/getkcall",async (req,res)=>{ const sqlkc="SELECT * FROM kechengall " const resultkc=await new Promise((resolve, reject) => { connection.query(sqlkc,(error, results, fields) => { if(error)throw error resolve(results) }) }) const sqlkcone="SELECT * FROM kechengbiaotest" const resultkcone=await new Promise((resolve, reject) => { connection.query(sqlkcone,(error, results, fields) => { if(error)throw error resolve(results) }) }) resultkc.map((kcall,indexkc)=>{ const kcnum=resultkcone.filter(item=>item.kechengid==kcall.id).length resultkc[indexkc].kcclass=kcnum let ks=0 JSON.parse(resultkc[indexkc].kechenglist).map((zhou,zzhouindex)=>{ zhou.map((day,dayindex)=>{ day.map((ke,keindex)=>{ if(ke.classid!==0){ ks++; } }) }) }) resultkc[indexkc].kechenglist=ks; }) res.send(resultkc) }) app.get("/apitea/newtmj" ,async (req,res)=>{ const uuidid=uuidv4.v4() const sqlinsert="INSERT INTO tmj_ex(id,tea,zt,information,starttime,endtime,student,fbkc,tmlist) VALUES(?,?,?,?,?,?,?,?,?)" await new Promise((resolve, reject) => { connection.query(sqlinsert,[uuidid,req.body.tea,"未发布","{}","no","no","[]","[]","[]"],(err, result)=>{ if (err) throw err; resolve(result); // 处理查询结果 console.log(result); }) }) res.send({uuid:uuidid}) }) app.get("/apitea/zxdtget",async (req,res)=>{ const sql="SELECT * FROM tmj_ex WHERE id=?" const result=await new Promise((resolve, reject) => { connection.query(sql,[req.query.id],(error, results, fields) => { if(error)throw error resolve(results) }) }) res.send(result[0]) }) app.post("/apitea/zxdtupdateinfor",async (req,res)=>{ const sqlupdate="UPDATE tmj_ex SET name=?,fbkc=?,starttime=?,endtime=?,information=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[req.body.name,JSON.stringify(req.body.fbkc),req.body.starttime,req.body.endtime,JSON.stringify(req.body.information),req.body.id],(error,results,fields)=>{ if(error)throw error resolve(results) }) }) res.send({status:"ok"}) }) app.post("/apitea/zxdtupdatetm",async (req,res)=>{ const sqlupdate="UPDATE tmj_ex SET tmlist=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(req.body.tmlist,null,4),req.body.id],(error,results,fields)=>{ if(error)throw error resolve(results) }) }) res.send({status:"ok"}) }) app.post("/apitea/fabuzxdt",async (req,res)=>{ const sqlupdatebefoe="UPDATE tmj_ex SET name=?,fbkc=?,starttime=?,endtime=?,information=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sqlupdatebefoe,[req.body.name,JSON.stringify(req.body.fbkc),req.body.starttime,req.body.endtime,JSON.stringify(req.body.information),req.body.id],(error,results,fields)=>{ if(error)throw error resolve(results) }) }) const sqlselect="SELECT * FROM tmj_ex WHERE id=?" const zxdt=await new Promise((resolve, reject) => { connection.query(sqlselect,[req.body.id],(error,results,fields)=>{ if(error)throw error resolve(results) }) }) //console.log(zxdt) const stusql="SELECT * FROM `kechengbiaotest` WHERE JSON_CONTAINS(?,JSON_ARRAY(teacherid), '$')" const sturesult=await new Promise((resolve, reject) => { connection.query(stusql,[zxdt[0].fbkc], (error,results,fields)=>{ if(error)throw error resolve(results) }) }) let stulist=[]; sturesult.map((stuone,index)=>{ // console.log(stuone) stulist=[...stulist,...JSON.parse(stuone.student)] }) stulist=[...new Set(stulist)] const sqlupdate="UPDATE `tmj_ex` SET student=? WHERE id=?" await new Promise((resolve, reject) => { connection.query(sqlupdate,[JSON.stringify(stulist),req.body.id],(error,results,fields)=>{ if(error)throw error resolve(results) }) }) res.send(stulist) }) app.get("/api/stuinfor",async (req,res)=>{ const sql="SELECT shoujihao,studentname FROM student WHERE xuehao=?" const result=await new Promise((resolve, reject) => { connection.query(sql,[req.query.xuehao],(error,results,fields)=>{ if(error)throw error resolve(results) }) }) res.send(result[0]) }) app.get("/api/getptatmj",async (req,res)=>{ const sqljue="SELECT * FROM tmj_ex WHERE `id`=?" const jue=await new Promise((resolve, reject) => { connection.query(sqljue,[req.query.ksh],(error,results,fields)=>{ if(error)throw error resolve(results[0]) console.log(results) }) }) if(jue){ const sqlstu="SELECT * FROM tmj_stu WHERE xuehao=? AND ksh=?" const stu=await new Promise((resolve, reject) => { connection.query(sqlstu,[req.query.xuehao,req.query.ksh],(error,results,fields)=>{ if(error)throw error resolve(results[0]) }) }) jue.status="ok" if(stu){ jue.ztstu=stu.zt; jue.stustart=stu.starttime; jue.tmlist=stu.zuodaxx; } res.send(jue) }else{ res.send({status:"err"}) } }) app.post("/api/kaishizxdt_ex",async (req,res)=>{ const sqlzxdt="SELECT * FROM tmj_ex WHERE id=?" const zxdt=await new Promise((resolve, reject) => { connection.query(sqlzxdt,[req.body.uuid],(error,results,fields)=>{ if(error)throw error resolve(results[0]) }) }) if(zxdt){ const sqlupdate="INSERT INTO tmj_stu(zuodaxx,xuehao,ksh,id,zt,starttime) VALUES(?,?,?,?,?,?)" const uuidv=uuidv4.v4(); await new Promise((resolve, reject) => { connection.query(sqlupdate,[zxdt.tmlist,req.body.xuehao,req.body.uuid,uuidv,"已开始",moment().format()],(error,results,fields)=>{ if(error)throw error resolve(results) }) }) res.send({status:"ok",uuid:uuidv}) }else{ res.send({status:"err"}) } }) app.post("/api/updatezxdt_ex", (req,res)=>{ const sqlupdate="UPDATE tmj_stu SET zuodaxx=? WHERE xuehao=? AND ksh=?" console.log(req.body.alltm) connection.query(sqlupdate,[JSON.stringify(req.body.alltm,null,4),req.body.xuehao,req.body.ksh],(error,results,fields)=>{ if(error)throw error res.send({status:"ok"}) }) }) app.listen(port, () => { console.log(`Server listening on port ${port}`); })