From 47b87f388279984dc16fc1a89f3f6a6c2279e32b Mon Sep 17 00:00:00 2001 From: Sakura <2337674687@qq.com> Date: Sun, 9 Mar 2025 14:16:58 +0800 Subject: [PATCH] 3.9 --- .../template/action/ToolTemplateAction.java | 61 +++++++------------ .../template/dao/impl/QuestionDaoImpl.java | 28 +++------ .../dao/impl/WrongQuestionDaoImpl.java | 23 ++++++- .../service/impl/HomeWorkServiceImpl.java | 19 +----- .../MultipleChoiceQuestions.vue | 30 ++++----- 5 files changed, 70 insertions(+), 91 deletions(-) diff --git a/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java b/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java index 0e1bcab..b5aaade 100644 --- a/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java +++ b/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java @@ -10,15 +10,8 @@ import com.wetoband.template.entity.*; import com.wetoband.template.service.*; import com.wetoband.template.service.impl.*; import com.wetoband.template.util.R; -import org.jetbrains.annotations.NotNull; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.web.multipart.MultipartFile; -import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; -import java.io.IOException; -import java.sql.Connection; import java.text.SimpleDateFormat; import java.util.*; @@ -30,8 +23,6 @@ public class ToolTemplateAction extends ActionToolBase { //获取service实例 HomeWorkService homeWorkService=IOC.getBean(HomeWorkServiceImpl.class); WrongQuestionService wrongQuestionService=IOC.getBean(WrongQuestionServiceImpl.class); - UserService userService=IOC.getBean(UserServiceImpl.class); - FileUploadService fileUploadService= IOC.getBean(FileUploadService.class); TroubleshootingService troubleshootingService=IOC.getBean(TroubleshootingServiceImpl.class); QuestionService questionService=IOC.getBean(QuestionServiceImpl.class); NoticeService noticeService=IOC.getBean(NoticeServiceImpl.class); @@ -97,14 +88,18 @@ public class ToolTemplateAction extends ActionToolBase { public R submitHomework(HttpServletRequest request) throws Exception { String userAnswers = request.getParameter("userAnswers"); // 解析 JSON 字符串为 Map + System.out.println("username:"+userAnswers); + List userAnswersList = JSON.parseArray(userAnswers, String.class); + System.out.println("usernameList:"+userAnswersList); + Map> userAnswersMap = parseUserAnswers(userAnswers); + System.out.println("username:"+userAnswersMap); Integer studentId =Integer.parseInt(request.getParameter("student_id")); Integer homeworkId =Integer.parseInt(request.getParameter("homework_id")); //获取提交时间设置为年月日格式 String submitTimeStr = request.getParameter("submitTime"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date submitTimeDate = sdf.parse(submitTimeStr); - String text = "123"; homeWorkService.submitHomework(studentId,homeworkId,submitTimeDate,userAnswersMap); return R.ok().message("请求成功"); } @@ -153,14 +148,6 @@ public class ToolTemplateAction extends ActionToolBase { return R.ok().put("data",question); } -// //文件上传miniIo -// @Action -// public R fileUploadService(HttpServletRequest request) throws ServletException, IOException {//前端要传一个名字叫 file 的参数 -// MultipartFile filePart = (MultipartFile) request.getPart("file"); -//// String fileUrl = fileUploadService.fileUpload(filePart) ; -// return R.ok().put("data",filePart);//返回一个fileurl给前端 -// } - @Action public R getNotice(HttpServletRequest request) throws Exception { int student_id =Integer.parseInt(request.getParameter("student_id")); @@ -185,31 +172,29 @@ public class ToolTemplateAction extends ActionToolBase { } - - //json转化成map方法 private Map> parseUserAnswers(String userAnswers) { Map> userAnswersMap = new HashMap<>(); JSONArray jsonArray = JSON.parseArray(userAnswers); - for (Object item : jsonArray) { - if (item instanceof String) { - String[] keyValue = ((String) item).split(":"); - if (keyValue.length == 2) { - userAnswersMap.computeIfAbsent(keyValue[0], k -> new ArrayList<>()).add(keyValue[1]); - } - } else if (item instanceof JSONArray) { - JSONArray subArray = (JSONArray) item; - for (Object subItem : subArray) { - if (subItem instanceof String) { - String[] keyValue = ((String) subItem).split(":"); - if (keyValue.length == 2) { - userAnswersMap.computeIfAbsent(keyValue[0], k -> new ArrayList<>()).add(keyValue[1]); - } - } - } - } - } +// for (Object item : jsonArray) { +// if (item instanceof String) { +// String[] keyValue = ((String) item).split(":"); +// if (keyValue.length == 2) { +// userAnswersMap.computeIfAbsent(keyValue[0], k -> new ArrayList<>()).add(keyValue[1]); +// } +// } else if (item instanceof JSONArray) { +// JSONArray subArray = (JSONArray) item; +// for (Object subItem : subArray) { +// if (subItem instanceof String) { +// String[] keyValue = ((String) subItem).split(":"); +// if (keyValue.length == 2) { +// userAnswersMap.computeIfAbsent(keyValue[0], k -> new ArrayList<>()).add(keyValue[1]); +// } +// } +// } +// } +// } return userAnswersMap; } } diff --git a/HomeWork-java/src/com/wetoband/template/dao/impl/QuestionDaoImpl.java b/HomeWork-java/src/com/wetoband/template/dao/impl/QuestionDaoImpl.java index 8c2360a..7bb03bf 100644 --- a/HomeWork-java/src/com/wetoband/template/dao/impl/QuestionDaoImpl.java +++ b/HomeWork-java/src/com/wetoband/template/dao/impl/QuestionDaoImpl.java @@ -14,29 +14,17 @@ public class QuestionDaoImpl implements QuestionDao { public ArrayList getQuestion(Connection connection, int homework_id) throws Exception { ArrayList questions = new ArrayList<>(); String sql ="SELECT\n" + - " tmp.question_id,\n" + - " tmp.title,\n" + - " tmp.type,\n" + - " JSON_ARRAYAGG(tmp.option_value) AS optionStr\n" + + "\tq.title,\n" + + "\tq.question_id,\n" + + "\tq.type,\n" + + "\tJSON_ARRAYAGG( qo.option_value ) AS optionStr \n" + "FROM\n" + - " (\n" + - " SELECT\n" + - " q.title,\n" + - " q.question_id,\n" + - " q.type,\n" + - " qo.option_value\n" + - " FROM\n" + - " question q\n" + - " INNER JOIN question_option qo ON q.question_id = qo.question_id\n" + - " ) AS tmp\n" + + "\tquestion q\n" + + "\tINNER JOIN question_option qo ON q.question_id = qo.question_id \n" + "WHERE\n" + - " tmp.question_id IN (\n" + - " SELECT hq.question_id\n" + - " FROM homework_question hq\n" + - " WHERE hq.homework_id = ?\n" + - " )\n" + + "\tq.question_id IN ( SELECT hq.question_id FROM homework_question hq WHERE hq.homework_id = ? ) \n" + "GROUP BY\n" + - " tmp.question_id;"; + "\tq.question_id;"; try (PreparedStatement pstm = connection.prepareStatement(sql)) { pstm.setInt(1, homework_id); try (ResultSet rs = pstm.executeQuery()) { diff --git a/HomeWork-java/src/com/wetoband/template/dao/impl/WrongQuestionDaoImpl.java b/HomeWork-java/src/com/wetoband/template/dao/impl/WrongQuestionDaoImpl.java index ae1146b..f7ce280 100644 --- a/HomeWork-java/src/com/wetoband/template/dao/impl/WrongQuestionDaoImpl.java +++ b/HomeWork-java/src/com/wetoband/template/dao/impl/WrongQuestionDaoImpl.java @@ -50,7 +50,27 @@ public class WrongQuestionDaoImpl implements WrongQuestionDao { @Override public List getWrongQuestion(Connection connection, int homework_id , int student_id) throws Exception { ArrayList questions = new ArrayList<>(); - try (PreparedStatement pstm = connection.prepareStatement("SELECT * FROM question WHERE question_id in(SELECT homework_wrongquestion.question_id FROM homework_wrongquestion WHERE homework_id = ? AND student_id = ?)")) { + String sql = "SELECT\n" + + "\tq.title,\n" + + "\tq.question_id,\n" + + "\tq.type,\n" + + "\tJSON_ARRAYAGG(qo.option_value) AS optionStr\n" + + "FROM\n" + + "\tquestion q\n" + + "\tINNER JOIN question_option qo ON q.question_id = qo.question_id \n" + + "WHERE\n" + + "\tq.question_id IN (\n" + + "\tSELECT\n" + + "\t\thwq.question_id \n" + + "\tFROM\n" + + "\t\thomework_wrongquestion hwq \n" + + "\tWHERE\n" + + "\t\thomework_id = ? AND\n" + + "\t\tstudent_id = ? \n" + + "\t)\n" + + "GROUP BY\n" + + " q.question_id;"; + try (PreparedStatement pstm = connection.prepareStatement(sql)) { pstm.setInt(1, homework_id); pstm.setInt(2, student_id); try (ResultSet rs = pstm.executeQuery()) { @@ -59,6 +79,7 @@ public class WrongQuestionDaoImpl implements WrongQuestionDao { question.setQuestion_id(rs.getInt("question_id")); question.setTitle(rs.getString("title")); question.setType(rs.getInt("type")); + question.setOptionArr(rs.getString("optionStr")); questions.add(question); } } diff --git a/HomeWork-java/src/com/wetoband/template/service/impl/HomeWorkServiceImpl.java b/HomeWork-java/src/com/wetoband/template/service/impl/HomeWorkServiceImpl.java index e667274..762ad51 100644 --- a/HomeWork-java/src/com/wetoband/template/service/impl/HomeWorkServiceImpl.java +++ b/HomeWork-java/src/com/wetoband/template/service/impl/HomeWorkServiceImpl.java @@ -55,31 +55,14 @@ public class HomeWorkServiceImpl implements HomeWorkService { return homeWorkDao.getHomeWorkByHomeworkName(connection,homework_name,id); } -// @Transactional() @Override public void submitHomework(Integer studentId, Integer homeworkId, Date submitTimeDate, Map> userAnswersMap) throws Exception { final Connection connection = ActionToolBase.getDBConnection(); - String redisKey = homeworkId + "-" + studentId ;//设置key - // 创建 Jedis 连接对象 - try (Jedis jedis = new Jedis("8.138.182.34", 6379)) { // 替换为 Redis 服务器的 IP 和端口 - // 如果 Redis 设置了密码,需要进行身份校验 - jedis.auth("123456"); - // 将 userAnswersMap 存入 Redis - for (Map.Entry> entry : userAnswersMap.entrySet()) { - String field = entry.getKey(); // 获取 key - List values = entry.getValue(); // 获取 value 列表 - String value = String.join(",", values); // 将 List 转换为逗号分隔的字符串 - // 使用 Jedis 将数据存入 Redis 的 Hash 结构 - jedis.hset(redisKey, field, value); - } - } catch (Exception e) { - e.printStackTrace(); - } + Submit submitHomework = new Submit(); submitHomework.setSubmitId(studentId); submitHomework.setSubmitTime(submitTimeDate); - submitHomework.setAnswer(redisKey); submitHomework.setHomeworkId(homeworkId); submitHomework.setCorrect(0);//设置批改状态为0 submitHomework.setSubmitStatus(1);//设置提交状态为0 diff --git a/HomeWork-vite/src/views/HomeWorkManager/MultipleChoiceQuestions.vue b/HomeWork-vite/src/views/HomeWorkManager/MultipleChoiceQuestions.vue index 081db0f..34ecb9e 100644 --- a/HomeWork-vite/src/views/HomeWorkManager/MultipleChoiceQuestions.vue +++ b/HomeWork-vite/src/views/HomeWorkManager/MultipleChoiceQuestions.vue @@ -7,26 +7,27 @@
{{ index + 1 }}. {{ question.title }} + (多选题)
- {{ String.fromCharCode(65 + index) }}. - {{ option.label }} + {{ option }} - + {{ String.fromCharCode(65 + index) }}. - {{ option.label }} + {{ option }}
@@ -74,17 +75,18 @@ const getQuestion = async () => { id: question.question_id, type: question.type === 0 ? 'single' : 'multiple', title: question.title, - options: [], + optionArr: question.optionArr, }; - ['A', 'B', 'C', 'D', 'E'].forEach(optionKey => { - const optionValue = question[`option_${optionKey}`]; - if (optionValue) { - mappedQuestion.options.push({ - value: question.question_id + ':' + optionKey, - label: optionValue - }); - } - }) + + // ['A', 'B', 'C', 'D', 'E'].forEach(optionKey => { + // const optionValue = question[`option_${optionKey}`]; + // if (optionValue) { + // mappedQuestion.options.push({ + // value: question.question_id + ':' + optionKey, + // label: optionValue + // }); + // } + // }) questions.push(mappedQuestion); }); }).catch(err => { -- Gitee