Skip to content

Commit ef8a1c2

Browse files
committed
feat : 바우처 도메인 관련 json, xml, thymeleaf 지원
1 parent 6fd1b4a commit ef8a1c2

35 files changed

+515
-27
lines changed

pom.xml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,25 @@
5757
<artifactId>h2</artifactId>
5858
<scope>test</scope>
5959
</dependency>
60+
61+
<dependency>
62+
<groupId>org.springframework.boot</groupId>
63+
<artifactId>spring-boot-starter-thymeleaf</artifactId>
64+
</dependency>
65+
66+
<dependency>
67+
<groupId>org.springframework.boot</groupId>
68+
<artifactId>spring-boot-starter-web</artifactId>
69+
</dependency>
70+
71+
<dependency>
72+
<groupId>com.fasterxml.jackson.dataformat</groupId>
73+
<artifactId>jackson-dataformat-xml</artifactId>
74+
</dependency>
75+
<dependency>
76+
<groupId>jakarta.xml.bind</groupId>
77+
<artifactId>jakarta.xml.bind-api</artifactId>
78+
</dependency>
6079
</dependencies>
6180

6281
<build>

restrequest/json-request.http

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
GET http://localhost:8080/api/json/v1/vouchers
2+
3+
###
4+
5+
GET http://localhost:8080/api/json/v1/vouchers/search?startDate=2023-07-16T00:00:00&endDate=2023-07-19T23:59:59&
6+
discountType=fixed
7+
8+
###
9+
10+
POST http://localhost:8080/api/json/v1/vouchers
11+
Content-Type: application/json
12+
13+
{
14+
"discountType": "fixed",
15+
"discountStringValue": "123"
16+
}
17+
18+
###
19+
20+
DELETE http://localhost:8080/api/json/v1/vouchers/f3ac7182-4f80-470a-99e7-478c29c41b0f
21+
22+
###
23+
24+
GET http://localhost:8080/api/json/v1/vouchers/cc295caf-cdb1-4fe6-8360-a2149a74f1b9
25+
26+
###

restrequest/xml-request.http

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
GET http://localhost:8080/api/xml/v1/vouchers
2+
3+
###
4+
5+
GET http://localhost:8080/api/xml/v1/vouchers/search?startDate=2023-07-16T00:00:00&endDate=2023-07-19T23:59:59&
6+
discountType=fixed
7+
8+
###
9+
10+
POST http://localhost:8080/api/xml/v1/vouchers
11+
Content-Type: application/xml
12+
13+
<VoucherRequest>
14+
<discountType>fixed</discountType>
15+
<discountStringValue>123</discountStringValue>
16+
</VoucherRequest>
17+
18+
###
19+
20+
DELETE http://localhost:8080/api/xml/v1/vouchers/ea50d33d-d668-4dcd-b2b2-980b184ff003
21+
22+
###
23+
24+
GET http://localhost:8080/api/xml/v1/vouchers/fef87c80-ee1c-4aca-bf14-375930aff54c
25+
26+
###

src/main/java/com/prgmrs/voucher/controller/BlacklistController.java renamed to src/main/java/com/prgmrs/voucher/controller/console/BlacklistController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.prgmrs.voucher.controller;
1+
package com.prgmrs.voucher.controller.console;
22

3-
import com.prgmrs.voucher.dto.ResponseDTO;
3+
import com.prgmrs.voucher.controller.console.wrapper.ResponseDTO;
44
import com.prgmrs.voucher.enums.StatusCode;
55
import com.prgmrs.voucher.exception.WrongRangeFormatException;
66
import com.prgmrs.voucher.service.BlacklistService;

src/main/java/com/prgmrs/voucher/controller/UserController.java renamed to src/main/java/com/prgmrs/voucher/controller/console/UserController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.prgmrs.voucher.controller;
1+
package com.prgmrs.voucher.controller.console;
22

3-
import com.prgmrs.voucher.dto.ResponseDTO;
3+
import com.prgmrs.voucher.controller.console.wrapper.ResponseDTO;
44
import com.prgmrs.voucher.dto.request.UserRequest;
55
import com.prgmrs.voucher.dto.request.VoucherIdRequest;
66
import com.prgmrs.voucher.enums.StatusCode;

src/main/java/com/prgmrs/voucher/controller/VoucherController.java renamed to src/main/java/com/prgmrs/voucher/controller/console/VoucherController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.prgmrs.voucher.controller;
1+
package com.prgmrs.voucher.controller.console;
22

3-
import com.prgmrs.voucher.dto.ResponseDTO;
3+
import com.prgmrs.voucher.controller.console.wrapper.ResponseDTO;
44
import com.prgmrs.voucher.dto.request.UsernameRequest;
55
import com.prgmrs.voucher.dto.request.VoucherRequest;
66
import com.prgmrs.voucher.enums.StatusCode;

src/main/java/com/prgmrs/voucher/controller/WalletController.java renamed to src/main/java/com/prgmrs/voucher/controller/console/WalletController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.prgmrs.voucher.controller;
1+
package com.prgmrs.voucher.controller.console;
22

3-
import com.prgmrs.voucher.dto.ResponseDTO;
3+
import com.prgmrs.voucher.controller.console.wrapper.ResponseDTO;
44
import com.prgmrs.voucher.dto.request.AssignVoucherRequest;
55
import com.prgmrs.voucher.dto.request.RemoveVoucherRequest;
66
import com.prgmrs.voucher.enums.StatusCode;

src/main/java/com/prgmrs/voucher/dto/ResponseDTO.java renamed to src/main/java/com/prgmrs/voucher/controller/console/wrapper/ResponseDTO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.prgmrs.voucher.dto;
1+
package com.prgmrs.voucher.controller.console.wrapper;
22

33
import com.prgmrs.voucher.enums.StatusCode;
44

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.prgmrs.voucher.controller.json;
2+
3+
import com.prgmrs.voucher.dto.request.VoucherIdRequest;
4+
import com.prgmrs.voucher.dto.request.VoucherRequest;
5+
import com.prgmrs.voucher.dto.request.VoucherSearchRequest;
6+
import com.prgmrs.voucher.dto.response.RemoveResponse;
7+
import com.prgmrs.voucher.dto.response.VoucherListResponse;
8+
import com.prgmrs.voucher.dto.response.VoucherResponse;
9+
import com.prgmrs.voucher.service.VoucherService;
10+
import org.springframework.http.ResponseEntity;
11+
import org.springframework.web.bind.annotation.*;
12+
13+
@RestController
14+
@RequestMapping("/api/json/v1")
15+
public class VoucherJsonController {
16+
17+
private final VoucherService voucherService;
18+
19+
public VoucherJsonController(VoucherService voucherService) {
20+
this.voucherService = voucherService;
21+
}
22+
23+
@GetMapping("/vouchers")
24+
public ResponseEntity<VoucherListResponse> findAll() {
25+
return ResponseEntity.ok(voucherService.findAll());
26+
}
27+
28+
@GetMapping("/vouchers/search")
29+
public ResponseEntity<VoucherListResponse> findByCreationTimeAndDiscountType(VoucherSearchRequest voucherSearchRequest) {
30+
return ResponseEntity.ok(voucherService.findByCreationTimeAndDiscountType(voucherSearchRequest));
31+
}
32+
33+
@PostMapping("/vouchers")
34+
public ResponseEntity<VoucherResponse> createVoucher(@RequestBody VoucherRequest voucherRequest) {
35+
return ResponseEntity.ok(voucherService.createVoucher(voucherRequest));
36+
}
37+
38+
@DeleteMapping("/vouchers/{voucherId}")
39+
public ResponseEntity<RemoveResponse> removeVoucher(@PathVariable("voucherId") VoucherIdRequest voucherIdRequest) {
40+
return ResponseEntity.ok(voucherService.removeVoucher(voucherIdRequest));
41+
}
42+
43+
@GetMapping("/vouchers/{voucherId}")
44+
public ResponseEntity<VoucherResponse> findById(@PathVariable("voucherId") VoucherIdRequest voucherIdRequest) {
45+
return ResponseEntity.ok(voucherService.findById(voucherIdRequest));
46+
}
47+
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package com.prgmrs.voucher.controller.mvc;
2+
3+
import com.prgmrs.voucher.controller.mvc.dto.VoucherMvcCreateRequest;
4+
import com.prgmrs.voucher.controller.mvc.dto.VoucherMvcRemoveRequest;
5+
import com.prgmrs.voucher.dto.request.VoucherIdRequest;
6+
import com.prgmrs.voucher.dto.request.VoucherRequest;
7+
import com.prgmrs.voucher.dto.response.VoucherListResponse;
8+
import com.prgmrs.voucher.model.Voucher;
9+
import com.prgmrs.voucher.service.VoucherService;
10+
import org.springframework.stereotype.Controller;
11+
import org.springframework.ui.Model;
12+
import org.springframework.web.bind.annotation.GetMapping;
13+
import org.springframework.web.bind.annotation.ModelAttribute;
14+
import org.springframework.web.bind.annotation.PostMapping;
15+
import org.springframework.web.bind.annotation.RequestMapping;
16+
17+
import java.util.List;
18+
19+
@Controller
20+
@RequestMapping("/vouchers")
21+
public class VoucherMvcController {
22+
private final VoucherService voucherService;
23+
24+
public VoucherMvcController(VoucherService voucherService) {
25+
this.voucherService = voucherService;
26+
}
27+
28+
@GetMapping("/")
29+
public String showMainPage() {
30+
return "voucher-main";
31+
}
32+
33+
@GetMapping("/list")
34+
public String showListPage(Model model) {
35+
VoucherListResponse voucherListResponse = voucherService.findAll();
36+
List<Voucher> voucherList = voucherListResponse.voucherList();
37+
model.addAttribute("voucherList", voucherList);
38+
return "voucher-list";
39+
}
40+
41+
@GetMapping("/create")
42+
public String showCreatePage(Model model) {
43+
model.addAttribute("voucherCreateRequest", new VoucherMvcCreateRequest());
44+
return "voucher-create";
45+
}
46+
47+
@PostMapping("/create")
48+
public String createVoucher(@ModelAttribute VoucherMvcCreateRequest voucherMvcCreateRequest) {
49+
voucherService.createVoucher(new VoucherRequest(voucherMvcCreateRequest.getDiscountType(), voucherMvcCreateRequest.getDiscountStringValue()));
50+
return "voucher-request-success";
51+
}
52+
53+
@GetMapping("/remove")
54+
public String showRemovePage(Model model) {
55+
VoucherListResponse voucherListResponse = voucherService.findAll();
56+
List<Voucher> voucherList = voucherListResponse.voucherList();
57+
model.addAttribute("voucherList", voucherList);
58+
model.addAttribute("voucherRemoveRequest", new VoucherMvcRemoveRequest());
59+
return "voucher-remove";
60+
}
61+
62+
@PostMapping("/remove")
63+
public String removeVoucher(@ModelAttribute VoucherMvcRemoveRequest voucherMvcRemoveRequest) {
64+
voucherService.removeVoucher(new VoucherIdRequest(voucherMvcRemoveRequest.getVoucherId()));
65+
return "voucher-request-success";
66+
}
67+
}

0 commit comments

Comments
 (0)