Просмотр исходного кода

Merge branch 'seec' of http://gogs.seec.seecoder.cn/WuXinyu/SEEC-PORTAL into seec

chillqi 3 лет назад
Родитель
Сommit
5b15e4bb9c
15 измененных файлов с 92 добавлено и 31 удалено
  1. 1 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/config/SpringSecurityConfiguration.java
  2. 1 1
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/security/DomainUserDetails.java
  3. 6 1
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/CourseService.java
  4. 2 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/ExamService.java
  5. 7 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/ProjectService.java
  6. 8 6
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/CourseServiceImpl.java
  7. 5 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/ExamServiceImpl.java
  8. 2 1
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/GroupServiceImpl.java
  9. 20 10
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/ProjectServiceImpl.java
  10. 13 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/subsystem/EvalService.java
  11. 11 10
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/CourseController.java
  12. 7 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/ExamController.java
  13. 7 0
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/ProjectController.java
  14. 1 1
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/UserController.java
  15. 1 1
      seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/UserJWTController.java

+ 1 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/config/SpringSecurityConfiguration.java

@@ -112,6 +112,7 @@ public class SpringSecurityConfiguration extends WebSecurityConfigurerAdapter {
                         "/api/project/findById",
                         "/api/project/findByCourse",
                         "/api/project/updateState",
+                        "/api/project/findAllPublicGroupByCourse",
                         "/api/group",
                         "/api/group/one",
                         "/api/group/all",

+ 1 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/security/DomainUserDetails.java

@@ -36,7 +36,7 @@ public class DomainUserDetails implements UserDetails {
 
     @Override
     public String getUsername() {
-        //todo 这个太离谱了
+        // 这个太离谱了
         return phone;
     }
 

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

@@ -6,6 +6,9 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
+/**
+ * @author wind
+ */
 public interface CourseService {
 
     CourseVO createCourse(CourseVO courseVO, Long userId);
@@ -36,7 +39,7 @@ public interface CourseService {
 
     Boolean checkCourseCodeUnique(Long id, String code);
 
-    CourseVO findCourseByEvalId(int evalId) throws Exception;
+    CourseVO findCourseByEvalId(int evalId);
 
     Boolean isCourseNameExisted(String name);
 
@@ -59,4 +62,6 @@ public interface CourseService {
     Boolean uploadCarouselChart(List<String> courses);
 
     List<CourseVO> queryCarouselChart();
+
+    CourseVO findCourseByName(String name);
 }

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

@@ -103,4 +103,6 @@ public interface ExamService {
     void takeExamWithoutInviteCode(Integer examId);
 
     void takeExamWithInviteCode(Integer examId, String inviteCode);
+
+    JSONObject getExamListByCurrentStudent();
 }

+ 7 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/ProjectService.java

@@ -78,4 +78,11 @@ public interface ProjectService {
      * @return JSONArray
      */
     JSONArray findProjectMembers(Integer projectId);
+
+    /**
+     * 查找全部公开项目,并以项目所属课程分类返回
+     *
+     * @return JSONObject course: Array(projects)
+     */
+    JSONObject findAllPublicProjectsGroupByCourse();
 }

+ 8 - 6
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/CourseServiceImpl.java

@@ -38,7 +38,6 @@ public class CourseServiceImpl implements CourseService {
     private final CourseSelectionRepository courseSelectionRepository;
     private final UserService userService;
     private final CoderService coderService;
-    //private final HelperService helperService;
     private final EvalService evalService;
     private final OssUtil ossUtil;
 
@@ -193,7 +192,6 @@ public class CourseServiceImpl implements CourseService {
         assert userService.isStudent(userVO.getRole());
         CourseSelectionKey courseSelectionKey = new CourseSelectionKey(userId, courseId);
         CourseVO course = this.findCourseById(courseId);
-        // coder系统选课
         if (course.getCoderId() != null) {
             JSONObject coderRes = coderService.chooseCourse(course.getInvitationCode());
         }
@@ -201,10 +199,6 @@ public class CourseServiceImpl implements CourseService {
         if (course.getEvalId() != null) {
             JSONObject evalRes = evalService.chooseCourse(course.getInvitationCode());
         }
-//        // 门户系统选课
-//        if (course.getHelperId() != null) {
-//            JSONObject jsonObject = helperService.chooseCourse(course.getInvitationCode());
-//        }
         CourseSelection courseSelection = new CourseSelection(courseSelectionKey);
         courseSelection.setState(true);
         courseSelectionRepository.save(courseSelection);
@@ -272,6 +266,9 @@ public class CourseServiceImpl implements CourseService {
     public Boolean isCourseAccessible(Long id) {
         DomainUserDetails user = SecurityUtils.getCurrentUser();
         CourseVO courseVO = findCourseById(id);
+        if(courseVO.getState().equals(ObjectState.EXAMPLE)){
+            return true;
+        }
         if(user.getId().equals(courseVO.getTeacher().getId())){
             return true;
         }
@@ -319,4 +316,9 @@ public class CourseServiceImpl implements CourseService {
             return null;
         }
     }
+
+    @Override
+    public CourseVO findCourseByName(String name) {
+        return courseMapper.courseToCourseVO(courseRepository.findCourseByName(name).orElse(null));
+    }
 }

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

@@ -201,6 +201,11 @@ public class ExamServiceImpl implements ExamService {
         evalService.takeExamWithInviteCode(examId,inviteCode);
     }
 
+    @Override
+    public JSONObject getExamListByCurrentStudent() {
+        return evalService.getExamListByCurrentStudent();
+    }
+
 
     @Override
     public JSONObject getResultByExamId(int examId) {

+ 2 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/GroupServiceImpl.java

@@ -183,8 +183,9 @@ public class GroupServiceImpl implements GroupService {
                     getGroupTableName(courseId),
                     groupMember.getGroupId());
             return generateGroupDTO(courseId, group);
-        } catch (PSQLException e) {
+        } catch (PSQLException | NullPointerException e) {
             throw CustomErrorException.groupNotFound();
+
         }
     }
 

+ 20 - 10
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/ProjectServiceImpl.java

@@ -1,5 +1,6 @@
 package cn.seecoder.seecoderportalserver.serviceImpl;
 
+import cn.seecoder.seecoderportalcommon.vo.CourseVO;
 import cn.seecoder.seecoderportalcommon.vo.UserVO;
 import cn.seecoder.seecoderportalserver.domain.CourseProject;
 import cn.seecoder.seecoderportalserver.mapper.CourseMapper;
@@ -147,20 +148,19 @@ public class ProjectServiceImpl implements ProjectService {
         if (!courseService.checkSelection(SecurityUtils.getCurrentUser().getId(), courseProject.getCourse().getId())) {
             throw CustomErrorException.unauthorizedUser();
         }
-//        JSONObject devcloudResult = devcloudService.forkProject(projectId, name);
-//        log.info("devcloudService.forkProject: {}", devcloudResult);
-//        CourseProject forkCourseProject = new CourseProject();
-//        Integer newProjectId = devcloudResult.getInteger("projectId");
-        Integer newProjectId = 6520;
-//        forkCourseProject.setProjectId(newProjectId);
-//        forkCourseProject.setCourse(courseProject.getCourse());
-//        forkCourseProject.setPublic(false);
-//        courseProjectRepository.save(forkCourseProject);
+        JSONObject devcloudResult = devcloudService.forkProject(projectId, name);
+        log.info("devcloudService.forkProject: {}", devcloudResult);
+        CourseProject forkCourseProject = new CourseProject();
+        Integer newProjectId = devcloudResult.getInteger("projectId");
+        forkCourseProject.setProjectId(newProjectId);
+        forkCourseProject.setCourse(courseProject.getCourse());
+        forkCourseProject.setPublic(false);
+        courseProjectRepository.save(forkCourseProject);
         // 若当前用户已组队,则将队友添加到当前项目当中
         List<UserVO> members;
         try {
             members = groupService.findGroup(courseProject.getCourse().getId()).getMembers();
-        } catch (BadSqlGrammarException e) {
+        } catch (BadSqlGrammarException | CustomErrorException e) {
             members = new ArrayList<>();
         }
         for (UserVO member : members) {
@@ -176,6 +176,16 @@ public class ProjectServiceImpl implements ProjectService {
         return devcloudService.getProjectMembers(projectId);
     }
 
+    @Override
+    public JSONObject findAllPublicProjectsGroupByCourse() {
+        List<CourseVO> courseVOList = courseService.findRecommendCourses();
+        JSONObject result = new JSONObject();
+        for (CourseVO courseVO : courseVOList) {
+            result.put(courseVO.getName(), this.findProjectsByCourse(courseVO.getId()).getJSONArray("public"));
+        }
+        return result;
+    }
+
     private void addProjectMember(Integer projectId, String phone) {
         JSONObject devcloudRes = devcloudService.addMember(projectId, phone);
         log.info("devcloudService.addMember: {}", devcloudRes);

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

@@ -290,4 +290,17 @@ public class EvalService implements SubsystemService {
             e.printStackTrace();
         }
     }
+
+    public JSONObject getExamListByCurrentStudent() {
+        String uri = "https://eval-server.seec.seecoder.cn/api/exam/student/examList";
+//        String uri = "https://localhost:8081/api/exam/student/examList";
+        String token = httpService.getToken();
+        String result = null;
+        try {
+            result = httpService.sendGet(uri, new ArrayList<>(), token);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return JSONObject.parseObject(result);
+    }
 }

+ 11 - 10
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/CourseController.java

@@ -22,7 +22,7 @@ public class CourseController {
 
     @GetMapping("/getCourseById")
     public OkResponse<CourseVO> findCourseById(@RequestParam Long id) {
-        Call call = MonitorClient.createCall(SeecSystem.PORTAL,"seec-portal","/api/course/getCourseById");
+        Call call = MonitorClient.createCall(SeecSystem.PORTAL, "seec-portal", "/api/course/getCourseById");
         call.start();
         OkResponse<CourseVO> res = OkResponse.of(courseService.findCourseById(id));
         call.end();
@@ -65,8 +65,8 @@ public class CourseController {
     }
 
     @GetMapping("/getCourseByCoderId")
-    public OkResponse<Long> findCourseByCoderId(@RequestParam Integer coderId) {
-        return OkResponse.of(courseService.findCourseByCoderId(coderId).getId());
+    public OkResponse<CourseVO> findCourseByCoderId(@RequestParam Integer coderId) {
+        return OkResponse.of(courseService.findCourseByCoderId(coderId));
     }
 
     @GetMapping("/checkName")
@@ -95,12 +95,8 @@ public class CourseController {
     }
 
     @GetMapping("/getCourseByEvalId")
-    public OkResponse<Long> findCourseByEvalId(@RequestParam int evalId) {
-        try {
-            return OkResponse.of(courseService.findCourseByEvalId(evalId).getId());
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
+    public OkResponse<CourseVO> findCourseByEvalId(@RequestParam int evalId) {
+        return OkResponse.of(courseService.findCourseByEvalId(evalId));
     }
 
     @PostMapping("/uploadImage")
@@ -115,7 +111,12 @@ public class CourseController {
     }
 
     @GetMapping("/queryCarouselChart")
-    public OkResponse<List<CourseVO>> queryCarouselChart(){
+    public OkResponse<List<CourseVO>> queryCarouselChart() {
         return OkResponse.of(courseService.queryCarouselChart());
     }
+
+    @GetMapping("/findCourseByName")
+    public OkResponse<CourseVO> findCourseByName(@RequestParam String name) {
+        return OkResponse.of(courseService.findCourseByName(name));
+    }
 }

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

@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import springfox.documentation.annotations.ApiIgnore;
@@ -360,4 +361,10 @@ public class ExamController {
         return OkResponse.of(null);
     }
 
+    @ApiOperation("获得学生参加的考试列表")
+    @GetMapping("/eval/exam/student/examList")
+    public OkResponse<JSONObject> getExamListByCurrentStudent(){
+        return OkResponse.of(examService.getExamListByCurrentStudent());
+    }
+
 }

+ 7 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/ProjectController.java

@@ -72,4 +72,11 @@ public class ProjectController {
     public OkResponse<JSONObject> forkProject(@RequestParam Integer projectId, @RequestParam(defaultValue = "") String name){
         return OkResponse.of(projectService.forkPublicProject(projectId, name));
     }
+
+
+    @ApiOperation(value = "查找全部公开项目", httpMethod = "GET")
+    @GetMapping("/findAllPublicGroupByCourse")
+    public OkResponse<JSONObject> findAllPublicProjectsGroupByCourse(){
+        return OkResponse.of(projectService.findAllPublicProjectsGroupByCourse());
+    }
 }

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

@@ -89,7 +89,7 @@ public class UserController {
 
     @PostMapping("/resetGitlabPassword")
     public OkResponse<Boolean> resetGitlabPassword(@RequestBody ResetPasswordDTO resetPasswordDTO) {
-        userService.resetPassword(
+        userService.resetGitlabPassword(
                 resetPasswordDTO.getPhone(),
                 resetPasswordDTO.getIdentifyCode(),
                 resetPasswordDTO.getPassword()

+ 1 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/UserJWTController.java

@@ -77,7 +77,7 @@ public class UserJWTController {
         tokenVO.setRedirectUri(redirectUri);
         DomainUserDetails currentUser = SecurityUtils.getCurrentUser();
         tokenVO.setName(currentUser.getName());
-        UserVO userVO = userMapper.domainToUserVO(currentUser);
+        UserVO userVO = userService.findUserById(currentUser.getId());
         if (userVO.getRole().equals(UserRole.SUPER)) {
             userVO.setRole(superService.findByUserId(currentUser.getId()).get().getRole());
         }