diff --git a/pom.xml b/pom.xml
index 6e96ac4..b4a3ad8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,6 +88,7 @@
spring-security-jwt
1.1.1.RELEASE
+
com.nimbusds
nimbus-jose-jwt
@@ -183,6 +184,12 @@
easyexcel
3.2.1
+
+
+ org.python
+ jython-standalone
+ 2.7.2
+
diff --git a/src/main/java/com/sztzjy/financial_bigdata/config/Constant.java b/src/main/java/com/sztzjy/financial_bigdata/config/Constant.java
index dd8412f..35f1320 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/config/Constant.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/config/Constant.java
@@ -21,9 +21,13 @@ public class Constant {
public static final String INPUT_TYPE_TEACHER= "0";
public static final String INPUT_TYPE_BUILT_IN= "1";
- public static final String OBJECTIVE_TYPE_SINGLE= "single";
- public static final String OBJECTIVE_TYPE_Many= "many";
- public static final String OBJECTIVE_TYPE_JUDGE= "judge";
+ public static final String OBJECTIVE_TYPE_SINGLE= "0";
+ public static final String OBJECTIVE_TYPE_Many= "1";
+ public static final String OBJECTIVE_TYPE_JUDGE= "2";
+
+ public static final String OBJECTIVE_TYPE_SINGLE_OTHER= "0.0";
+ public static final String OBJECTIVE_TYPE_Many_OTHER= "1.0";
+ public static final String OBJECTIVE_TYPE_JUDGE_OTHER= "2.0";
private String aaa="aaa";
diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/ExerciseExperimentalTraining.java b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/ExerciseExperimentalTraining.java
index 488166c..94b4441 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/ExerciseExperimentalTraining.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/ExerciseExperimentalTraining.java
@@ -1,13 +1,74 @@
package com.sztzjy.financial_bigdata.controller.stu;
+import com.sztzjy.financial_bigdata.annotation.AnonymousAccess;
+import com.sztzjy.financial_bigdata.entity.SysCaseQuestion;
+import com.sztzjy.financial_bigdata.entity.SysCaseQuestionExample;
+import com.sztzjy.financial_bigdata.entity.SysCaseQuestionStep;
+import com.sztzjy.financial_bigdata.entity.SysCaseQuestionStepExample;
+import com.sztzjy.financial_bigdata.mapper.SysCaseQuestionMapper;
+import com.sztzjy.financial_bigdata.mapper.SysCaseQuestionStepMapper;
+import com.sztzjy.financial_bigdata.service.tea.ITeaCaseStepService;
+import com.sztzjy.financial_bigdata.util.ResultEntity;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
//实训演练-实训案例-实验实训
@RestController
@Api(tags = "实训演练-实训案例-实验实训")
@RequestMapping("api/stu/exercise/experimentalTrainingController")
public class ExerciseExperimentalTraining {
+ @Autowired
+ SysCaseQuestionMapper caseQuestionMapper;
+ @Autowired
+ SysCaseQuestionStepMapper caseQuestionStepMapper;
+ @Autowired
+ ITeaCaseStepService stepService;
+
+ //获取案例题基础信息
+ @GetMapping("getCaseInfo")
+ @ApiOperation("获取案例题基础信息")
+ @AnonymousAccess
+ public ResultEntity getCaseInfo(@RequestParam String chapterId) {
+ SysCaseQuestionExample example = new SysCaseQuestionExample();
+ example.createCriteria().andChapterIdEqualTo(chapterId);
+ List sysCaseQuestions = caseQuestionMapper.selectByExample(example);
+ return new ResultEntity<>(HttpStatus.OK, "获取案例题基础信息查询成功", sysCaseQuestions.get(0));
+ }
+
+ //获取案例题步骤基础信息
+ //判断是否需要回显、如果学生实训表中 实验实训步骤sort存在、则返回学生答案
+ @GetMapping("getCaseStepInfo")
+ @ApiOperation("获取案例题步骤基础信息")
+ @AnonymousAccess
+ public ResultEntity> getCaseStepInfo(@RequestParam String caseId) {
+ SysCaseQuestionStepExample example = new SysCaseQuestionStepExample();
+ example.createCriteria().andCaseIdEqualTo(caseId);
+ List stepList = caseQuestionStepMapper.selectByExample(example);
+ for (int i = 0; i < stepList.size(); i++) {
+ stepList.get(0).setAnswer("");
+ stepList.get(0).setAnswerOriginal("");
+ }
+ return new ResultEntity<>(HttpStatus.OK, "获取案例题基础信息查询成功", stepList);
+ }
+
+ //提交案例题
+ @PostMapping("commitCase")
+ @ApiOperation("提交案例题")
+ @AnonymousAccess
+ public ResultEntity getCaseStepInfo(@ApiParam("将学生答案传递到answer中") @RequestParam SysCaseQuestionStep caseQuestionStep) {
+
+ //执行记录操作
+ Boolean flag = stepService.commitCase(caseQuestionStep);
+ return new ResultEntity<>(HttpStatus.OK, "回答正确、该步骤提交成功");
+
+ }
+
+ //python在线运行
}
diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/PythonController.java b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/PythonController.java
new file mode 100644
index 0000000..5b03195
--- /dev/null
+++ b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/PythonController.java
@@ -0,0 +1,49 @@
+package com.sztzjy.financial_bigdata.controller.stu;// 后端代码
+
+import com.sztzjy.financial_bigdata.util.ResultEntity;
+import org.python.core.CompileMode;
+import org.python.core.Py;
+import org.python.core.PyCode;
+import org.python.util.PythonInterpreter;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+@RestController
+@RequestMapping("/api/python")
+public class PythonController {
+
+ @PostMapping("/validate")
+ public ResultEntity validatePythonCode(@RequestBody String code) {
+ // 对 Python 代码进行检验
+ PythonInterpreter interpreter = new PythonInterpreter();
+ try {
+ InputStream stream = new ByteArrayInputStream(code.getBytes());
+ PyCode pyCode = Py.compile(stream, "", CompileMode.exec);
+ interpreter.exec(pyCode);
+ return new ResultEntity<>(HttpStatus.OK, "语法正确");
+ } catch (Exception e) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "语法有误",e.getMessage());
+ }
+ }
+
+ public static void main(String[] args) {
+ String code="if True:\n" +
+ " print (\"True\")\n" +
+ "else:\n" +
+ " print (\"False\")\n";
+ PythonInterpreter interpreter = new PythonInterpreter();
+ try {
+ InputStream stream = new ByteArrayInputStream(code.getBytes());
+ PyCode pyCode = Py.compile(stream, "", CompileMode.exec);
+ interpreter.exec(pyCode);
+
+ System.out.println("2");
+ } catch (Exception e) {
+ System.out.println(e.getMessage()); }
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/TheoryTestController.java b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/TheoryTestController.java
index fe2e203..1025d20 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/TheoryTestController.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/TheoryTestController.java
@@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
+import java.util.Date;
import java.util.List;
@RestController
@@ -36,11 +37,23 @@ public class TheoryTestController {
@AnonymousAccess
public ResultEntity> startTheoryTest(@RequestParam String userId) {
List list=theoryTestService.startTheoryTest(userId);
+ for (int i = 0; i < list.size(); i++) {
+ list.get(i).setSchoolId(String.valueOf(i+1));
+ }
return new ResultEntity<>(HttpStatus.OK, "开始考试、客观题列表查询成功",list);
}
+ //获取理论考试开始时间
+ @GetMapping("getStartTime")
+ @ApiOperation("获取理论考试开始时间")
+ @AnonymousAccess
+ public ResultEntity getStartTime(@RequestParam String userId){
+ Date date=theoryTestService.getStartTime(userId);
+ return new ResultEntity<>(HttpStatus.OK, "获取理论考试开始时间成功",date);
+ }
+
//结束考试
- @GetMapping("endTheoryTest")
+ @PostMapping("endTheoryTest")
@ApiOperation("结束考试 学生自动点击交卷、前端检查时间到了也发送请求")
@AnonymousAccess
public ResultEntity endTheoryTest(@RequestBody StuTheoryTestDto theoryTestDto) {
@@ -58,8 +71,12 @@ public class TheoryTestController {
//错题集展示
@GetMapping("selectErrors")
@ApiOperation("错题集展示")
+ @AnonymousAccess
public ResultEntity> selectErrors(@RequestParam String userId){
List list=theoryTestService.selectErrors(userId);
+ for (int i = 0; i < list.size(); i++) {
+ list.get(i).setSchoolId(String.valueOf(i+1));
+ }
if(list==null){
return new ResultEntity<>(HttpStatus.OK, "没有错题",null);
}
@@ -69,9 +86,10 @@ public class TheoryTestController {
//移除错题集
@GetMapping("removeError")
@ApiOperation("移除错题集")
+ @AnonymousAccess
public ResultEntity removeError(@RequestParam String userId,
@ApiParam("客观题id")@RequestParam String objectiveQuestionId,
- @ApiParam("题目类型 single、many、judge")@RequestParam String type){
+ @ApiParam("题目类型 0、1、2")@RequestParam String type){
Boolean flag=theoryTestService.removeError(userId,objectiveQuestionId,type);
if(flag){
return new ResultEntity<>(HttpStatus.OK, "移除错题集成功");
@@ -83,6 +101,7 @@ public class TheoryTestController {
//考试记录查询
@GetMapping("getTheoryTestList")
@ApiOperation("获取理论考试数据集")
+ @AnonymousAccess
public ResultEntity> getTheoryTestList(@RequestParam String userId,
@RequestParam Integer index,
@RequestParam Integer size){
@@ -93,6 +112,7 @@ public class TheoryTestController {
//考试记录详情查询
@GetMapping("getTheoryTestDetail")
@ApiOperation("获取理论考试数据详情")
+ @AnonymousAccess
public ResultEntity> getTheoryTestDetail(@ApiParam("理论考试id")@RequestParam String theoryExamId,
@RequestParam Integer index,
@RequestParam Integer size){
@@ -100,9 +120,10 @@ public class TheoryTestController {
return new ResultEntity<>(HttpStatus.OK, "获取理论考试数据详情成功",detailDtoList);
}
- //答题次数、平均正确率、排名(理论考试记录)
+ //答题次数、平均正确率、排名(理论考试记录) ************
@GetMapping("getTheoryRecord")
@ApiOperation("获取理论考试记录数据")
+ @AnonymousAccess
public ResultEntity getTheoryRecord(String userId){
StuTheoryRecord stuTheoryRecord = recordMapper.selectByPrimaryKey(userId);
return new ResultEntity<>(HttpStatus.OK, "获取理论考试记录数据成功",stuTheoryRecord);
diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaCaseController.java b/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaCaseController.java
index c5a9480..6fe9fb2 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaCaseController.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaCaseController.java
@@ -1,8 +1,11 @@
package com.sztzjy.financial_bigdata.controller.tea;
import com.github.pagehelper.PageInfo;
+import com.sztzjy.financial_bigdata.annotation.AnonymousAccess;
import com.sztzjy.financial_bigdata.config.Constant;
import com.sztzjy.financial_bigdata.entity.SysCaseQuestion;
+import com.sztzjy.financial_bigdata.entity.SysCourse;
+import com.sztzjy.financial_bigdata.entity.SysCourseChapter;
import com.sztzjy.financial_bigdata.service.tea.ITeaCaseService;
import com.sztzjy.financial_bigdata.util.ResultEntity;
import io.swagger.annotations.Api;
@@ -106,4 +109,32 @@ public class TeaCaseController {
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "案例题更新失败");
}
}
+
+
+ //案例题库选择课程名展示
+ @GetMapping("selectAllCourse")
+ @ApiOperation("案例题库选择课程名展示")
+ @AnonymousAccess
+ public ResultEntity> selectAllCourse(@RequestParam String schoolId){
+ List list=caseService.selectAllCourseName(schoolId);
+ return new ResultEntity<>(HttpStatus.OK, "案例题库选择课程名展示成功",list);
+ }
+
+ //案例题库选择章节名展示
+ @GetMapping("selectChapterByCourseId")
+ @ApiOperation("案例题库选择章节名展示")
+ @AnonymousAccess
+ public ResultEntity> selectChapterByCourseId(@ApiParam("课程id")@RequestParam String courseId){
+ List list=caseService.selectChapterByCourseId(courseId);
+ return new ResultEntity<>(HttpStatus.OK, "案例题库选择章节名展示成功",list);
+ }
+
+ //案例题库内容展示
+ @GetMapping("selectAllCaseByChapterId")
+ @ApiOperation("案例题库选择案例题内容展示")
+ @AnonymousAccess
+ public ResultEntity> selectAllCaseByChapterId(@RequestParam String chapterId){
+ List list=caseService.selectAllCaseByChapterId(chapterId);
+ return new ResultEntity<>(HttpStatus.OK, "案例题库选择案例题内容展示成功",list);
+ }
}
diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaObjectiveController.java b/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaObjectiveController.java
index b4446c9..df0cb5a 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaObjectiveController.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaObjectiveController.java
@@ -1,6 +1,7 @@
package com.sztzjy.financial_bigdata.controller.tea;
import com.github.pagehelper.PageInfo;
+import com.sztzjy.financial_bigdata.annotation.AnonymousAccess;
import com.sztzjy.financial_bigdata.entity.SysObjectiveQuestion;
import com.sztzjy.financial_bigdata.service.tea.ITeaObjectiveService;
import com.sztzjy.financial_bigdata.util.ResultEntity;
@@ -35,6 +36,7 @@ public class TeaObjectiveController {
//客观题新增
@PostMapping("insertObjective")
@ApiOperation("客观题新增")
+ @AnonymousAccess
public ResultEntity insertObjective(@RequestBody SysObjectiveQuestion objectiveQuestion) {
Boolean flag = teaObjectiveService.insertObjective(objectiveQuestion);
if (flag) {
@@ -47,6 +49,7 @@ public class TeaObjectiveController {
//客观题删除
@GetMapping("/batchDeleteObjective")
@ApiOperation("客观题批量删除")
+ @AnonymousAccess
public ResultEntity batchDeleteObjective(@ApiParam("客观题IDList") @RequestParam List objectiveIdList,
@RequestParam String schoolId) {
Boolean flag = teaObjectiveService.batchDeleteObjective(objectiveIdList,schoolId);
@@ -60,6 +63,7 @@ public class TeaObjectiveController {
//客观题列表查看
@GetMapping("/selectObjectiveList")
@ApiOperation("客观题列表查看")
+ @AnonymousAccess
public ResultEntity> selectObjectiveList(@RequestParam String schoolId,
@ApiParam("课程ID") @RequestParam String courseId,
@ApiParam("题目类型 single单选 many多选 judge判断")@RequestParam(required = false)String type,
@@ -73,6 +77,7 @@ public class TeaObjectiveController {
//客观题单个详情查看
@GetMapping("/selectObjectiveDetails")
@ApiOperation("客观题单个详情查看")
+ @AnonymousAccess
public ResultEntity selectObjectiveDetails(@ApiParam("客观题ID") @RequestParam String objectiveId){
SysObjectiveQuestion objectiveQuestion=teaObjectiveService.selectObjectiveDetails(objectiveId);
return new ResultEntity<>(HttpStatus.OK, "客观题删除成功",objectiveQuestion);
@@ -81,6 +86,7 @@ public class TeaObjectiveController {
//客观题导入模板下载
@GetMapping("downloadResource")
@ApiOperation("客观题导入模板下载")
+ @AnonymousAccess
public void downloadResource(HttpServletResponse response) {
fileUtil.download(response, "客观题导入模板.xlsx", filePath);
}
@@ -88,6 +94,7 @@ public class TeaObjectiveController {
//客观题批量导入
@ApiOperation(value = "以导入excel方式")
@PostMapping(value = "/insertObjectiveByExcel")
+ @AnonymousAccess
public ResultEntity insertObjectiveByExcel(@RequestParam MultipartFile file,
@RequestParam String schoolId) {
if (file == null) {
diff --git a/src/main/java/com/sztzjy/financial_bigdata/mapper/StuClassMapper.java b/src/main/java/com/sztzjy/financial_bigdata/mapper/StuClassMapper.java
index d246ea3..23ae202 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/mapper/StuClassMapper.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/mapper/StuClassMapper.java
@@ -32,7 +32,7 @@ public interface StuClassMapper {
int updateByPrimaryKey(StuClass record);
- @Select("SELECT DISTINCT s.class_name, s.class_id FROM stu_class s, stu_users u WHERE #{schoolId}= u.school_id;")
+ @Select("SELECT DISTINCT s.class_name, s.class_id FROM stu_class s, stu_userinfo u WHERE #{schoolId}= u.school_id;")
List