diff --git a/api/main.py b/api/main.py index 025d508..27deb9e 100644 --- a/api/main.py +++ b/api/main.py @@ -5,6 +5,7 @@ import hashlib import json from flask import Flask, render_template, request from flask_socketio import SocketIO, Namespace, emit +import time app = Flask(__name__) client = MongoClient("mongodb://localhost:27019/") @@ -115,8 +116,8 @@ def md5_encrypt(data): def initData(): admin = collection.find_one({"isAdmin": 1, "isExit": 1}) if admin is None: - # 学校名称、学校代号、专业名称、专业代号、年级、班级、学生姓名、学号、密码、成绩、作弊情况(作弊类型、作弊时间、作弊图片)、考试类型、考试科目、考试时间段、是否是管理员、是否删除、创建时间、更新时间 - # xuexiaomingcheng、xuexiaodaihao、zhuanyemingcheng、zhuanyedaihao、nianji、banji、xueshengxingming、xuehao、mima、chengji、zuobiqingkuang(zuobileixing、zuobishijian、zuobitupian)、kaoshileixing、kaoshikemu、kaoshishijianduan、isAdmin、isExit、chuangjianshijian、gengxinshijian + # 学校名称、学校代号、专业名称、专业代号、年级、班级、学生姓名、学号、密码、成绩、作弊情况(作弊类型、作弊时间、作弊图片)、考试类型、考试科目、考试时间段、考试链接、是否是管理员、是否删除、创建时间、更新时间 + # xuexiaomingcheng、xuexiaodaihao、zhuanyemingcheng、zhuanyedaihao、nianji、banji、xueshengxingming、xuehao、mima、chengji、zuobiqingkuang(zuobileixing、zuobishijian、zuobitupian)、kaoshileixing、kaoshikemu、kaoshishijianduan、kaoshilianjie、isAdmin、isExit、chuangjianshijian、gengxinshijian user = { "xuexiaomingcheng": "", "xuexiaodaihao": "", @@ -132,6 +133,7 @@ def initData(): "kaoshileixing": "", "kaoshikemu": "", "kaoshishijianduan": "", + "kaoshilianjie": "", "isAdmin": 1, "isExit": 1, "chuangjianshijian": "", @@ -179,36 +181,145 @@ def login(): # 新增用户 @app.route("/addUser", methods=["post"]) def insert_data(): - user = {"name": "John Doe", "age": 25, "city": "New York"} - collection.insert_one(user) - return "Data inserted successfully!" + resData = request.data + # 检测是否有数据 + if not resData: + return {"code": 200, "msg": "无数据", "list": [], "hasError": True} + # 获取到POST过来的数据,转为json形式 + userJson = json.loads(resData) + admin = isAdmin(userJson["id"]) + print(777, userJson, admin) + if admin: + if userJson["subType"] is "add": + userItem = { + "xuexiaomingcheng": userJson["xuexiaomingcheng"], + "xuexiaodaihao": userJson["xuexiaodaihao"], + "zhuanyemingcheng": userJson["zhuanyemingcheng"], + "zhuanyedaihao": userJson["zhuanyedaihao"], + "nianji": userJson["nianji"], + "banji": userJson["banji"], + "xueshengxingming": userJson["xueshengxingming"], + "xuehao": userJson["xuehao"], + "mima": md5_encrypt(userJson["mima"]), + "chengji": userJson["chengji"], + "zuobiqingkuang": userJson["zuobiqingkuang"], + "kaoshileixing": userJson["kaoshileixing"], + "kaoshikemu": userJson["kaoshikemu"], + "kaoshishijianduan": userJson["kaoshishijianduan"], + "kaoshilianjie": "", # 需要自动生成一个链接 + "isAdmin": 0, + "isExit": 1, + "chuangjianshijian": time.strftime( + "%Y-%m-%d %H:%M:%S", time.localtime(time.time()) + ), + "gengxinshijian": time.strftime( + "%Y-%m-%d %H:%M:%S", time.localtime(time.time()) + ), + } + collection.insert_one(userItem) + return "新增成功" # 查询用户 @app.route("/getUser", methods=["post"]) def query_data(): - users = collection.find() - result = "" - for user in users: - result += f"Name: {user['name']}, Age: {user['age']}, City: {user['city']}
" - return result + resData = request.data + # 检测是否有数据 + if not resData: + return {"code": 200, "msg": "请填写信息后登录", "list": [], "hasError": True} + # 获取到POST过来的数据,转为json形式 + userJson = json.loads(resData) + admin = isAdmin(userJson["id"]) + print(777, userJson, admin) + if admin: + users = collection.find() + serialized_data = [] + for item in users: + item["_id"] = str(item["_id"]) # 将ObjectId转换为字符串 + serialized_data.append(item) + return { + "code": 200, + "msg": "查询成功", + "list": serialized_data, + "hasError": False, + } + else: + return {"code": 200, "msg": "您不是管理员用户", "list": [], "hasError": True} # 更新用户 @app.route("/updateUser", methods=["post"]) def update_data(): - query = {"name": "John Doe"} - new_data = {"$set": {"age": 30, "city": "San Francisco"}} - collection.update_one(query, new_data) - return "Data updated successfully!" + resData = request.data + # 检测是否有数据 + if not resData: + return {"code": 200, "msg": "无数据", "list": [], "hasError": True} + # 获取到POST过来的数据,转为json形式 + userJson = json.loads(resData) + admin = isAdmin(userJson["id"]) + if admin: + userItem = { + "xuexiaomingcheng": userJson["xuexiaomingcheng"], + "xuexiaodaihao": userJson["xuexiaodaihao"], + "zhuanyemingcheng": userJson["zhuanyemingcheng"], + "zhuanyedaihao": userJson["zhuanyedaihao"], + "nianji": userJson["nianji"], + "banji": userJson["banji"], + "xueshengxingming": userJson["xueshengxingming"], + "xuehao": userJson["xuehao"], + "chengji": userJson["chengji"], + "zuobiqingkuang": userJson["zuobiqingkuang"], + "kaoshileixing": userJson["kaoshileixing"], + "kaoshikemu": userJson["kaoshikemu"], + "kaoshishijianduan": userJson["kaoshishijianduan"], + "gengxinshijian": time.strftime( + "%Y-%m-%d %H:%M:%S", time.localtime(time.time()) + ), + } + collection.update_one( + {"_id": ObjectId(userJson["userid"])}, + {"$set": userItem}, + ) + return "修改成功" # 删除用户 @app.route("/delUser", methods=["post"]) def delete_data(): - query = {"name": "John Doe"} - collection.delete_one(query) - return "Data deleted successfully!" + resData = request.data + # 检测是否有数据 + if not resData: + return {"code": 200, "msg": "无数据", "list": [], "hasError": True} + # 获取到POST过来的数据,转为json形式 + userJson = json.loads(resData) + admin = isAdmin(userJson["id"]) + if admin: + serialized_data = [] + for item in userJson["ids"]: + serialized_data.append(ObjectId(item)) # 将ObjectId转换为字符串 + collection.delete_many({"_id": {"$in": serialized_data}}) + return "删除成功" + + +# 修改密码 +@app.route("/updatePassword", methods=["post"]) +def updatePassword(): + resData = request.data + # 检测是否有数据 + if not resData: + return {"code": 200, "msg": "无数据", "list": [], "hasError": True} + # 获取到POST过来的数据,转为json形式 + userJson = json.loads(resData) + admin = isAdmin(userJson["id"]) + print(777, userJson, admin) + if admin: + collection.update_one( + {"_id": ObjectId(userJson["userid"])}, + { + "$set": {"mima": md5_encrypt(userJson["mima"])}, + }, + ) + return {"code": 200, "msg": "修改成功", "list": [], "hasError": False} if __name__ == "__main__": diff --git a/front/package.json b/front/package.json index af979b0..9370595 100644 --- a/front/package.json +++ b/front/package.json @@ -17,6 +17,7 @@ "nprogress": "^0.2.0", "papaparse": "^5.4.1", "qs": "^6.11.2", + "sqids": "^0.3.0", "unplugin-auto-import": "^0.17.4", "unplugin-vue-components": "^0.26.0", "vue": "^3.3.11", @@ -26,4 +27,4 @@ "@vitejs/plugin-vue": "^4.6.2", "vite": "^5.0.8" } -} \ No newline at end of file +} diff --git a/front/src/App.vue b/front/src/App.vue index 018ec92..0ea771b 100644 --- a/front/src/App.vue +++ b/front/src/App.vue @@ -1,13 +1,21 @@