ZinnaChoi / Study-Management

온라인 스터디 관리 시스템: 부재 일정 캘린더, 토론 게시판 및 알림 기능 제공
8 stars 0 forks source link

[Fix Request] Try catch 로직 수정 요청 #82

Closed ZinnaChoi closed 8 months ago

ZinnaChoi commented 9 months ago

안녕하세요 @dayeon-dayeon

다름이 아니라, 알림 관련 다연씨의 서비스 코드를 보던 중 throw 하는 부분 없이 catch 하는 로직이 존재해 이슈로 남깁니다,,!

NoticeService.impl에 보면

  1. 불필요한 코드의 중복
                } catch (NotFoundException | UnauthorizedAccessException e) {
                    return ExceptionUtil.handleException(e);
                }
  2. throw 하는 부분 없이 catch
    • NotFoundException이나 UnauthorizedAccessException 이 잘 catch 되는 지 확인 하셨나요? 해당 구조라면 catch 되지 않을 것 같습니다!

아래 첨부한 메서드 뿐만 아니라 다연씨 담당 로직 전부 검토 부탁드립니다 감사합니다

    @Override
    @Transactional
    public CommonRes createGeneralNotice() {
        try {
            CommonRes result = new CommonRes();

            String formattedTime = LocalDateTime.now().plusMinutes(10).format(DateTimeFormatter.ofPattern("HH:mm"));

            Schedule upcomingSchedulesId = scheduleRepository.findScheduleIdMatchingStartTime(formattedTime);

            if (upcomingSchedulesId != null) {
                List<Member> scheduleParticipants = memberScheduleRepository
                        .findMembersByScheduleId(upcomingSchedulesId.getScheduleId());
                List<Member> participants = new ArrayList<>(scheduleParticipants);

                for (Member participant : scheduleParticipants) {
                    List<Member> absentParticipants = absentScheduleRepository
                            .findAbsentParticipants(participant, DateUtil.getCurrentDateTime().substring(0, 8),
                                    upcomingSchedulesId);
                    participants.removeAll(absentParticipants);
                }

                Long notifier = findNotifier(participants);
                Optional<Member> notifierMember = memberRepository.findById(notifier);

                try {
                    Boolean linkShareValue = noticeRepository.findByMember_MemberId(notifier).get().getLinkShare();
                    if (linkShareValue != null && linkShareValue) {
                        sendEmailService.sendEmail(notifierMember.get().getName(), MessageType.GENERAL,
                                notifierMember.get().getContact());
                    }
                    noticeRepository.updateLastShareDateByMemberId(DateUtil.getCurrentDateTime().substring(0, 12),
                            notifier);

                    result.setRetCode(ErrorCode.OK.getCode());
                } catch (NotFoundException | UnauthorizedAccessException e) {
                    return ExceptionUtil.handleException(e);
                }
            }
            return result;
        } catch (NotFoundException | UnauthorizedAccessException e) {
            return ExceptionUtil.handleException(e);
        }
    }