-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* modify: 지역으로 공간 조회 RequestBody CityRequestDto로 통일 * feat: 지역으로 북토크 리스트 조회 * fix: @transitional 추가 * fix: url과 Valid 설정
- Loading branch information
Showing
8 changed files
with
139 additions
and
8 deletions.
There are no files selected for viewing
27 changes: 27 additions & 0 deletions
27
src/main/java/org/sophy/sophy/controller/BooktalkController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package org.sophy.sophy.controller; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.sophy.sophy.common.dto.ApiResponseDto; | ||
import org.sophy.sophy.controller.dto.request.CityRequestDto; | ||
import org.sophy.sophy.controller.dto.response.BooktalkResponseDto; | ||
import org.sophy.sophy.exception.SuccessStatus; | ||
import org.sophy.sophy.service.BooktalkService; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
import javax.validation.Valid; | ||
import java.util.List; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("booktalk") | ||
public class BooktalkController { | ||
private final BooktalkService booktalkService; | ||
|
||
@GetMapping("/search") | ||
public ApiResponseDto<List<BooktalkResponseDto>> getPlacesByCity(@Valid @RequestBody CityRequestDto cityRequestDto) { | ||
return ApiResponseDto.success(SuccessStatus.GET_BOOKTALKS_BY_CITY_SUCCESS, booktalkService.getBooktalksByCity(cityRequestDto)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
37 changes: 37 additions & 0 deletions
37
src/main/java/org/sophy/sophy/controller/dto/response/BooktalkResponseDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package org.sophy.sophy.controller.dto.response; | ||
|
||
import lombok.AccessLevel; | ||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
import org.sophy.sophy.domain.Booktalk; | ||
import org.sophy.sophy.domain.PreliminaryInfo; | ||
|
||
import java.time.LocalDateTime; | ||
import java.util.ArrayList; | ||
|
||
@Getter | ||
@AllArgsConstructor(access = AccessLevel.PRIVATE) | ||
public class BooktalkResponseDto { | ||
private Long booktalkId; | ||
private Integer preliminaryInfo; | ||
private String title; | ||
private String author; | ||
private LocalDateTime startDate; | ||
private LocalDateTime endDate; | ||
private String place; | ||
private Integer participant; | ||
private Integer maximum; | ||
|
||
public static BooktalkResponseDto of(Booktalk booktalk) { | ||
return new BooktalkResponseDto( | ||
booktalk.getId(), | ||
booktalk.getPreliminaryInfo().ordinal(), | ||
booktalk.getTitle(), | ||
booktalk.getMember().getName(), | ||
booktalk.getStartDate(), | ||
booktalk.getEndDate(), | ||
booktalk.getPlace().getName(), | ||
booktalk.getParticipantList().size(), | ||
booktalk.getMaximum()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
13 changes: 13 additions & 0 deletions
13
src/main/java/org/sophy/sophy/infrastructure/BooktalkRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package org.sophy.sophy.infrastructure; | ||
|
||
import org.sophy.sophy.domain.Booktalk; | ||
import org.sophy.sophy.domain.City; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import org.springframework.stereotype.Repository; | ||
|
||
import java.util.List; | ||
|
||
@Repository | ||
public interface BooktalkRepository extends JpaRepository<Booktalk, Long> { | ||
|
||
} |
49 changes: 49 additions & 0 deletions
49
src/main/java/org/sophy/sophy/service/BooktalkService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package org.sophy.sophy.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.sophy.sophy.controller.dto.request.CityRequestDto; | ||
import org.sophy.sophy.controller.dto.response.BooktalkResponseDto; | ||
import org.sophy.sophy.domain.BooktalkStatus; | ||
import org.sophy.sophy.domain.City; | ||
import org.sophy.sophy.domain.Place; | ||
import org.sophy.sophy.infrastructure.PlaceRepository; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
import java.util.ArrayList; | ||
import java.util.Comparator; | ||
import java.util.List; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
public class BooktalkService { | ||
private final PlaceRepository placeRepository; | ||
|
||
@Transactional | ||
public List<BooktalkResponseDto> getBooktalksByCity(CityRequestDto cityRequestDto) { | ||
City city = cityRequestDto.getCity(); | ||
List<Place> placeList; | ||
|
||
if (city.equals(City.UIJEONGBU_SI)) { | ||
placeList = placeRepository.findAll(); | ||
} else { | ||
placeList = placeRepository.findAllByCity(city); | ||
} | ||
|
||
List<BooktalkResponseDto> booktalkList = new ArrayList<>(); | ||
placeList.forEach(place -> { | ||
place.getBooktalkList().forEach(booktalk -> { | ||
// 모집중인 북토크만 추가 | ||
if (booktalk.getBooktalkStatus() == BooktalkStatus.RECRUITING) { | ||
booktalkList.add(BooktalkResponseDto.of(booktalk)); | ||
} | ||
} | ||
); | ||
}); | ||
|
||
// 마감 임박순으로 정렬 | ||
booktalkList.sort(Comparator.comparing(BooktalkResponseDto::getEndDate)); | ||
|
||
return booktalkList; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters