Skip to content
Merged
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
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package moja.refrigerator.controller.ingredient;

import jakarta.persistence.EntityNotFoundException;
import moja.refrigerator.dto.ingredient.request.*;
import moja.refrigerator.dto.ingredient.response.*;
import moja.refrigerator.service.ingredient.IngredientService;
Expand Down Expand Up @@ -44,8 +45,15 @@ public void updateIngredient(@RequestBody IngredientUpdateRequest request) {

// 재료 삭제
@DeleteMapping
public void deleteIngredient(@RequestParam Long ingredientMyRefrigeratorPk) {
ingredientService.deleteIngredient(ingredientMyRefrigeratorPk);
public ResponseEntity<String> deleteIngredient(@RequestBody IngredientDeleteRequest request) {
try {
ingredientService.deleteIngredient(request);
return ResponseEntity.ok("재료가 성공적으로 삭제되었습니다.");
} catch (IllegalArgumentException e) {
return ResponseEntity.badRequest().body(e.getMessage());
} catch (EntityNotFoundException e) {
return ResponseEntity.notFound().build();
}
}

@PostMapping("/bookmark/regist")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package moja.refrigerator.dto.ingredient.request;

import lombok.Data;

@Data
public class IngredientDeleteRequest {

private Long ingredientMyRefrigeratorPk;
private float deleteAmount;

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public interface IngredientService {
List<IngredientResponse> getIngredient(Long userPk); // 재료 조회 메서드
void updateIngredient(IngredientUpdateRequest request);

void deleteIngredient(long ingredientMyRefrigeratorPk);
void deleteIngredient(IngredientDeleteRequest request);

List<ResponseUsersIngredientBookmarkLists> getUsersIngredientBookmarkLists(
RequestIngredientBookmarkLists requestBookmarkLists);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,25 @@ public void updateIngredient(IngredientUpdateRequest request) {

@Override
@Transactional
public void deleteIngredient(long ingredientMyRefrigeratorPk) {
if (!ingredientMyRefrigeratorRepository.existsById(ingredientMyRefrigeratorPk)) {
throw new EntityNotFoundException("삭제할 재료를 찾을 수 없습니다.");
public void deleteIngredient(IngredientDeleteRequest request) {
IngredientMyRefrigerator ingredient = ingredientMyRefrigeratorRepository
.findById(request.getIngredientMyRefrigeratorPk())
.orElseThrow(() -> new IllegalArgumentException("삭제할 재료를 찾을 수 없습니다."));

float currentAmount = ingredient.getIngredientAmount();
float deleteAmount = request.getDeleteAmount();

if (currentAmount < deleteAmount) {
throw new IllegalArgumentException("삭제할 수량이 현재 보유 수량보다 많습니다.");
}
// 삭제할 수량이 딱 맞아 떨어지면 재료를 완전 삭제
if (currentAmount == deleteAmount) {
ingredientMyRefrigeratorRepository.deleteById(request.getIngredientMyRefrigeratorPk());
} else {
// 현재 수량 - 삭제할 수량의 계산 결과를 저장
ingredient.setIngredientAmount(currentAmount - deleteAmount);
ingredientMyRefrigeratorRepository.save(ingredient);
}
ingredientMyRefrigeratorRepository.deleteById(ingredientMyRefrigeratorPk);
}

@Override
Expand Down