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 9b083070..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,11 @@ 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; import org.springframework.web.bind.annotation.RequestBody; @@ -29,7 +33,8 @@ public class ExamTestApi extends ApiBaseController { @Resource private IExamTestService examTestService; - + @Resource + ThirdApi thirdApi; /** *查询考试,分页,搜索,资源归属,状态 **/ @@ -77,16 +82,33 @@ 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("标题为空"); } + + // 确保examTest有一个有效的主键ID(如果适用) + // 这取决于您的业务逻辑是否允许更新主键 + // 通常,更新操作不会改变主键 + 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) { + // 捕获约束违反异常,并返回一个更具体的错误消息 + 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..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 @@ -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 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..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,23 +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); } } - //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",exam.getScore()); //执行完毕 清除redis记录 // redisTemplate.delete(key); return ""; 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