Commit 8c68bda authored Jan 25, 2024 · 2 / 2 · Verified
1 parent afbf475 commit 8c68bda Copy full SHA for 8c68bda
File tree 4 files changed +72
-5
lines changed
src/main/java/com/sponus/sponusbe/domain/announcement
4 files changed +72
-5
lines changed Original file line number Diff line number Diff line change 9
9
import org .springframework .web .bind .annotation .RequestParam ;
10
10
import org .springframework .web .bind .annotation .RestController ;
11
11
12
+ import com .sponus .sponusbe .auth .annotation .AuthOrganization ;
12
13
import com .sponus .sponusbe .domain .announcement .dto .AnnouncementBriefResponse ;
13
14
import com .sponus .sponusbe .domain .announcement .dto .AnnouncementCreateRequest ;
15
+ import com .sponus .sponusbe .domain .announcement .dto .AnnouncementCreateResponse ;
14
16
import com .sponus .sponusbe .domain .announcement .dto .AnnouncementResponse ;
15
17
import com .sponus .sponusbe .domain .announcement .service .AnnouncementQueryService ;
16
18
import com .sponus .sponusbe .domain .announcement .service .AnnouncementService ;
19
+ import com .sponus .sponusbe .domain .organization .entity .Organization ;
17
20
import com .sponus .sponusbe .global .common .ApiResponse ;
18
21
19
22
import lombok .RequiredArgsConstructor ;
@@ -48,9 +51,10 @@ public ApiResponse<AnnouncementResponse> searchAnnouncement(@RequestParam String
48
51
return ApiResponse .onSuccess (announcementQueryService .searchAnnouncement (search ));
49
52
}
50
53
51
- @ PostMapping
52
- public ApiResponse <AnnouncementBriefResponse > createAnnouncement (AnnouncementCreateRequest request ) {
53
- return ApiResponse .onSuccess (announcementQueryService .createAnnouncement (request ));
54
+ @ PostMapping ("/" )
55
+ public ApiResponse <AnnouncementCreateResponse > createAnnouncement (@ AuthOrganization Organization authOrganization ,
56
+ AnnouncementCreateRequest request ) {
57
+ return ApiResponse .onSuccess (announcementService .createAnnouncement (authOrganization , request ));
54
58
}
55
59
56
60
@ DeleteMapping ("/{announcementId}" )
Original file line number Diff line number Diff line change 1
1
package com .sponus .sponusbe .domain .announcement .dto ;
2
2
3
+ import com .sponus .sponusbe .domain .announcement .entity .Announcement ;
3
4
import com .sponus .sponusbe .domain .announcement .entity .enums .AnnouncementCategory ;
5
+ import com .sponus .sponusbe .domain .announcement .entity .enums .AnnouncementStatus ;
4
6
import com .sponus .sponusbe .domain .announcement .entity .enums .AnnouncementType ;
7
+ import com .sponus .sponusbe .domain .organization .entity .Organization ;
5
8
6
9
import jakarta .validation .constraints .NotBlank ;
7
10
import jakarta .validation .constraints .NotNull ;
@@ -14,6 +17,19 @@ public record AnnouncementCreateRequest(
14
17
@ NotNull (message = "[ERROR] 카테코리 입력은 필수 입니다." )
15
18
AnnouncementCategory category ,
16
19
@ NotBlank (message = "[ERROR] 내용 입력은 필수 입니다." )
17
- String content
20
+ String content ,
21
+
22
+ AnnouncementStatus status
18
23
) {
24
+
25
+ public Announcement toEntity (Organization writer ) {
26
+ return Announcement .builder ()
27
+ .writer (writer )
28
+ .title (title )
29
+ .type (type )
30
+ .category (category )
31
+ .content (content )
32
+ .status (status )
33
+ .build ();
34
+ }
19
35
}
Original file line number Diff line number Diff line change
1
+ package com .sponus .sponusbe .domain .announcement .dto ;
2
+
3
+ import com .sponus .sponusbe .domain .announcement .entity .Announcement ;
4
+ import com .sponus .sponusbe .domain .announcement .entity .enums .AnnouncementCategory ;
5
+ import com .sponus .sponusbe .domain .announcement .entity .enums .AnnouncementStatus ;
6
+ import com .sponus .sponusbe .domain .announcement .entity .enums .AnnouncementType ;
7
+
8
+ import lombok .Builder ;
9
+
10
+ @ Builder
11
+ public record AnnouncementCreateResponse (
12
+ Long id ,
13
+ Long writerId ,
14
+ String title ,
15
+ AnnouncementType type ,
16
+ AnnouncementCategory category ,
17
+ String content ,
18
+ AnnouncementStatus status ,
19
+ Long viewCount
20
+ ) {
21
+ public static AnnouncementCreateResponse from (Announcement announcement ) {
22
+ return AnnouncementCreateResponse .builder ()
23
+ .id (announcement .getId ())
24
+ .writerId (announcement .getWriter ().getId ())
25
+ .title (announcement .getTitle ())
26
+ .type (announcement .getType ())
27
+ .category (announcement .getCategory ())
28
+ .content (announcement .getContent ())
29
+ .status (AnnouncementStatus .POSTED )
30
+ .viewCount (announcement .getViewCount ())
31
+ .build ();
32
+ }
33
+ }
Original file line number Diff line number Diff line change 3
3
import org .springframework .stereotype .Service ;
4
4
import org .springframework .transaction .annotation .Transactional ;
5
5
6
+ import com .sponus .sponusbe .domain .announcement .dto .AnnouncementCreateRequest ;
7
+ import com .sponus .sponusbe .domain .announcement .dto .AnnouncementCreateResponse ;
8
+ import com .sponus .sponusbe .domain .announcement .entity .Announcement ;
9
+ import com .sponus .sponusbe .domain .announcement .repository .AnnouncementRepository ;
10
+ import com .sponus .sponusbe .domain .organization .entity .Organization ;
11
+
6
12
import lombok .RequiredArgsConstructor ;
7
13
import lombok .extern .slf4j .Slf4j ;
8
14
9
15
@ Slf4j
10
16
@ RequiredArgsConstructor
11
- @ Transactional ( readOnly = true )
17
+ @ Transactional
12
18
@ Service
13
19
public class AnnouncementService {
20
+
21
+ private final AnnouncementRepository announcementRepository ;
22
+
23
+ public AnnouncementCreateResponse createAnnouncement (Organization authOrganization ,
24
+ AnnouncementCreateRequest request ) {
25
+ final Announcement announcement = announcementRepository .save (request .toEntity (authOrganization ));
26
+ return AnnouncementCreateResponse .from (announcement );
27
+ }
14
28
}
You can’t perform that action at this time.
0 commit comments