src/main/java/com/mindskip/xzs/controller/student/PracticeQuestionConditionController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mindskip/xzs/domain/PracticeQuestionCondition.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mindskip/xzs/repository/PracticeQuestionConditionMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mindskip/xzs/service/PracticeQuestionConditionService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/PracticeQuestionConditionMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/mindskip/xzs/controller/student/PracticeQuestionConditionController.java
New file @@ -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:xp * @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(); } } src/main/java/com/mindskip/xzs/domain/PracticeQuestionCondition.java
New file @@ -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:xp * @date:2024/5/14 17:13 */ @Data public class PracticeQuestionCondition { private Integer id; @NotNull(message = "练习ID不能为空") private Integer practiceId; private Integer userId; /** json存储题目数据:List<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; } } src/main/java/com/mindskip/xzs/repository/PracticeQuestionConditionMapper.java
New file @@ -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:xp * @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); } src/main/java/com/mindskip/xzs/service/PracticeQuestionConditionService.java
New file @@ -0,0 +1,25 @@ package com.mindskip.xzs.service; import com.mindskip.xzs.domain.PracticeQuestionCondition; /** * @author:xp * @date:2024/5/14 17:24 */ public interface PracticeQuestionConditionService { /** * 保存数据 * * @param entity */ void save(PracticeQuestionCondition entity); /** * 通过练习ID查找 * * @param practiceId */ PracticeQuestionCondition selectByPracticeId(Integer practiceId); } src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java
New file @@ -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:xp * @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; } } src/main/resources/mapper/PracticeQuestionConditionMapper.xml
New file @@ -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>