Skip to content

[5기 - 이수진] SpringBoot Part3 Weekly Mission 제출합니다. #968

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: ssssujini99
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ dependencies {
// h2
testImplementation 'com.h2database:h2'

// web
implementation 'org.springframework.boot:spring-boot-starter-web'

implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.7.1'
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
}
Expand Down
4 changes: 4 additions & 0 deletions logs/log
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
2023-10-30 02:24:32.165 ERROR 99525 --- [main] c.p.v.infra.input.BufferedReaderImpl : input type은 [list, create, exit] 중 하나이어야 합니다.

2023-10-30 02:24:35.241 ERROR 99525 --- [main] c.p.v.infra.input.BufferedReaderImpl : input type은 [list, create, exit] 중 하나이어야 합니다.

Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public CustomersResponse findAll() {
return toCustomersResponse(customerDtoList);
}

// 별도의 클래스로 빼서 static 메서드로 관리하면 깔끔할듯
private static CustomersResponse toCustomersResponse(List<CustomerDto> customerDtoList) {
List<CustomerResponse> customerResponses = customerDtoList.stream()
.map(it -> new CustomerResponse(it.getId(), it.getName(), it.getEmail()))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.prgrms.vouchermanagement.core.voucher.controller;

import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreateRequest;
import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherCreateResponse;
import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherDeleteResponse;
import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherResponse;
import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse;
import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto;

import java.util.List;
import java.util.stream.Collectors;

public class Mapper {

public static VouchersResponse toVouchersResponse(List<VoucherDto> voucherDtoList) {
List<VoucherResponse> voucherResponseList = voucherDtoList.stream()
.map(it -> new VoucherResponse(it.getId(), it.getName(), it.getAmount(), it.getVoucherType()))
.collect(Collectors.toList());
return new VouchersResponse(voucherResponseList);
}

public static VoucherCreateResponse toVoucherCreationResponse(VoucherDto voucherDto) {
return new VoucherCreateResponse(voucherDto.getId(), voucherDto.getName(), voucherDto.getAmount(), voucherDto.getVoucherType().toString());
}

public static VoucherDto toVoucherDto(VoucherCreateRequest voucherCreateRequest) {
return new VoucherDto(voucherCreateRequest.getName(), voucherCreateRequest.getAmount(), voucherCreateRequest.getVoucherType());
}

public static VoucherResponse toVoucherResponse(VoucherDto voucherDto) {
return new VoucherResponse(voucherDto.getId(),voucherDto.getName(), voucherDto.getAmount(), voucherDto.getVoucherType());
}

public static VoucherDeleteResponse toVoucherDeleteResponse(String id) {
return new VoucherDeleteResponse(id);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package com.prgrms.vouchermanagement.core.voucher.controller.api;

import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreateRequest;
import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherCreateResponse;
import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherDeleteResponse;
import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherResponse;
import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse;
import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto;
import com.prgrms.vouchermanagement.core.voucher.service.VoucherService;
import org.springframework.context.annotation.Profile;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

import static com.prgrms.vouchermanagement.core.voucher.controller.Mapper.*;


@Profile("prod")
@RestController
@RequestMapping("/api/vouchers")
public class ApiVoucherController {

private final VoucherService voucherService;

public ApiVoucherController(VoucherService voucherService) {
this.voucherService = voucherService;
}

/**
* 바우처 전체 조회 + 타입 별 필터링
*
* @return
*/
@GetMapping
public ResponseEntity<VouchersResponse> getVouchers(@RequestParam(name = "voucherType", defaultValue = "all") String voucherType) {
if (voucherType.equals("all")) {
List<VoucherDto> voucherDtoList = voucherService.findAll();
return ResponseEntity.ok(toVouchersResponse(voucherDtoList));
}
List<VoucherDto> voucherDtoList = voucherService.findByVoucherType(voucherType);
return ResponseEntity.ok(toVouchersResponse(voucherDtoList));
}

/**
* 바우처 추가
*
* @param voucherCreateRequest
* @return
*/
@PostMapping
public ResponseEntity<VoucherCreateResponse> create(@RequestBody VoucherCreateRequest voucherCreateRequest) {
VoucherDto voucherDto = voucherService.create(toVoucherDto(voucherCreateRequest));
return ResponseEntity.ok(toVoucherCreationResponse(voucherDto));
}

/**
* 바우처 단일 조회
*
* @param voucherId
* @return
*/
@GetMapping("/{voucherId}")
public ResponseEntity<VoucherResponse> getVoucher(@PathVariable String voucherId) {
VoucherDto voucherDto = voucherService.getVoucher(voucherId);
return ResponseEntity.ok(toVoucherResponse(voucherDto));
}

/**
* 바우처 삭제
*
* @param voucherId
* @return
*/
@DeleteMapping("/{voucherId}")
public ResponseEntity<VoucherDeleteResponse> deleteVoucher(@PathVariable String voucherId) {
String id = voucherService.deleteById(voucherId);
return ResponseEntity.ok(toVoucherDeleteResponse(id));
}

}
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
package com.prgrms.vouchermanagement.core.voucher.controller;
package com.prgrms.vouchermanagement.core.voucher.controller.console;

import com.prgrms.vouchermanagement.core.voucher.controller.request.VoucherCreateRequest;
import com.prgrms.vouchermanagement.core.voucher.controller.response.VoucherResponse;
import com.prgrms.vouchermanagement.core.voucher.controller.response.VouchersResponse;
import com.prgrms.vouchermanagement.core.voucher.domain.VoucherType;
import com.prgrms.vouchermanagement.core.voucher.dto.VoucherDto;
import com.prgrms.vouchermanagement.core.voucher.service.VoucherService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Controller;

import java.util.List;
import java.util.stream.Collectors;

import static com.prgrms.vouchermanagement.core.voucher.controller.Mapper.toVouchersResponse;

@Profile("dev")
@Controller
public class VoucherController {
public class ConsoleVoucherController {

private final VoucherService voucherService;

@Autowired
public VoucherController(VoucherService voucherService) {
public ConsoleVoucherController(VoucherService voucherService) {
this.voucherService = voucherService;
}

Expand All @@ -39,11 +41,4 @@ public VouchersResponse getAllVoucher() {
List<VoucherDto> voucherDtoList = voucherService.findAll();
return toVouchersResponse(voucherDtoList);
}

private static VouchersResponse toVouchersResponse(List<VoucherDto> voucherDtoList) {
List<VoucherResponse> voucherResponseList = voucherDtoList.stream()
.map(it -> new VoucherResponse(it.getId(), it.getName(), it.getAmount(), it.getVoucherType()))
.collect(Collectors.toList());
return new VouchersResponse(voucherResponseList);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.prgrms.vouchermanagement.core.voucher.controller.response;

public class VoucherCreateResponse {

private String id;
private String name;
private long amount;
private String voucherType;

public VoucherCreateResponse() {
}

public VoucherCreateResponse(String id, String name, long amount, String voucherType) {
this.id = id;
this.name = name;
this.amount = amount;
this.voucherType = voucherType;
}

public String getId() {
return id;
}

public String getName() {
return name;
}

public long getAmount() {
return amount;
}

public String getVoucherType() {
return voucherType;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.prgrms.vouchermanagement.core.voucher.controller.response;

public class VoucherDeleteResponse {

private String id;

public VoucherDeleteResponse() {
}

public VoucherDeleteResponse(String id) {
this.id = id;
}

public String getId() {
return id;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@

public class VoucherResponse {

private final String id;
private final String name;
private final long amount;
private final VoucherType voucherType;
private String id;
private String name;
private long amount;
private VoucherType voucherType;

public VoucherResponse() {
}

public VoucherResponse(String id, String name, long amount, VoucherType voucherType) {
this.id = id;
Expand All @@ -16,6 +19,22 @@ public VoucherResponse(String id, String name, long amount, VoucherType voucherT
this.voucherType = voucherType;
}

public String getId() {
return id;
}

public String getName() {
return name;
}

public long getAmount() {
return amount;
}

public VoucherType getVoucherType() {
return voucherType;
}

@Override
public String toString() {
return "Voucher = {" +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@

public class VouchersResponse {

private final List<VoucherResponse> voucherResponses;
private List<VoucherResponse> voucherResponses;

public VouchersResponse() {
}

public VouchersResponse(List<VoucherResponse> voucherResponses) {
this.voucherResponses = voucherResponses;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@ public VoucherDto(String name, long amount, VoucherType voucherType) {
this.voucherType = voucherType;
}

public VoucherDto(String name, long amount, String voucherType) {
this.name = name;
this.amount = amount;
this.voucherType = VoucherType.getType(voucherType);
}

public String getId() {
return id;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@ public interface VoucherRepository {
Optional<Voucher> findById(String id);

List<Voucher> findAllByIds(List<String> idList);

void deleteById(String id);
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,8 @@ public Optional<Voucher> findById(String id) {
public List<Voucher> findAllByIds(List<String> idList) {
return null;
}

@Override
public void deleteById(String id) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,12 @@ public List<Voucher> findAllByIds(List<String> idList) {

return jdbcTemplate.query(sql, idList.toArray(), voucherRowMapper);
}

@Override
public void deleteById(String id) {
int update = jdbcTemplate.update("DELETE FROM vouchers WHERE id = ?", id);
if (update != 1) {
throw new RuntimeException("Failed to delete the voucher with ID: " + id);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,8 @@ public Optional<Voucher> findById(String id) {
public List<Voucher> findAllByIds(List<String> idList) {
return null;
}

@Override
public void deleteById(String id) {
}
}
Loading