diff --git a/src/main/java/com/lyt/bean/LinkAnswer.java b/src/main/java/com/lyt/bean/LinkAnswer.java index ce0569b57841f2f1a95075827e140a9d54048ff3..2294c3fcd21f31da950cf8b9a4d9c44ea5de71da 100644 --- a/src/main/java/com/lyt/bean/LinkAnswer.java +++ b/src/main/java/com/lyt/bean/LinkAnswer.java @@ -7,8 +7,6 @@ package com.lyt.bean; */ public class LinkAnswer { private Integer id; - private Integer stuTestId; - private Integer paperId; private Integer _index; private Integer questionId; private String answer; @@ -21,21 +19,6 @@ public class LinkAnswer { this.id = id; } - public Integer getStu_test_id() { - return stuTestId; - } - - public void setStu_test_id(Integer stu_test_id) { - this.stuTestId = stu_test_id; - } - - public Integer getPaper_id() { - return paperId; - } - - public void setPaper_id(Integer paper_id) { - this.paperId = paper_id; - } public Integer getIndex() { return _index; @@ -65,8 +48,6 @@ public class LinkAnswer { public String toString() { return "LinkAnswer{" + "id=" + id + - ", stu_test_id=" + stuTestId + - ", paper_id=" + paperId + ", _index=" + _index + ", question_id=" + questionId + ", answer='" + answer + '\'' + diff --git a/src/main/java/com/lyt/bean/TestStatus.java b/src/main/java/com/lyt/bean/TestStatus.java index 245e816ee28d09725d8779d70449a5d03b943693..e546442429b78f524d611c3cfd7dbd60d101daa7 100644 --- a/src/main/java/com/lyt/bean/TestStatus.java +++ b/src/main/java/com/lyt/bean/TestStatus.java @@ -11,11 +11,14 @@ import lombok.Data; @Data @AllArgsConstructor public class TestStatus { - private Integer stu_test_id; - private Integer student_id; + private Integer stuTestId; + private Integer studentId; private Integer cutNum; private String name; - private String date; + private long getData; + private long submitData; + private Integer isHandPaper; + public TestStatus() { diff --git a/src/main/java/com/lyt/controller/TestAnswerController.java b/src/main/java/com/lyt/controller/TestAnswerController.java index f48a8395320513000a604d99900ce719fd2289fb..ecea908142413406fff5aeb2544c744cc280dbf2 100644 --- a/src/main/java/com/lyt/controller/TestAnswerController.java +++ b/src/main/java/com/lyt/controller/TestAnswerController.java @@ -2,6 +2,7 @@ package com.lyt.controller; import com.lyt.bean.LinkAnswer; import com.lyt.service.TestAnswerService; +import com.lyt.service.TestStatuService; import com.lyt.vo.LinkAnswerVo; import com.lyt.vo.RetAnswerVo; import com.lyt.vo.TestAnswerVo; @@ -29,14 +30,15 @@ public class TestAnswerController { @RequestMapping("/testAnswer/add") public int addAnswer(@RequestBody TestAnswerVo testAnswerVo)throws Exception{ - System.out.println(testAnswerVo); + System.out.println("我提交答案了"+testAnswerVo.toString()); int xx = testAnswerservice.addTestStatus(testAnswerVo); - return 1; + + return xx; } @RequestMapping("/testAnswer/selAnswer") public List selAnswer(@Param("paper_id")Integer paper_id, @Param("stu_id") Integer stu_id)throws Exception{ - List list = testAnswerservice.selAnswerByPaperIdAndStuId(paper_id, stu_id); + List list = testAnswerservice.selAnswerById(stu_id,paper_id); System.out.println(list); return list; } diff --git a/src/main/java/com/lyt/controller/TestStatusController.java b/src/main/java/com/lyt/controller/TestStatusController.java index 826ff1e8f7c15b5753e5ca8801437feb2270d172..1dcdfc183bb1c21789ed065e1600b5e97c9a71eb 100644 --- a/src/main/java/com/lyt/controller/TestStatusController.java +++ b/src/main/java/com/lyt/controller/TestStatusController.java @@ -27,19 +27,52 @@ public class TestStatusController { public TestStatuService service; @RequestMapping("/testStatus/add") //添加考试的学生 - public int addTestStuts(@Param("id")Integer stu_id,@Param("name") String name)throws Exception{ + public TestStatusVo addTestStuts(@Param("id")Integer stu_id,@Param("name") String name)throws Exception{ Integer stuId = service.selStuByStuId(stu_id); - int xx = 0; + TestStatusVo testStatusVo = new TestStatusVo(); if(stuId != null){ - System.out.println("我找到你了"); - return stuId; + testStatusVo = service.selSubmitPaperTime(stu_id); + return testStatusVo; }else { - System.out.println("我没找到你 我要添加你"); - LocalDateTime dateTime = LocalDateTime.now(); - TestStatusVo testStatusVo = new TestStatusVo(stu_id,name,dateTime.toString(),0); - System.out.println(testStatusVo.toString()); - //xx = service.addTestStatus(studentInfo); + TestStatusVo testStatusVo2 = new TestStatusVo(stu_id,name,System.currentTimeMillis(),0,0); + System.out.println(testStatusVo2.toString()); + service.addTestStatus(testStatusVo2); } - return xx; + return testStatusVo; + } + + @RequestMapping("/testStatus/updateCunNum") + public void updateCunNum(@Param("id")Integer stu_id){ + + Integer num = service.selStuCutNumByStuId(stu_id); + if(num != null) service.updateCutNum(stu_id,num+1); + } + + @RequestMapping("/testStatus/selStuHandPaper") + public Integer selStuHandPaperByStuId(@Param("id")Integer stu_id){ + + Integer num = service.selStuHandPaperByStuId(stu_id); + + return num; + } + + @RequestMapping("/testStatus/selSubmitPaperTime") + public TestStatusVo selSubmitPaperTime(@Param("id")Integer stu_id){ + + TestStatusVo testStatusVo = service.selSubmitPaperTime(stu_id); + + return testStatusVo; + } + + @RequestMapping("/testStatus/updateSubmitPaperTime") + public void updateSubmitPaperTime(@Param("stu_id")Integer stu_id){ + System.out.println("你在哪2222------------"+stu_id); + service.updateSubmitPaperTime(stu_id,System.currentTimeMillis()); + } + + @RequestMapping("/testStatus/updateHandPaper") + public void updateHandPaper(@Param("stu_id")Integer stu_id){ + System.out.println("你在哪------------"+stu_id); + service.updateHandPaper(stu_id,1); } } diff --git a/src/main/java/com/lyt/dao/TestAnswerDao.java b/src/main/java/com/lyt/dao/TestAnswerDao.java index 9e88c8a285d67052723f2ecde3f63fc52bf1f88d..a8168aa6ae8a54ef05de3706c02c9da4f5df4319 100644 --- a/src/main/java/com/lyt/dao/TestAnswerDao.java +++ b/src/main/java/com/lyt/dao/TestAnswerDao.java @@ -3,10 +3,7 @@ package com.lyt.dao; import com.lyt.bean.LinkAnswer; import com.lyt.bean.TestAnswer; import com.lyt.vo.TestAnswerVo; -import org.apache.ibatis.annotations.Delete; -import org.apache.ibatis.annotations.Insert; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.*; import org.springframework.stereotype.Repository; import java.util.List; @@ -21,15 +18,28 @@ public interface TestAnswerDao { @Insert("insert into test_answer (stu_test_id,paper_id,linkAnswers) " + "values(#{stu_test_id},#{paper_id},#{linkAnswers})") - public int addAnswer(TestAnswer testAnswer); + public void addAnswer(TestAnswer testAnswer); - @Insert("insert into link_answer (stu_test_id,paper_id,_index,question_id,answer) " + - "values(#{stu_test_id},#{paper_id},#{index},#{question_id},#{answer})") + @Insert("insert into link_answer (_index,question_id,answer) " + + "values(#{_index},#{questionId},#{answer})") + @SelectKey( keyProperty="id", keyColumn = "id",before=false, resultType=int.class,statement="select last_insert_id()") public void addLinkAnswer(LinkAnswer linkAnswer); - @Select("select * from link_answer where paper_id = #{id} and stu_test_id = #{stu_id}") - public List selAnswerByPaperIdAndStuId(@Param("id") Integer id,@Param("stu_id") Integer stu_id); + @Select("select * from link_answer where id = #{id} ") + public LinkAnswer selAnswerById(@Param("id")Integer id); - @Delete("delete from link_answer where paper_id = #{id} and stu_test_id = #{stu_id}") - public Integer delAnswerByPaperIdAndStuId(Integer id,Integer stu_id); + @Delete("delete from link_answer where id = #{id} ") + public Integer delAnswerById(@Param("id")Integer id); + + //根据学生id和试卷id找到考试答案表主表的所有数据 + @Select("select linkAnswers from test_answer where stu_test_id = #{stu_id} and paper_id = #{paper_id}") + public String selLinkAnswerByStuIdAndPaperId(@Param("stu_id") Integer stu_id,@Param("paper_id") Integer paper_id); + + //根据学生id和试卷id找到考试答案表主表的id + @Select("select test_id from test_answer where stu_test_id = #{stu_id} and paper_id = #{paper_id}") + public Integer selTestAnswerIdByStuIdAndPaperId(@Param("stu_id") Integer stu_id,@Param("paper_id") Integer paper_id); + + //更新学生考试的答案 + @Update("update test_answer set linkAnswers = #{answer} where test_id = #{id}") + public void updateAnswer(@Param("answer") String answer,@Param("id") Integer id); } diff --git a/src/main/java/com/lyt/dao/TestStatusDao.java b/src/main/java/com/lyt/dao/TestStatusDao.java index 83da51574f6ecfb69651b5037aea6d836f498f93..1f205fc2a7d99683bf6311a8976fe1d732bff9e9 100644 --- a/src/main/java/com/lyt/dao/TestStatusDao.java +++ b/src/main/java/com/lyt/dao/TestStatusDao.java @@ -3,8 +3,11 @@ package com.lyt.dao; import com.lyt.bean.TestStatus; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import org.springframework.stereotype.Repository; +import java.sql.Date; + /** * @Author:张勇 * @Date:2023/5/11 22:36 @@ -13,9 +16,28 @@ import org.springframework.stereotype.Repository; @Repository public interface TestStatusDao { - @Insert("insert into test_status values(#{stu_test_id},#{student_id},#{name},#{date},#{cutNum})") - public int addTestStatus(TestStatus testStatus); + @Insert("insert into test_status values(#{stuTestId},#{studentId},#{name},#{getData},#{submitData},#{cutNum},#{isHandPaper})") + public void addTestStatus(TestStatus testStatus); @Select("select student_id from test_status where student_id = #{0}") public Integer selStuByStuId(Integer id); + + @Select("select cutNum from test_status where student_id = #{0}") + public Integer selStuCutNumByStuId(Integer id); + + @Update("update test_status set cutNum = #{num} where student_id = #{id}") + public void updateCutNum(Integer id,Integer num); + + + @Select("select isHandPaper from test_status where student_id = #{id}") + public Integer selStuHandPaperByStuId(Integer id); + + @Update("update test_status set isHandPaper = #{num} where student_id = #{id}") + public void updateHandPaper(Integer id,Integer num); + + @Select("select * from test_status where student_id = #{id}") + public TestStatus selSubmitPaperTime(Integer id); + + @Update("update test_status set submitData = #{data} where student_id = #{id}") + public void updateSubmitPaperTime(Integer id, long data); } diff --git a/src/main/java/com/lyt/service/TestAnswerService.java b/src/main/java/com/lyt/service/TestAnswerService.java index f0c40aac2f3b11da25af223345b7fd8213186baa..f661b8144c7def03236eb4a90c65eb0c596d1bac 100644 --- a/src/main/java/com/lyt/service/TestAnswerService.java +++ b/src/main/java/com/lyt/service/TestAnswerService.java @@ -2,6 +2,7 @@ package com.lyt.service; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.lyt.bean.LinkAnswer; import com.lyt.bean.TestAnswer; import com.lyt.dao.TestAnswerDao; @@ -14,6 +15,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.zip.GZIPOutputStream; /** * @Author:张勇 @@ -26,32 +28,69 @@ public class TestAnswerService { @Autowired TestAnswerDao dao; + //考试提交答案------->已完成 + //先进来查该学生是否已经提交过答案 提交过则将linkAnswers中 关联表id查出循环进行删除 + //再进行插入linkAnswer表中 然后更新testAnswer表中的答案数据 public Integer addTestStatus(TestAnswerVo testAnswerVo) { + String retTestAnswer = dao.selLinkAnswerByStuIdAndPaperId(testAnswerVo.getStu_test_id(),testAnswerVo.getPaper_id()); - System.out.println("---------------------------------"); + JSONArray retLinkAnswer = JSON.parseArray(retTestAnswer); + System.out.println("我要看到你"+retLinkAnswer); + if(retLinkAnswer != null){ + for (Object ignored : retLinkAnswer){ + Integer num = delAnswerById((Integer) ignored); + } + } + + System.out.println("---------------111----------------"); TestAnswer testAnswer = new TestAnswer(); TestAnswer newTestAnswer = BeanUtil.beanConvert(testAnswerVo, testAnswer); List linkAnswers = new ArrayList<>(); for(LinkAnswerVo linkAnswerVo: testAnswerVo.getLinkAnswerVos()){ LinkAnswer linkAnswer = new LinkAnswer(); - linkAnswer.setStu_test_id(testAnswerVo.getStu_test_id()); - linkAnswer.setPaper_id(testAnswerVo.getPaper_id()); linkAnswer.setIndex(linkAnswerVo.getIndex()); linkAnswer.setQuestion_id(linkAnswerVo.getQuestion_id()); linkAnswer.setAnswer(JSON.toJSONString(linkAnswerVo.getAnswer())); linkAnswers.add(linkAnswer); } + //将答案id取出来放在数组中 + Integer[] arr = new Integer[linkAnswers.size()]; + int index = 0 ; for (LinkAnswer linkAnswer : linkAnswers){ - dao.addLinkAnswer(linkAnswer); + dao.addLinkAnswer(linkAnswer); + //新插入的数据id会被封装在linkAnswer对象的id中 + arr[index] = linkAnswer.getId(); + index++; + } + System.out.println(JSON.toJSONString(arr)); + testAnswer.setLinkAnswers(JSON.toJSONString(arr)); + + //找到试卷答案id 先表中是否存在已有答案的数据 存在的话就更新 否则就直接添加 + System.out.println("----------------222----------------"); + Integer retTestAnswerId = dao.selTestAnswerIdByStuIdAndPaperId(testAnswerVo.getStu_test_id(),testAnswerVo.getPaper_id()); + System.out.println("找到testAnswer表中的Id"+retTestAnswerId); + if(retTestAnswerId != null){ + dao.updateAnswer(JSON.toJSONString(arr),retTestAnswerId); + }else { + dao.addAnswer(testAnswer); } - testAnswer.setLinkAnswers(JSON.toJSONString(linkAnswers)); - int flag = dao.addAnswer(testAnswer); return 1; } - //找出关联表中某个学生答的某张试卷的所有答案 - public List selAnswerByPaperIdAndStuId(Integer id,Integer stuId){ - List list = dao.selAnswerByPaperIdAndStuId(id,stuId); - System.out.println(list); + + + //查答案----》已完成 + //先查出该学生已添加的答案linkAnswer中存放的linkAnswer ID 然后找出关联表中某个学生答的某张试卷的所有答案 + public List selAnswerById(Integer stu_id,Integer paper_id){ + List list = new ArrayList<>(); + + String retTestAnswer = dao.selLinkAnswerByStuIdAndPaperId(stu_id,paper_id); + JSONArray retLinkAnswer = JSON.parseArray(retTestAnswer); + if(retLinkAnswer != null){ + for (Object ignored : retLinkAnswer){ + LinkAnswer linkAnswer = dao.selAnswerById((Integer) ignored); + list.add(linkAnswer); + } + } List voList = new ArrayList<>(); for (LinkAnswer linkAnswer:list){ RetAnswerVo linkAnswerVo = new RetAnswerVo(); @@ -59,14 +98,13 @@ public class TestAnswerService { linkAnswerVo.setQuestion_id(linkAnswer.getQuestion_id()); linkAnswerVo.setAnswer(linkAnswer.getAnswer()); voList.add(linkAnswerVo); - System.out.println(linkAnswerVo.toString()); } return voList; } //删除关联表中某个学生答的某张试卷的所有答案--》修改不如删除 - public Integer delAnswerByPaperIdAndStuId(Integer id,Integer stuId){ - Integer num = dao.delAnswerByPaperIdAndStuId(id,stuId); + public Integer delAnswerById(Integer id){ + Integer num = dao.delAnswerById(id); return num; } } \ No newline at end of file diff --git a/src/main/java/com/lyt/service/TestStatuService.java b/src/main/java/com/lyt/service/TestStatuService.java index de75a6a5defc723b4b29a7ada026572d64dec339..2bda67519913e59524f093a86ce3f546c1b44f5d 100644 --- a/src/main/java/com/lyt/service/TestStatuService.java +++ b/src/main/java/com/lyt/service/TestStatuService.java @@ -3,10 +3,13 @@ package com.lyt.service; import com.lyt.bean.TestStatus; import com.lyt.dao.TestStatusDao; import com.lyt.util.BeanUtil; +import com.lyt.vo.TestAnswerVo; import com.lyt.vo.TestStatusVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.sql.Date; + /** * @Author:张勇 * @Date:2023/5/11 22:34 @@ -17,16 +20,41 @@ public class TestStatuService { @Autowired TestStatusDao dao; - public int addTestStatus(TestStatusVo testStatusVo){ + public void addTestStatus(TestStatusVo testStatusVo){ TestStatus testStatus = new TestStatus(); TestStatus newTestStatus = BeanUtil.beanConvert(testStatusVo,testStatus); - int num = dao.addTestStatus(newTestStatus); + dao.addTestStatus(newTestStatus); - return num; } public Integer selStuByStuId(Integer id){ Integer num = dao.selStuByStuId(id); return num; } + public Integer selStuCutNumByStuId(Integer id){ + Integer num = dao.selStuCutNumByStuId(id); + return num; + } + public void updateCutNum(Integer id,Integer num){ + dao.updateCutNum(id,num); + } + public Integer selStuHandPaperByStuId(Integer id){ + Integer num = dao.selStuHandPaperByStuId(id); + return num; + } + public void updateHandPaper(Integer id,Integer num){ + dao.updateHandPaper(id,num); + } + public TestStatusVo selSubmitPaperTime(Integer id){ + TestStatus testStatus = dao.selSubmitPaperTime(id); + System.out.println(testStatus); + TestStatusVo testStatusVo = new TestStatusVo(); + TestStatusVo testStatusVos = BeanUtil.beanConvert(testStatus,testStatusVo); + System.out.println(testStatusVos); + return testStatusVos; + } + + public void updateSubmitPaperTime(Integer id, long date){ + dao.updateSubmitPaperTime(id,date); + } } diff --git a/src/main/java/com/lyt/vo/LinkAnswerVo.java b/src/main/java/com/lyt/vo/LinkAnswerVo.java index dae5046f8cc1270b8d0eeded6be48ec18c3c0815..a668d09b7839c3e87a60ed87414b6d0462088d2d 100644 --- a/src/main/java/com/lyt/vo/LinkAnswerVo.java +++ b/src/main/java/com/lyt/vo/LinkAnswerVo.java @@ -7,8 +7,6 @@ package com.lyt.vo; */ public class LinkAnswerVo { private Integer id; - private Integer stu_test_id; - private Integer paper_id; private Integer index; private Integer question_id; private String[] answer; @@ -30,22 +28,6 @@ public class LinkAnswerVo { this.id = id; } - public Integer getStu_test_id() { - return stu_test_id; - } - - public void setStu_test_id(Integer stu_test_id) { - this.stu_test_id = stu_test_id; - } - - public Integer getPaper_id() { - return paper_id; - } - - public void setPaper_id(Integer paper_id) { - this.paper_id = paper_id; - } - public Integer getIndex() { return index; } diff --git a/src/main/java/com/lyt/vo/TestAnswerVo.java b/src/main/java/com/lyt/vo/TestAnswerVo.java index 83900fa04f7287d44cd350e93deae33e159f28b8..cc2939bf9e9c16322d33935d2d435158e6a20742 100644 --- a/src/main/java/com/lyt/vo/TestAnswerVo.java +++ b/src/main/java/com/lyt/vo/TestAnswerVo.java @@ -47,10 +47,10 @@ public class TestAnswerVo { this.linkAnswerVos = linkAnswerVos; } - public TestAnswerVo(Integer stu_test_id, Integer paper_id, List stu_answer) { + public TestAnswerVo(Integer stu_test_id, Integer paper_id, List linkAnswerVos) { this.stu_test_id = stu_test_id; this.paper_id = paper_id; - this.linkAnswerVos = stu_answer; + this.linkAnswerVos = linkAnswerVos; } @Override diff --git a/src/main/java/com/lyt/vo/TestStatusVo.java b/src/main/java/com/lyt/vo/TestStatusVo.java index beabddba62f29a263549024638e19d7f09a8a1f4..506e507a426b5950dde54ac321f97656afd00e33 100644 --- a/src/main/java/com/lyt/vo/TestStatusVo.java +++ b/src/main/java/com/lyt/vo/TestStatusVo.java @@ -10,31 +10,28 @@ import lombok.NoArgsConstructor; * @Info: 参加考试的学生实体类 */ @Data -@NoArgsConstructor @AllArgsConstructor public class TestStatusVo { - private Integer stu_test_id; - private Integer student_id; + private Integer stuTestId; + private Integer studentId; private Integer cutNum; private String name; - private String date; + private long getData; + private long submitData; + private Integer isHandPaper; - public TestStatusVo(Integer student_idm, String name, String date, Integer cutNu) { - this.student_id = student_id; - this.name = name; - this.date = date; - this.cutNum = cutNum; + + public TestStatusVo() { } - @Override - public String toString() { - return "TestStatusVo{" + - "stu_test_id=" + stu_test_id + - ", student_id=" + student_id + - ", cutNum=" + cutNum + - ", name='" + name + '\'' + - ", date='" + date + '\'' + - '}'; + public TestStatusVo(Integer student_id, String name, long getData, Integer cutNum, Integer isHandPaper) { + this.studentId = student_id; + this.cutNum = cutNum; + this.name = name; + this.getData = getData; + this.isHandPaper = isHandPaper; } + + } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index cb48f18fb055fc9fffdf6e902ad4e054bf239c96..778081ab6305494b5e56592e6ab101c10f7e5804 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -6,7 +6,7 @@ spring: driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/onlineexamsystem?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC username: root - password: root + password: ZY584726 mybatis: mapper-locations: classpath:mapper/*.xml