daisy il y a 4 ans
Parent
commit
c3e5e98c4c

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

@@ -26,7 +26,7 @@ public interface CourseService {
 
     CourseVO findCourseById(Long id);
 
-    String confirmCourseSelection(CourseSelectionKey courseSelectionKey, Long userId);
+    String confirmCourseSelection(Long courseId, Long userId);
 
     String cancelCourseSelection(CourseSelectionKey courseSelectionKey, Long userId);
 

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

@@ -36,11 +36,7 @@ public class AnnouncementServiceImpl implements AnnouncementService {
     }
 
     public AnnouncementVO create(AnnouncementVO announcementVO, Long userId) {
-        UserVO sender = userService.findUserById(userId);
-        CourseVO course = courseService.findCourseById(announcementVO.getCourseId());
-        if (!userId.equals(course.getTeacher().getId())) {
-            throw new CustomErrorException("当前用户无权发布公告");
-        }
+        announcementVO.getSender().setId(userId);
         Announcement announcement = announcementMapper.toAnnouncement(announcementVO);
         announcement.setState(ObjectState.NORMAL);
         Announcement result = announcementRepository.save(announcement);
@@ -104,13 +100,21 @@ public class AnnouncementServiceImpl implements AnnouncementService {
         if (userService.isStudent(user.getRole())) {
             // 学生收取已选课程的公告
             List<Long> announcementList = new ArrayList<>();
-            courseService.findStudentCourses(userId).stream().map(CourseVO::getId)
-                    .map(courseId -> this.findAnnouncementsByCourseId(courseId).stream().map(AnnouncementVO::getId).collect(Collectors.toList()))
+            courseService.findStudentCourses(userId)
+                    .stream()
+                    .map(CourseVO::getId)
+                    .map(courseId -> this.findAnnouncementsByCourseId(courseId)
+                            .stream()
+                            .map(AnnouncementVO::getId)
+                            .collect(Collectors.toList()))
                     .collect(Collectors.toList())
                     .forEach(announcementList::addAll);
-            List<AnnouncementRecord> recordAnnouncements = announcementRecordRepository.findAnnouncementRecordsByRecipientId(userId)
+            List<AnnouncementRecord> recordAnnouncements = announcementRecordRepository
+                    .findAnnouncementRecordsByRecipientId(userId)
                     .stream()
-                    .filter(announcementRecord -> this.findAnnouncementById(announcementRecord.getAnnouncementId(), userId).getState() != ObjectState.DELETED)
+                    .filter(announcementRecord ->
+                            this.findAnnouncementById(announcementRecord.getAnnouncementId(), userId)
+                                    .getState() != ObjectState.DELETED)
                     .collect(Collectors.toList());
             List<Long> recordButUnread = new ArrayList<>();
 
@@ -121,7 +125,13 @@ public class AnnouncementServiceImpl implements AnnouncementService {
                 }
             });
             for (Long announcementId : announcementList) {
-                announcementRecordRepository.save(new AnnouncementRecord(announcementId, userId, OffsetDateTime.now(), false, null));
+                announcementRecordRepository.save(
+                        new AnnouncementRecord(
+                                announcementId,
+                                userId,
+                                OffsetDateTime.now(),
+                                false,
+                                null));
             }
             announcementList.addAll(recordButUnread);
             return announcementList.stream()

+ 14 - 9
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/CourseServiceImpl.java

@@ -148,16 +148,18 @@ public class CourseServiceImpl implements CourseService {
     }
 
     public CourseVO findCourseById(Long id) {
-        Course course = courseRepository.findById(id).orElseThrow(CustomErrorException::courseNotFound);
-        return course.getState() == ObjectState.DELETED ? null : courseMapper.courseToCourseVO(course);
+        Course course = courseRepository.findById(id)
+                .orElseThrow(CustomErrorException::courseNotFound);
+        if (course.getState().equals(ObjectState.DELETED))
+            throw CustomErrorException.courseNotFound();
+        return courseMapper.courseToCourseVO(course);
     }
 
-    public String confirmCourseSelection(CourseSelectionKey courseSelectionKey, Long userId) {
-        UserVO user = userService.findUserById(userId);
-        if (!user.getId().equals(courseSelectionKey.getUserId())) {
-            throw new CustomErrorException("当前用户无权选课");
-        }
-        CourseVO course = this.findCourseById(courseSelectionKey.getCourseId());
+    public String confirmCourseSelection(Long courseId, Long userId) {
+        UserVO userVO = userService.findUserById(userId);
+        assert userService.isStudent(userVO.getRole());
+        CourseSelectionKey courseSelectionKey = new CourseSelectionKey(courseId, userId);
+        CourseVO course = this.findCourseById(courseId);
         // coder系统选课
         if (course.getCoderId() != null) {
             JSONObject coderRes = coderService.chooseCourse(course.getInvitationCode());
@@ -170,6 +172,9 @@ public class CourseServiceImpl implements CourseService {
             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);
@@ -207,7 +212,7 @@ public class CourseServiceImpl implements CourseService {
         return course.getState() == ObjectState.DELETED ? null : courseMapper.courseToCourseVO(course).getId();
     }
 
-    public Boolean isCourseNameExisted(String name){
+    public Boolean isCourseNameExisted(String name) {
         Course course = courseRepository.findCourseByName(name).orElse(null);
         return course != null;
     }

+ 44 - 12
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/MessageServiceImpl.java

@@ -56,9 +56,7 @@ public class MessageServiceImpl implements MessageService {
     }
 
     public MessageVO create(MessageVO messageVO, Long userId) {
-        if (!messageVO.getSender().getId().equals(userId)) {
-            throw new CustomErrorException("当前用户无权创建消息");
-        }
+        messageVO.getSender().setId(userId);
         try {
             this.verifyTarget(messageVO.getTargetType(), messageVO.getTargetId());
         } catch (CustomErrorException e) {
@@ -103,21 +101,37 @@ public class MessageServiceImpl implements MessageService {
         OffsetDateTime endTime = OffsetDateTime.now().minusDays(period * 3L);
         OffsetDateTime startTime = OffsetDateTime.now().minusDays((period + 1) * 3L);
         List<MessageVO> result = new ArrayList<>();
-        for (Message message : messageRepository.findMessagesBySenderIdAndStateNot(userId, ObjectState.DELETED)) {
-            result.addAll(messageRepository.findMessagesByTargetIdAndCreatedAtIsBetweenAndStateNot(message.getId(), startTime, endTime, ObjectState.DELETED)
+        for (Message message : messageRepository
+                .findMessagesBySenderIdAndStateNot(userId, ObjectState.DELETED)) {
+            result.addAll(messageRepository
+                    .findMessagesByTargetIdAndCreatedAtIsBetweenAndStateNot(
+                            message.getId(),
+                            startTime,
+                            endTime,
+                            ObjectState.DELETED)
                     .stream()
                     .map(messageMapper::toMessageVO)
                     .collect(Collectors.toList()));
         }
         if (userService.isTeacher(userService.findUserById(userId).getRole())) {
             for (CourseVO courseVO : courseService.findTeacherCourses(userId)) {
-                result.addAll(messageRepository.findMessagesByTargetIdAndCreatedAtIsBetweenAndStateNot(courseVO.getId(), startTime, endTime, ObjectState.DELETED)
+                result.addAll(messageRepository
+                        .findMessagesByTargetIdAndCreatedAtIsBetweenAndStateNot(
+                                courseVO.getId(),
+                                startTime, endTime,
+                                ObjectState.DELETED)
                         .stream()
                         .map(messageMapper::toMessageVO)
                         .collect(Collectors.toList()));
             }
-            for (AnnouncementVO announcementVO : announcementService.findAnnouncementsByUserId(userId)) {
-                result.addAll(messageRepository.findMessagesByTargetIdAndCreatedAtIsBetweenAndStateNot(announcementVO.getId(), startTime, endTime, ObjectState.DELETED)
+            for (AnnouncementVO announcementVO :
+                    announcementService.findAnnouncementsByUserId(userId)) {
+                result.addAll(messageRepository.
+                        findMessagesByTargetIdAndCreatedAtIsBetweenAndStateNot(
+                                announcementVO.getId(),
+                                startTime,
+                                endTime,
+                                ObjectState.DELETED)
                         .stream()
                         .map(messageMapper::toMessageVO)
                         .collect(Collectors.toList()));
@@ -125,9 +139,17 @@ public class MessageServiceImpl implements MessageService {
         }
         result = result.stream()
                 .filter(messageVO -> {
-                    MessageRecord record = messageRecordRepository.findById(new MessageRecordKey(messageVO.getId(), userId)).orElse(null);
+                    MessageRecord record = messageRecordRepository
+                            .findById(new MessageRecordKey(
+                                    messageVO.getId(),
+                                    userId)).orElse(null);
                     if (record == null) {
-                        messageRecordRepository.save(new MessageRecord(messageVO.getId(), userId, OffsetDateTime.now(), false, null));
+                        messageRecordRepository.save(
+                                new MessageRecord(messageVO.getId(),
+                                        userId,
+                                        OffsetDateTime.now(),
+                                        false,
+                                        null));
                         return true;
                     } else {
                         return !record.getState();
@@ -138,12 +160,22 @@ public class MessageServiceImpl implements MessageService {
     }
 
     public List<CourseMessageDTO> findMessagesByCourseId(Long courseId) {
-        List<CourseMessageDTO> result = messageRepository.findMessagesByMntIdAndActionTypeIsAndTargetTypeIsAndStateNot(courseId, ActionType.COMMENT, ObjectType.COURSE, ObjectState.DELETED)
+        List<CourseMessageDTO> result = messageRepository
+                .findMessagesByMntIdAndActionTypeIsAndTargetTypeIsAndStateNot(
+                        courseId,
+                        ActionType.COMMENT,
+                        ObjectType.COURSE,
+                        ObjectState.DELETED)
                 .stream()
                 .map(message -> new CourseMessageDTO(messageMapper.toMessageVO(message)))
                 .collect(Collectors.toList());
         for (CourseMessageDTO courseMessageDTO : result) {
-            for (MessageVO messageVO : messageRepository.findMessagesByMntIdAndActionTypeIsAndTargetTypeIsAndStateNot(courseMessageDTO.getMainMessage().getId(), ActionType.COMMENT, ObjectType.COMMENT, ObjectState.DELETED)
+            for (MessageVO messageVO : messageRepository
+                    .findMessagesByMntIdAndActionTypeIsAndTargetTypeIsAndStateNot(
+                            courseMessageDTO.getMainMessage().getId(),
+                            ActionType.COMMENT,
+                            ObjectType.COMMENT,
+                            ObjectState.DELETED)
                     .stream().map(messageMapper::toMessageVO).collect(Collectors.toList())) {
                 if (messageVO.getTargetId().equals(courseMessageDTO.getMainMessage().getId())) {
                     messageVO.setTargetId(null);

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

@@ -68,7 +68,7 @@ public class CourseController {
 
     @PostMapping("/selection/confirm")
     public OkResponse<String> confirm(@RequestBody CourseSelectionKey courseSelectionKey) {
-        return OkResponse.of(courseService.confirmCourseSelection(courseSelectionKey, SecurityUtils.getCurrentUser().getId()));
+        return OkResponse.of(courseService.confirmCourseSelection(courseSelectionKey.getCourseId(), SecurityUtils.getCurrentUser().getId()));
     }
 
     @PutMapping("/selection/cancel")