-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
[Feat] 필수 API 생성
- Loading branch information
Showing
33 changed files
with
703 additions
and
18 deletions.
There are no files selected for viewing
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
64 changes: 64 additions & 0 deletions
64
src/main/java/zerobibim/flory/domain/flower/controller/FlowerController.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,64 @@ | ||
package zerobibim.flory.domain.flower.controller; | ||
|
||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.tags.Tag; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.web.bind.annotation.*; | ||
import zerobibim.flory.domain.flower.dto.request.FlowerCreateReqeust; | ||
import zerobibim.flory.domain.flower.dto.request.FlowerUpdateRequest; | ||
import zerobibim.flory.domain.flower.dto.response.FlowerDetailResponse; | ||
import zerobibim.flory.domain.flower.dto.response.FlowerIdResponse; | ||
import zerobibim.flory.domain.flower.service.FlowerService; | ||
import zerobibim.flory.global.common.ApiPayload.ApiResponse; | ||
|
||
import java.util.List; | ||
|
||
@Tag(name = "Flower API", description = "꽃 관련 API") | ||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/flowers") | ||
public class FlowerController { | ||
private final FlowerService flowerService; | ||
|
||
/** | ||
* 새로운 꽃을 생성합니다. | ||
* @param reqeust 새로운 꽃을 생성하기 위한 DTO입니다. | ||
* @return 생성된 꽃의 id가 반환됩니다. | ||
*/ | ||
@PostMapping | ||
@Operation(summary = "꽃 생성 API") | ||
public ApiResponse<FlowerIdResponse> createFlower(@RequestBody FlowerCreateReqeust reqeust) { | ||
return ApiResponse.onSuccess(flowerService.createFlower(reqeust)); | ||
} | ||
|
||
/** | ||
* 꽃 정보를 업데이트합니다. | ||
* @param request 업데이트할 꽃 정보에 대한 DTO입니다. | ||
* @return 업데이트된 꽃의 id가 반환됩니다. | ||
*/ | ||
@PostMapping("/update") | ||
@Operation(summary = "꽃 수정 API") | ||
public ApiResponse<FlowerIdResponse> updateFlower(@RequestBody FlowerUpdateRequest request) { | ||
return ApiResponse.onSuccess(flowerService.updateFlower(request)); | ||
} | ||
|
||
/** | ||
* 꽃 전체 정보를 조회합니다. | ||
* @return 꽃 전체 정보를 리스트로 반환합니다. | ||
*/ | ||
@GetMapping | ||
@Operation(summary = "꽃 전체 조회 API") | ||
public ApiResponse<List<FlowerDetailResponse>> findAllFlower() { | ||
return ApiResponse.onSuccess(flowerService.findAllFlower()); | ||
} | ||
|
||
/** | ||
* 꽃 상세 정보를 조회합니다. | ||
* @return 해당 꽃 상세 정보를 반환합니다. | ||
*/ | ||
@GetMapping("/detail") | ||
@Operation(summary = "꽃 상세 조회 API") | ||
public ApiResponse<FlowerDetailResponse> findFlowerDetail(@RequestParam Long flowerId) { | ||
return ApiResponse.onSuccess(flowerService.findFlowerDetail(flowerId)); | ||
} | ||
} |
12 changes: 12 additions & 0 deletions
12
src/main/java/zerobibim/flory/domain/flower/dto/request/FlowerCreateReqeust.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,12 @@ | ||
package zerobibim.flory.domain.flower.dto.request; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
|
||
@Getter | ||
@AllArgsConstructor | ||
public class FlowerCreateReqeust { | ||
private String name; | ||
private String description; | ||
private Long price; | ||
} |
12 changes: 12 additions & 0 deletions
12
src/main/java/zerobibim/flory/domain/flower/dto/request/FlowerUpdateRequest.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,12 @@ | ||
package zerobibim.flory.domain.flower.dto.request; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
|
||
@Getter | ||
@AllArgsConstructor | ||
public class FlowerUpdateRequest { | ||
private Long flowerId; | ||
private String description; | ||
private Long price; | ||
} |
13 changes: 13 additions & 0 deletions
13
src/main/java/zerobibim/flory/domain/flower/dto/response/FlowerDetailResponse.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 zerobibim.flory.domain.flower.dto.response; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
|
||
@Getter | ||
@AllArgsConstructor | ||
public class FlowerDetailResponse { | ||
private Long flowerId; | ||
private String name; | ||
private String description; | ||
private Long price; | ||
} |
10 changes: 10 additions & 0 deletions
10
src/main/java/zerobibim/flory/domain/flower/dto/response/FlowerIdResponse.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,10 @@ | ||
package zerobibim.flory.domain.flower.dto.response; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
|
||
@Getter | ||
@AllArgsConstructor | ||
public class FlowerIdResponse { | ||
private Long FlowerId; | ||
} |
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
20 changes: 20 additions & 0 deletions
20
src/main/java/zerobibim/flory/domain/flower/mapper/FlowerMapper.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,20 @@ | ||
package zerobibim.flory.domain.flower.mapper; | ||
|
||
import org.springframework.stereotype.Component; | ||
import zerobibim.flory.domain.flower.dto.response.FlowerDetailResponse; | ||
import zerobibim.flory.domain.flower.entity.Flower; | ||
|
||
@Component | ||
public class FlowerMapper { | ||
public Flower toEntity(String name, String description, Long price) { | ||
return Flower.builder() | ||
.name(name) | ||
.description(description) | ||
.price(price) | ||
.build(); | ||
} | ||
|
||
public FlowerDetailResponse toResponse(Flower flower) { | ||
return new FlowerDetailResponse(flower.getId(), flower.getName(), flower.getDescription(), flower.getPrice()); | ||
} | ||
} |
75 changes: 75 additions & 0 deletions
75
src/main/java/zerobibim/flory/domain/flower/repository/FlowerInitializer.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,75 @@ | ||
package zerobibim.flory.domain.flower.repository; | ||
|
||
import jakarta.annotation.PostConstruct; | ||
import org.springframework.stereotype.Component; | ||
import zerobibim.flory.domain.flower.entity.Flower; | ||
/* | ||
@Component | ||
public class FlowerInitializer { | ||
private final FlowerRepository flowerRepository; | ||
public FlowerInitializer(FlowerRepository flowerRepository) { | ||
this.flowerRepository = flowerRepository; | ||
} | ||
@PostConstruct | ||
public void init() { | ||
// 데이터 작성 | ||
flowerRepository.save(Flower.builder() | ||
.name("빨간 장미") | ||
.description("열정, 기쁨, 완전한 아름다움, 욕망, 절정, 열렬한 사랑") | ||
.price(1500L) | ||
.build()); | ||
flowerRepository.save(Flower.builder() | ||
.name("분홍 장미") | ||
.description("사랑의 맹세, 우아함, 행복한 사랑, 감명") | ||
.price(1500L) | ||
.build()); | ||
flowerRepository.save(Flower.builder() | ||
.name("주황 장미") | ||
.description("꽃말 수줍음, 첫사랑의 고백") | ||
.price(1500L) | ||
.build()); | ||
flowerRepository.save(Flower.builder() | ||
.name("노란 장미") | ||
.description("완벽한 성취,질투,시기") | ||
.price(1000L) | ||
.build()); | ||
flowerRepository.save(Flower.builder() | ||
.name("빨간 튤립") | ||
.description("사랑의 고백, 사랑의 표현") | ||
.price(1500L) | ||
.build()); | ||
flowerRepository.save(Flower.builder() | ||
.name("보라색 튤립") | ||
.description("영원한 사랑") | ||
.price(1500L) | ||
.build()); | ||
flowerRepository.save(Flower.builder() | ||
.name("노란 튤립") | ||
.description("바라볼 수 없는 사랑, 헛된 사랑") | ||
.price(1500L) | ||
.build()); | ||
flowerRepository.save(Flower.builder() | ||
.name("프리지아") | ||
.description("천진난만, 자기자랑, 청함") | ||
.price(2000L) | ||
.build()); | ||
flowerRepository.save(Flower.builder() | ||
.name("무궁화") | ||
.description("일편단심, 영원, 미묘한 아름다움, 섬세한 아름다움") | ||
.price(2000L) | ||
.build()); | ||
flowerRepository.save(Flower.builder() | ||
.name("코스모스") | ||
.description("순정") | ||
.price(2000L) | ||
.build()); | ||
flowerRepository.save(Flower.builder() | ||
.name("물망초") | ||
.description("진실한 사랑, 나를 잊지 마세요") | ||
.price(2000L) | ||
.build()); | ||
} | ||
} | ||
*/ |
16 changes: 16 additions & 0 deletions
16
src/main/java/zerobibim/flory/domain/flower/repository/FlowerRepository.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,16 @@ | ||
package zerobibim.flory.domain.flower.repository; | ||
|
||
import zerobibim.flory.domain.flower.entity.Flower; | ||
|
||
import java.util.List; | ||
import java.util.Optional; | ||
|
||
public interface FlowerRepository { | ||
|
||
Flower save(Flower flower); | ||
Optional<Flower> findFlowerById(Long id); | ||
|
||
Boolean existsFlowerByName(String name); | ||
|
||
List<Flower> findAll(); | ||
} |
9 changes: 9 additions & 0 deletions
9
src/main/java/zerobibim/flory/domain/flower/repository/JpaFlowerRepository.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,9 @@ | ||
package zerobibim.flory.domain.flower.repository; | ||
|
||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import zerobibim.flory.domain.flower.entity.Flower; | ||
|
||
import java.util.List; | ||
|
||
public interface JpaFlowerRepository extends JpaRepository<Flower, Long>, FlowerRepository { | ||
} |
62 changes: 62 additions & 0 deletions
62
src/main/java/zerobibim/flory/domain/flower/service/FlowerService.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,62 @@ | ||
package zerobibim.flory.domain.flower.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.transaction.annotation.Transactional; | ||
import zerobibim.flory.domain.flower.dto.request.FlowerCreateReqeust; | ||
import zerobibim.flory.domain.flower.dto.request.FlowerUpdateRequest; | ||
import zerobibim.flory.domain.flower.dto.response.FlowerDetailResponse; | ||
import zerobibim.flory.domain.flower.dto.response.FlowerIdResponse; | ||
import zerobibim.flory.domain.flower.entity.Flower; | ||
import zerobibim.flory.domain.flower.mapper.FlowerMapper; | ||
import zerobibim.flory.domain.flower.repository.FlowerRepository; | ||
import zerobibim.flory.global.common.ApiPayload.code.status.ErrorStatus; | ||
import zerobibim.flory.global.common.EntityLoader; | ||
import zerobibim.flory.global.common.ExceptionHandler; | ||
|
||
import java.util.List; | ||
import java.util.Optional; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
public class FlowerService implements EntityLoader<Flower, Long> { | ||
private final FlowerRepository flowerRepository; | ||
private final FlowerMapper flowerMapper; | ||
|
||
public FlowerIdResponse createFlower(FlowerCreateReqeust reqeust) { | ||
// 중복 꽃 여부 확인 | ||
if(flowerRepository.existsFlowerByName(reqeust.getName())) | ||
throw new ExceptionHandler(ErrorStatus.FLOWER_EXISTED); | ||
|
||
Flower newflower = flowerRepository.save( | ||
flowerMapper.toEntity(reqeust.getName() | ||
, reqeust.getDescription() | ||
, reqeust.getPrice())); | ||
|
||
return new FlowerIdResponse(newflower.getId()); | ||
} | ||
|
||
@Transactional | ||
public FlowerIdResponse updateFlower(FlowerUpdateRequest request) { | ||
// 꽃 존재 여부 확인 | ||
Flower flower = loadEntity(request.getFlowerId()); | ||
|
||
flower.update(request.getDescription(), request.getPrice()); | ||
return new FlowerIdResponse(flower.getId()); | ||
} | ||
|
||
public List<FlowerDetailResponse> findAllFlower() { | ||
return flowerRepository.findAll().stream().map(flowerMapper::toResponse).toList(); | ||
} | ||
|
||
public FlowerDetailResponse findFlowerDetail(Long flowerId) { | ||
return flowerMapper.toResponse(loadEntity(flowerId)); | ||
} | ||
|
||
@Override | ||
public Flower loadEntity(Long id) { | ||
Optional<Flower> flower = flowerRepository.findFlowerById(id); | ||
if(flower.isEmpty()) throw new ExceptionHandler(ErrorStatus.FLOWER_NOT_FOUND); | ||
return flower.get(); | ||
} | ||
} |
44 changes: 44 additions & 0 deletions
44
src/main/java/zerobibim/flory/domain/member/controller/MemberController.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,44 @@ | ||
package zerobibim.flory.domain.member.controller; | ||
|
||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.tags.Tag; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
import zerobibim.flory.domain.member.dto.request.MemberSignInRequest; | ||
import zerobibim.flory.domain.member.dto.request.MemberSignUpRequest; | ||
import zerobibim.flory.domain.member.dto.response.MemberIdResponse; | ||
import zerobibim.flory.domain.member.service.MemberService; | ||
import zerobibim.flory.global.common.ApiPayload.ApiResponse; | ||
|
||
@Tag(name = " Member API", description = "멤버 관련 API") | ||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/members") | ||
public class MemberController { | ||
private final MemberService memberService; | ||
|
||
/** | ||
* 회원가입 : 새로운 멤버를 생성합니다. | ||
* @param request 새로운 멤버를 생성하기 위한 DTO입니다. | ||
* @return 생성된 멤버의 id가 반환됩니다. | ||
*/ | ||
@PostMapping | ||
@Operation(summary = "회원가입 API") | ||
public ApiResponse<MemberIdResponse> singUpMember(@RequestBody MemberSignUpRequest request) { | ||
return ApiResponse.onSuccess(memberService.createMember(request)); | ||
} | ||
|
||
/** | ||
* 로그인 : 가입이 된 상태라면 로그인 수행 | ||
* @param request 로그인을 하기 위한 DTO입니다. | ||
* @return 기존의 멤버의 id가 반환됩니다. | ||
*/ | ||
@PostMapping("/login") | ||
@Operation(summary = "로그인 API") | ||
public ApiResponse<MemberIdResponse> signInMember(@RequestBody MemberSignInRequest request) { | ||
return ApiResponse.onSuccess(memberService.checkMember(request)); | ||
} | ||
} |
11 changes: 11 additions & 0 deletions
11
src/main/java/zerobibim/flory/domain/member/dto/request/MemberSignInRequest.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,11 @@ | ||
package zerobibim.flory.domain.member.dto.request; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
|
||
@Getter | ||
@AllArgsConstructor | ||
public class MemberSignInRequest { | ||
private String email; | ||
private String password; | ||
} |
Oops, something went wrong.