Skip to content

Commit 1f55cd0

Browse files
authored
Merge pull request #94 from prgrms-web-devcourse-final-project/dev
Dev
2 parents 8143235 + a083aa8 commit 1f55cd0

84 files changed

Lines changed: 912 additions & 453 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/main/java/com/grepp/teamnotfound/app/controller/api/admin/AdminController.java

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -32,39 +32,26 @@ public class AdminController {
3232
@Operation(summary = "전체 가입자 수 조회")
3333
@GetMapping("v1/stats/users")
3434
public ResponseEntity<UserCountResponse> getUsersCount(){
35-
TotalUsersDto totalUsersDto = adminService.getTotalUsersCount();
36-
UserCountResponse response = UserCountResponse.builder()
37-
.date(OffsetDateTime.now())
38-
.total(totalUsersDto.getTotal())
39-
.build();
35+
TotalUsersDto dto = adminService.getTotalUsersCount();
36+
UserCountResponse response = UserCountResponse.of(dto);
4037
return ResponseEntity.ok(response);
4138
}
4239

4340
@Operation(summary = "회원 목록 조회")
4441
@GetMapping("v1/users")
4542
public ResponseEntity<UsersListResponse> getUsers(
46-
@Valid @ModelAttribute UsersListRequest request
47-
){
43+
@Valid @ModelAttribute UsersListRequest request){
4844
Page<UsersListDto> userPage = adminService.getUsersList(request);
49-
UsersListResponse response = UsersListResponse.builder()
50-
.users(userPage.getContent())
51-
.pageInfo(PageInfo.fromPage(userPage))
52-
.build();
53-
45+
UsersListResponse response = UsersListResponse.of(userPage);
5446
return ResponseEntity.ok(response);
5547
}
5648

5749
@Operation(summary = "신고 내역 목록 조회")
5850
@GetMapping("v1/reports")
5951
public ResponseEntity<ReportsListResponse> getReports(
60-
@Valid @ModelAttribute ReportsListRequest request
61-
){
52+
@Valid @ModelAttribute ReportsListRequest request){
6253
Page<ReportsListDto> reportPage = adminService.getReportsList(request);
63-
ReportsListResponse response = ReportsListResponse.builder()
64-
.reports(reportPage.getContent())
65-
.pageInfo(PageInfo.fromPage(reportPage))
66-
.build();
67-
54+
ReportsListResponse response = ReportsListResponse.of(reportPage);
6855
return ResponseEntity.ok(response);
6956
}
7057

@@ -126,26 +113,15 @@ public ResponseEntity<ReportDetailResponse> getReportDetail(@PathVariable Long r
126113
@Operation(summary = "신고 처리하기")
127114
@PatchMapping("v1/reports/result-accept")
128115
public ResponseEntity<?> acceptReport(@RequestBody AcceptReportRequest request){
129-
130-
AcceptReportDto dto = AcceptReportDto.builder()
131-
.reportId(request.getReportId())
132-
.adminReason(request.getAdminReason())
133-
.period(request.getPeriod())
134-
.build();
135-
116+
AcceptReportDto dto = AcceptReportDto.of(request);
136117
adminService.acceptReportAndSuspendUser(dto);
137118
return ResponseEntity.ok("신고가 정상적으로 처리되었습니다.");
138119
}
139120

140121
@Operation(summary = "신고 철회하기")
141122
@PatchMapping("v1/reports/result-reject")
142123
public ResponseEntity<?> rejectReport(@RequestBody RejectReportRequest request){
143-
144-
RejectReportDto dto = RejectReportDto.builder()
145-
.reportId(request.getReportId())
146-
.adminReason(request.getAdminReason())
147-
.build();
148-
124+
RejectReportDto dto = RejectReportDto.of(request);
149125
adminService.rejectReport(dto);
150126
return ResponseEntity.ok("신고를 성공적으로 거절하였습니다.");
151127
}

src/main/java/com/grepp/teamnotfound/app/controller/api/admin/payload/ReportsListResponse.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.grepp.teamnotfound.app.model.report.dto.ReportsListDto;
44
import lombok.Builder;
55
import lombok.Data;
6+
import org.springframework.data.domain.Page;
67

78
import java.util.List;
89

@@ -12,4 +13,11 @@ public class ReportsListResponse {
1213

1314
private List<ReportsListDto> reports;
1415
private PageInfo pageInfo;
16+
17+
public static ReportsListResponse of(Page<ReportsListDto> reportPage) {
18+
return ReportsListResponse.builder()
19+
.reports(reportPage.getContent())
20+
.pageInfo(PageInfo.fromPage(reportPage))
21+
.build();
22+
}
1523
}

src/main/java/com/grepp/teamnotfound/app/controller/api/admin/payload/UserCountResponse.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.grepp.teamnotfound.app.controller.api.admin.payload;
22

3+
import com.grepp.teamnotfound.app.model.user.dto.TotalUsersDto;
34
import lombok.Builder;
45
import lombok.Data;
56
import lombok.Getter;
@@ -12,4 +13,11 @@ public class UserCountResponse {
1213

1314
private OffsetDateTime date;
1415
private long total;
16+
17+
public static UserCountResponse of(TotalUsersDto dto) {
18+
return UserCountResponse.builder()
19+
.date(OffsetDateTime.now())
20+
.total(dto.getTotal())
21+
.build();
22+
}
1523
}

src/main/java/com/grepp/teamnotfound/app/controller/api/admin/payload/UsersListResponse.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import com.grepp.teamnotfound.app.model.user.dto.UsersListDto;
44
import lombok.Builder;
55
import lombok.Data;
6+
import org.springframework.data.domain.Page;
67

7-
import java.time.OffsetDateTime;
88
import java.util.List;
99

1010
@Data
@@ -13,4 +13,11 @@ public class UsersListResponse {
1313

1414
private List<UsersListDto> users;
1515
private PageInfo pageInfo;
16+
17+
public static UsersListResponse of(Page<UsersListDto> userPage){
18+
return UsersListResponse.builder()
19+
.users(userPage.getContent())
20+
.pageInfo(PageInfo.fromPage(userPage))
21+
.build();
22+
}
1623
}

src/main/java/com/grepp/teamnotfound/app/controller/api/article/ArticleApiController.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,17 @@ public ResponseEntity<?> getReplyCount(
130130

131131
@GetMapping("/v1/{articleId}/like")
132132
@Operation(summary = "게시글 좋아요 개수")
133+
@PreAuthorize("isAnonymous() or isAuthenticated()")
133134
public ResponseEntity<?> getLikeCount(
134-
@PathVariable Long articleId
135+
@PathVariable Long articleId,
136+
@AuthenticationPrincipal Principal principal
135137
) {
136-
Integer likeCount = articleService.getActualLikeCount(articleId);
137-
return ResponseEntity.ok(ApiResponse.success(Map.of("likes", likeCount)));
138-
}
138+
Long userId = null;
139+
if (principal != null) {
140+
userId = principal.getUserId();
141+
}
139142

140-
// TODO 게시글 신고 기능
143+
LikeResponse response = articleService.getNewestLikeCount(articleId, userId);
144+
return ResponseEntity.ok(ApiResponse.success(response));
145+
}
141146
}

src/main/java/com/grepp/teamnotfound/app/controller/api/auth/AuthController.java

Lines changed: 11 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.grepp.teamnotfound.app.controller.api.auth;
22

3+
import com.grepp.teamnotfound.app.controller.api.auth.code.ProviderType;
34
import com.grepp.teamnotfound.app.controller.api.auth.payload.EmailVerificationRequest;
45
import com.grepp.teamnotfound.app.controller.api.auth.payload.EmailVerifyRequest;
56
import com.grepp.teamnotfound.app.controller.api.auth.payload.LoginRequest;
@@ -75,32 +76,18 @@ public ResponseEntity<?> checkNickname(@RequestParam("nickname") String nickname
7576
@Operation(summary = "최종 회원가입")
7677
@PostMapping("v2/register")
7778
public ResponseEntity<ApiResponse<?>> register(@RequestBody RegisterRequest request) {
78-
79-
RegisterCommand command = RegisterCommand.builder()
80-
.email(request.getEmail())
81-
.name(request.getName())
82-
.nickname(request.getNickname())
83-
.password(request.getPassword())
84-
.build();
79+
RegisterCommand command = RegisterCommand.of(request);
8580
Long userId = userService.registerUser(command);
8681
RegisterResponse response = new RegisterResponse(userId);
87-
8882
notificationService.createManagement(userId);
89-
9083
return ResponseEntity.ok(ApiResponse.success(response));
9184
}
9285

9386

9487
@PostMapping("v2/admin/register")
9588
@PreAuthorize("permitAll()")
9689
public ResponseEntity<ApiResponse<?>> registerAdmin(@RequestBody RegisterRequest request) {
97-
98-
RegisterCommand command = RegisterCommand.builder()
99-
.email(request.getEmail())
100-
.name(request.getName())
101-
.nickname(request.getNickname())
102-
.password(request.getPassword())
103-
.build();
90+
RegisterCommand command = RegisterCommand.of(request);
10491
Long userId = userService.registerAdmin(command);
10592
RegisterResponse response = new RegisterResponse(userId);
10693
return ResponseEntity.ok(ApiResponse.success(response));
@@ -109,34 +96,21 @@ public ResponseEntity<ApiResponse<?>> registerAdmin(@RequestBody RegisterRequest
10996
@Operation(summary = "소셜 로그인")
11097
@GetMapping("v1/social-auth/{provider}")
11198
public ResponseEntity<?> socialLogin(@PathVariable String provider) {
112-
String url = customOAuth2UserService.getAuthUrl(provider);
99+
ProviderType providerType = ProviderType.valueOf(provider.toUpperCase());
100+
String url = customOAuth2UserService.getAuthUrl(providerType);
113101
return ResponseEntity.ok(url);
114102
}
115103

116104

117105
@Operation(summary = "회원 로그인")
118106
@PostMapping("v1/login")
119107
public ResponseEntity<ApiResponse<LoginResponse>> login(@RequestBody LoginRequest request, HttpServletResponse response) {
120-
121-
LoginCommand command = LoginCommand.builder()
122-
.email(request.getEmail())
123-
.password(request.getPassword())
124-
.build();
125-
108+
LoginCommand command = LoginCommand.of(request);
126109
LoginResult dto = authService.login(command);
127110
createAuthTokenCookies(dto, response);
128111

129-
TokenResponse tokenResponse = TokenResponse.builder()
130-
.accessToken(dto.getAccessToken())
131-
.expiresIn(dto.getAtExpiresIn())
132-
.grantType(GrantType.BEARER)
133-
.refreshToken(dto.getRefreshToken())
134-
.build();
135-
136-
LoginResponse loginResponse = LoginResponse.builder()
137-
.tokenResponse(tokenResponse)
138-
.userId(dto.getUserId())
139-
.build();
112+
TokenResponse tokenResponse = TokenResponse.of(dto);
113+
LoginResponse loginResponse = LoginResponse.of(tokenResponse, dto);
140114
return ResponseEntity.ok(ApiResponse.success(loginResponse));
141115

142116
}
@@ -147,27 +121,14 @@ public ResponseEntity<ApiResponse<LoginResponse>> login(@RequestBody LoginReques
147121
@PreAuthorize("permitAll()")
148122
public ResponseEntity<ApiResponse<LoginResponse>> adminLogin(@RequestBody LoginRequest request, HttpServletResponse response) {
149123

150-
LoginCommand command = LoginCommand.builder()
151-
.email(request.getEmail())
152-
.password(request.getPassword())
153-
.build();
124+
LoginCommand command = LoginCommand.of(request);
154125

155126
LoginResult dto = authService.adminLogin(command);
156127
createAuthTokenCookies(dto, response);
157128

158-
TokenResponse tokenResponse = TokenResponse.builder()
159-
.accessToken(dto.getAccessToken())
160-
.expiresIn(dto.getAtExpiresIn())
161-
.grantType(GrantType.BEARER)
162-
.refreshToken(dto.getRefreshToken())
163-
.build();
164-
165-
LoginResponse loginResponse = LoginResponse.builder()
166-
.tokenResponse(tokenResponse)
167-
.userId(dto.getUserId())
168-
.build();
129+
TokenResponse tokenResponse = TokenResponse.of(dto);
130+
LoginResponse loginResponse = LoginResponse.of(tokenResponse, dto);
169131
return ResponseEntity.ok(ApiResponse.success(loginResponse));
170-
171132
}
172133

173134
private void createAuthTokenCookies(LoginResult dto, HttpServletResponse response) {
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.grepp.teamnotfound.app.controller.api.auth.code;
2+
3+
import com.grepp.teamnotfound.infra.error.exception.BusinessException;
4+
import com.grepp.teamnotfound.infra.error.exception.code.AuthErrorCode;
5+
6+
public enum ProviderType {
7+
GOOGLE, KAKAO, NAVER;
8+
9+
public static ProviderType from(String input){
10+
try {
11+
return ProviderType.valueOf(input.toUpperCase());
12+
} catch (IllegalArgumentException e) {
13+
throw new BusinessException(AuthErrorCode.UNSUPPORTED_PROVIDER);
14+
}
15+
}
16+
}

src/main/java/com/grepp/teamnotfound/app/controller/api/auth/payload/LoginResponse.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.grepp.teamnotfound.app.controller.api.auth.payload;
22

3+
import com.grepp.teamnotfound.app.model.auth.dto.LoginResult;
34
import lombok.Builder;
45
import lombok.Data;
56

@@ -9,4 +10,11 @@ public class LoginResponse {
910

1011
private Long userId;
1112
private TokenResponse tokenResponse;
13+
14+
public static LoginResponse of(TokenResponse tokenResponse, LoginResult dto) {
15+
return LoginResponse.builder()
16+
.tokenResponse(tokenResponse)
17+
.userId(dto.getUserId())
18+
.build();
19+
}
1220
}

src/main/java/com/grepp/teamnotfound/app/controller/api/auth/payload/TokenResponse.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.grepp.teamnotfound.app.controller.api.auth.payload;
22

3+
import com.grepp.teamnotfound.app.model.auth.dto.LoginResult;
34
import com.grepp.teamnotfound.infra.auth.token.code.GrantType;
45
import lombok.Builder;
56
import lombok.Data;
@@ -12,5 +13,12 @@ public class TokenResponse {
1213
private GrantType grantType;
1314
private Long expiresIn;
1415

15-
16+
public static TokenResponse of(LoginResult result){
17+
return TokenResponse.builder()
18+
.accessToken(result.getAccessToken())
19+
.refreshToken(result.getRefreshToken())
20+
.grantType(GrantType.BEARER)
21+
.expiresIn(result.getAtExpiresIn())
22+
.build();
23+
}
1624
}

0 commit comments

Comments
 (0)