Skip to content

Commit 246382b

Browse files
authored
Merge pull request #4 from AlgorithmChef/feature/fridge_domain
fridge domain 구현 완료 후 merge
2 parents e92d606 + 083ff0f commit 246382b

29 files changed

Lines changed: 1159 additions & 77 deletions
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.webservice.algorithmchef.controller;
2+
3+
import org.springframework.data.domain.Page;
4+
import org.springframework.http.ResponseEntity;
5+
import org.springframework.web.bind.annotation.GetMapping;
6+
import org.springframework.web.bind.annotation.RequestParam;
7+
import org.springframework.web.bind.annotation.RestController;
8+
9+
import com.webservice.algorithmchef.dto.ingredient.IngredientResponse;
10+
import com.webservice.algorithmchef.service.IngredientService;
11+
12+
import lombok.RequiredArgsConstructor;
13+
14+
@RestController
15+
@RequiredArgsConstructor
16+
public class IngredientController {
17+
18+
private final IngredientService ingredientService;
19+
20+
@GetMapping("/ingredients")
21+
public ResponseEntity<?> retrieveAll(@RequestParam(value="page",defaultValue = "0") int page,
22+
@RequestParam(value="size",defaultValue = "10") int size,
23+
@RequestParam(value="name",required = false)String name,
24+
@RequestParam(value="category",required = false)String category){
25+
try {
26+
Page<IngredientResponse> response = null;
27+
if(category != null) {
28+
response = ingredientService.filterByCategory(category,page, size);
29+
}else if(name != null) {
30+
response = ingredientService.filterByName(name, page, size);
31+
}else {
32+
response = ingredientService.retrieveAll(page, size);
33+
}
34+
return ResponseEntity.ok(response);
35+
}catch(IllegalArgumentException e) {
36+
return ResponseEntity.badRequest().body(e.getMessage());
37+
}
38+
39+
}
40+
41+
}
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
package com.webservice.algorithmchef.controller;
2+
3+
import org.springframework.http.HttpStatus;
4+
import org.springframework.http.ResponseEntity;
5+
import org.springframework.security.core.annotation.AuthenticationPrincipal;
6+
import org.springframework.security.core.userdetails.UserDetails;
7+
import org.springframework.web.bind.annotation.DeleteMapping;
8+
import org.springframework.web.bind.annotation.GetMapping;
9+
import org.springframework.web.bind.annotation.PatchMapping;
10+
import org.springframework.web.bind.annotation.PathVariable;
11+
import org.springframework.web.bind.annotation.PostMapping;
12+
import org.springframework.web.bind.annotation.RequestBody;
13+
import org.springframework.web.bind.annotation.RequestMapping;
14+
import org.springframework.web.bind.annotation.RequestParam;
15+
import org.springframework.web.bind.annotation.RestController;
16+
17+
import com.webservice.algorithmchef.dto.fridgeingredient.ChangeFridgeIngredientRequest;
18+
import com.webservice.algorithmchef.dto.fridgeingredient.ChangeFridgeIngredientResponse;
19+
import com.webservice.algorithmchef.dto.userfridge.FridgeBatchUpdateRequest;
20+
import com.webservice.algorithmchef.dto.userfridge.PageUserFridgeResponse;
21+
import com.webservice.algorithmchef.dto.userfridge.UserFridgeRequest;
22+
import com.webservice.algorithmchef.dto.userfridge.UserFridgeResponse;
23+
import com.webservice.algorithmchef.service.UserFridgeService;
24+
25+
import lombok.RequiredArgsConstructor;
26+
27+
@RestController
28+
@RequiredArgsConstructor
29+
@RequestMapping("/fridge")
30+
public class UserFridgeController {
31+
32+
private final UserFridgeService userFridgeService;
33+
34+
@PostMapping("/ingredient/register/manual")
35+
public ResponseEntity<?> registerIngredients(@RequestBody UserFridgeRequest fridgeRequest,
36+
@AuthenticationPrincipal UserDetails userDetails){
37+
try {
38+
String userId = userDetails.getUsername();
39+
UserFridgeResponse response = userFridgeService.addIngredients(userId, fridgeRequest);
40+
return ResponseEntity.status(HttpStatus.CREATED).body(response);
41+
}catch (IllegalArgumentException e) {
42+
return ResponseEntity.badRequest().body(e.getMessage());
43+
}
44+
}
45+
46+
@GetMapping("/ingredients")
47+
public ResponseEntity<?> retrieve(
48+
@RequestParam(value="category",required = false)String category,
49+
@RequestParam(value="name",required = false)String name,
50+
@RequestParam(value="page", defaultValue = "0")int page,
51+
@RequestParam(value="size", defaultValue = "10")int size,
52+
@AuthenticationPrincipal UserDetails userDetails){
53+
try {
54+
String userId = userDetails.getUsername();
55+
PageUserFridgeResponse response = null;
56+
if(category != null) {
57+
response = userFridgeService.filteredByCategory(userId, category, size, page);
58+
}else if(name != null) {
59+
response = userFridgeService.filteredByName(userId, name, size, page);
60+
}else {
61+
response = userFridgeService.retrieveAll(userId, size, page);
62+
}
63+
return ResponseEntity.ok(response);
64+
}catch(IllegalArgumentException e) {
65+
return ResponseEntity.badRequest().body(e.getMessage());
66+
}
67+
68+
}
69+
70+
@PatchMapping("/ingredient/update")
71+
public ResponseEntity<?> updatePurchasedDate(@RequestBody ChangeFridgeIngredientRequest request,
72+
@AuthenticationPrincipal UserDetails userDetails){
73+
try {
74+
String userId = userDetails.getUsername();
75+
ChangeFridgeIngredientResponse response = userFridgeService.updatePurchasedDate(userId, request);
76+
return ResponseEntity.ok(response);
77+
}catch(IllegalArgumentException e) {
78+
return ResponseEntity.badRequest().body(e.getMessage());
79+
}
80+
}
81+
82+
@DeleteMapping("/ingredient/{id}")
83+
public ResponseEntity<?> deleteIngredient(
84+
@AuthenticationPrincipal UserDetails userDetails,
85+
@PathVariable("id") Long fridgeIngredientId
86+
) {
87+
try {
88+
String userId = userDetails.getUsername();
89+
90+
userFridgeService.deleteIngredient(userId, fridgeIngredientId);
91+
92+
return ResponseEntity.ok("삭제 완료");
93+
94+
} catch (IllegalArgumentException e) {
95+
return ResponseEntity.badRequest().body(e.getMessage());
96+
}
97+
}
98+
99+
@PatchMapping("ingredients/register/update")
100+
public ResponseEntity<?> updateIngredientInformation(@RequestBody FridgeBatchUpdateRequest fRequest,
101+
@AuthenticationPrincipal UserDetails userDetails){
102+
try {
103+
String userId = userDetails.getUsername();
104+
UserFridgeResponse response = userFridgeService.updateIngredientInformation(userId, fRequest);
105+
return ResponseEntity.ok(response);
106+
107+
}catch(IllegalArgumentException e) {
108+
return ResponseEntity.badRequest().body(e.getMessage());
109+
}
110+
111+
}
112+
113+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.webservice.algorithmchef.dto.fridgeingredient;
2+
3+
import java.time.LocalDateTime;
4+
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
8+
@Getter
9+
@NoArgsConstructor
10+
public class ChangeFridgeIngredientRequest {
11+
12+
private Long ingredientId;
13+
private LocalDateTime purchasedDate;
14+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.webservice.algorithmchef.dto.fridgeingredient;
2+
3+
import com.webservice.algorithmchef.model.FridgeIngredient;
4+
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
8+
@Getter
9+
@NoArgsConstructor
10+
public class ChangeFridgeIngredientResponse {
11+
12+
private Long ingredientId;
13+
private String name;
14+
private String message;
15+
16+
public ChangeFridgeIngredientResponse(FridgeIngredient ingredient,String message) {
17+
this.ingredientId = ingredient.getId();
18+
this.name = ingredient.getIngredient().getName();
19+
this.message = message;
20+
}
21+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.webservice.algorithmchef.dto.fridgeingredient;
2+
3+
import java.time.LocalDateTime;
4+
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
import lombok.Setter;
8+
9+
@Getter
10+
@Setter
11+
@NoArgsConstructor
12+
public class FridgeIngredientRequest {
13+
14+
public String name;
15+
public LocalDateTime purchaseDate;
16+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.webservice.algorithmchef.dto.fridgeingredient;
2+
3+
import java.time.LocalDateTime;
4+
5+
import lombok.AllArgsConstructor;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
import lombok.Setter;
9+
10+
@Getter
11+
@Setter
12+
@NoArgsConstructor
13+
@AllArgsConstructor
14+
public class FridgeIngredientResponse {
15+
16+
private Long id;
17+
private String category;
18+
private String name;
19+
private LocalDateTime purchaseDate;
20+
private LocalDateTime expiredDate;
21+
private Long dDay;
22+
}
23+
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.webservice.algorithmchef.dto.fridgeingredient;
2+
3+
import java.time.LocalDateTime;
4+
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
import lombok.Setter;
8+
9+
@Getter
10+
@Setter
11+
@NoArgsConstructor
12+
public class FridgeIngredientUpdateItem {
13+
14+
private Long ingredientId;
15+
private String category;
16+
private String name;
17+
private LocalDateTime purchaseDate;
18+
private LocalDateTime expiredDate;
19+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.webservice.algorithmchef.dto.ingredient;
2+
3+
import com.webservice.algorithmchef.model.Ingredient;
4+
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
import lombok.Setter;
8+
9+
@Getter
10+
@Setter
11+
@NoArgsConstructor
12+
public class IngredientResponse {
13+
14+
private Long id;
15+
private String name;
16+
private String category;
17+
18+
public IngredientResponse(Ingredient ingredient) {
19+
this.id = ingredient.getId();
20+
this.name = ingredient.getName();
21+
this.category = ingredient.getCategory();
22+
}
23+
24+
}

src/main/java/com/webservice/algorithmchef/dto/user/ChangePasswordRequest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@
88
public class ChangePasswordRequest {
99

1010
private String password;
11+
private Long id;
1112
}

src/main/java/com/webservice/algorithmchef/dto/user/UserSignUpResponse.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.webservice.algorithmchef.dto.user;
22

3+
import com.webservice.algorithmchef.model.Fridge;
34
import com.webservice.algorithmchef.model.User;
45

56
import lombok.Getter;
@@ -10,11 +11,13 @@ public class UserSignUpResponse {
1011
private Long id;
1112
private String userId;
1213
private String role;
14+
private String fridgeName;
1315

14-
public UserSignUpResponse(User user) {
16+
public UserSignUpResponse(User user, Fridge fridge) {
1517
this.id = user.getId();
1618
this.userId = user.getUserId();
1719
this.role=user.getRole();
20+
this.fridgeName = fridge.getName();
1821
}
1922

2023
}

0 commit comments

Comments
 (0)