瀏覽代碼

Merge remote-tracking branch 'origin/seec' into seec

yhd12345 3 年之前
父節點
當前提交
0fe00e686b
共有 23 個文件被更改,包括 223 次插入102 次删除
  1. 10 0
      node_modules/.yarn-integrity
  2. 0 1
      pom.xml
  3. 31 0
      seecoder-portal-common/src/main/java/cn/seecoder/seecoderportalcommon/vo/CourseWareCanDownloadVO.java
  4. 0 11
      seecoder-portal-common/src/main/java/cn/seecoder/seecoderportalcommon/vo/CourseWareVO.java
  5. 0 13
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/domain/CourseWare.java
  6. 39 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/domain/CourseWareCanDownload.java
  7. 8 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/repository/CourseWareCanDownloadRepository.java
  8. 4 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/CourseWareService.java
  9. 2 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/ExamService.java
  10. 15 3
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/GitlabService.java
  11. 1 1
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/HttpService.java
  12. 1 14
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/UserService.java
  13. 27 14
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/CourseWareServiceImpl.java
  14. 5 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/ExamServiceImpl.java
  15. 9 2
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/HttpServiceImpl.java
  16. 13 1
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/subsystem/CoderService.java
  17. 1 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/subsystem/DevcloudServiceImpl.java
  18. 30 30
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/subsystem/EvalService.java
  19. 10 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/CourseWareController.java
  20. 5 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/ExamController.java
  21. 0 10
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/UserController.java
  22. 5 1
      seecoder-portal-server/src/main/resources/application-dev.yml
  23. 7 1
      seecoder-portal-server/src/main/resources/application.yml

+ 10 - 0
node_modules/.yarn-integrity

@@ -0,0 +1,10 @@
+{
+  "systemParams": "win32-x64-93",
+  "modulesFolders": [],
+  "flags": [],
+  "linkedModules": [],
+  "topLevelPatterns": [],
+  "lockfileEntries": {},
+  "files": [],
+  "artifacts": {}
+}

+ 0 - 1
pom.xml

@@ -163,7 +163,6 @@
                 <version>${jjwt.version}</version>
                 <scope>runtime</scope>
             </dependency>
-
         </dependencies>
     </dependencyManagement>
 

+ 31 - 0
seecoder-portal-common/src/main/java/cn/seecoder/seecoderportalcommon/vo/CourseWareCanDownloadVO.java

@@ -0,0 +1,31 @@
+package cn.seecoder.seecoderportalcommon.vo;
+
+public class CourseWareCanDownloadVO {
+    private Long courseWareId;
+
+    private Boolean canDownload;
+
+    public Long getCourseWareId() {
+        return courseWareId;
+    }
+
+    public void setCourseWareId(Long courseWareId) {
+        this.courseWareId = courseWareId;
+    }
+
+    public Boolean getCanDownload() {
+        return canDownload;
+    }
+
+    public void setCanDownload(Boolean canDownload) {
+        this.canDownload = canDownload;
+    }
+
+    @Override
+    public String toString() {
+        return "CourseWareVO{" +
+                "courseWareId=" + courseWareId +
+                ", canDownload=" + canDownload +
+                '}';
+    }
+}

+ 0 - 11
seecoder-portal-common/src/main/java/cn/seecoder/seecoderportalcommon/vo/CourseWareVO.java

@@ -23,8 +23,6 @@ public class CourseWareVO {
 
     private ObjectState state;
 
-    private Boolean canDownload;
-
     public Long getId() {
         return id;
     }
@@ -105,14 +103,6 @@ public class CourseWareVO {
         this.state = state;
     }
 
-    public Boolean getCanDownload() {
-        return canDownload;
-    }
-
-    public void setCanDownload(Boolean canDownload) {
-        this.canDownload = canDownload;
-    }
-
     @Override
     public String toString() {
         return "CourseWareVO{" +
@@ -126,7 +116,6 @@ public class CourseWareVO {
                 ", useMethod=" + useMethod +
                 ", fileUrl=" + fileUrl +
                 ", state=" + state +
-                ", canDownload=" + canDownload +
                 '}';
     }
 

+ 0 - 13
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/domain/CourseWare.java

@@ -54,10 +54,6 @@ public class CourseWare {
     @NotNull
     private ObjectState state;
 
-    @Column
-    @NotNull
-    private Boolean canDownload;
-
     public String getFileUrl() {
         return fileUrl;
     }
@@ -138,14 +134,6 @@ public class CourseWare {
         this.state = state;
     }
 
-    public Boolean getCanDownload() {
-        return canDownload;
-    }
-
-    public void setCanDownload(Boolean canDownload) {
-        this.canDownload = canDownload;
-    }
-
     @Override
     public String toString() {
         return "CourseWare{" +
@@ -159,7 +147,6 @@ public class CourseWare {
                 ", useMethod=" + useMethod +
                 ", fileUrl=" + fileUrl +
                 ", state=" + state +
-                ", canDownload=" + canDownload +
                 '}';
     }
 

+ 39 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/domain/CourseWareCanDownload.java

@@ -0,0 +1,39 @@
+package cn.seecoder.seecoderportalserver.domain;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+
+@Entity
+@Table(name = "courseWareCanDownload")
+public class CourseWareCanDownload {
+    @Id
+    private Long courseWareId;
+
+    @Column
+    @NotNull
+    private Boolean canDownload;
+
+    public Long getCourseWareId() {
+        return courseWareId;
+    }
+
+    public void setCourseWareId(Long courseWareId) {
+        this.courseWareId = courseWareId;
+    }
+
+    public Boolean getCanDownload() {
+        return canDownload;
+    }
+
+    public void setCanDownload(Boolean canDownload) {
+        this.canDownload = canDownload;
+    }
+
+    @Override
+    public String toString() {
+        return "CourseWare{" +
+                "courseWareId=" + courseWareId +
+                ", canDownload=" + canDownload +
+                '}';
+    }
+}

+ 8 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/repository/CourseWareCanDownloadRepository.java

@@ -0,0 +1,8 @@
+package cn.seecoder.seecoderportalserver.repository;
+
+import cn.seecoder.seecoderportalserver.domain.CourseWareCanDownload;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface CourseWareCanDownloadRepository extends JpaRepository<CourseWareCanDownload, Long> {
+    CourseWareCanDownload findCourseWareCanDownloadByCourseWareId(Long courseWareId);
+}

+ 4 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/CourseWareService.java

@@ -38,4 +38,8 @@ public interface CourseWareService {
 
     Long getCourseIdById(Long id);
 
+    void setCanDownloadById(Long id, Boolean canDownload);
+
+    Boolean getCanDownloadById(Long id);
+
 }

+ 2 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/ExamService.java

@@ -58,6 +58,8 @@ public interface ExamService {
 
     JSONObject changeShowConsole(int examId, boolean showConsole);
 
+    JSONObject stopRecordByRecordId(int recordId);
+
     //--------------------------------------------------------
 
     JSONArray findEvalRecommendExams();

+ 15 - 3
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/GitlabService.java

@@ -3,8 +3,11 @@ package cn.seecoder.seecoderportalserver.service;
 import com.nju.edu.gitlab.SeecoderGitlabClient;
 import com.nju.edu.gitlab.SeecoderGitlabException;
 import com.nju.edu.gitlab.vo.GitlabUserVO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import javax.annotation.PostConstruct;
 
 /**
  * @author kunduin
@@ -12,10 +15,19 @@ import org.springframework.stereotype.Service;
 @Service
 public class GitlabService {
 
-    private final SeecoderGitlabClient client;
+    private static final Logger log = LoggerFactory.getLogger(GitlabService.class);
+    @Value("${seec.gitlab.url}")
+    private String url;
+    @Value("${seec.gitlab.host}")
+    private String host;
+    @Value("${seec.gitlab.token}")
+    String token;
+    private SeecoderGitlabClient client;
 
-    public GitlabService(@Value("${seec.gitlab.url}") String url) {
-        this.client = new SeecoderGitlabClient(url, "");
+    @PostConstruct
+    public void initClient() {
+        log.info(String.format("GitlabService initClient host: %s, token: %s", host, token));
+        client = new SeecoderGitlabClient(host, token);
     }
 
     public GitlabUserVO createGitlabUser(int userId, String username, String password, String email) throws SeecoderGitlabException {

+ 1 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/HttpService.java

@@ -17,7 +17,7 @@ public interface HttpService {
 
     String sendDelete(String uri, String jsonstr, String token) throws Exception;
 
-    String sendPut(String uri, JSONObject requestBody, String token) throws Exception;
+    String sendPut(String uri, JSONObject requestBody, List<NameValuePair> params, String token) throws Exception;
 
     String sendPutFile(String uri, MultipartFile file, String path, String token) throws Exception;
 

+ 1 - 14
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/UserService.java

@@ -140,23 +140,10 @@ public class UserService {
                 });
         user.setPassword(passwordEncoder.encode(password));
         User savedUser = userRepository.save(user);
-        log.debug("Reset Password for User: {}", savedUser);
-    }
-
-    @Transactional(rollbackFor = RuntimeException.class)
-    public void resetGitlabPassword(String phone, String phoneCode, String password) {
-        checkPhoneMessageOrThrowError(phone, phoneCode);
-
-        User user = userRepository
-                .findByPhone(phone)
-                .<UsernameNotFoundException>orElseThrow(() -> {
-                    // TODO: use customException
-                    throw new UsernameNotFoundException("找不到手机用户[" + phone + "]");
-                });
-        User savedUser = userRepository.save(user);
         try {
             gitlabService.changePassword(Math.toIntExact(savedUser.getId()),password);
         } catch (SeecoderGitlabException e) {
+            log.error(e.getMessage());
             throw new CustomErrorException("gitlab密码重置失败,请联系管理人员!");
         }
         log.debug("Reset Password for User: {}", savedUser);

+ 27 - 14
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/CourseWareServiceImpl.java

@@ -5,8 +5,10 @@ import cn.seecoder.seecoderportalcommon.vo.CourseWareVO;
 import cn.seecoder.seecoderportalcommon.vo.ObjectState;
 import cn.seecoder.seecoderportalcommon.vo.dto.CourseWareDTO;
 import cn.seecoder.seecoderportalserver.domain.CourseWare;
+import cn.seecoder.seecoderportalserver.domain.CourseWareCanDownload;
 import cn.seecoder.seecoderportalserver.mapper.CourseWareMapper;
 import cn.seecoder.seecoderportalserver.repository.CourseRepository;
+import cn.seecoder.seecoderportalserver.repository.CourseWareCanDownloadRepository;
 import cn.seecoder.seecoderportalserver.repository.CourseWareRepository;
 import cn.seecoder.seecoderportalserver.service.CourseWareService;
 import cn.seecoder.seecoderportalserver.utility.OssUtil;
@@ -22,8 +24,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
-import java.awt.*;
-import java.awt.image.BufferedImage;
 import java.io.*;
 import java.net.URL;
 import java.util.Comparator;
@@ -34,13 +34,13 @@ import java.util.stream.Collectors;
 public class CourseWareServiceImpl implements CourseWareService {
     private final CourseWareRepository courseWareRepository;
     private final CourseWareMapper courseWareMapper;
-    private final CourseRepository courseRepository;
+    private final CourseWareCanDownloadRepository courseWareCanDownloadRepository;
     private final OssUtil ossUtil;
 
-    public CourseWareServiceImpl(CourseWareRepository courseWareRepository, CourseWareMapper courseWareMapper, CourseRepository courseRepository, OssUtil ossUtil) {
+    public CourseWareServiceImpl(CourseWareRepository courseWareRepository, CourseWareMapper courseWareMapper, CourseWareCanDownloadRepository courseWareCanDownloadRepository, OssUtil ossUtil) {
         this.courseWareRepository = courseWareRepository;
         this.courseWareMapper = courseWareMapper;
-        this.courseRepository = courseRepository;
+        this.courseWareCanDownloadRepository = courseWareCanDownloadRepository;
         this.ossUtil = ossUtil;
     }
 
@@ -54,11 +54,24 @@ public class CourseWareServiceImpl implements CourseWareService {
         return courseWareMapper.toCourseWareVO(result);
     }
 
+    @Override
+    public void setCanDownloadById(Long courseWareId, Boolean canDownload) {
+        System.out.println("setCanDownload");
+        CourseWareCanDownload courseWareCanDownload = new CourseWareCanDownload();
+        courseWareCanDownload.setCourseWareId(courseWareId);
+        courseWareCanDownload.setCanDownload(canDownload);
+        courseWareCanDownloadRepository.save(courseWareCanDownload);
+    }
+
     @Override
     public Boolean checkCourseWareNameUnique(Long courseId, String name) {
         System.out.println("checkname");
+        System.out.println(courseId);
+        System.out.println(name);
         List<CourseWare> courseWares = courseWareRepository.findCourseWaresByCourseIdAndStateNot(courseId, ObjectState.DELETED);
+        System.out.println(courseWares);
         for (CourseWare courseWare: courseWares) {
+            System.out.println(courseWare.getName());
             if (courseWare.getName().equals(name)) {
                 return false;
             }
@@ -95,15 +108,6 @@ public class CourseWareServiceImpl implements CourseWareService {
     public String uploadCourseWareFile(String name, MultipartFile file) {
         try {
             System.out.println("upload");
-//            if (name.substring(name.indexOf(".")).equals(".ppt")) {
-//                OutputStream pdfFile = null;
-//                FileOutputStream fileOutputStream = new FileOutputStream(name.substring(0, name.indexOf(".")) + ".pdf");
-//                pptToPdf(file.getInputStream(), fileOutputStream);
-//                ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream();
-//
-//                String courseWareUrl = ossUtil.upload(name, );
-//
-//            }
             String courseWareUrl = ossUtil.upload(name, file.getInputStream());
             System.out.println(courseWareUrl);
             return courseWareUrl;
@@ -238,4 +242,13 @@ public class CourseWareServiceImpl implements CourseWareService {
         return courseWare.getCourseId();
     }
 
+    @Override
+    public Boolean getCanDownloadById(Long courseWareId) {
+        System.out.println("getCanDownload");
+        System.out.println(courseWareId);
+        CourseWareCanDownload courseWareCanDownload = courseWareCanDownloadRepository.findCourseWareCanDownloadByCourseWareId(courseWareId);
+        System.out.println(courseWareCanDownload.getCanDownload());
+        return courseWareCanDownload.getCanDownload();
+    }
+
 }

+ 5 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/ExamServiceImpl.java

@@ -242,6 +242,11 @@ public class ExamServiceImpl implements ExamService {
         return coderService.changeShowConsole(examId, showConsole);
     }
 
+    @Override
+    public JSONObject stopRecordByRecordId(int recordId) {
+        return coderService.stopRecordByRecordId(recordId);
+    }
+
     //--------------------------------------------
 
     @Override

+ 9 - 2
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/HttpServiceImpl.java

@@ -144,9 +144,16 @@ public class HttpServiceImpl implements HttpService {
 
 
     @Override
-    public String sendPut(String uri, JSONObject requestBody, String token) throws Exception {
+    public String sendPut(String uri, JSONObject requestBody, List<NameValuePair> params, String token) throws Exception {
+        String completedUri;
+        if (params != null && !params.isEmpty()) {
+            String requestParam = EntityUtils.toString(new UrlEncodedFormEntity(params, Consts.UTF_8));
+            completedUri = uri + "?" + requestParam;
+        } else {
+            completedUri = uri;
+        }
         CloseableHttpClient httpClient = HttpClients.createDefault();
-        HttpPut httpPut = new HttpPut(uri);
+        HttpPut httpPut = new HttpPut(completedUri);
         if (token != null) {
             httpPut.setHeader("Authorization", token);
         }

+ 13 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/subsystem/CoderService.java

@@ -219,7 +219,7 @@ public class CoderService implements SubsystemService {
         String token = httpService.getToken();
         String result = null;
         try {
-            result = httpService.sendPut(coderUrlPrefix + "/exam/" + examId, examDTO, token);
+            result = httpService.sendPut(coderUrlPrefix + "/exam/" + examId, examDTO, null, token);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -455,4 +455,16 @@ public class CoderService implements SubsystemService {
         }
         return JSON.parseObject(result);
     }
+
+    public JSONObject stopRecordByRecordId(int recordId) {
+        String token = httpService.getToken();
+        String result = null;
+        String url = coderUrlPrefix + "/record/" + recordId + "/stop";
+        try {
+            result = httpService.sendPut(url, new JSONObject(), null, token);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return JSON.parseObject(result);
+    }
 }

+ 1 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/subsystem/DevcloudServiceImpl.java

@@ -198,6 +198,7 @@ public class DevcloudServiceImpl implements DevcloudService {
                     httpService.sendPut(
                             seecoderGitlabServerUri + "/api/project/visibility",
                             requestBody,
+                            null,
                             httpService.getToken()
                     )
             );

+ 30 - 30
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/subsystem/EvalService.java

@@ -107,21 +107,21 @@ public class EvalService implements SubsystemService {
         String token = httpService.getToken();
         System.out.println(token);
         JSONObject requestBody = new JSONObject();
-        requestBody.put("examName",createEvalExamVO.getExamName());
-        requestBody.put("skills",createEvalExamVO.getSkills());
-        requestBody.put("difficulty",createEvalExamVO.getDifficulty());
-        requestBody.put("startTime",createEvalExamVO.getStartTime());
-        requestBody.put("endTime",createEvalExamVO.getEndTime());
-        requestBody.put("comment",createEvalExamVO.getComment());
-        requestBody.put("antiCheating",createEvalExamVO.getAntiCheating());
-        requestBody.put("isPublic",createEvalExamVO.getIsPublic());
-        requestBody.put("position",createEvalExamVO.getPosition());
-        requestBody.put("courseId",createEvalExamVO.getCourseId());
+        requestBody.put("examName", createEvalExamVO.getExamName());
+        requestBody.put("skills", createEvalExamVO.getSkills());
+        requestBody.put("difficulty", createEvalExamVO.getDifficulty());
+        requestBody.put("startTime", createEvalExamVO.getStartTime());
+        requestBody.put("endTime", createEvalExamVO.getEndTime());
+        requestBody.put("comment", createEvalExamVO.getComment());
+        requestBody.put("antiCheating", createEvalExamVO.getAntiCheating());
+        requestBody.put("isPublic", createEvalExamVO.getIsPublic());
+        requestBody.put("position", createEvalExamVO.getPosition());
+        requestBody.put("courseId", createEvalExamVO.getCourseId());
 //        requestBody.put("courseId",1);//测试用
         System.out.println(requestBody);
         String result = null;
         try {
-            result = httpService.sendPost(uri, requestBody,null, token);
+            result = httpService.sendPost(uri, requestBody, null, token);
             System.out.println(result);
         } catch (Exception e) {
             e.printStackTrace();
@@ -145,7 +145,7 @@ public class EvalService implements SubsystemService {
         String uri = "https://eval-server.seec.seecoder.cn/api/question/sample";
         String result = null;
         try {
-            result = httpService.sendGet(uri,new ArrayList<>(),null);
+            result = httpService.sendGet(uri, new ArrayList<>(), null);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
@@ -153,7 +153,7 @@ public class EvalService implements SubsystemService {
     }
 
     public JSONObject getExamQuestionAndScoreById(Integer examId) {
-        String uri = "https://eval-server.seec.seecoder.cn/api/exam/" + examId +"/questions";
+        String uri = "https://eval-server.seec.seecoder.cn/api/exam/" + examId + "/questions";
         String result = null;
         try {
             result = httpService.sendGet(uri, new ArrayList<>(), null);
@@ -178,7 +178,7 @@ public class EvalService implements SubsystemService {
         String uri = "https://eval-server.seec.seecoder.cn/api/exam/question/sample/" + examId + "/?sampleExamPaperId=" + sampleExamPaperId;
         String token = httpService.getToken();
         try {
-            httpService.sendPost(uri, null,null,token);
+            httpService.sendPost(uri, null, null, token);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -198,14 +198,14 @@ public class EvalService implements SubsystemService {
 
     public JSONObject getQuestionList(String stem, List<String> tags, String knowledgeName, int pageSize, int pageNum) {
         String params = "";
-        if(stem!=null){
-            params+=("stem=" + stem + "&");
+        if (stem != null) {
+            params += ("stem=" + stem + "&");
         }
-        if(tags!=null){
-            params+=("tags=" + tags + "&");
+        if (tags != null) {
+            params += ("tags=" + tags + "&");
         }
-        if(knowledgeName!=null){
-            params+=("knowledgeName=" + knowledgeName + "&");
+        if (knowledgeName != null) {
+            params += ("knowledgeName=" + knowledgeName + "&");
         }
         String uri = "https://eval-server.seec.seecoder.cn/api/question/question" + "?" + params + "pageSize=" + pageSize + "&pageNum=" + pageNum;
         String token = httpService.getToken();
@@ -222,16 +222,16 @@ public class EvalService implements SubsystemService {
         String uri = "https://eval-server.seec.seecoder.cn/api/exam/" + examId + "/questions/";
         String token = httpService.getToken();
         JSONObject requestBody = new JSONObject();
-        requestBody.put("questionScoreMap",questionScoreMapVO.getQuestionScoreMap());
+        requestBody.put("questionScoreMap", questionScoreMapVO.getQuestionScoreMap());
         try {
-            httpService.sendPut(uri, requestBody,token);
+            httpService.sendPut(uri, requestBody, null, token);
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
     public JSONObject getExamById(Integer examId) {
-        String uri = "https://eval-server.seec.seecoder.cn/api/exam/" +examId;
+        String uri = "https://eval-server.seec.seecoder.cn/api/exam/" + examId;
         String token = httpService.getToken();
         String result = null;
         try {
@@ -243,7 +243,7 @@ public class EvalService implements SubsystemService {
     }
 
     public JSONObject getUsersByExamId(Integer examId) {
-        String uri = "https://eval-server.seec.seecoder.cn/api/user/" +  examId;
+        String uri = "https://eval-server.seec.seecoder.cn/api/user/" + examId;
         String token = httpService.getToken();
         String result = null;
         try {
@@ -255,7 +255,7 @@ public class EvalService implements SubsystemService {
     }
 
     public JSONObject getReportByExamId(Integer examId) {
-        String uri = "https://eval-server.seec.seecoder.cn/api/report/all?examId=" +  examId;
+        String uri = "https://eval-server.seec.seecoder.cn/api/report/all?examId=" + examId;
         String token = httpService.getToken();
         String result = null;
         try {
@@ -270,10 +270,10 @@ public class EvalService implements SubsystemService {
         String uri = "https://eval-server.seec.seecoder.cn/api/exam/invite/code" + "?inviteCode=" + inviteCode + "&examId=" + examId;
         String token = httpService.getToken();
         JSONObject requestBody = new JSONObject();
-        requestBody.put("inviteCode",inviteCode);
-        requestBody.put("examId",examId);
+        requestBody.put("inviteCode", inviteCode);
+        requestBody.put("examId", examId);
         try {
-            httpService.sendPut(uri, requestBody,token);
+            httpService.sendPut(uri, requestBody, null, token);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -283,9 +283,9 @@ public class EvalService implements SubsystemService {
         String uri = "https://eval-server.seec.seecoder.cn/api/exam/invite/code" + "?examId=" + examId;
         String token = httpService.getToken();
         JSONObject requestBody = new JSONObject();
-        requestBody.put("examId",examId);
+        requestBody.put("examId", examId);
         try {
-            httpService.sendPut(uri, requestBody,token);
+            httpService.sendPut(uri, requestBody, null, token);
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 10 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/CourseWareController.java

@@ -84,4 +84,14 @@ public class CourseWareController {
     public OkResponse<Long> getCourseIdById(@RequestParam Long id) {
         return OkResponse.of(courseWareService.getCourseIdById(id));
     }
+
+    @PostMapping("/setCanDownloadById")
+    public void setCanDownloadById(@RequestParam Long id, @RequestParam Boolean canDownload) {
+        courseWareService.setCanDownloadById(id, canDownload);
+    }
+
+    @GetMapping("/getCanDownloadById")
+    public OkResponse<Boolean> getCanDownloadById(@RequestParam Long id) {
+        return OkResponse.of(courseWareService.getCanDownloadById(id));
+    }
 }

+ 5 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/ExamController.java

@@ -212,6 +212,11 @@ public class ExamController {
         return examService.getRecordByRecordId(recordId);
     }
 
+    @PutMapping("/coder/record/stop")
+    public JSONObject stopRecordByRecordId(@RequestParam int recordId){
+        return examService.stopRecordByRecordId(recordId);
+    }
+
 
     //--------------------------------------------------------
 

+ 0 - 10
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/UserController.java

@@ -87,16 +87,6 @@ public class UserController {
         return OkResponse.of(true);
     }
 
-    @PostMapping("/resetGitlabPassword")
-    public OkResponse<Boolean> resetGitlabPassword(@RequestBody ResetPasswordDTO resetPasswordDTO) {
-        userService.resetGitlabPassword(
-                resetPasswordDTO.getPhone(),
-                resetPasswordDTO.getIdentifyCode(),
-                resetPasswordDTO.getPassword()
-        );
-        return OkResponse.of(true);
-    }
-
     @GetMapping("/findIdByPhone/{phone}")
     public OkResponse<Long> findIdByPhone(@PathVariable String phone) {
         return OkResponse.of(userService.findIdByPhone(phone));

+ 5 - 1
seecoder-portal-server/src/main/resources/application-dev.yml

@@ -3,7 +3,8 @@ debug: true
 spring:
   servlet:
     multipart:
-      max-file-size: 3MB
+      max-file-size: 100MB
+      max-request-size: 100MB
   jpa:
     show-sql: true
   datasource:
@@ -12,6 +13,9 @@ spring:
     password: postgres
 #    username: postgres
 #    password: postgres
+  mvc:
+    async:
+      request-timeout: 200000
 
 aliyun:
   oss:

+ 7 - 1
seecoder-portal-server/src/main/resources/application.yml

@@ -3,6 +3,8 @@ seec:
   secret: UenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRW
   gitlab:
     url: http://seecoder-gitlab-server.seec.seecoder.cn
+    host: http://environment-13-31.seec.svc.cluster.local:8080
+    token: wXDeETv2Kmt-JhiApJ9H
 
 
 aliyun:
@@ -22,7 +24,8 @@ aliyun:
 spring:
   servlet:
     multipart:
-      max-file-size: 3MB
+      max-file-size: 100MB
+      max-request-size: 100MB
   jpa:
     database: postgresql
 #    open-in-view: false
@@ -30,6 +33,9 @@ spring:
       ddl-auto: update
   datasource:
     type: com.zaxxer.hikari.HikariDataSource
+  mvc:
+    async:
+      request-timeout: 200000