From 1dd3f8fdbbfc8a41f35a32f153201724a8faa2b3 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 14 五月 2024 18:12:27 +0800
Subject: [PATCH] 保存顺序练习记录
---
src/main/java/com/mindskip/xzs/service/PracticeQuestionConditionService.java | 25 ++++++
src/main/resources/mapper/PracticeQuestionConditionMapper.xml | 22 +++++
src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java | 46 +++++++++++
src/main/java/com/mindskip/xzs/repository/PracticeQuestionConditionMapper.java | 38 +++++++++
src/main/java/com/mindskip/xzs/controller/student/PracticeQuestionConditionController.java | 30 +++++++
src/main/java/com/mindskip/xzs/domain/PracticeQuestionCondition.java | 53 +++++++++++++
6 files changed, 214 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/mindskip/xzs/controller/student/PracticeQuestionConditionController.java b/src/main/java/com/mindskip/xzs/controller/student/PracticeQuestionConditionController.java
new file mode 100644
index 0000000..30e883c
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/controller/student/PracticeQuestionConditionController.java
@@ -0,0 +1,30 @@
+package com.mindskip.xzs.controller.student;
+
+import com.mindskip.xzs.base.RestResponse;
+import com.mindskip.xzs.domain.PracticeQuestionCondition;
+import com.mindskip.xzs.service.PracticeQuestionConditionService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/5/14 17:44
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/student/practice/condition")
+public class PracticeQuestionConditionController {
+
+ private final PracticeQuestionConditionService service;
+
+ @PostMapping("/save")
+ public RestResponse save(@RequestBody @Validated PracticeQuestionCondition vo) {
+ service.save(vo);
+ return RestResponse.ok();
+ }
+
+}
diff --git a/src/main/java/com/mindskip/xzs/domain/PracticeQuestionCondition.java b/src/main/java/com/mindskip/xzs/domain/PracticeQuestionCondition.java
new file mode 100644
index 0000000..98e76ea
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/PracticeQuestionCondition.java
@@ -0,0 +1,53 @@
+package com.mindskip.xzs.domain;
+
+import io.swagger.models.auth.In;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 缁冧範璁板綍
+ *
+ * @author锛歺p
+ * @date锛�2024/5/14 17:13
+ */
+@Data
+public class PracticeQuestionCondition {
+
+ private Integer id;
+
+ @NotNull(message = "缁冧範ID涓嶈兘涓虹┖")
+ private Integer practiceId;
+
+ private Integer userId;
+
+ /** json瀛樺偍棰樼洰鏁版嵁锛歀ist<QuestionFinishCondition> */
+ private String content;
+
+ /** 鏈�杩戜竴娆′繚瀛樻椂闂� */
+ private Date latestTime;
+
+
+ /** 鍋氶璇︽儏 */
+ @NotEmpty(message = "鏈仛棰樹笉鑳戒繚瀛�")
+ private List<QuestionFinishCondition> questionConditions;
+
+ @Data
+ public static class QuestionFinishCondition {
+
+ /** 棰樼洰 */
+ private Integer questionId;
+
+ /** 鏄惁宸茬粡鍋氫簡 */
+ private Boolean hasDo;
+
+ /** 鍋氬娌℃湁 */
+ private Boolean right;
+
+ /** 绛旀 */
+ private String answer;
+ }
+}
diff --git a/src/main/java/com/mindskip/xzs/repository/PracticeQuestionConditionMapper.java b/src/main/java/com/mindskip/xzs/repository/PracticeQuestionConditionMapper.java
new file mode 100644
index 0000000..5c79620
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/repository/PracticeQuestionConditionMapper.java
@@ -0,0 +1,38 @@
+package com.mindskip.xzs.repository;
+
+import com.mindskip.xzs.domain.PracticeQuestionCondition;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/5/14 17:23
+ */
+@Mapper
+public interface PracticeQuestionConditionMapper {
+
+ /**
+ * 鏍规嵁缁冧範ID鏌ユ壘
+ *
+ * @param practiceId
+ * @return
+ */
+ PracticeQuestionCondition selectByPracticeId(Integer practiceId);
+
+ /**
+ * 娣诲姞
+ *
+ * @param old
+ */
+ void save(@Param("entity") PracticeQuestionCondition old);
+
+ /**
+ * 鏇存柊鍐呭
+ *
+ * @param content
+ * @param id
+ */
+ void updateContentById(@Param("content") String content, @Param("id") Integer id, @Param("latestTime") Date latestTime);
+}
diff --git a/src/main/java/com/mindskip/xzs/service/PracticeQuestionConditionService.java b/src/main/java/com/mindskip/xzs/service/PracticeQuestionConditionService.java
new file mode 100644
index 0000000..f773a65
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/service/PracticeQuestionConditionService.java
@@ -0,0 +1,25 @@
+package com.mindskip.xzs.service;
+
+import com.mindskip.xzs.domain.PracticeQuestionCondition;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/5/14 17:24
+ */
+public interface PracticeQuestionConditionService {
+
+ /**
+ * 淇濆瓨鏁版嵁
+ *
+ * @param entity
+ */
+ void save(PracticeQuestionCondition entity);
+
+ /**
+ * 閫氳繃缁冧範ID鏌ユ壘
+ *
+ * @param practiceId
+ */
+ PracticeQuestionCondition selectByPracticeId(Integer practiceId);
+
+}
diff --git a/src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java
new file mode 100644
index 0000000..31f74d9
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java
@@ -0,0 +1,46 @@
+package com.mindskip.xzs.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.mindskip.xzs.context.WebContext;
+import com.mindskip.xzs.domain.PracticeQuestionCondition;
+import com.mindskip.xzs.repository.PracticeQuestionConditionMapper;
+import com.mindskip.xzs.service.PracticeQuestionConditionService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/5/14 17:26
+ */
+@Service
+@RequiredArgsConstructor
+public class PracticeQuestionConditionServiceImpl implements PracticeQuestionConditionService {
+
+ private final PracticeQuestionConditionMapper mapper;
+ private final WebContext webContext;
+
+ @Override
+ public void save(PracticeQuestionCondition entity) {
+ PracticeQuestionCondition old = mapper.selectByPracticeId(entity.getPracticeId());
+ if (Objects.isNull(old)) {
+ old = new PracticeQuestionCondition();
+ old.setUserId(webContext.getCurrentUser().getId());
+ old.setPracticeId(entity.getPracticeId());
+ old.setContent(JSON.toJSONString(entity.getQuestionConditions()));
+ old.setLatestTime(new Date());
+ mapper.save(old);
+ } else {
+ // 鏇存柊鍐呭
+ mapper.updateContentById(JSON.toJSONString(entity.getQuestionConditions()), old.getId(), new Date());
+ }
+ }
+
+ @Override
+ public PracticeQuestionCondition selectByPracticeId(Integer practiceId) {
+ PracticeQuestionCondition old = mapper.selectByPracticeId(practiceId);
+ return old;
+ }
+}
diff --git a/src/main/resources/mapper/PracticeQuestionConditionMapper.xml b/src/main/resources/mapper/PracticeQuestionConditionMapper.xml
new file mode 100644
index 0000000..305a8f6
--- /dev/null
+++ b/src/main/resources/mapper/PracticeQuestionConditionMapper.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mindskip.xzs.repository.PracticeQuestionConditionMapper">
+
+ <select id="selectByPracticeId" resultType="com.mindskip.xzs.domain.PracticeQuestionCondition">
+ SELECT
+ *
+ FROM
+ t_practice_question_condition
+ WHERE
+ practice_id = #{practiceId}
+ </select>
+
+ <insert id="save" parameterType="com.mindskip.xzs.domain.PracticeQuestionCondition">
+ INSERT INTO t_practice_question_condition(user_id, practice_id, content, latest_time)
+ VALUE (#{entity.userId}, #{entity.practiceId}, #{entity.content}, #{entity.latestTime})
+ </insert>
+
+ <update id="updateContentById">
+ UPDATE t_practice_question_condition SET content = #{content}, latest_time = #{latestTime} WHERE id = #{id}
+ </update>
+</mapper>
--
Gitblit v1.8.0