Skip to content

Commit 14e32a3

Browse files
authored
✨ [FEATURE] 상태별 공고 조회 기능 개발 (#51)
* 🙈chore: dto 폴더 정리 * ✨ feat: 상태별 공고 목록 조회 기능 개발
1 parent 9319a60 commit 14e32a3

12 files changed

+49
-24
lines changed

http/test.http

+5-2
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,17 @@ Content-Type: application/json
4343
}
4444

4545
### 상세 조회
46-
GET http://localhost:8080/api/v1/announcements/2
46+
GET http://localhost:8080/api/v1/announcements/1
47+
48+
### 공고 상태별 목록 조회
49+
GET http://localhost:8080/api/v1/announcements/status?status=POSTED
4750

4851
### 삭제 (생성한 단체만 삭제 가능)
4952
DELETE http://localhost:8080/api/v1/announcements/1
5053
Authorization: Bearer {{matsterToken}}
5154

5255
### 공고 수정
53-
PATCH http://localhost:8080/api/v1/announcements/1
56+
PATCH http://localhost:8080/api/v1/announcements/2
5457
Authorization: Bearer {{matsterToken}}
5558
Content-Type: application/json
5659

src/main/java/com/sponus/sponusbe/domain/announcement/controller/AnnouncementController.java

+12-5
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@
1313
import org.springframework.web.bind.annotation.RestController;
1414

1515
import com.sponus.sponusbe.auth.annotation.AuthOrganization;
16-
import com.sponus.sponusbe.domain.announcement.dto.AnnouncementCreateRequest;
17-
import com.sponus.sponusbe.domain.announcement.dto.AnnouncementCreateResponse;
18-
import com.sponus.sponusbe.domain.announcement.dto.AnnouncementResponse;
19-
import com.sponus.sponusbe.domain.announcement.dto.AnnouncementUpdateRequest;
20-
import com.sponus.sponusbe.domain.announcement.dto.AnnouncementUpdateResponse;
16+
import com.sponus.sponusbe.domain.announcement.dto.request.AnnouncementCreateRequest;
17+
import com.sponus.sponusbe.domain.announcement.dto.request.AnnouncementUpdateRequest;
18+
import com.sponus.sponusbe.domain.announcement.dto.response.AnnouncementCreateResponse;
19+
import com.sponus.sponusbe.domain.announcement.dto.response.AnnouncementResponse;
20+
import com.sponus.sponusbe.domain.announcement.dto.response.AnnouncementUpdateResponse;
21+
import com.sponus.sponusbe.domain.announcement.entity.enums.AnnouncementStatus;
2122
import com.sponus.sponusbe.domain.announcement.service.AnnouncementQueryService;
2223
import com.sponus.sponusbe.domain.announcement.service.AnnouncementService;
2324
import com.sponus.sponusbe.domain.organization.entity.Organization;
@@ -51,6 +52,12 @@ public ApiResponse<AnnouncementResponse> getAnnouncement(@PathVariable Long anno
5152
return ApiResponse.onSuccess(announcementService.getAnnouncement(announcementId));
5253
}
5354

55+
@GetMapping("/status")
56+
public ApiResponse<List<AnnouncementResponse>> getListAnnouncement(
57+
@RequestParam("status") AnnouncementStatus status) {
58+
return ApiResponse.onSuccess(announcementService.getListAnnouncement(status));
59+
}
60+
5461
@GetMapping
5562
public ApiResponse<List<AnnouncementResponse>> searchAnnouncement(@RequestParam("search") String keyword) {
5663
return ApiResponse.onSuccess(announcementQueryService.searchAnnouncement(keyword));

src/main/java/com/sponus/sponusbe/domain/announcement/dto/AnnouncementBriefResponse.java

-4
This file was deleted.

src/main/java/com/sponus/sponusbe/domain/announcement/dto/AnnouncementCreateRequest.java src/main/java/com/sponus/sponusbe/domain/announcement/dto/request/AnnouncementCreateRequest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.sponus.sponusbe.domain.announcement.dto;
1+
package com.sponus.sponusbe.domain.announcement.dto.request;
22

33
import com.sponus.sponusbe.domain.announcement.entity.Announcement;
44
import com.sponus.sponusbe.domain.announcement.entity.enums.AnnouncementCategory;

src/main/java/com/sponus/sponusbe/domain/announcement/dto/AnnouncementUpdateRequest.java src/main/java/com/sponus/sponusbe/domain/announcement/dto/request/AnnouncementUpdateRequest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.sponus.sponusbe.domain.announcement.dto;
1+
package com.sponus.sponusbe.domain.announcement.dto.request;
22

33
import com.sponus.sponusbe.domain.announcement.entity.Announcement;
44
import com.sponus.sponusbe.domain.announcement.entity.enums.AnnouncementCategory;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.sponus.sponusbe.domain.announcement.dto.response;
2+
3+
public record AnnouncementBriefResponse() {
4+
}

src/main/java/com/sponus/sponusbe/domain/announcement/dto/AnnouncementCreateResponse.java src/main/java/com/sponus/sponusbe/domain/announcement/dto/response/AnnouncementCreateResponse.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.sponus.sponusbe.domain.announcement.dto;
1+
package com.sponus.sponusbe.domain.announcement.dto.response;
22

33
import com.sponus.sponusbe.domain.announcement.entity.Announcement;
44
import com.sponus.sponusbe.domain.announcement.entity.enums.AnnouncementCategory;

src/main/java/com/sponus/sponusbe/domain/announcement/dto/AnnouncementResponse.java src/main/java/com/sponus/sponusbe/domain/announcement/dto/response/AnnouncementResponse.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.sponus.sponusbe.domain.announcement.dto;
1+
package com.sponus.sponusbe.domain.announcement.dto.response;
22

33
import com.sponus.sponusbe.domain.announcement.entity.Announcement;
44
import com.sponus.sponusbe.domain.announcement.entity.enums.AnnouncementCategory;

src/main/java/com/sponus/sponusbe/domain/announcement/dto/AnnouncementUpdateResponse.java src/main/java/com/sponus/sponusbe/domain/announcement/dto/response/AnnouncementUpdateResponse.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.sponus.sponusbe.domain.announcement.dto;
1+
package com.sponus.sponusbe.domain.announcement.dto.response;
22

33
import com.sponus.sponusbe.domain.announcement.entity.Announcement;
44
import com.sponus.sponusbe.domain.announcement.entity.enums.AnnouncementCategory;

src/main/java/com/sponus/sponusbe/domain/announcement/repository/AnnouncementRepository.java

+4
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@
55
import org.springframework.data.jpa.repository.JpaRepository;
66

77
import com.sponus.sponusbe.domain.announcement.entity.Announcement;
8+
import com.sponus.sponusbe.domain.announcement.entity.enums.AnnouncementStatus;
89

910
public interface AnnouncementRepository extends JpaRepository<Announcement, Long> {
1011

1112
List<Announcement> findByTitleContains(String title);
13+
14+
List<Announcement> findByStatus(AnnouncementStatus status);
15+
1216
}

src/main/java/com/sponus/sponusbe/domain/announcement/service/AnnouncementQueryService.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import org.springframework.stereotype.Service;
66
import org.springframework.transaction.annotation.Transactional;
77

8-
import com.sponus.sponusbe.domain.announcement.dto.AnnouncementBriefResponse;
9-
import com.sponus.sponusbe.domain.announcement.dto.AnnouncementCreateRequest;
10-
import com.sponus.sponusbe.domain.announcement.dto.AnnouncementResponse;
8+
import com.sponus.sponusbe.domain.announcement.dto.request.AnnouncementCreateRequest;
9+
import com.sponus.sponusbe.domain.announcement.dto.response.AnnouncementBriefResponse;
10+
import com.sponus.sponusbe.domain.announcement.dto.response.AnnouncementResponse;
1111
import com.sponus.sponusbe.domain.announcement.repository.AnnouncementRepository;
1212

1313
import lombok.RequiredArgsConstructor;

src/main/java/com/sponus/sponusbe/domain/announcement/service/AnnouncementService.java

+16-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
package com.sponus.sponusbe.domain.announcement.service;
22

3+
import java.util.List;
4+
import java.util.stream.Collectors;
5+
36
import org.springframework.stereotype.Service;
47
import org.springframework.transaction.annotation.Transactional;
58

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.dto.AnnouncementResponse;
9-
import com.sponus.sponusbe.domain.announcement.dto.AnnouncementUpdateRequest;
10-
import com.sponus.sponusbe.domain.announcement.dto.AnnouncementUpdateResponse;
9+
import com.sponus.sponusbe.domain.announcement.dto.request.AnnouncementCreateRequest;
10+
import com.sponus.sponusbe.domain.announcement.dto.request.AnnouncementUpdateRequest;
11+
import com.sponus.sponusbe.domain.announcement.dto.response.AnnouncementCreateResponse;
12+
import com.sponus.sponusbe.domain.announcement.dto.response.AnnouncementResponse;
13+
import com.sponus.sponusbe.domain.announcement.dto.response.AnnouncementUpdateResponse;
1114
import com.sponus.sponusbe.domain.announcement.entity.Announcement;
15+
import com.sponus.sponusbe.domain.announcement.entity.enums.AnnouncementStatus;
1216
import com.sponus.sponusbe.domain.announcement.exception.AnnouncementErrorCode;
1317
import com.sponus.sponusbe.domain.announcement.exception.AnnouncementException;
1418
import com.sponus.sponusbe.domain.announcement.repository.AnnouncementRepository;
@@ -39,6 +43,13 @@ public AnnouncementResponse getAnnouncement(Long announcementId) {
3943
return AnnouncementResponse.from(announcement);
4044
}
4145

46+
public List<AnnouncementResponse> getListAnnouncement(AnnouncementStatus status) {
47+
List<Announcement> announcements = announcementRepository.findByStatus(status);
48+
return announcements.stream()
49+
.map(AnnouncementResponse::from)
50+
.collect(Collectors.toList());
51+
}
52+
4253
public void deleteAnnouncement(Organization organization, Long announcementId) {
4354
final Announcement announcement = announcementRepository.findById(announcementId)
4455
.orElseThrow(() -> new AnnouncementException(AnnouncementErrorCode.ANNOUNCEMENT_NOT_FOUND));

0 commit comments

Comments
 (0)