Skip to content

Commit 8a6a66a

Browse files
committed
feat: 커뮤니티 기능 구현 및 도메인 구조 개편
1 parent ff80de3 commit 8a6a66a

Some content is hidden

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

48 files changed

+1062
-168
lines changed

build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ dependencies {
2727
implementation 'org.springframework.boot:spring-boot-starter-web'
2828
compileOnly 'org.projectlombok:lombok'
2929
developmentOnly 'org.springframework.boot:spring-boot-devtools'
30-
runtimeOnly 'com.mysql:mysql-connector-j'
30+
implementation 'mysql:mysql-connector-java:8.0.33'
3131
annotationProcessor 'org.projectlombok:lombok'
3232
testImplementation 'org.springframework.boot:spring-boot-starter-test'
3333
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
@@ -39,6 +39,8 @@ dependencies {
3939
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
4040
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
4141
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
42+
43+
// implementation 'software.amazon.awssdk:s3'
4244
}
4345

4446
tasks.named('test') {

src/main/java/com/dmu/debug_visual/controller/AdminController.java renamed to src/main/java/com/dmu/debug_visual/admin/AdminController.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
package com.dmu.debug_visual.controller;
1+
package com.dmu.debug_visual.admin;
22

3-
import com.dmu.debug_visual.dto.AdminUserCreateDTO;
4-
import com.dmu.debug_visual.dto.UserResponseDTO;
5-
import com.dmu.debug_visual.service.AdminService;
3+
import com.dmu.debug_visual.user.dto.UserResponseDTO;
64
import io.swagger.v3.oas.annotations.Operation;
75
import io.swagger.v3.oas.annotations.responses.ApiResponse;
86
import io.swagger.v3.oas.annotations.responses.ApiResponses;
@@ -11,7 +9,6 @@
119
import org.springframework.http.HttpStatus;
1210
import org.springframework.http.ResponseEntity;
1311
import org.springframework.web.bind.annotation.*;
14-
import org.springframework.web.server.ResponseStatusException;
1512

1613
import java.util.List;
1714

src/main/java/com/dmu/debug_visual/service/AdminService.java renamed to src/main/java/com/dmu/debug_visual/admin/AdminService.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
package com.dmu.debug_visual.service;
1+
package com.dmu.debug_visual.admin;
22

3-
import com.dmu.debug_visual.dto.AdminUserCreateDTO;
4-
import com.dmu.debug_visual.dto.UserResponseDTO;
5-
import com.dmu.debug_visual.entity.User;
6-
import com.dmu.debug_visual.repository.UserRepository;
3+
import com.dmu.debug_visual.user.dto.UserResponseDTO;
4+
import com.dmu.debug_visual.user.User;
5+
import com.dmu.debug_visual.user.UserRepository;
76
import lombok.RequiredArgsConstructor;
87
import org.springframework.security.crypto.password.PasswordEncoder;
98
import org.springframework.stereotype.Service;

src/main/java/com/dmu/debug_visual/dto/AdminUserCreateDTO.java renamed to src/main/java/com/dmu/debug_visual/admin/AdminUserCreateDTO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dmu.debug_visual.dto;
1+
package com.dmu.debug_visual.admin;
22

33
import lombok.Data;
44

src/main/java/com/dmu/debug_visual/controller/CodeController.java renamed to src/main/java/com/dmu/debug_visual/code/CodeController.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
package com.dmu.debug_visual.controller;
1+
package com.dmu.debug_visual.code;
22

3-
import com.dmu.debug_visual.dto.CodeRunRequestDTO;
4-
import com.dmu.debug_visual.dto.CodeRunResponseDTO;
5-
import com.dmu.debug_visual.service.CodeExecutionService;
3+
import com.dmu.debug_visual.code.dto.CodeRunRequestDTO;
4+
import com.dmu.debug_visual.code.dto.CodeRunResponseDTO;
65
import com.fasterxml.jackson.databind.ObjectMapper;
76
import io.swagger.v3.oas.annotations.Operation;
87
import io.swagger.v3.oas.annotations.media.Content;
@@ -98,6 +97,4 @@ public ResponseEntity<CodeRunResponseDTO> visualizeCode(@RequestBody CodeRunRequ
9897
);
9998
return ResponseEntity.ok(response);
10099
}
101-
102-
103-
}
100+
}

src/main/java/com/dmu/debug_visual/service/CodeExecutionService.java renamed to src/main/java/com/dmu/debug_visual/code/CodeExecutionService.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
package com.dmu.debug_visual.service;
1+
package com.dmu.debug_visual.code;
22

3-
import com.dmu.debug_visual.dto.CodeRunRequestDTO;
4-
import com.dmu.debug_visual.dto.CodeRunResponseDTO;
5-
import com.fasterxml.jackson.databind.ObjectMapper;
3+
import com.dmu.debug_visual.code.dto.CodeRunRequestDTO;
4+
import com.dmu.debug_visual.code.dto.CodeRunResponseDTO;
65
import lombok.RequiredArgsConstructor;
76
import org.springframework.beans.factory.annotation.Value;
87
import org.springframework.http.MediaType;
98
import org.springframework.stereotype.Service;
109
import org.springframework.web.reactive.function.client.WebClient;
11-
import reactor.core.publisher.Mono;
1210

1311
@Service
1412
@RequiredArgsConstructor

src/main/java/com/dmu/debug_visual/dto/CodeRunRequestDTO.java renamed to src/main/java/com/dmu/debug_visual/code/dto/CodeRunRequestDTO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dmu.debug_visual.dto;
1+
package com.dmu.debug_visual.code.dto;
22

33
import io.swagger.v3.oas.annotations.media.Schema;
44
import lombok.AllArgsConstructor;

src/main/java/com/dmu/debug_visual/dto/CodeRunResponseDTO.java renamed to src/main/java/com/dmu/debug_visual/code/dto/CodeRunResponseDTO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dmu.debug_visual.dto;
1+
package com.dmu.debug_visual.code.dto;
22

33
import io.swagger.v3.oas.annotations.media.Schema;
44
import lombok.*;
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.dmu.debug_visual.community.controller;
2+
3+
4+
import com.dmu.debug_visual.community.dto.*;
5+
import com.dmu.debug_visual.community.service.CommentService;
6+
import com.dmu.debug_visual.security.CustomUserDetails;
7+
import com.dmu.debug_visual.user.User;
8+
import io.swagger.v3.oas.annotations.Operation;
9+
import io.swagger.v3.oas.annotations.tags.Tag;
10+
import lombok.RequiredArgsConstructor;
11+
import org.springframework.security.core.annotation.AuthenticationPrincipal;
12+
import org.springframework.web.bind.annotation.*;
13+
14+
import java.util.List;
15+
16+
@RestController
17+
@RequestMapping("/api/comments")
18+
@RequiredArgsConstructor
19+
@Tag(name = "커뮤니티 - 댓글 API", description = "댓글 및 대댓글 API")
20+
public class CommentController {
21+
22+
private final CommentService commentService;
23+
24+
@PostMapping
25+
@Operation(summary = "댓글 또는 대댓글 작성")
26+
public Long write(@RequestBody CommentRequestDTO dto,
27+
@AuthenticationPrincipal CustomUserDetails userDetails) {
28+
User user = userDetails.getUser();
29+
return commentService.createComment(dto, user);
30+
}
31+
32+
@GetMapping("/{postId}")
33+
@Operation(summary = "게시글의 댓글 목록 조회")
34+
public List<CommentResponseDTO> getComments(@PathVariable Long postId) {
35+
return commentService.getComments(postId);
36+
}
37+
38+
@DeleteMapping("/{commentId}")
39+
@Operation(summary = "댓글 삭제")
40+
public void deleteComment(@PathVariable Long commentId,
41+
@AuthenticationPrincipal CustomUserDetails userDetails) {
42+
User user = userDetails.getUser();
43+
commentService.deleteComment(commentId, user);
44+
}
45+
46+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.dmu.debug_visual.community.controller;
2+
3+
import com.dmu.debug_visual.community.entity.Notification;
4+
import com.dmu.debug_visual.community.service.NotificationService;
5+
import com.dmu.debug_visual.security.CustomUserDetails;
6+
import com.dmu.debug_visual.user.User;
7+
import io.swagger.v3.oas.annotations.Operation;
8+
import io.swagger.v3.oas.annotations.tags.Tag;
9+
import lombok.RequiredArgsConstructor;
10+
import org.springframework.security.core.annotation.AuthenticationPrincipal;
11+
import org.springframework.web.bind.annotation.*;
12+
13+
import java.util.List;
14+
15+
@RestController
16+
@RequestMapping("/api/notifications")
17+
@RequiredArgsConstructor
18+
@Tag(name = "알림 API", description = "사용자에게 전달되는 알림 API")
19+
public class NotificationController {
20+
21+
private final NotificationService notificationService;
22+
23+
@GetMapping
24+
@Operation(summary = "내 알림 목록 조회")
25+
public List<Notification> getMyNotifications(@AuthenticationPrincipal CustomUserDetails userDetails) {
26+
User user = userDetails.getUser();
27+
return notificationService.getUserNotifications(user);
28+
}
29+
30+
@PutMapping("/{id}/read")
31+
@Operation(summary = "알림 읽음 처리")
32+
public void markAsRead(@PathVariable Long id, @AuthenticationPrincipal CustomUserDetails userDetails) {
33+
User user = userDetails.getUser();
34+
notificationService.markAsRead(id, user);
35+
}
36+
37+
}

0 commit comments

Comments
 (0)