diff --git a/src/main/java/org/cotato/csquiz/api/admin/dto/MemberEnrollInfoResponse.java b/src/main/java/org/cotato/csquiz/api/admin/dto/MemberEnrollInfoResponse.java index 052342e9..0e091223 100644 --- a/src/main/java/org/cotato/csquiz/api/admin/dto/MemberEnrollInfoResponse.java +++ b/src/main/java/org/cotato/csquiz/api/admin/dto/MemberEnrollInfoResponse.java @@ -6,7 +6,7 @@ public record MemberEnrollInfoResponse( Long memberId, - String memberName, + String name, MemberPosition position, Integer generationNumber, MemberRole role diff --git a/src/main/java/org/cotato/csquiz/api/admin/dto/MemberInfoResponse.java b/src/main/java/org/cotato/csquiz/api/admin/dto/MemberInfoResponse.java index 20eb94b8..b4b922ab 100644 --- a/src/main/java/org/cotato/csquiz/api/admin/dto/MemberInfoResponse.java +++ b/src/main/java/org/cotato/csquiz/api/admin/dto/MemberInfoResponse.java @@ -5,7 +5,7 @@ public record MemberInfoResponse( Long memberId, - String memberName, + String name, String backFourNumber, MemberRole role ) { diff --git a/src/main/java/org/cotato/csquiz/api/attendance/controller/AttendanceController.java b/src/main/java/org/cotato/csquiz/api/attendance/controller/AttendanceController.java index cae6a823..de1628f5 100644 --- a/src/main/java/org/cotato/csquiz/api/attendance/controller/AttendanceController.java +++ b/src/main/java/org/cotato/csquiz/api/attendance/controller/AttendanceController.java @@ -16,9 +16,11 @@ import org.cotato.csquiz.api.attendance.dto.OfflineAttendanceRequest; import org.cotato.csquiz.api.attendance.dto.OnlineAttendanceRequest; import org.cotato.csquiz.api.attendance.dto.UpdateAttendanceRequest; +import org.cotato.csquiz.api.attendance.dto.AttendanceTimeResponse; import org.cotato.csquiz.domain.attendance.service.AttendanceAdminService; import org.cotato.csquiz.domain.attendance.service.AttendanceRecordService; import org.cotato.csquiz.domain.attendance.service.AttendanceService; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.validation.annotation.Validated; @@ -50,6 +52,12 @@ public ResponseEntity updateAttendance(@RequestBody @Valid UpdateAttendanc return ResponseEntity.noContent().build(); } + @Operation(summary = "세션 시간 반환 API") + @GetMapping("/info") + public ResponseEntity findAttendanceTimeInfo(@RequestParam("sessionId") Long sessionId) { + return ResponseEntity.status(HttpStatus.OK).body(attendanceService.findAttendanceTimeInfo(sessionId)); + } + @Operation(summary = "회원 출결사항 기간 단위 조회 API") @GetMapping("/records") public ResponseEntity> findAttendanceRecords( diff --git a/src/main/java/org/cotato/csquiz/api/attendance/dto/AttendanceTimeResponse.java b/src/main/java/org/cotato/csquiz/api/attendance/dto/AttendanceTimeResponse.java new file mode 100644 index 00000000..49488e2d --- /dev/null +++ b/src/main/java/org/cotato/csquiz/api/attendance/dto/AttendanceTimeResponse.java @@ -0,0 +1,18 @@ +package org.cotato.csquiz.api.attendance.dto; + +import java.time.LocalDateTime; +import java.time.LocalTime; + +public record AttendanceTimeResponse( + Long sessionId, + LocalTime attendanceDeadLine, + LocalTime lateDeadLine +) { + public static AttendanceTimeResponse of(Long sessionId, LocalDateTime attendanceDeadLine, LocalDateTime lateDeadLine) { + return new AttendanceTimeResponse( + sessionId, + attendanceDeadLine.toLocalTime(), + lateDeadLine.toLocalTime() + ); + } +} diff --git a/src/main/java/org/cotato/csquiz/api/member/controller/MemberController.java b/src/main/java/org/cotato/csquiz/api/member/controller/MemberController.java index 3e9e846f..5943ef0b 100644 --- a/src/main/java/org/cotato/csquiz/api/member/controller/MemberController.java +++ b/src/main/java/org/cotato/csquiz/api/member/controller/MemberController.java @@ -12,8 +12,8 @@ import org.cotato.csquiz.common.config.jwt.JwtTokenProvider; import org.cotato.csquiz.common.error.exception.ImageException; import org.cotato.csquiz.domain.auth.service.MemberService; -import org.springframework.context.annotation.Description; import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; @@ -35,27 +35,22 @@ public class MemberController { @GetMapping("/info") public ResponseEntity findMemberInfo( - @RequestHeader("Authorization") String authorizationHeader) { - String accessToken = jwtTokenProvider.getBearer(authorizationHeader); - Long memberId = jwtTokenProvider.getMemberId(accessToken); + @AuthenticationPrincipal Long memberId) { return ResponseEntity.ok().body(memberService.findMemberInfo(memberId)); } @PatchMapping("/update/password") - public ResponseEntity updatePassword(@RequestHeader("Authorization") String authorizationHeader, + public ResponseEntity updatePassword(@AuthenticationPrincipal Long memberId, @RequestBody @Valid UpdatePasswordRequest request) { - String accessToken = jwtTokenProvider.getBearer(authorizationHeader); - Long memberId = jwtTokenProvider.getMemberId(accessToken); memberService.updatePassword(memberId, request.password()); return ResponseEntity.noContent().build(); } @Operation(summary = "멤버 전화번호 수정 API") @PatchMapping("/phone-number") - public ResponseEntity updatePhoneNumber(@RequestHeader("Authorization") String authorizationHeader, + public ResponseEntity updatePhoneNumber(@AuthenticationPrincipal Long memberId, @RequestBody @Valid UpdatePhoneNumberRequest request) { - String accessToken = jwtTokenProvider.getBearer(authorizationHeader); - memberService.updatePhoneNumber(accessToken, request.phoneNumber()); + memberService.updatePhoneNumber(memberId, request.phoneNumber()); return ResponseEntity.noContent().build(); } diff --git a/src/main/java/org/cotato/csquiz/api/member/dto/MemberInfo.java b/src/main/java/org/cotato/csquiz/api/member/dto/MemberInfo.java index 3a2c4dad..b7f4399c 100644 --- a/src/main/java/org/cotato/csquiz/api/member/dto/MemberInfo.java +++ b/src/main/java/org/cotato/csquiz/api/member/dto/MemberInfo.java @@ -9,7 +9,7 @@ public record MemberInfo( String name, String email, String backFourNumber, - MemberRole memberRole, + MemberRole role, MemberPosition position ) { public static MemberInfo of(Member findMember, String backFourNumber) { diff --git a/src/main/java/org/cotato/csquiz/api/member/dto/MemberMyPageInfoResponse.java b/src/main/java/org/cotato/csquiz/api/member/dto/MemberMyPageInfoResponse.java index 56edc6a2..4c1034fa 100644 --- a/src/main/java/org/cotato/csquiz/api/member/dto/MemberMyPageInfoResponse.java +++ b/src/main/java/org/cotato/csquiz/api/member/dto/MemberMyPageInfoResponse.java @@ -8,7 +8,7 @@ public record MemberMyPageInfoResponse( String email, String name, Integer generationNumber, - MemberPosition memberPosition, + MemberPosition position, String phoneNumber, String profileImage ) { diff --git a/src/main/java/org/cotato/csquiz/api/session/controller/SessionController.java b/src/main/java/org/cotato/csquiz/api/session/controller/SessionController.java index da0b4001..561df15f 100644 --- a/src/main/java/org/cotato/csquiz/api/session/controller/SessionController.java +++ b/src/main/java/org/cotato/csquiz/api/session/controller/SessionController.java @@ -47,7 +47,6 @@ public ResponseEntity> findSessionsByGenerationId(@Req return ResponseEntity.status(HttpStatus.OK).body(sessionService.findSessionsByGenerationId(generationId)); } - @Operation(summary = "CS ON인 세션 목록 반환 API") @GetMapping("/cs-on") public ResponseEntity> findAllCsOnSessionsByGenerationId( diff --git a/src/main/java/org/cotato/csquiz/api/session/dto/SessionListResponse.java b/src/main/java/org/cotato/csquiz/api/session/dto/SessionListResponse.java index 0ec746e5..c9db9283 100644 --- a/src/main/java/org/cotato/csquiz/api/session/dto/SessionListResponse.java +++ b/src/main/java/org/cotato/csquiz/api/session/dto/SessionListResponse.java @@ -12,6 +12,7 @@ public record SessionListResponse( List imageInfos, String description, Long generationId, + String placeName, SessionContents sessionContents ) { public static SessionListResponse of(Session session, List sessionImages) { @@ -24,6 +25,7 @@ public static SessionListResponse of(Session session, List session .toList(), session.getDescription(), session.getGeneration().getId(), + session.getPlaceName(), session.getSessionContents() ); } diff --git a/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceMemberService.java b/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceMemberService.java deleted file mode 100644 index 4703aec9..00000000 --- a/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceMemberService.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.cotato.csquiz.domain.attendance.service; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@RequiredArgsConstructor -@Transactional(readOnly = true) -@Slf4j -public class AttendanceMemberService { -} diff --git a/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceService.java b/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceService.java index f77c4ed1..5edd8b49 100644 --- a/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceService.java +++ b/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceService.java @@ -9,6 +9,8 @@ import lombok.RequiredArgsConstructor; import org.cotato.csquiz.api.attendance.dto.AttendanceResponse; import org.cotato.csquiz.api.attendance.dto.AttendancesResponse; +import org.cotato.csquiz.api.attendance.dto.AttendanceTimeResponse; +import org.cotato.csquiz.domain.attendance.entity.Attendance; import org.cotato.csquiz.domain.attendance.repository.AttendanceRepository; import org.cotato.csquiz.domain.attendance.util.AttendanceUtil; import org.cotato.csquiz.domain.generation.entity.Generation; @@ -58,4 +60,14 @@ public AttendancesResponse findAttendancesByGenerationId(final Long generationId .attendances(attendances) .build(); } + + @Transactional(readOnly = true) + public AttendanceTimeResponse findAttendanceTimeInfo(Long sessionId) { + Attendance findAttendance = attendanceRepository.findBySessionId(sessionId) + .orElseThrow(() -> new EntityNotFoundException("해당 출석을 찾을 수 없습니다")); + + return AttendanceTimeResponse.of(sessionId, + findAttendance.getAttendanceDeadLine(), + findAttendance.getLateDeadLine()); + } } diff --git a/src/main/java/org/cotato/csquiz/domain/auth/service/MemberService.java b/src/main/java/org/cotato/csquiz/domain/auth/service/MemberService.java index 92a94400..5dbf5db3 100644 --- a/src/main/java/org/cotato/csquiz/domain/auth/service/MemberService.java +++ b/src/main/java/org/cotato/csquiz/domain/auth/service/MemberService.java @@ -7,13 +7,12 @@ import org.cotato.csquiz.api.admin.dto.MemberInfoResponse; import org.cotato.csquiz.api.member.dto.MemberInfo; import org.cotato.csquiz.api.member.dto.MemberMyPageInfoResponse; -import org.cotato.csquiz.common.s3.S3Uploader; -import org.cotato.csquiz.api.member.dto.UpdatePhoneNumberRequest; import org.cotato.csquiz.common.config.jwt.JwtTokenProvider; import org.cotato.csquiz.common.entity.S3Info; import org.cotato.csquiz.common.error.ErrorCode; import org.cotato.csquiz.common.error.exception.AppException; import org.cotato.csquiz.common.error.exception.ImageException; +import org.cotato.csquiz.common.s3.S3Uploader; import org.cotato.csquiz.domain.auth.entity.Member; import org.cotato.csquiz.domain.auth.enums.MemberRoleGroup; import org.cotato.csquiz.domain.auth.repository.MemberRepository; @@ -71,8 +70,7 @@ private void validateIsSameBefore(String originPassword, String newPassword) { } @Transactional - public void updatePhoneNumber(String accessToken, String phoneNumber) { - Long memberId = jwtTokenProvider.getMemberId(accessToken); + public void updatePhoneNumber(Long memberId, String phoneNumber) { Member findMember = memberRepository.findById(memberId) .orElseThrow(() -> new EntityNotFoundException("해당 회원을 찾을 수 없습니다."));