diff --git a/src/main/java/com/sztzjy/trade/controller/stu/StuAcademicRecordController.java b/src/main/java/com/sztzjy/trade/controller/stu/StuAcademicRecordController.java
index 92da9ca..a6b3f2c 100644
--- a/src/main/java/com/sztzjy/trade/controller/stu/StuAcademicRecordController.java
+++ b/src/main/java/com/sztzjy/trade/controller/stu/StuAcademicRecordController.java
@@ -24,11 +24,11 @@ import javax.annotation.Resource;
 public class StuAcademicRecordController {
     @Resource
     StuAcademicRecordService recordService;
-    @ApiOperation("分享营销展示(包含排序)")
+    @ApiOperation("学习成绩展示")
     @PostMapping("/getAcademicRecord")
     @AnonymousAccess
     public ResultEntity getAcademicRecord(String userId) {
 
-        return new ResultEntity(HttpStatus.OK, "分享营销展示", recordService.getAcademicRecord(userId));
+        return new ResultEntity(HttpStatus.OK, "学习成绩展示", recordService.getAcademicRecord(userId));
     }
 }
diff --git a/src/main/java/com/sztzjy/trade/controller/stu/StuTaskPracticeController.java b/src/main/java/com/sztzjy/trade/controller/stu/StuTaskPracticeController.java
index 953f4f2..0b7b445 100644
--- a/src/main/java/com/sztzjy/trade/controller/stu/StuTaskPracticeController.java
+++ b/src/main/java/com/sztzjy/trade/controller/stu/StuTaskPracticeController.java
@@ -75,35 +75,32 @@ public class StuTaskPracticeController {
 
                 TchEconomicTradeDTO tchEconomicTradeDTO=new TchEconomicTradeDTO();
                 tchEconomicTradeDTO.setTarget(String.valueOf(list.get(0)));
-                tchEconomicTradeDTO.setTwoThousandAndFourteen(String.valueOf(list.get(1)));
-                tchEconomicTradeDTO.setTwoThousandAndFifteen(String.valueOf(list.get(2)));
-                tchEconomicTradeDTO.setTwoThousandAndSixteen(String.valueOf(list.get(3)));
-                tchEconomicTradeDTO.setTwoThousandAndSeventeen(String.valueOf(list.get(4)));
-                tchEconomicTradeDTO.setTwoThousandAndEighteen(String.valueOf(list.get(5)));
-                tchEconomicTradeDTO.setTwoThousandAndNineteen(String.valueOf(list.get(6)));
-                tchEconomicTradeDTO.setTwoThousandAndTwenty(String.valueOf(list.get(7)));
-                tchEconomicTradeDTO.setTwoThousandAndTwentyOne(String.valueOf(list.get(8)));
-                tchEconomicTradeDTO.setTwoThousandAndTwentyTwo(String.valueOf(list.get(9)));
-                tchEconomicTradeDTO.setTwoThousandAndTwentyThree(String.valueOf(list.get(10)));
+                tchEconomicTradeDTO.setTwoThousandAndFourteen(String.valueOf(list.get(10)));
+                tchEconomicTradeDTO.setTwoThousandAndFifteen(String.valueOf(list.get(9)));
+                tchEconomicTradeDTO.setTwoThousandAndSixteen(String.valueOf(list.get(8)));
+                tchEconomicTradeDTO.setTwoThousandAndSeventeen(String.valueOf(list.get(7)));
+                tchEconomicTradeDTO.setTwoThousandAndEighteen(String.valueOf(list.get(6)));
+                tchEconomicTradeDTO.setTwoThousandAndNineteen(String.valueOf(list.get(5)));
+                tchEconomicTradeDTO.setTwoThousandAndTwenty(String.valueOf(list.get(4)));
 
 
                 economicTradeDTOS.add(tchEconomicTradeDTO);
 
 
-//                //添加默认数据
+                //添加默认数据
 //                TchEconomicTradeData tchEconomicTradeDTO=new TchEconomicTradeData();
 //                tchEconomicTradeDTO.setId(UUID.randomUUID().toString());
 //                tchEconomicTradeDTO.setTarget(String.valueOf(list.get(0)));
-//                tchEconomicTradeDTO.setTwoThousandAndFourteen(String.valueOf(list.get(1)));
-//                tchEconomicTradeDTO.setTwoThousandAndFifteen(String.valueOf(list.get(2)));
-//                tchEconomicTradeDTO.setTwoThousandAndSixteen(String.valueOf(list.get(3)));
-//                tchEconomicTradeDTO.setTwoThousandAndSeventeen(String.valueOf(list.get(4)));
-//                tchEconomicTradeDTO.setTwoThousandAndEighteen(String.valueOf(list.get(5)));
-//                tchEconomicTradeDTO.setTwoThousandAndNineteen(String.valueOf(list.get(6)));
-//                tchEconomicTradeDTO.setTwoThousandAndTwenty(String.valueOf(list.get(7)));
-//                tchEconomicTradeDTO.setTwoThousandAndTwentyOne(String.valueOf(list.get(8)));
-//                tchEconomicTradeDTO.setTwoThousandAndTwentyTwo(String.valueOf(list.get(9)));
-//                tchEconomicTradeDTO.setTwoThousandAndTwentyThree(String.valueOf(list.get(10)));
+//                tchEconomicTradeDTO.setTwoThousandAndFourteen(String.valueOf(list.get(10)));
+//                tchEconomicTradeDTO.setTwoThousandAndFifteen(String.valueOf(list.get(9)));
+//                tchEconomicTradeDTO.setTwoThousandAndSixteen(String.valueOf(list.get(8)));
+//                tchEconomicTradeDTO.setTwoThousandAndSeventeen(String.valueOf(list.get(7)));
+//                tchEconomicTradeDTO.setTwoThousandAndEighteen(String.valueOf(list.get(6)));
+//                tchEconomicTradeDTO.setTwoThousandAndNineteen(String.valueOf(list.get(5)));
+//                tchEconomicTradeDTO.setTwoThousandAndTwenty(String.valueOf(list.get(4)));
+//                tchEconomicTradeDTO.setTwoThousandAndTwentyOne(String.valueOf(list.get(3)));
+//                tchEconomicTradeDTO.setTwoThousandAndTwentyTwo(String.valueOf(list.get(2)));
+//                tchEconomicTradeDTO.setTwoThousandAndTwentyThree(String.valueOf(list.get(1)));
 //
 //
 //                economicTradeDataMapper.insert(tchEconomicTradeDTO);
@@ -113,7 +110,7 @@ public class StuTaskPracticeController {
             Set<TchEconomicTradeDTO> economicTradeDTOSet=new HashSet<>(economicTradeDTOS);
 
             if(sets.equals(economicTradeDTOSet)){
-                return new ResultEntity<>(HttpStatus.OK,"导入成功",economicTradeDTOS);
+                return new ResultEntity<>(HttpStatus.OK,"导入成功",tchEconomicTradeData);
             }else {
                 return new ResultEntity<>(HttpStatus.ACCEPTED,"导入失败,表格数据不正确");
             }
diff --git a/src/main/java/com/sztzjy/trade/controller/tch/TchHomeworkExamController.java b/src/main/java/com/sztzjy/trade/controller/tch/TchHomeworkExamController.java
index 5528563..503d2bc 100644
--- a/src/main/java/com/sztzjy/trade/controller/tch/TchHomeworkExamController.java
+++ b/src/main/java/com/sztzjy/trade/controller/tch/TchHomeworkExamController.java
@@ -1,6 +1,9 @@
 package com.sztzjy.trade.controller.tch;
 
 import cn.hutool.core.util.IdUtil;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
 import com.google.gson.Gson;
 import com.sztzjy.trade.annotation.AnonymousAccess;
 import com.sztzjy.trade.config.Constant;
@@ -10,14 +13,8 @@ import com.sztzjy.trade.entity.dto.StuExaminationGradesDTO;
 import com.sztzjy.trade.entity.dto.StuHomeworkDetailsDTO;
 import com.sztzjy.trade.entity.dto.StuHomeworkGradesDTO;
 import com.sztzjy.trade.entity.dto.StuScoreDetailsInfoDTO;
-import com.sztzjy.trade.entity.dto.tch.ExamExportDTO;
-import com.sztzjy.trade.entity.dto.tch.HomeworkExportDTO;
-import com.sztzjy.trade.entity.dto.tch.TchHomeworkExamDTO;
-import com.sztzjy.trade.entity.dto.tch.TchTopicTypeDTO;
-import com.sztzjy.trade.mapper.StuAchievementInfoMapper;
-import com.sztzjy.trade.mapper.StuScoreDetailsInfoMapper;
-import com.sztzjy.trade.mapper.TchExamManageMapper;
-import com.sztzjy.trade.mapper.TchHomeworkManageMapper;
+import com.sztzjy.trade.entity.dto.tch.*;
+import com.sztzjy.trade.mapper.*;
 import com.sztzjy.trade.service.TchHomeworkExamService;
 import com.sztzjy.trade.util.ConvertUtil;
 import com.sztzjy.trade.util.ResultEntity;
@@ -26,6 +23,7 @@ import com.sztzjy.trade.util.file.IFileUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import io.swagger.models.auth.In;
 import org.checkerframework.checker.units.qual.A;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
@@ -63,6 +61,9 @@ public class TchHomeworkExamController {
     StuAchievementInfoMapper achievementInfoMapper;
     @Resource
     StuScoreDetailsInfoMapper scoreDetailsInfoMapper;
+    @Resource
+    StuUploadExpermentMapper uploadExpermentMapper;
+
 
     @ApiOperation("题库作业/附件作业/考试展示")
     @PostMapping("/getHomework")
@@ -80,12 +81,9 @@ public class TchHomeworkExamController {
     @ApiOperation("新增(作业/考试)")
     @PostMapping("/add")
     @AnonymousAccess
-    public ResultEntity add(@RequestParam(required = false)String jsonObject, @RequestParam(required = false)MultipartFile file) {
-        Gson gson=new Gson();
-
-        TchHomeworkExamDTO homeworkExamDTO = gson.fromJson(jsonObject, TchHomeworkExamDTO.class);
+    public ResultEntity add(@RequestBody TchHomeworkExamDTO homeworkExamDTO) {
 
-        Integer result=tchHomeworkExamService.add(homeworkExamDTO,file);
+        Integer result=tchHomeworkExamService.add(homeworkExamDTO);
 
         if(result>0){
             return new ResultEntity<>(HttpStatus.OK,"新增成功");
@@ -94,17 +92,28 @@ public class TchHomeworkExamController {
         }
     }
 
+    @ApiOperation("附件作业上传")
+    @PostMapping("/upload")
+    @AnonymousAccess
+    public ResultEntity upload(@RequestPart MultipartFile file,
+                               @ApiParam@RequestParam("userId") String userId,
+                               @ApiParam("文件信息(第一次上传不用传)")@RequestParam(required = false) String jsonString) {
+
+        String url=tchHomeworkExamService.upload(file,userId,jsonString);
+
+
+        return new ResultEntity<>(HttpStatus.OK,"上传成功",url);
+
+    }
+
     @ApiOperation("编辑(作业/考试)")
     @PostMapping("/update")
     @AnonymousAccess
-    public ResultEntity update(@RequestParam(required = false) String jsonObject, @RequestParam(required = false)MultipartFile file) {
+    public ResultEntity update(@RequestBody TchHomeworkExamDTO homeworkExamDTO) {
 
-        Gson gson=new Gson();
 
-        TchHomeworkExamDTO homeworkExamDTO = gson.fromJson(jsonObject, TchHomeworkExamDTO.class);
 
-
-        Integer result=tchHomeworkExamService.update(homeworkExamDTO,file);
+        Integer result=tchHomeworkExamService.update(homeworkExamDTO);
 
         if(result>0){
             return new ResultEntity<>(HttpStatus.OK,"编辑成功");
@@ -147,13 +156,34 @@ public class TchHomeworkExamController {
     @AnonymousAccess
     public ResultEntity getTopic(@ApiParam("题干名称")@RequestParam(required = false) String topicName,
                                  @ApiParam("归属课程")@RequestParam(required = false) String attCourses,
-                                 @ApiParam("题型")@RequestParam(required = false) String topicType) {
+                                 @ApiParam("题型")@RequestParam(required = false) String topicType,
+                                 @ApiParam("学校ID") String schoolId,
+                                 @ApiParam("当前页") Integer index,
+                                 @ApiParam("每页条数") Integer size) {
+
+
+        return new ResultEntity<>(HttpStatus.OK,"成功",tchHomeworkExamService.getTopic(topicName,attCourses,topicType,schoolId,index,size));
+    }
+
+    @ApiOperation("随机抽题--返回题目ID集合")
+    @PostMapping("/getRandomTopic")
+    @AnonymousAccess
+    public ResultEntity getRandomTopic(@RequestBody List<TchTopicDetailsDTO> dtoList) {
 
 
-        return new ResultEntity<>(HttpStatus.OK,"成功",tchHomeworkExamService.getTopic(topicName,attCourses,topicType));
+        return new ResultEntity<>(HttpStatus.OK,"成功",tchHomeworkExamService.getRandomTopic(dtoList));
     }
 
 
+    @ApiOperation("手动抽题--选题详情")
+    @PostMapping("/getTopicDetails")
+    @AnonymousAccess
+    public ResultEntity getTopicDetails(@RequestBody List<TchTopicDetailsDTO> dtoList) {
+
+
+        return new ResultEntity<>(HttpStatus.OK,"成功",tchHomeworkExamService.getTopicDetails(dtoList));
+    }
+
     @ApiOperation("删除(作业/考试)")
     @PostMapping("/delete")
     @AnonymousAccess
@@ -169,6 +199,23 @@ public class TchHomeworkExamController {
         }
     }
 
+
+    @ApiOperation("作业/考试发布")
+    @PostMapping("/release")
+    @AnonymousAccess
+    public ResultEntity release(@ApiParam("作业/考试ID")String id,
+                                @ApiParam("作业类型(题库作业/附件作业/考试)")String type,
+                                @ApiParam("状态(0下架 1发布)") Integer state) {
+
+        Integer result=tchHomeworkExamService.release(id,type,state);
+
+        if(result>0){
+            return new ResultEntity<>(HttpStatus.OK,"发布成功");
+        }else {
+            return new ResultEntity<>(HttpStatus.OK,"发布失败");
+        }
+    }
+
     @ApiOperation("作业/考试导出")
     @PostMapping("/export")
     @AnonymousAccess
@@ -245,12 +292,16 @@ public class TchHomeworkExamController {
 
 
     @ApiOperation("附件作业下载")
-    @PostMapping("/download")
+    @GetMapping("/attDownload")
     @AnonymousAccess
-    public void download(HttpServletResponse response,String id) {
-        TchHomeworkManage tchHomeworkManage = homeworkManageMapper.selectByPrimaryKey(id);
+    public void attDownload(HttpServletResponse response,Integer id) {
+
+
+        StuUploadExperment stuUploadExperment = uploadExpermentMapper.selectByPrimaryKey(id);
+        iFileUtil.download(response,stuUploadExperment.getFilePath());
+
+
 
-        iFileUtil.download(response,tchHomeworkManage.getHomeworkAnnex());
     }
 
 
@@ -413,4 +464,14 @@ public class TchHomeworkExamController {
             e.printStackTrace();
         }
     }
+
+    @ApiOperation("课程下拉框")
+    @PostMapping("/getCourseList")
+    @AnonymousAccess
+    public ResultEntity getCourseList(String schoolId) {
+
+
+        return tchHomeworkExamService.getCourseList(schoolId);
+    }
+
 }
diff --git a/src/main/java/com/sztzjy/trade/entity/TchExamManage.java b/src/main/java/com/sztzjy/trade/entity/TchExamManage.java
index a56ce35..402aa9e 100644
--- a/src/main/java/com/sztzjy/trade/entity/TchExamManage.java
+++ b/src/main/java/com/sztzjy/trade/entity/TchExamManage.java
@@ -3,7 +3,10 @@ package com.sztzjy.trade.entity;
 import java.math.BigDecimal;
 import java.util.Date;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
 /**
  *
  * @author whb
@@ -23,9 +26,13 @@ public class TchExamManage {
     private String examClass;
 
     @ApiModelProperty("考试开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date examStartingTime;
 
     @ApiModelProperty("考试结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date examEndTime;
 
     @ApiModelProperty("平均答对数量")
@@ -46,8 +53,12 @@ public class TchExamManage {
     @ApiModelProperty("用户ID")
     private String userId;
 
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date createTime;
 
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date updateTime;
 
     @ApiModelProperty("作答次数")
diff --git a/src/main/java/com/sztzjy/trade/entity/TchHomeworkManage.java b/src/main/java/com/sztzjy/trade/entity/TchHomeworkManage.java
index 834b5e7..b557d51 100644
--- a/src/main/java/com/sztzjy/trade/entity/TchHomeworkManage.java
+++ b/src/main/java/com/sztzjy/trade/entity/TchHomeworkManage.java
@@ -3,7 +3,10 @@ package com.sztzjy.trade.entity;
 import java.math.BigDecimal;
 import java.util.Date;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
 /**
  *
  * @author whb
@@ -32,9 +35,13 @@ public class TchHomeworkManage {
     private BigDecimal passRate;
 
     @ApiModelProperty("作业起始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date startingTime;
 
     @ApiModelProperty("作业终止时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date endTime;
 
     @ApiModelProperty("1、发布 0、未发布")
@@ -49,8 +56,12 @@ public class TchHomeworkManage {
     @ApiModelProperty("用户ID")
     private String userId;
 
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date createTime;
 
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date updateTime;
 
     @ApiModelProperty("作答次数")
diff --git a/src/main/java/com/sztzjy/trade/entity/dto/tch/TchEconomicTradeDTO.java b/src/main/java/com/sztzjy/trade/entity/dto/tch/TchEconomicTradeDTO.java
index 1cf3dc0..1cd564a 100644
--- a/src/main/java/com/sztzjy/trade/entity/dto/tch/TchEconomicTradeDTO.java
+++ b/src/main/java/com/sztzjy/trade/entity/dto/tch/TchEconomicTradeDTO.java
@@ -32,15 +32,6 @@ public class TchEconomicTradeDTO {
     @ApiModelProperty("2020")
     private String twoThousandAndTwenty;
 
-    @ApiModelProperty("2021")
-    private String twoThousandAndTwentyOne;
-
-    @ApiModelProperty("2022")
-    private String twoThousandAndTwentyTwo;
-
-    @ApiModelProperty("2023")
-    private String twoThousandAndTwentyThree;
-
     @ApiModelProperty("指标")
     private String target;
 }
diff --git a/src/main/java/com/sztzjy/trade/entity/dto/tch/TchHomeworkExamDTO.java b/src/main/java/com/sztzjy/trade/entity/dto/tch/TchHomeworkExamDTO.java
index 27f7aa0..f20e05e 100644
--- a/src/main/java/com/sztzjy/trade/entity/dto/tch/TchHomeworkExamDTO.java
+++ b/src/main/java/com/sztzjy/trade/entity/dto/tch/TchHomeworkExamDTO.java
@@ -1,7 +1,11 @@
 package com.sztzjy.trade.entity.dto.tch;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.Date;
 import java.util.List;
@@ -28,14 +32,21 @@ public class TchHomeworkExamDTO {
     private List<String> classNameList;
 
     @ApiModelProperty("起始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date startingTime;
 
     @ApiModelProperty("终止时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date endTime;
 
     @ApiModelProperty("作业要求")
     private String homeworkAsk;
 
+    @ApiModelProperty("附件作业信息")
+    private String url;
+
     @ApiModelProperty("作答次数")
     private Integer answersFrequency;
 
@@ -56,4 +67,5 @@ public class TchHomeworkExamDTO {
 
     @ApiModelProperty("选题详情")
     private List<TchTopicDetailsDTO> topicDetailsDTOS;
+
 }
diff --git a/src/main/java/com/sztzjy/trade/mapper/StuLearningAssessmentMapper.java b/src/main/java/com/sztzjy/trade/mapper/StuLearningAssessmentMapper.java
index 0e3138b..bd85e3a 100644
--- a/src/main/java/com/sztzjy/trade/mapper/StuLearningAssessmentMapper.java
+++ b/src/main/java/com/sztzjy/trade/mapper/StuLearningAssessmentMapper.java
@@ -35,4 +35,6 @@ public interface StuLearningAssessmentMapper {
     List<TchTopicTypeDTO> getTopicType();
 
     List<StuLearningAssessment> selectTopicsById(@Param("list") List<String> list);
+
+    List<String> getCourseList(String schoolId);
 }
\ No newline at end of file
diff --git a/src/main/java/com/sztzjy/trade/service/TchHomeworkExamService.java b/src/main/java/com/sztzjy/trade/service/TchHomeworkExamService.java
index f243ccf..41ead44 100644
--- a/src/main/java/com/sztzjy/trade/service/TchHomeworkExamService.java
+++ b/src/main/java/com/sztzjy/trade/service/TchHomeworkExamService.java
@@ -3,6 +3,7 @@ package com.sztzjy.trade.service;
 import com.github.pagehelper.PageInfo;
 import com.sztzjy.trade.entity.StuLearningAssessment;
 import com.sztzjy.trade.entity.dto.tch.TchHomeworkExamDTO;
+import com.sztzjy.trade.entity.dto.tch.TchTopicDetailsDTO;
 import com.sztzjy.trade.entity.dto.tch.TchTopicTypeDTO;
 import com.sztzjy.trade.util.ResultEntity;
 import org.springframework.web.multipart.MultipartFile;
@@ -17,9 +18,9 @@ import java.util.List;
 public interface TchHomeworkExamService {
     PageInfo getHomework(String userId, String type, Integer index, Integer size);
 
-    Integer add(TchHomeworkExamDTO homeworkExamDTO, MultipartFile file);
+    Integer add(TchHomeworkExamDTO homeworkExamDTO);
 
-    Integer update(TchHomeworkExamDTO homeworkExamDTO, MultipartFile file);
+    Integer update(TchHomeworkExamDTO homeworkExamDTO);
 
     List<String> getSelect(String userId);
 
@@ -29,7 +30,7 @@ public interface TchHomeworkExamService {
 
     Integer delete(String id, String type);
 
-    List<StuLearningAssessment> getTopic(String topicName, String attCourses, String topicType);
+    PageInfo<StuLearningAssessment> getTopic(String topicName, String attCourses, String topicType,String schoolId,Integer index,Integer size);
 
     void download(String id, HttpServletResponse response);
 
@@ -40,4 +41,14 @@ public interface TchHomeworkExamService {
     ResultEntity getHomeworkGrades(String id, Integer index, Integer size,String type);
 
     ResultEntity getHomeworkDetails(String id,String studentId, Integer index, Integer size);
+
+    ResultEntity getCourseList(String schoolId);
+
+    List<TchTopicDetailsDTO> getTopicDetails(List<TchTopicDetailsDTO> dtoList);
+
+    TchHomeworkExamDTO getRandomTopic(List<TchTopicDetailsDTO> dtoList);
+
+    Integer release(String id, String type,Integer state);
+
+    String upload(MultipartFile file, String userId,String jsonString);
 }
diff --git a/src/main/java/com/sztzjy/trade/service/impl/StuCommonModuleServiceImpl.java b/src/main/java/com/sztzjy/trade/service/impl/StuCommonModuleServiceImpl.java
index da82b32..bb85568 100644
--- a/src/main/java/com/sztzjy/trade/service/impl/StuCommonModuleServiceImpl.java
+++ b/src/main/java/com/sztzjy/trade/service/impl/StuCommonModuleServiceImpl.java
@@ -50,9 +50,11 @@ public class StuCommonModuleServiceImpl implements StuCommonModuleService {
         detailsExample.createCriteria().andUserIdEqualTo(userId).andModuleEqualTo(module);
         List<StuAssessmentQuestionDetails> stuAssessmentQuestionDetails = stuAssessmentQuestionDetailsMapper.selectByExample(detailsExample);
 
+        StuUser stuUser = stuUserMapper.selectByPrimaryKey(userId);
+
         StuLearningAssessmentExample example = new StuLearningAssessmentExample();
         StuLearningAssessmentExample.Criteria criteria = example.createCriteria();
-        criteria.andAttributionChapterEqualTo(module).andLogicEqualTo(1);
+        criteria.andAttributionChapterEqualTo(module).andLogicEqualTo(1).andSchoolIdEqualTo(stuUser.getSchoolId());
         List<StuLearningAssessment> stuLearningAssessments = stuLearningAssessmentMapper.selectByExample(example);
         List<StuAssessmentQuestionDetailsDTO> stuAssessmentQuestionDetailsDTOS = convertUtil.entityToDTOList(stuLearningAssessments, StuAssessmentQuestionDetailsDTO.class);
         if(stuAssessmentQuestionDetails.size()!=0){
diff --git a/src/main/java/com/sztzjy/trade/service/impl/TchHomeworkExamServiceImpl.java b/src/main/java/com/sztzjy/trade/service/impl/TchHomeworkExamServiceImpl.java
index 83217c8..1004e26 100644
--- a/src/main/java/com/sztzjy/trade/service/impl/TchHomeworkExamServiceImpl.java
+++ b/src/main/java/com/sztzjy/trade/service/impl/TchHomeworkExamServiceImpl.java
@@ -1,6 +1,11 @@
 package com.sztzjy.trade.service.impl;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
 import com.github.pagehelper.PageInfo;
+import com.nimbusds.jose.shaded.gson.JsonObject;
+import com.nimbusds.jose.shaded.gson.JsonParser;
 import com.sztzjy.trade.config.exception.handler.ServiceException;
 import com.sztzjy.trade.entity.*;
 import com.sztzjy.trade.entity.dto.StuExaminationGradesDTO;
@@ -16,7 +21,9 @@ import com.sztzjy.trade.util.ConvertUtil;
 import com.sztzjy.trade.util.PageUtil;
 import com.sztzjy.trade.util.ResultEntity;
 import com.sztzjy.trade.util.file.IFileUtil;
+import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
@@ -56,10 +63,15 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
     StuScoreDetailsInfoMapper stuScoreDetailsInfoMapper;
     @Autowired
     private IFileUtil fileUtil;
+    @Resource
+    StuUploadExpermentMapper stuUploadExpermentMapper;
+    @Value("${file.path}")
+    private String filePath;
     @Override
     public PageInfo getHomework(String userId, String type, Integer index, Integer size) {
         if(!type.equals("考试")){
             TchHomeworkManageExample homeworkManageExample=new TchHomeworkManageExample();
+            homeworkManageExample.setOrderByClause("create_time desc");
             homeworkManageExample.createCriteria().andUserIdEqualTo(userId).andHomeworkTypeEqualTo(type);
             List<TchHomeworkManage> tchHomeworkManages = homeworkManageMapper.selectByExample(homeworkManageExample);
 
@@ -67,6 +79,7 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
             return PageUtil.pageHelper(tchHomeworkManages, index, size);
         }else {
             TchExamManageExample examManageExample=new TchExamManageExample();
+            examManageExample.setOrderByClause("create_time desc");
             examManageExample.createCriteria().andUserIdEqualTo(userId);
             List<TchExamManage> tchExamManages = examManageMapper.selectByExample(examManageExample);
 
@@ -76,49 +89,20 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
     }
 
     @Override
-    public Integer add(TchHomeworkExamDTO homeworkExamDTO, MultipartFile file) {
+    public Integer add(TchHomeworkExamDTO homeworkExamDTO) {
 
         //将班级集合集合转为字符串
         String className="";
         for (int i = 0; i < homeworkExamDTO.getClassNameList().size(); i++) {
 
             if(homeworkExamDTO.getClassNameList().size()-1==i){
-                className=className+homeworkExamDTO.getClassNameList().get(0);
+                className=className+homeworkExamDTO.getClassNameList().get(i);
             }else {
-                className=className+homeworkExamDTO.getClassNameList().get(0)+",";
+                className=className+homeworkExamDTO.getClassNameList().get(i)+",";
             }
         }
 
-        // TODO: 2024/8/6 取出所选题的数量,在题库中随机抽取,将题目ID拼接成字符串存到数据库中
-        //取出所选题的总数量
-        List<TchTopicDetailsDTO> topicDetailsDTOS = homeworkExamDTO.getTopicDetailsDTOS();
-        int quantity=0;
-        for (TchTopicDetailsDTO topicDetailsDTO: topicDetailsDTOS) {
-            quantity=quantity+topicDetailsDTO.getQuantity();
-        }
 
-        //查询题库所有题
-        List<StuLearningAssessment> stuLearningAssessments = learningAssessmentMapper.selectByExample(null);
-
-        if(quantity>stuLearningAssessments.size()){
-            throw new ServiceException(HttpStatus.ACCEPTED,"要选择的题目数量不能大于题库的总数量");
-        }
-
-        // 打乱集合
-        Collections.shuffle(stuLearningAssessments);
-
-        // 获取前quantity个元素
-        List<StuLearningAssessment> subList = stuLearningAssessments.subList(0, quantity);
-
-        //遍历集合,取出id拼接成字符串
-        String topicId="";
-        for (int i = 0; i < subList.size(); i++) {
-            if(subList.size()-1==i){
-                topicId=topicId+subList.get(0).getTopicId();
-            }else {
-                topicId=topicId+subList.get(0).getTopicId()+",";
-            }
-        }
 
         // TODO: 2024/8/6 1、题库作业,2、附件作业,3、考试
 
@@ -143,7 +127,10 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
             homeworkManage.setOptionNumberState(homeworkExamDTO.getOptionNumberState());
             homeworkManage.setParsingState(homeworkExamDTO.getParsingState());
             homeworkManage.setAnswerSate(homeworkExamDTO.getAnswerSate());
-            homeworkManage.setTopicId(topicId);
+            //将题目ID转成String逗号隔开
+            String join = String.join(",", homeworkExamDTO.getTopicId());
+
+            homeworkManage.setTopicId(join);
             homeworkManage.setTotalPeople(0);
             homeworkManage.setTatalScore(new BigDecimal(0));
             homeworkManage.setNumberPassers(0);
@@ -167,9 +154,8 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
             homeworkManage.setState(0);
             homeworkManage.setHomeworkAsk(homeworkExamDTO.getHomeworkAsk());
 
-            String upload = localFileUtil.upload(file);
-
-            homeworkManage.setHomeworkAnnex(upload);
+            homeworkManage.setUserId(homeworkExamDTO.getUserId());
+            homeworkManage.setHomeworkAnnex(homeworkExamDTO.getUrl());
             homeworkManage.setCreateTime(new Date());
 
             return homeworkManageMapper.insert(homeworkManage);
@@ -194,7 +180,10 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
             examManage.setOptionNumberState(homeworkExamDTO.getOptionNumberState());
             examManage.setParsingState(homeworkExamDTO.getParsingState());
             examManage.setAnswerSate(homeworkExamDTO.getAnswerSate());
-            examManage.setTopicId(topicId);
+            //将题目ID转成String逗号隔开
+            String join = String.join(",", homeworkExamDTO.getTopicId());
+
+            examManage.setTopicId(join);
             examManage.setRespondentsPeoples(0);
             examManage.setAnswerTotal(0);
             examManage.setAnswerIncorrectlyTotal(0);
@@ -204,24 +193,58 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
 
         //作业或考试添加成功,则继续添加选题详情
 
-        if(insert>1){
+
+//            // TODO: 2024/8/6 取出所选题的数量,在题库中随机抽取,将题目ID拼接成字符串存到数据库中
+//            //取出所选题的总数量
+//            List<TchTopicDetailsDTO> topicDetailsDTOS = homeworkExamDTO.getTopicDetailsDTOS();
+//            int quantity=0;
+//            for (TchTopicDetailsDTO topicDetailsDTO: topicDetailsDTOS) {
+//                quantity=quantity+topicDetailsDTO.getQuantity();
+//            }
+//
+//            //查询题库所有题
+//            List<StuLearningAssessment> stuLearningAssessments = learningAssessmentMapper.selectByExample(null);
+//
+//            if(quantity>stuLearningAssessments.size()){
+//                throw new ServiceException(HttpStatus.ACCEPTED,"要选择的题目数量不能大于题库的总数量");
+//            }
+//
+//            // 打乱集合
+//            Collections.shuffle(stuLearningAssessments);
+//
+//            // 获取前quantity个元素
+//            List<StuLearningAssessment> subList = stuLearningAssessments.subList(0, quantity);
+//
+//            //遍历集合,取出id拼接成字符串
+//            String topicId="";
+//            for (int i = 0; i < subList.size(); i++) {
+//                if(subList.size()-1==i){
+//                    topicId=topicId+subList.get(0).getTopicId();
+//                }else {
+//                    topicId=topicId+subList.get(0).getTopicId()+",";
+//                }
+//            }
+
+
+        if(insert>0){
             //选题详情赋值,取出选题详情集合
-            List<TchTopicDetails> tchTopicDetails = convertUtil.DTOListToEntity(topicDetailsDTOS, TchTopicDetails.class);
+            List<TchTopicDetails> tchTopicDetails = convertUtil.DTOListToEntity(homeworkExamDTO.getTopicDetailsDTOS(), TchTopicDetails.class);
 
             for (TchTopicDetails tchTopicDetail: tchTopicDetails) {
                 tchTopicDetail.setId(UUID.randomUUID().toString());
                 tchTopicDetail.setTaskName(homeworkExamDTO.getType());
                 tchTopicDetail.setTaskId(string);
 
-                return topicDetailsMapper.insert(tchTopicDetail);
+                topicDetailsMapper.insert(tchTopicDetail);
             }
+            return 1;
         }
 
         return 0;
     }
 
     @Override
-    public Integer update(TchHomeworkExamDTO homeworkExamDTO, MultipartFile file) {
+    public Integer update(TchHomeworkExamDTO homeworkExamDTO) {
 
         //将班级集合和题目id集合转为字符串
         String className="";
@@ -234,36 +257,36 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
             }
         }
 
-        // TODO: 2024/8/6 取出所选题的数量,在题库中随机抽取,将题目ID拼接成字符串存到数据库中
-        //取出所选题的总数量
-        List<TchTopicDetailsDTO> topicDetailsDTOS = homeworkExamDTO.getTopicDetailsDTOS();
-        int quantity=0;
-        for (TchTopicDetailsDTO topicDetailsDTO: topicDetailsDTOS) {
-            quantity=quantity+topicDetailsDTO.getQuantity();
-        }
-
-        //查询题库所有题
-        List<StuLearningAssessment> stuLearningAssessments = learningAssessmentMapper.selectByExample(null);
-
-        if(quantity>stuLearningAssessments.size()){
-            throw new ServiceException(HttpStatus.ACCEPTED,"要选择的题目数量不能大于题库的总数量");
-        }
-
-        // 打乱集合
-        Collections.shuffle(stuLearningAssessments);
-
-        // 获取前quantity个元素
-        List<StuLearningAssessment> subList = stuLearningAssessments.subList(0, quantity);
-
-        //遍历集合,取出id拼接成字符串
-        String topicId="";
-        for (int i = 0; i < subList.size(); i++) {
-            if(subList.size()-1==i){
-                topicId=topicId+subList.get(0).getTopicId();
-            }else {
-                topicId=topicId+subList.get(0).getTopicId()+",";
-            }
-        }
+//        // TODO: 2024/8/6 取出所选题的数量,在题库中随机抽取,将题目ID拼接成字符串存到数据库中
+//        //取出所选题的总数量
+//        List<TchTopicDetailsDTO> topicDetailsDTOS = homeworkExamDTO.getTopicDetailsDTOS();
+//        int quantity=0;
+//        for (TchTopicDetailsDTO topicDetailsDTO: topicDetailsDTOS) {
+//            quantity=quantity+topicDetailsDTO.getQuantity();
+//        }
+//
+//        //查询题库所有题
+//        List<StuLearningAssessment> stuLearningAssessments = learningAssessmentMapper.selectByExample(null);
+//
+//        if(quantity>stuLearningAssessments.size()){
+//            throw new ServiceException(HttpStatus.ACCEPTED,"要选择的题目数量不能大于题库的总数量");
+//        }
+//
+//        // 打乱集合
+//        Collections.shuffle(stuLearningAssessments);
+//
+//        // 获取前quantity个元素
+//        List<StuLearningAssessment> subList = stuLearningAssessments.subList(0, quantity);
+//
+//        //遍历集合,取出id拼接成字符串
+//        String topicId="";
+//        for (int i = 0; i < subList.size(); i++) {
+//            if(subList.size()-1==i){
+//                topicId=topicId+subList.get(0).getTopicId();
+//            }else {
+//                topicId=topicId+subList.get(0).getTopicId()+",";
+//            }
+//        }
 
         // TODO: 2024/8/6 1、题库作业,2、附件作业,3、考试
         int update=0; //用于判断作业或考试是否更新成功
@@ -285,7 +308,11 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
             tchHomeworkManage.setOptionNumberState(homeworkExamDTO.getOptionNumberState());
             tchHomeworkManage.setParsingState(homeworkExamDTO.getParsingState());
             tchHomeworkManage.setAnswerSate(homeworkExamDTO.getAnswerSate());
-            tchHomeworkManage.setTopicId(topicId);
+
+            //将题目ID转成String逗号隔开
+            String join = String.join(",", homeworkExamDTO.getTopicId());
+
+            tchHomeworkManage.setTopicId(join);
             tchHomeworkManage.setTotalPeople(0);
             tchHomeworkManage.setTatalScore(new BigDecimal(0));
             tchHomeworkManage.setNumberPassers(0);
@@ -308,9 +335,8 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
             tchHomeworkManage.setEndTime(homeworkExamDTO.getEndTime());
             tchHomeworkManage.setHomeworkAsk(homeworkExamDTO.getHomeworkAsk());
 
-            String upload = localFileUtil.upload(file);
 
-            tchHomeworkManage.setHomeworkAnnex(upload);
+            tchHomeworkManage.setHomeworkAnnex(homeworkExamDTO.getUrl());
             tchHomeworkManage.setUpdateTime(new Date());
             tchHomeworkManage.setTotalPeople(0);
             tchHomeworkManage.setTatalScore(new BigDecimal(0));
@@ -339,7 +365,10 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
             examManage.setOptionNumberState(homeworkExamDTO.getOptionNumberState());
             examManage.setParsingState(homeworkExamDTO.getParsingState());
             examManage.setAnswerSate(homeworkExamDTO.getAnswerSate());
-            examManage.setTopicId(topicId);
+            //将题目ID转成String逗号隔开
+            String join = String.join(",", homeworkExamDTO.getTopicId());
+
+            examManage.setTopicId(join);
             examManage.setRespondentsPeoples(0);
             examManage.setAnswerTotal(0);
             examManage.setAnswerIncorrectlyTotal(0);
@@ -353,7 +382,7 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
         if(update>0){
 
             //取出选题详情集合
-            List<TchTopicDetails> tchTopicDetails = convertUtil.DTOListToEntity(topicDetailsDTOS, TchTopicDetails.class);
+            List<TchTopicDetails> tchTopicDetails = convertUtil.DTOListToEntity(homeworkExamDTO.getTopicDetailsDTOS(), TchTopicDetails.class);
 
             //根据考试或作业ID查询选题详情信息
             TchTopicDetailsExample topicDetailsExample=new TchTopicDetailsExample();
@@ -549,7 +578,7 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
     }
 
     @Override
-    public List<StuLearningAssessment> getTopic(String topicName, String attCourses, String topicType) {
+    public PageInfo getTopic(String topicName, String attCourses, String topicType,String schoolId,Integer index,Integer size) {
         StuLearningAssessmentExample assessmentExample=new StuLearningAssessmentExample();
         StuLearningAssessmentExample.Criteria criteria=assessmentExample.createCriteria();
 
@@ -558,14 +587,17 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
         }
 
         if(!attCourses.isEmpty()){
-            criteria.andAttributionCoursesEqualTo(attCourses);
+            criteria.andAttributionChapterEqualTo(attCourses);
         }
 
         if(!topicType.isEmpty()){
             criteria.andTopicTypeEqualTo(topicType);
         }
+        criteria.andSchoolIdEqualTo(schoolId);
+
+        List<StuLearningAssessment> stuLearningAssessments = learningAssessmentMapper.selectByExample(assessmentExample);
 
-        return learningAssessmentMapper.selectByExample(assessmentExample);
+        return PageUtil.pageHelper(stuLearningAssessments,index,size);
 
     }
 
@@ -651,4 +683,176 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService {
 
         return new ResultEntity(HttpStatus.OK,"成功",PageUtil.pageHelper(stuHomeworkDetailsDTOS,index,size));
     }
+
+    @Override
+    public ResultEntity getCourseList(String schoolId) {
+        List<String> list=learningAssessmentMapper.getCourseList(schoolId);
+
+        return new ResultEntity(HttpStatus.OK,"课程列表展示",list);
+    }
+
+    @Override
+    public List<TchTopicDetailsDTO> getTopicDetails(List<TchTopicDetailsDTO> dtoList) {
+
+        //查询题目类型分别的总数量
+        List<TchTopicTypeDTO> topicType = learningAssessmentMapper.getTopicType();
+
+        for (TchTopicDetailsDTO dto:dtoList) {
+            for (TchTopicTypeDTO tchTopicTypeDTO:topicType) {
+                if(dto.getTopicType().equals(tchTopicTypeDTO.getType())){
+                    dto.setQuantity(tchTopicTypeDTO.getQuantity());
+                }
+            }
+        }
+        return dtoList;
+    }
+
+    @Override
+    public TchHomeworkExamDTO getRandomTopic(List<TchTopicDetailsDTO> dtoList) {
+        List<StuLearningAssessment> stuLearningAssessments = learningAssessmentMapper.selectByExample(null);
+
+        //分离每种题的类型
+        Map<String, List<StuLearningAssessment>> map = new HashMap<>();
+
+        for (StuLearningAssessment assessment : stuLearningAssessments) {
+            String type = assessment.getTopicType();
+            // 如果Map中没有此题型,则初始化一个新的列表
+            map.putIfAbsent(type, new ArrayList<>());
+            // 将题目添加到对应的题型列表中
+            map.get(type).add(assessment);
+        }
+
+
+        //用于存储题目id
+        List<String> list=new ArrayList<>();
+        for (TchTopicDetailsDTO dto:dtoList) {
+
+            List<String> randomElements = getRandomElements(map.get(dto.getTopicType()), dto.getTopicsSelected());
+            list.addAll(randomElements);
+        }
+        TchHomeworkExamDTO tchHomeworkExamDTO=new TchHomeworkExamDTO();
+
+        tchHomeworkExamDTO.setTopicId(list);
+        tchHomeworkExamDTO.setTopicDetailsDTOS(dtoList);
+        return tchHomeworkExamDTO;
+    }
+
+    @Override
+    public Integer release(String id, String type,Integer state) {
+        if(type.equals("考试")){
+            TchExamManage examManage = examManageMapper.selectByPrimaryKey(id);
+
+            examManage.setState(state);
+
+            return examManageMapper.updateByPrimaryKey(examManage);
+        }else {
+            TchHomeworkManage tchHomeworkManage = homeworkManageMapper.selectByPrimaryKey(id);
+            tchHomeworkManage.setState(state);
+
+            return homeworkManageMapper.updateByPrimaryKey(tchHomeworkManage);
+        }
+    }
+
+    @Override
+    public String upload(MultipartFile file, String userId,String jsonString) {
+        String upload = fileUtil.upload(file);
+
+        if(jsonString==null){ //第一次上传
+
+            StuUploadExperment stuUploadExperment=new StuUploadExperment();
+            Integer uuid= UUID.randomUUID().toString().replaceAll("-","").hashCode();
+            uuid = uuid < 0 ? -uuid : uuid;//String.hashCode() 值会为空
+            stuUploadExperment.setId(uuid);
+            stuUploadExperment.setUserId(userId);
+            stuUploadExperment.setFilePath(upload);
+            stuUploadExperment.setCreateTime(new Date());
+            stuUploadExperment.setFileSize((double) file.getSize());
+            stuUploadExperment.setFileName(file.getOriginalFilename());
+            stuUploadExperment.setSufxx(getFileExtension(file.getOriginalFilename()));
+
+            stuUploadExpermentMapper.insert(stuUploadExperment);
+
+            // 创建 ObjectMapper 实例
+            ObjectMapper objectMapper = new ObjectMapper();
+            objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); // 使用 ISO 8601 日期格式
+
+            // 将对象转换为 JSON 字符串
+            try {
+                return objectMapper.writeValueAsString(stuUploadExperment);
+
+            } catch (JsonProcessingException e) {
+                throw new RuntimeException(e);
+            }
+
+        }else { //非第一次上传,修改文件信息
+
+            try {
+                //将jsonString转为StuUploadExperment对象
+                ObjectMapper objectMapper = new ObjectMapper();
+                objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); // 日期格式
+                StuUploadExperment experiment = objectMapper.readValue(jsonString, StuUploadExperment.class);
+
+                //服务器上删除上一次上传的文件
+                boolean remove = fileUtil.remove(experiment.getFilePath());
+
+                //修改文件上传信息
+                experiment.setUserId(userId);
+                experiment.setFilePath(upload);
+                experiment.setFileSize((double) file.getSize());
+                experiment.setFileName(file.getOriginalFilename());
+                experiment.setUpdateTime(new Date());
+                experiment.setSufxx(getFileExtension(file.getOriginalFilename()));
+
+                stuUploadExpermentMapper.updateByPrimaryKey(experiment);
+
+                // 将对象转换为 JSON 字符串
+                try {
+                    return objectMapper.writeValueAsString(experiment);
+
+                } catch (JsonProcessingException e) {
+                    throw new RuntimeException(e);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            return null;
+        }
+    }
+
+
+    /**
+     * 获取文件后缀
+     * @param fileName
+     * @return
+     */
+    private String getFileExtension(String fileName) {
+        if (fileName != null && fileName.contains(".")) {
+            return fileName.substring(fileName.lastIndexOf('.') + 1);
+        }
+        return ""; // 没有后缀的情况
+    }
+
+
+    /**
+     * 随机抽取题目ID
+     * @param list
+     * @param n
+     * @return
+     */
+    public static  List<String> getRandomElements(List<StuLearningAssessment> list, int n) {
+        if (n > list.size()) {
+            throw new IllegalArgumentException("请求的元素数量大于列表大小");
+        }
+
+        Collections.shuffle(list); // 打乱列表顺序
+
+        //返回题目ID
+        List<StuLearningAssessment> stuLearningAssessments = list.subList(0, n);
+        List<String> ids=new ArrayList<>();
+
+        for (StuLearningAssessment stuLearningAssessment:stuLearningAssessments) {
+            ids.add(stuLearningAssessment.getTopicId());
+        }
+        return ids; // 返回前 n 个元素的题目ID
+    }
 }
diff --git a/src/main/java/com/sztzjy/trade/service/impl/TchInteractionImpl.java b/src/main/java/com/sztzjy/trade/service/impl/TchInteractionImpl.java
index 789ae3f..51f963b 100644
--- a/src/main/java/com/sztzjy/trade/service/impl/TchInteractionImpl.java
+++ b/src/main/java/com/sztzjy/trade/service/impl/TchInteractionImpl.java
@@ -109,6 +109,7 @@ public class TchInteractionImpl implements TchInteractionService {
     public List<String> getSelect(String schoolId) {
 
         //直接返回所有班级名称
+        List<String> list = stuUserMapper.selectByClassName(schoolId);
         return stuUserMapper.selectByClassName(schoolId);
     }
 
diff --git a/src/main/java/com/sztzjy/trade/service/impl/TchTeachingManagementServiceImpl.java b/src/main/java/com/sztzjy/trade/service/impl/TchTeachingManagementServiceImpl.java
index c85edbc..9be6129 100644
--- a/src/main/java/com/sztzjy/trade/service/impl/TchTeachingManagementServiceImpl.java
+++ b/src/main/java/com/sztzjy/trade/service/impl/TchTeachingManagementServiceImpl.java
@@ -188,6 +188,7 @@ public class TchTeachingManagementServiceImpl implements TchTeachingManagementSe
         if(startCourseManages.isEmpty()){
 
             //直接返回所有班级名称
+            List<String> list = stuUserMapper.selectByClassName(schoolId);
             return stuUserMapper.selectByClassName(schoolId);
 
         }else {
diff --git a/src/main/resources/mappers/StuLearningAssessmentMapper.xml b/src/main/resources/mappers/StuLearningAssessmentMapper.xml
index fe931d1..9a984d2 100644
--- a/src/main/resources/mappers/StuLearningAssessmentMapper.xml
+++ b/src/main/resources/mappers/StuLearningAssessmentMapper.xml
@@ -558,7 +558,13 @@
     where topic_id = #{topicId,jdbcType=VARCHAR}
   </update>
 
-  <select id="getTopicType" resultType="com.sztzjy.trade.entity.dto.tch.TchTopicTypeDTO">
+
+  <resultMap id="TchTopicTypeResultMap" type="com.sztzjy.trade.entity.dto.tch.TchTopicTypeDTO">
+    <result property="type" column="topic_type"/>
+    <result property="quantity" column="COUNT(*)"/>
+  </resultMap>
+
+  <select id="getTopicType" resultType="com.sztzjy.trade.entity.dto.tch.TchTopicTypeDTO" resultMap="TchTopicTypeResultMap">
     SELECT topic_type,COUNT(*) FROM `stu_learning_assessment` GROUP BY topic_type
   </select>
   <select id="selectTopicsById" resultType="com.sztzjy.trade.entity.StuLearningAssessment" resultMap="BaseResultMap">
@@ -568,4 +574,7 @@
       #{id}
     </foreach>
   </select>
+    <select id="getCourseList" resultType="java.lang.String">
+      select DISTINCT attribution_chapter from stu_learning_assessment where school_id=#{schoolId}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mappers/StuUserMapper.xml b/src/main/resources/mappers/StuUserMapper.xml
index 8af5ead..d83af5b 100644
--- a/src/main/resources/mappers/StuUserMapper.xml
+++ b/src/main/resources/mappers/StuUserMapper.xml
@@ -429,8 +429,8 @@
     SELECT * FROM `stu_user` WHERE class_name=#{startCourseName}
   </select>
 
-  <select id="selectByClassName" resultMap="BaseResultMap" resultType="java.lang.String">
-    select DISTINCT(class_name) from stu_user where school_id=#{schoolId} and class_name!=null
+  <select id="selectByClassName" resultType="java.lang.String">
+    select DISTINCT(class_name) from stu_user where school_id=#{schoolId} and class_name!=''
   </select>
   <select id="selectByNoClassName" resultType="java.lang.String">
     select DISTINCT(class_name) from stu_user