From 7d0895452595b999c31f944dc52901515504e855 Mon Sep 17 00:00:00 2001 From: zhaolongfei <2651195677@qq.com> Date: Tue, 18 Jun 2024 15:05:42 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E4=B8=8B=E8=80=83=E8=AF=95=E7=BB=93=E6=9D=9F=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=B9=B6=E6=9C=AA=E7=94=9F=E6=95=88=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/module/exam/api/ExamTestApi.java | 18 ++++++++++++++++-- .../com/xboe/module/exam/entity/ExamTest.java | 4 ++-- .../exam/service/impl/ExamTestServiceImpl.java | 13 ++++++++++++- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/ExamTestApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/ExamTestApi.java index 9b083070..f774c236 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/ExamTestApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/ExamTestApi.java @@ -2,6 +2,7 @@ package com.xboe.module.exam.api; import javax.annotation.Resource; +import org.hibernate.exception.ConstraintViolationException; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -81,12 +82,25 @@ public class ExamTestApi extends ApiBaseController { if(StringUtil.isBlank(examTest.getTestName())){ return badRequest("标题为空"); } + + // 确保examTest有一个有效的主键ID(如果适用) + // 这取决于您的业务逻辑是否允许更新主键 + // 通常,更新操作不会改变主键 + if (examTest.getId() == null) { + return badRequest("更新操作需要有效的主键ID"); + } + try { examTestService.update(examTest); return success(examTest); + } catch (ConstraintViolationException e) { + // 捕获约束违反异常,并返回一个更具体的错误消息 + log.error("修改失败,违反了约束条件", e); + return error("修改失败,违反了约束条件(可能是主键已存在)"); } catch (Exception e) { - log.error("修改失败",e); - return error("修改失败",e.getMessage()); + // 捕获其他所有异常 + log.error("修改失败", e); + return error("修改失败", e.getMessage()); } } /**、 diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/exam/entity/ExamTest.java b/servers/boe-server-all/src/main/java/com/xboe/module/exam/entity/ExamTest.java index fb665bc2..a4f313bb 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/exam/entity/ExamTest.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/exam/entity/ExamTest.java @@ -101,7 +101,7 @@ public class ExamTest extends BaseEntity { /** * 试卷的ID */ - @Column(name = "paper_id",nullable = false,length=20) + @Column(name = "paper_id",length=20) private String paperId; /** @@ -173,7 +173,7 @@ public class ExamTest extends BaseEntity { /**启用的,上架*/ - @Column(name = "enabled", nullable = false, length = 1) + @Column(name = "enabled", length = 1) private Boolean enabled; @Transient diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/ExamTestServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/ExamTestServiceImpl.java index 5b9bf331..8414badb 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/ExamTestServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/ExamTestServiceImpl.java @@ -70,7 +70,18 @@ public class ExamTestServiceImpl implements IExamTestService { @Override public void update(ExamTest examTest) { - examTestDao.update(examTest); + if (examTest.getId() == null) { + throw new IllegalArgumentException("ID must not be null"); + } + String sql = "update boe_exam_test set arrange = "+ examTest.getArrange() +", deadline_time = '"+examTest.getDeadlineTime() +"' , " + + "entrance_time = '"+examTest.getEntranceTime() +"' , paper_id = "+examTest.getPaperId() +",pass_line = "+examTest.getPassLine() + + ", percent_score = "+examTest.getPercentScore() +" ,publish_time = '"+examTest.getPublishTime()+"' , published = "+examTest.getPublished()+ + ",random_count = "+examTest.getRandomCount()+" ,random_mode = "+examTest.getRandomMode()+",range_type = "+examTest.getRangeType() + + ",scoring_type = "+examTest.getScoringType() +",show_analysis="+examTest.getShowAnalysis() +",show_answer = "+examTest.getShowAnswer() + + ",test_duration = "+examTest.getTestDuration() +",test_name = '"+examTest.getTestName() +"',test_remark= "+examTest.getTestRemark() + + ",test_type= "+examTest.getTestType() +" ,test_up = '"+examTest.getTestUp() +"' ,test_front= "+examTest.getTestFront() + + ",times = '"+examTest.getTimes() +"' where id = "+examTest.getId()+""; + examTestDao.sqlUpdate(sql); } @Override From 33fee4643341de236ab13c57a1c3d6c3ba617434 Mon Sep 17 00:00:00 2001 From: zhaolongfei <2651195677@qq.com> Date: Wed, 19 Jun 2024 15:49:35 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E8=AF=BE=E8=80=83?= =?UTF-8?q?=E8=AF=95=E6=88=90=E7=BB=A9=E4=B8=BA=E7=A9=BA=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xboe/school/study/service/impl/StudyExamServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyExamServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyExamServiceImpl.java index 570402c0..4daed003 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyExamServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyExamServiceImpl.java @@ -118,6 +118,7 @@ public class StudyExamServiceImpl implements IStudyExamService{ scItemDao.updateFieldById(exam.getStudyId(), "finish_time",LocalDateTime.now()); scItemDao.updateFieldById(exam.getStudyId(), "status",StudyCourseItem.STATUS_FINISH); scItemDao.updateFieldById(exam.getStudyId(), "score",100.0f); + scDao.updateFieldById(exam.getStudyId(), "last_score",100.0f); } } @@ -132,6 +133,7 @@ public class StudyExamServiceImpl implements IStudyExamService{ scItemDao.updateFieldById(exam.getStudyId(), "finish_time",LocalDateTime.now()); scItemDao.updateFieldById(exam.getStudyId(), "status",StudyCourseItem.STATUS_FINISH); scItemDao.updateFieldById(exam.getStudyId(), "score",100.0f); + scDao.updateFieldById(exam.getStudyId(), "last_score",100.0f); } } From 1abd0598204d2bc6fa3823ba774dbe816e7466c7 Mon Sep 17 00:00:00 2001 From: zhaolongfei <2651195677@qq.com> Date: Wed, 19 Jun 2024 18:07:48 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../school/study/service/impl/StudyExamServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyExamServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyExamServiceImpl.java index 4daed003..8aaacf91 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyExamServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyExamServiceImpl.java @@ -118,25 +118,25 @@ public class StudyExamServiceImpl implements IStudyExamService{ scItemDao.updateFieldById(exam.getStudyId(), "finish_time",LocalDateTime.now()); scItemDao.updateFieldById(exam.getStudyId(), "status",StudyCourseItem.STATUS_FINISH); scItemDao.updateFieldById(exam.getStudyId(), "score",100.0f); - scDao.updateFieldById(exam.getStudyId(), "last_score",100.0f); + //scDao.updateFieldById(exam.getStudyId(), "last_score",100.0f); } } - //1最高一次,用于最高一次的计算 if(cexam.getScoringType()==CourseExam.SCORINGTYPE_MAX) { Float f=(Float)dao.findField("max(score)", FieldFilters.eq("contentId", exam.getContentId())); scItemDao.updateFieldById(exam.getStudyItemId(), "score", f); scItemDao.updateFieldById(exam.getStudyItemId(), "status", f>=exam.getPassLine()?StudyCourseItem.STATUS_FINISH:StudyCourseItem.STATUS_STUDYING); scItemDao.updateFieldById(exam.getStudyItemId(), "progress",f>=exam.getPassLine()?100:f.intValue()); + if(f>=exam.getPassLine()){ scItemDao.updateFieldById(exam.getStudyId(), "progress",100); scItemDao.updateFieldById(exam.getStudyId(), "finish_time",LocalDateTime.now()); scItemDao.updateFieldById(exam.getStudyId(), "status",StudyCourseItem.STATUS_FINISH); scItemDao.updateFieldById(exam.getStudyId(), "score",100.0f); - scDao.updateFieldById(exam.getStudyId(), "last_score",100.0f); + //scDao.updateFieldById(exam.getStudyId(), "last_score",100.0f); } } - + scDao.updateFieldById(exam.getStudyId(), "last_score",exam.getScore()); //执行完毕 清除redis记录 // redisTemplate.delete(key); return ""; From b108bc3e7629eaa8d1c5e7d947bf3d7378f085cc Mon Sep 17 00:00:00 2001 From: zhaolongfei <2651195677@qq.com> Date: Fri, 21 Jun 2024 11:14:41 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E8=80=83=E8=AF=95=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xboe/api/ThirdApi.java | 14 ++++++++++++++ .../java/com/xboe/module/exam/api/ExamTestApi.java | 14 +++++++++++--- .../exam/service/impl/ExamTestServiceImpl.java | 4 ++-- .../src/main/resources/application.properties | 1 + 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java b/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java index 272d2560..b9b6155e 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java @@ -9,6 +9,7 @@ import com.xboe.module.course.vo.StudyCourseVo; import com.xboe.module.course.vo.TeacherInfoVo; import com.xboe.module.course.vo.TeacherVo; import com.xboe.module.dict.entity.DictDto; +import com.xboe.module.exam.entity.ExamTest; import com.xboe.school.study.entity.StudyCourse; import com.xboe.system.user.dao.UserDao; import com.xboe.system.user.entity.User; @@ -62,6 +63,9 @@ public class ThirdApi { @Value("${coursesuilt.getStudyStatus}") private String getStudyStatus; + + @Value("${manageApi.editExam}") + private String editExam; //获取例外人员的id public List getUserId(){ String responseBody = Optional.ofNullable(HttpRequest.get(infarasApiUrl+"?pid=316&type=1").execute() //prod 316 @@ -206,6 +210,14 @@ public class ThirdApi { return studyCourseResult.getResult(); } + public void sqlUpdate(ExamTest examTest, String token) { + examTest.setSysUpdateTime(null); + examTest.setSysCreateTime(null); + examTest.setPublishTime(null); + String resp = Optional.ofNullable(HttpRequest.post(editExam).body(JSONUtil.toJsonStr(examTest)).header("token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败")); + Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(t, DynamicBean.class).success()); + } + public static void main(String[] args) { String token = "eyJ0eXBlIjoidG9rZW4iLCJhbGciOiJIUzI1NiJ9.eyJjb21wYW55Q29kZSI6IkMwMDEiLCJ1SWQiOiI5NjUzNDIwMjc0OTc2MDcxNjgiLCJjb21wYW55SWQiOiIxMDQxNjczOTc3Mzc5OTQ2NDk2IiwibG9naW5JZCI6IjE2ODg0NDg5MjIwNzY0OTE3NzgiLCJpc3MiOiJodHRwOi8vdS5ib2UuY29tIiwiR2l2ZW5OYW1lIjoiYm9ldSIsImV4cCI6MTY5MTM5OTc2NzU1OCwidXNlck5hbWUiOiLmnY7njonlhrAiLCJ1c2VySWQiOiI2QjA0OUZBRi1DMzE0LTdDQ0YtMEQyOC0wRDIzRjRDNDI1MzEifQ==.8b52dcf4d48a790ed258b9ca2b279bb269f5301722095382fbd352705b51c893"; String resp = Optional.ofNullable(HttpRequest.post("https://u-pre.boe.com/statApi/xboe/m/stat/userdynamic/list").body(JSONUtil.toJsonStr(UserdynamicParam.builder(). @@ -221,4 +233,6 @@ public class ThirdApi { } + + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/ExamTestApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/ExamTestApi.java index f774c236..00b8220b 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/ExamTestApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/ExamTestApi.java @@ -1,7 +1,10 @@ package com.xboe.module.exam.api; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import com.xboe.api.ThirdApi; +import org.apache.commons.lang3.StringUtils; import org.hibernate.exception.ConstraintViolationException; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -30,7 +33,8 @@ public class ExamTestApi extends ApiBaseController { @Resource private IExamTestService examTestService; - + @Resource + ThirdApi thirdApi; /** *查询考试,分页,搜索,资源归属,状态 **/ @@ -78,7 +82,7 @@ public class ExamTestApi extends ApiBaseController { * */ @PostMapping("update") @AutoLog(module = "考试",action = "修改考试",info = "修改考试") - public JsonResponse update(@RequestBody ExamTest examTest){ + public JsonResponse update(@RequestBody ExamTest examTest, HttpServletRequest request){ if(StringUtil.isBlank(examTest.getTestName())){ return badRequest("标题为空"); } @@ -89,9 +93,13 @@ public class ExamTestApi extends ApiBaseController { if (examTest.getId() == null) { return badRequest("更新操作需要有效的主键ID"); } - + String token = request.getHeader("Xboe-Access-Token"); + if (StringUtils.isEmpty(token)) { + token = request.getHeader("token"); + } try { examTestService.update(examTest); + thirdApi.sqlUpdate(examTest,token); return success(examTest); } catch (ConstraintViolationException e) { // 捕获约束违反异常,并返回一个更具体的错误消息 diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/ExamTestServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/ExamTestServiceImpl.java index 8414badb..8b643df6 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/ExamTestServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/ExamTestServiceImpl.java @@ -78,8 +78,8 @@ public class ExamTestServiceImpl implements IExamTestService { ", percent_score = "+examTest.getPercentScore() +" ,publish_time = '"+examTest.getPublishTime()+"' , published = "+examTest.getPublished()+ ",random_count = "+examTest.getRandomCount()+" ,random_mode = "+examTest.getRandomMode()+",range_type = "+examTest.getRangeType() + ",scoring_type = "+examTest.getScoringType() +",show_analysis="+examTest.getShowAnalysis() +",show_answer = "+examTest.getShowAnswer() + - ",test_duration = "+examTest.getTestDuration() +",test_name = '"+examTest.getTestName() +"',test_remark= "+examTest.getTestRemark() + - ",test_type= "+examTest.getTestType() +" ,test_up = '"+examTest.getTestUp() +"' ,test_front= "+examTest.getTestFront() + + ",test_duration = "+examTest.getTestDuration() +",test_name = '"+examTest.getTestName() +"',test_remark= '"+examTest.getTestRemark() + + "',test_type= "+examTest.getTestType() +" ,test_up = '"+examTest.getTestUp() +"' ,test_front= "+examTest.getTestFront() + ",times = '"+examTest.getTimes() +"' where id = "+examTest.getId()+""; examTestDao.sqlUpdate(sql); } diff --git a/servers/boe-server-all/src/main/resources/application.properties b/servers/boe-server-all/src/main/resources/application.properties index 7f8192bc..01a9218f 100644 --- a/servers/boe-server-all/src/main/resources/application.properties +++ b/servers/boe-server-all/src/main/resources/application.properties @@ -71,6 +71,7 @@ audience.getOrgUsers=${boe.domain}/userbasic/user/getOrgUsers infrasApi.dict=${boe.domain}/infrasApi/dict/list #获取非报名课id manageApi.stu.offcourse=${boe.domain}/manageApi/stu/offcourse/getOffCourseId +manageApi.editExam=${boe.domain}/manageApi/admin/project/editExam #获取离职教师id userBasic.getTeacherIds=${boe.domain}/userbasic/user/getTeacherInfo coursesuilt.getStudyStatus=${boe.domain}/manageApi/stu/project/completeStatus \ No newline at end of file From da6ed5eed4367a0b15be877a06b1a347196e77ca Mon Sep 17 00:00:00 2001 From: zhaolongfei <2651195677@qq.com> Date: Fri, 21 Jun 2024 14:58:36 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E8=80=83=E8=AF=95=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xboe/module/exam/service/impl/ExamTestServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/ExamTestServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/ExamTestServiceImpl.java index 8b643df6..14fda5bd 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/ExamTestServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/ExamTestServiceImpl.java @@ -79,8 +79,8 @@ public class ExamTestServiceImpl implements IExamTestService { ",random_count = "+examTest.getRandomCount()+" ,random_mode = "+examTest.getRandomMode()+",range_type = "+examTest.getRangeType() + ",scoring_type = "+examTest.getScoringType() +",show_analysis="+examTest.getShowAnalysis() +",show_answer = "+examTest.getShowAnswer() + ",test_duration = "+examTest.getTestDuration() +",test_name = '"+examTest.getTestName() +"',test_remark= '"+examTest.getTestRemark() + - "',test_type= "+examTest.getTestType() +" ,test_up = '"+examTest.getTestUp() +"' ,test_front= "+examTest.getTestFront() + - ",times = '"+examTest.getTimes() +"' where id = "+examTest.getId()+""; + "',test_type= "+examTest.getTestType() +" ,test_up = '"+examTest.getTestUp() +"' ,test_front= '"+examTest.getTestFront() + + "',times = '"+examTest.getTimes() +"' where id = "+examTest.getId()+""; examTestDao.sqlUpdate(sql); }