Skip to content

Commit

Permalink
Merge pull request #122 from MUIT-UMC/develop
Browse files Browse the repository at this point in the history
[merge] 250216 / 26th deploy
  • Loading branch information
sweatbuckets authored Feb 15, 2025
2 parents abfa0f0 + e3584df commit e63d16c
Show file tree
Hide file tree
Showing 24 changed files with 472 additions and 53 deletions.
6 changes: 4 additions & 2 deletions src/main/java/muit/backend/config/jwt/SecurityConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,11 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
.httpBasic(httpBasic -> httpBasic.disable()) // HTTP Basic 비활성화
.formLogin(formLogin -> formLogin.disable()) // 폼 로그인 비활성화
.authorizeHttpRequests(authorize -> authorize
.requestMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll()
.requestMatchers("/", "/home", "/index").permitAll() // 홈페이지 접근 허용
.requestMatchers("/member/email/login", "/member/register", "/admin/login").permitAll() // 로그인 접근 허용
.requestMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll() // 스웨거 접근 허용
.requestMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.requestMatchers("/**").permitAll()
//.requestMatchers("/**").permitAll() // 추후 삭제 예정
.anyRequest().authenticated()
)
.apply(new JwtSecurityConfig(tokenProvider));
Expand Down
15 changes: 12 additions & 3 deletions src/main/java/muit/backend/controller/EventController.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import muit.backend.apiPayLoad.ApiResponse;
import muit.backend.domain.entity.member.Member;
import muit.backend.dto.eventDTO.EventResponseDTO;
import muit.backend.service.EventService;

import muit.backend.service.MemberService;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
Expand All @@ -23,11 +25,14 @@
@RequestMapping("/events")
public class EventController {
private final EventService eventService;
private final MemberService memberService;

@GetMapping("")
@Operation(summary = "현재 진행중인 뮤지컬 이벤트 조회 API", description = "시작 날짜가 오늘 날짜 이후인 이벤트를 하나라도 갖고 있는 모든 뮤지컬의 이벤트 목록을 조회하는 API, 한 페이지에 뮤지컬 6개씩")
public ApiResponse<Page<EventResponseDTO.EventResultListDTO>> getEventListSortedByEvFrom(@RequestParam(defaultValue = "0", name = "page") Integer page){
public ApiResponse<Page<EventResponseDTO.EventResultListDTO>> getEventListSortedByEvFrom(@RequestHeader("Authorization") String accessToken,
@RequestParam(defaultValue = "0", name = "page") Integer page){
LocalDate today = LocalDate.now();
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(eventService.getEventListOrderByEvFrom(today, page));
}

Expand All @@ -36,7 +41,9 @@ public ApiResponse<Page<EventResponseDTO.EventResultListDTO>> getEventListSorted
@Parameters({
@Parameter(name = "musicalId", description = "이벤트 정보를 알고 싶은 뮤지컬id 입력")
})
public ApiResponse<EventResponseDTO.EventResultListDTO> getEvent(@PathVariable("musicalId") Long musicalId) {
public ApiResponse<EventResponseDTO.EventResultListDTO> getEvent(@RequestHeader("Authorization") String accessToken,
@PathVariable("musicalId") Long musicalId) {
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(eventService.getEvent(musicalId));
}

Expand All @@ -45,7 +52,9 @@ public ApiResponse<EventResponseDTO.EventResultListDTO> getEvent(@PathVariable("
@Parameters({
@Parameter(name = "eventId", description = "날짜 정보를 알고 싶은 eventId 입력")
})
public ApiResponse<EventResponseDTO.EventResultDTO> getEvInfo(@PathVariable("eventId") Long eventId) {
public ApiResponse<EventResponseDTO.EventResultDTO> getEvInfo(@RequestHeader("Authorization") String accessToken,
@PathVariable("eventId") Long eventId) {
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(eventService.getEventInfo(eventId));
}
}
67 changes: 66 additions & 1 deletion src/main/java/muit/backend/controller/MemberController.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,14 @@
import muit.backend.apiPayLoad.ApiResponse;
import muit.backend.domain.entity.member.Member;
import muit.backend.dto.memberDTO.*;
import muit.backend.dto.musicalDTO.MusicalResponseDTO;
import muit.backend.service.MemberService;
import muit.backend.service.musicalService.MusicalService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequiredArgsConstructor
Expand All @@ -21,6 +25,7 @@
@RequestMapping("/member")
public class MemberController {
private final MemberService memberService;
private final MusicalService musicalService;

@PostMapping("/register")
@Operation(summary = "회원 가입 api", description = "이메일로 회원 가입 하는 기능.")
Expand Down Expand Up @@ -65,14 +70,74 @@ public ApiResponse<MyPageResponseDTO> myPage(@RequestHeader("Authorization") Str
return ApiResponse.onSuccess(myPageResponseDTO);
}

@PatchMapping("/{memberId}")
@PatchMapping("/{memberId}/deActive")
@Operation(summary = "회원 탈퇴(비활성화) api", description = "회원 비활성화 하는 기능입니다.")
public ApiResponse<MyPageResponseDTO> deactivateMember(@RequestHeader("Authorization") String authorizationHeader, @PathVariable("memberId") Long memberId) {
Member member = memberService.getMemberByToken(authorizationHeader);
MyPageResponseDTO myPageResponseDTO = memberService.deactivateMember(member.getId(), memberId);
return ApiResponse.onSuccess(myPageResponseDTO);
}

@PatchMapping("{memberId}/changePhone")
@Operation(summary = "회원 정보 수정 - 핸드폰")
public ApiResponse<MyPageResponseDTO> changePhone(@RequestHeader("Authorization") String authorizationHeader,
@PathVariable("memberId") Long memberId,
@RequestBody PhoneChangeRequestDTO dto) {
Member member = memberService.getMemberByToken(authorizationHeader);
MyPageResponseDTO myPageResponseDTO = memberService.changePhoneNumber(member.getId(), memberId, dto);
return ApiResponse.onSuccess(myPageResponseDTO);
}

@PatchMapping("{memberId}/changeUsername")
@Operation(summary = "회원 정보 수정 - 아이디")
public ApiResponse<MyPageResponseDTO> changeUsername(@RequestHeader("Authorization") String authorizationHeader,
@PathVariable("memberId") Long memberId,
@RequestBody UserNameChangeRequestDTO dto) {
Member member = memberService.getMemberByToken(authorizationHeader);
MyPageResponseDTO myPageResponseDTO = memberService.changeUsername(member.getId(), memberId, dto);
return ApiResponse.onSuccess(myPageResponseDTO);
}

@PatchMapping("{memberId}/changeEmail")
@Operation(summary = "회원 정보 수정 - 이메일", description = "이메일로 회원을 구분 하기 때문에, 반드시 재로그인을 해야합니다. redirect 를 로그인 페이지로 해야합니다.")
public ApiResponse<MyPageResponseDTO> changeEmail(@RequestHeader("Authorization") String authorizationHeader,
@PathVariable("memberId") Long memberId,
@RequestBody EmailVerifyRequestDTO dto) {
Member member = memberService.getMemberByToken(authorizationHeader);
MyPageResponseDTO myPageResponseDTO = memberService.changeEmail(member.getId(), memberId, dto);
return ApiResponse.onSuccess(myPageResponseDTO);
}

@PatchMapping("{memberId}/changePassword")
@Operation(summary = "회원 정보 수정 - 비밀번호")
public ApiResponse<MyPageResponseDTO> changePassword(@RequestHeader("Authorization") String authorizationHeader,
@PathVariable("memberId") Long memberId,
@RequestBody PasswordChangeRequestDTO dto) {
Member member = memberService.getMemberByToken(authorizationHeader);
MyPageResponseDTO myPageResponseDTO = memberService.changePassword(member.getId(), memberId, dto);
return ApiResponse.onSuccess(myPageResponseDTO);
}

@PostMapping("{memberId}/checkPassword")
@Operation(summary = "회원 정보 변경 전 + 소극장 등록 전 비밀 번호 확인하는 api")
public ApiResponse<Boolean> checkPassword(@RequestHeader("Authorization") String authorizationHeader, @RequestBody PasswordRequestDTO dto) {
Member member = memberService.getMemberByToken(authorizationHeader);
boolean isValid = memberService.CheckPassword(member, dto);
if (!isValid) {
return ApiResponse.onFailure("400", "비밀번호가 일치하지 않습니다.", false);
}
return ApiResponse.onSuccess(true);
}

@GetMapping("/likeMusicals")
@Operation(summary = "사용자가 좋아요한 뮤지컬 전체 조회 api")
public ApiResponse<List<MusicalResponseDTO.MusicalHomeDTO>> getLikeMusicals(@RequestHeader("Authorization") String authorizationHeader) {
Member member = memberService.getMemberByToken(authorizationHeader);
return ApiResponse.onSuccess(memberService.getLikeMusicals(member));
}






Expand Down
56 changes: 45 additions & 11 deletions src/main/java/muit/backend/controller/MusicalController.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import muit.backend.apiPayLoad.ApiResponse;
import muit.backend.domain.entity.member.Member;
import muit.backend.dto.castingDTO.CastingResponseDTO;
import muit.backend.dto.musicalDTO.MusicalResponseDTO;
import muit.backend.dto.theatreDTO.TheatreResponseDTO;
import muit.backend.service.MemberService;
import muit.backend.service.musicalService.MusicalService;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
Expand All @@ -22,55 +24,67 @@
@RequestMapping("/musicals")
public class MusicalController {
private final MusicalService musicalService;
private final MemberService memberService;

@GetMapping("/{musicalId}")
@Operation(summary = "뮤지컬 단건 조회 API", description = "특정 뮤지컬을 조회하는 API 입니다.")
public ApiResponse<MusicalResponseDTO.MusicalResultDTO> getMusical(@PathVariable("musicalId") Long musicalId) {
public ApiResponse<MusicalResponseDTO.MusicalResultDTO> getMusical(@RequestHeader("Authorization") String accessToken,
@PathVariable("musicalId") Long musicalId) {
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(musicalService.getMusical(musicalId));
}


@GetMapping("/hot")
@Operation(summary = "뮤지컬 조회 - 리스트 HOT NOW", description = "Home에서 현재 HOT한 뮤지컬 5개 조회하는 API, HOT한 기준은 불명")
public ApiResponse<MusicalResponseDTO.MusicalHomeListDTO> getFiveHotMusicals() {
public ApiResponse<MusicalResponseDTO.MusicalHomeListDTO> getFiveHotMusicals(@RequestHeader("Authorization") String accessToken) {
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(musicalService.getFiveMusicals());
}

@GetMapping("/hot/all")
@Operation(summary = "뮤지컬 조회 - 리스트 HOT NOW 전체보기", description = "현재 HOT한 뮤지컬 전체 조회하는 API, 페이지당 20개")
@Parameter( name = "page", description = "페이지를 정수로 입력")
public ApiResponse<Page<MusicalResponseDTO.MusicalHomeDTO>> getAllHotMusicals(@RequestParam(defaultValue = "0", name = "page") Integer page) {

public ApiResponse<Page<MusicalResponseDTO.MusicalHomeDTO>> getAllHotMusicals(@RequestHeader("Authorization") String accessToken,
@RequestParam(defaultValue = "0", name = "page") Integer page) {
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(musicalService.getAllHotMusicals(page));
}

@GetMapping("/rank")
@Operation(summary = "뮤지컬 조회 - 리스트 RANKING", description = "Home에서 Ranking 5개 뮤지컬 조회하는 API, Ranking은 playDB 기준")
public ApiResponse<MusicalResponseDTO.MusicalHomeListDTO> getFiveRankMusicals() {
public ApiResponse<MusicalResponseDTO.MusicalHomeListDTO> getFiveRankMusicals(@RequestHeader("Authorization") String accessToken) {
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(musicalService.getFiveMusicals());
}

@GetMapping("/rank/all")
@Operation(summary = "뮤지컬 조회 - 리스트 RANKING 전체보기", description = "RANKING 뮤지컬 전체 조회하는 API, 페이지당 20개")
public ApiResponse<Page<MusicalResponseDTO.MusicalHomeDTO>> getAllRankMusicals(@RequestParam(defaultValue = "0", name = "page") Integer page) {
public ApiResponse<Page<MusicalResponseDTO.MusicalHomeDTO>> getAllRankMusicals(@RequestHeader("Authorization") String accessToken,
@RequestParam(defaultValue = "0", name = "page") Integer page) {
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(musicalService.getAllHotMusicals(page));
}

@GetMapping("/open")
@Operation(summary = "뮤지컬 조회 - 리스트 TICKET OPEN", description = "Home에서 1주일 안에 오픈하는 최대 5개 뮤지컬을 조회하는 API")
public ApiResponse<List<MusicalResponseDTO.MusicalOpenDTO>> getFiveOpenMusicals() {
public ApiResponse<List<MusicalResponseDTO.MusicalOpenDTO>> getFiveOpenMusicals(@RequestHeader("Authorization") String accessToken) {
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(musicalService.getFiveOpenMusicals());
}

@GetMapping("/open/all")
@Operation(summary = "뮤지컬 조회 - 리스트 TICKET OPEN 전체보기", description = "오늘 이후 티켓 오픈하는 뮤지컬 전체 조회하는 API, 페이지당 20개")
public ApiResponse<Page<MusicalResponseDTO.MusicalOpenDTO>> getAllOpenMusicals(@RequestParam(defaultValue = "0", name = "page") Integer page) {
public ApiResponse<Page<MusicalResponseDTO.MusicalOpenDTO>> getAllOpenMusicals(@RequestHeader("Authorization") String accessToken,
@RequestParam(defaultValue = "0", name = "page") Integer page) {
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(musicalService.getAllOpenMusicals(page));
}

@GetMapping("/open/today")
@Operation(summary = "뮤지컬 조회 - TICKET OPEN 전체보기에서 오늘 티켓 오픈하는 뮤지컬", description = "오늘 티켓 오픈하는 뮤지컬을 조회하는 API")
public ApiResponse<List<MusicalResponseDTO.MusicalTodayOpenDTO>> getTodayOpenMusicals() {
public ApiResponse<List<MusicalResponseDTO.MusicalTodayOpenDTO>> getTodayOpenMusicals(@RequestHeader("Authorization") String accessToken) {
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(musicalService.getTodayOpenMusicals());
}

Expand All @@ -79,14 +93,34 @@ public ApiResponse<List<MusicalResponseDTO.MusicalTodayOpenDTO>> getTodayOpenMus
@Parameters({
@Parameter(name = "musicalName", description = "뮤지컬 이름을 검색어로 입력")
})
public ApiResponse<MusicalResponseDTO.MusicalHomeListDTO> searchMusicals(@RequestParam(name = "musicalName", required = false) String musicalName) {
public ApiResponse<MusicalResponseDTO.MusicalHomeListDTO> searchMusicals(@RequestHeader("Authorization") String accessToken,
@RequestParam(name = "musicalName", required = false) String musicalName) {
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(musicalService.findMusicalsByName(musicalName));
}

@GetMapping("/{musicalId}/casting")
@Operation(summary = "특정 뮤지컬의 캐스팅 조회 ", description = "뮤지컬의 캐스팅 정보 조회하는 API")
public ApiResponse<List<CastingResponseDTO.CastingResultListDTO>> getCastingInfo(@PathVariable Long musicalId) {
public ApiResponse<List<CastingResponseDTO.CastingResultListDTO>> getCastingInfo(@RequestHeader("Authorization") String accessToken,
@PathVariable Long musicalId) {
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(musicalService.getCastingInfo(musicalId));
}

@PostMapping("/{musicalId}/likes")
@Operation(summary = "특정 뮤지컬 좋아요 ", description = "좋아요한 뮤지컬에 추가하는 API")
public ApiResponse<MusicalResponseDTO.MusicalHomeDTO> likeMusicals(@RequestHeader("Authorization") String accessToken,
@PathVariable("musicalId") Long musicalId){
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(musicalService.likeMusical(member, musicalId));
}

@DeleteMapping("/{musicalId}/likesCancel")
@Operation(summary = "특정 뮤지컬 좋아요 취소 ", description = "뮤지컬에 누른 좋아요를 취소하는 API")
public ApiResponse<MusicalResponseDTO.MusicalHomeDTO> likeCancelMusicals(@RequestHeader("Authorization") String accessToken,
@PathVariable("musicalId") Long musicalId){
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(musicalService.likeCancelMusical(member, musicalId));
}

}
Loading

0 comments on commit e63d16c

Please sign in to comment.