Skip to content

Commit 6e8a60e

Browse files
committed
merge : merge branch develop into feat/post
2 parents c4d6296 + 90545bc commit 6e8a60e

28 files changed

+533
-85
lines changed

src/main/java/muit/backend/config/jwt/SecurityConfig.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,11 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
3939
.httpBasic(httpBasic -> httpBasic.disable()) // HTTP Basic 비활성화
4040
.formLogin(formLogin -> formLogin.disable()) // 폼 로그인 비활성화
4141
.authorizeHttpRequests(authorize -> authorize
42-
.requestMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll()
42+
.requestMatchers("/", "/home", "/index").permitAll() // 홈페이지 접근 허용
43+
.requestMatchers("/member/email/login", "/member/register", "/admin/login").permitAll() // 로그인 접근 허용
44+
.requestMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll() // 스웨거 접근 허용
4345
.requestMatchers(HttpMethod.OPTIONS, "/**").permitAll()
44-
.requestMatchers("/**").permitAll()
46+
//.requestMatchers("/**").permitAll() // 추후 삭제 예정
4547
.anyRequest().authenticated()
4648
)
4749
.apply(new JwtSecurityConfig(tokenProvider));

src/main/java/muit/backend/controller/EventController.java

+14-5
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import io.swagger.v3.oas.annotations.tags.Tag;
77
import lombok.RequiredArgsConstructor;
88
import muit.backend.apiPayLoad.ApiResponse;
9+
import muit.backend.domain.entity.member.Member;
910
import muit.backend.dto.eventDTO.EventResponseDTO;
1011
import muit.backend.service.EventService;
1112

13+
import muit.backend.service.MemberService;
1214
import org.springframework.data.domain.Page;
1315
import org.springframework.data.domain.PageRequest;
1416
import org.springframework.data.domain.Pageable;
@@ -23,29 +25,36 @@
2325
@RequestMapping("/events")
2426
public class EventController {
2527
private final EventService eventService;
28+
private final MemberService memberService;
2629

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

3439
@GetMapping("/{musicalId}")
3540
@Operation(summary = "특정 뮤지컬의 이벤트 목록 조회 API", description = "특정 뮤지컬의 이벤트를 조회하는 API 입니다.")
3641
@Parameters({
3742
@Parameter(name = "musicalId", description = "이벤트 정보를 알고 싶은 뮤지컬id 입력")
3843
})
39-
public ApiResponse<EventResponseDTO.EventResultListDTO> getEvent(@PathVariable("musicalId") Long musicalId) {
40-
return ApiResponse.onSuccess(eventService.getEvent(musicalId));
44+
public ApiResponse<EventResponseDTO.EventResultListDTO> getEvent(@RequestHeader("Authorization") String accessToken,
45+
@PathVariable("musicalId") Long musicalId) {
46+
Member member = memberService.getMemberByToken(accessToken);
47+
return ApiResponse.onSuccess(eventService.getEvent(musicalId, member));
4148
}
4249

4350
@GetMapping("/musical/{eventId}")
4451
@Operation(summary = "특정 뮤지컬의 특정 이벤트 조회 API", description = "특정 이벤트의 날짜 정보를 조회하는 API 입니다.")
4552
@Parameters({
4653
@Parameter(name = "eventId", description = "날짜 정보를 알고 싶은 eventId 입력")
4754
})
48-
public ApiResponse<EventResponseDTO.EventResultDTO> getEvInfo(@PathVariable("eventId") Long eventId) {
55+
public ApiResponse<EventResponseDTO.EventResultDTO> getEvInfo(@RequestHeader("Authorization") String accessToken,
56+
@PathVariable("eventId") Long eventId) {
57+
Member member = memberService.getMemberByToken(accessToken);
4958
return ApiResponse.onSuccess(eventService.getEventInfo(eventId));
5059
}
5160
}

src/main/java/muit/backend/controller/MemberController.java

+66-1
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@
99
import muit.backend.apiPayLoad.ApiResponse;
1010
import muit.backend.domain.entity.member.Member;
1111
import muit.backend.dto.memberDTO.*;
12+
import muit.backend.dto.musicalDTO.MusicalResponseDTO;
1213
import muit.backend.service.MemberService;
14+
import muit.backend.service.musicalService.MusicalService;
1315
import org.springframework.validation.annotation.Validated;
1416
import org.springframework.web.bind.annotation.*;
1517

18+
import java.util.List;
19+
1620
@Slf4j
1721
@RestController
1822
@RequiredArgsConstructor
@@ -21,6 +25,7 @@
2125
@RequestMapping("/member")
2226
public class MemberController {
2327
private final MemberService memberService;
28+
private final MusicalService musicalService;
2429

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

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

81+
@PatchMapping("{memberId}/changePhone")
82+
@Operation(summary = "회원 정보 수정 - 핸드폰")
83+
public ApiResponse<MyPageResponseDTO> changePhone(@RequestHeader("Authorization") String authorizationHeader,
84+
@PathVariable("memberId") Long memberId,
85+
@RequestBody PhoneChangeRequestDTO dto) {
86+
Member member = memberService.getMemberByToken(authorizationHeader);
87+
MyPageResponseDTO myPageResponseDTO = memberService.changePhoneNumber(member.getId(), memberId, dto);
88+
return ApiResponse.onSuccess(myPageResponseDTO);
89+
}
90+
91+
@PatchMapping("{memberId}/changeUsername")
92+
@Operation(summary = "회원 정보 수정 - 아이디")
93+
public ApiResponse<MyPageResponseDTO> changeUsername(@RequestHeader("Authorization") String authorizationHeader,
94+
@PathVariable("memberId") Long memberId,
95+
@RequestBody UserNameChangeRequestDTO dto) {
96+
Member member = memberService.getMemberByToken(authorizationHeader);
97+
MyPageResponseDTO myPageResponseDTO = memberService.changeUsername(member.getId(), memberId, dto);
98+
return ApiResponse.onSuccess(myPageResponseDTO);
99+
}
100+
101+
@PatchMapping("{memberId}/changeEmail")
102+
@Operation(summary = "회원 정보 수정 - 이메일", description = "이메일로 회원을 구분 하기 때문에, 반드시 재로그인을 해야합니다. redirect 를 로그인 페이지로 해야합니다.")
103+
public ApiResponse<MyPageResponseDTO> changeEmail(@RequestHeader("Authorization") String authorizationHeader,
104+
@PathVariable("memberId") Long memberId,
105+
@RequestBody EmailVerifyRequestDTO dto) {
106+
Member member = memberService.getMemberByToken(authorizationHeader);
107+
MyPageResponseDTO myPageResponseDTO = memberService.changeEmail(member.getId(), memberId, dto);
108+
return ApiResponse.onSuccess(myPageResponseDTO);
109+
}
110+
111+
@PatchMapping("{memberId}/changePassword")
112+
@Operation(summary = "회원 정보 수정 - 비밀번호")
113+
public ApiResponse<MyPageResponseDTO> changePassword(@RequestHeader("Authorization") String authorizationHeader,
114+
@PathVariable("memberId") Long memberId,
115+
@RequestBody PasswordChangeRequestDTO dto) {
116+
Member member = memberService.getMemberByToken(authorizationHeader);
117+
MyPageResponseDTO myPageResponseDTO = memberService.changePassword(member.getId(), memberId, dto);
118+
return ApiResponse.onSuccess(myPageResponseDTO);
119+
}
120+
121+
@PostMapping("{memberId}/checkPassword")
122+
@Operation(summary = "회원 정보 변경 전 + 소극장 등록 전 비밀 번호 확인하는 api")
123+
public ApiResponse<Boolean> checkPassword(@RequestHeader("Authorization") String authorizationHeader, @RequestBody PasswordRequestDTO dto) {
124+
Member member = memberService.getMemberByToken(authorizationHeader);
125+
boolean isValid = memberService.CheckPassword(member, dto);
126+
if (!isValid) {
127+
return ApiResponse.onFailure("400", "비밀번호가 일치하지 않습니다.", false);
128+
}
129+
return ApiResponse.onSuccess(true);
130+
}
131+
132+
@GetMapping("/likeMusicals")
133+
@Operation(summary = "사용자가 좋아요한 뮤지컬 전체 조회 api")
134+
public ApiResponse<List<MusicalResponseDTO.MusicalHomeDTO>> getLikeMusicals(@RequestHeader("Authorization") String authorizationHeader) {
135+
Member member = memberService.getMemberByToken(authorizationHeader);
136+
return ApiResponse.onSuccess(memberService.getLikeMusicals(member));
137+
}
138+
139+
140+
76141

77142

78143

src/main/java/muit/backend/controller/MusicalController.java

+47-12
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import io.swagger.v3.oas.annotations.tags.Tag;
77
import lombok.RequiredArgsConstructor;
88
import muit.backend.apiPayLoad.ApiResponse;
9+
import muit.backend.domain.entity.member.Member;
910
import muit.backend.dto.castingDTO.CastingResponseDTO;
1011
import muit.backend.dto.musicalDTO.MusicalResponseDTO;
1112
import muit.backend.dto.theatreDTO.TheatreResponseDTO;
13+
import muit.backend.service.MemberService;
1214
import muit.backend.service.musicalService.MusicalService;
1315
import org.springframework.data.domain.Page;
1416
import org.springframework.data.domain.PageRequest;
@@ -22,55 +24,67 @@
2224
@RequestMapping("/musicals")
2325
public class MusicalController {
2426
private final MusicalService musicalService;
27+
private final MemberService memberService;
2528

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

3237

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

3945
@GetMapping("/hot/all")
4046
@Operation(summary = "뮤지컬 조회 - 리스트 HOT NOW 전체보기", description = "현재 HOT한 뮤지컬 전체 조회하는 API, 페이지당 20개")
4147
@Parameter( name = "page", description = "페이지를 정수로 입력")
42-
public ApiResponse<Page<MusicalResponseDTO.MusicalHomeDTO>> getAllHotMusicals(@RequestParam(defaultValue = "0", name = "page") Integer page) {
43-
48+
public ApiResponse<Page<MusicalResponseDTO.MusicalHomeDTO>> getAllHotMusicals(@RequestHeader("Authorization") String accessToken,
49+
@RequestParam(defaultValue = "0", name = "page") Integer page) {
50+
Member member = memberService.getMemberByToken(accessToken);
4451
return ApiResponse.onSuccess(musicalService.getAllHotMusicals(page));
4552
}
4653

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

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

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

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

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

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

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

110+
@PostMapping("/{musicalId}/likes")
111+
@Operation(summary = "특정 뮤지컬 좋아요 ", description = "좋아요한 뮤지컬에 추가하는 API")
112+
public ApiResponse<MusicalResponseDTO.MusicalHomeDTO> likeMusicals(@RequestHeader("Authorization") String accessToken,
113+
@PathVariable("musicalId") Long musicalId){
114+
Member member = memberService.getMemberByToken(accessToken);
115+
return ApiResponse.onSuccess(musicalService.likeMusical(member, musicalId));
116+
}
117+
118+
@DeleteMapping("/{musicalId}/likesCancel")
119+
@Operation(summary = "특정 뮤지컬 좋아요 취소 ", description = "뮤지컬에 누른 좋아요를 취소하는 API")
120+
public ApiResponse<MusicalResponseDTO.MusicalHomeDTO> likeCancelMusicals(@RequestHeader("Authorization") String accessToken,
121+
@PathVariable("musicalId") Long musicalId){
122+
Member member = memberService.getMemberByToken(accessToken);
123+
return ApiResponse.onSuccess(musicalService.likeCancelMusical(member, musicalId));
124+
}
125+
126+
92127
}

0 commit comments

Comments
 (0)