From 021921dd1931f3d755fe981b65516bc3995a4e78 Mon Sep 17 00:00:00 2001
From: lichong <18518571399@163.com>
Date: Fri, 5 Jul 2024 17:37:55 +0800
Subject: [PATCH] 1212
---
api/main.py | 145 +++++++++++++++--
front/package.json | 3 +-
front/src/App.vue | 14 +-
front/src/api/user.js | 9 +-
front/src/component/changeItem.vue | 31 +---
front/src/component/table.vue | 43 ++----
front/src/views/home.vue | 28 ++--
front/src/views/login.vue | 32 +---
front/src/views/user.vue | 239 ++++++++++-------------------
9 files changed, 270 insertions(+), 274 deletions(-)
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 @@
-
+
+
+