From e40755598fb749f1d5dd63fa5bb55a2940bb0657 Mon Sep 17 00:00:00 2001
From: "zhang.pengcheng"
Date: Tue, 3 Jun 2025 10:51:52 +0900
Subject: [PATCH 01/23] =?UTF-8?q?model=E3=82=92=E4=BD=9C=E6=88=90=E3=81=95?=
=?UTF-8?q?=E3=82=8C=E3=81=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../example/todoapp/model/RecipeStuffs.java | 74 +++++++++++++
.../com/example/todoapp/model/Recipes.java | 53 ++++++++++
.../com/example/todoapp/model/Stocks.java | 100 ++++++++++++++++++
.../com/example/todoapp/model/Stuffs.java | 59 +++++++++++
.../com/example/todoapp/model/ToBuys.java | 81 ++++++++++++++
5 files changed, 367 insertions(+)
create mode 100644 backend/src/main/java/com/example/todoapp/model/RecipeStuffs.java
create mode 100644 backend/src/main/java/com/example/todoapp/model/Recipes.java
create mode 100644 backend/src/main/java/com/example/todoapp/model/Stocks.java
create mode 100644 backend/src/main/java/com/example/todoapp/model/Stuffs.java
create mode 100644 backend/src/main/java/com/example/todoapp/model/ToBuys.java
diff --git a/backend/src/main/java/com/example/todoapp/model/RecipeStuffs.java b/backend/src/main/java/com/example/todoapp/model/RecipeStuffs.java
new file mode 100644
index 0000000..fc94cd5
--- /dev/null
+++ b/backend/src/main/java/com/example/todoapp/model/RecipeStuffs.java
@@ -0,0 +1,74 @@
+//--------------------------------
+// RecipiesStuffs.java
+//
+// 分類:社員管理システムV2・ビジネスロジック層
+//
+// 更新履歴:2025/06/02 新規作成
+// Copyright(c) 2025 IVIS All rights reserved.
+//--------------------------------------------
+
+package com.example.todoapp.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 料理に必要な材料
+ */
+@Data
+@NoArgsConstructor
+@Entity
+@Table(name = "recipe_stuffs")
+public class RecipeStuffs {
+
+
+ /**
+ * 料理に必要リストの一意識別子
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int recipe_stuffs_id ;
+
+ /**
+ * 料理の一意識別子 FK
+ */
+ @NotBlank
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(
+ name = "recipe_id",
+ referencedColumnName = "recipe_id",
+ nullable = false
+ )
+ private Recipes recipes;
+
+
+ /**
+ * 材料の一意識別子 FK
+ */
+ @NotBlank
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(
+ name = "stuff_id",
+ referencedColumnName = "stuff_id",
+ nullable = false
+ )
+ private Stuffs stuffs;
+
+ /**
+ * 材料の数量
+ */
+ @NotBlank
+ @Column(nullable = false)
+ private int amount;
+
+}
diff --git a/backend/src/main/java/com/example/todoapp/model/Recipes.java b/backend/src/main/java/com/example/todoapp/model/Recipes.java
new file mode 100644
index 0000000..76de887
--- /dev/null
+++ b/backend/src/main/java/com/example/todoapp/model/Recipes.java
@@ -0,0 +1,53 @@
+//--------------------------------
+// Recipes.java
+//
+// 分類:社員管理システムV2・ビジネスロジック層
+//
+// 更新履歴:2025/06/02 新規作成
+// Copyright(c) 2025 IVIS All rights reserved.
+//--------------------------------------------
+
+package com.example.todoapp.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * カテゴリエンティティクラス
+ * このクラスはタスクのカテゴリ情報を表します。
+ * カテゴリは名前、色、所有ユーザーなどの情報を持ちます。
+ */
+
+@Data
+@NoArgsConstructor
+@Entity
+@Table(name = "recipes")
+public class Recipes {
+ /**
+ * カテゴリID(主キー)
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int recipe_id ;
+
+ /**
+ * カテゴリ名
+ */
+ @NotBlank
+ @Column(unique = true, length = 255, nullable = false)
+ private String recipie_name;
+
+ /**
+ * カテゴリ
+ */
+ @Column (columnDefinition = "TEXT")
+ private String summary;
+
+}
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/model/Stocks.java b/backend/src/main/java/com/example/todoapp/model/Stocks.java
new file mode 100644
index 0000000..660ab87
--- /dev/null
+++ b/backend/src/main/java/com/example/todoapp/model/Stocks.java
@@ -0,0 +1,100 @@
+//--------------------------------
+// Stocks.java
+//
+// 分類:社員管理システムV2・ビジネスロジック層
+//
+// 更新履歴:2025/06/03 新規作成
+// Copyright(c) 2025 IVIS All rights reserved.
+//--------------------------------------------
+
+package com.example.todoapp.model;
+
+import java.time.LocalDate;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * 在庫にある食材
+ */
+
+@Data
+@NoArgsConstructor
+@Entity
+@Table(name = "stocks")
+public class Stocks {
+ /**
+ * 在庫リストの一意識別子
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int stock_id ;
+
+
+ /**
+ * 商品テーブル参照用の外部キー
+ */
+ @NotBlank
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(
+ name = "stuff_id",
+ referencedColumnName = "stuff_id",
+ nullable = false
+ )
+ private Stuffs stuffs;
+
+
+ /**
+ * ユーザーテーブル参照用の外部キー
+ */
+ @NotBlank
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(
+ name = "user_id",
+ referencedColumnName = "id",
+ nullable = false
+ )
+ private User user_id;
+
+ /**
+ * 在庫数量(デフォルト値: 1)
+ */
+ @Column(nullable = false)
+ private int amount = 1;
+
+ /**
+ * シングルの値段(デフォルト値: 0)
+ */
+ @Column(nullable = false)
+ private int price = 0;
+
+ /**
+ * 購入日
+ */
+ @Column(nullable = false)
+ private LocalDate buy_date;
+
+ /**
+ * 最後の操作時間
+ */
+ @Column(nullable = false)
+ private LocalDate last_update;
+
+ /**
+ * 賞味期限
+ */
+ @Column(nullable = false)
+ private LocalDate exp_date;
+
+}
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/model/Stuffs.java b/backend/src/main/java/com/example/todoapp/model/Stuffs.java
new file mode 100644
index 0000000..b0e7939
--- /dev/null
+++ b/backend/src/main/java/com/example/todoapp/model/Stuffs.java
@@ -0,0 +1,59 @@
+//--------------------------------
+// Stuffs.java
+//
+// 分類:社員管理システムV2・ビジネスロジック層
+//
+// 更新履歴:2025/06/02 新規作成
+// Copyright(c) 2025 IVIS All rights reserved.
+//--------------------------------------------
+
+package com.example.todoapp.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * カテゴリエンティティクラス
+ * このクラスはタスクのカテゴリ情報を表します。
+ * カテゴリは名前、色、所有ユーザーなどの情報を持ちます。
+ */
+@Data
+@NoArgsConstructor
+@Entity
+@Table(name = "stuffs")
+ public class Stuffs {
+
+ /**
+ * カテゴリID(主キー)
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int stuff_id ;
+
+ /**
+ * カテゴリ名
+ */
+ @NotBlank
+ @Column(unique = true, length = 255, nullable = false)
+ private String stuff_name;
+
+ /**
+ * カテゴリ
+ */
+ @Column (columnDefinition = "TEXT")
+ private String summary;
+
+ /**
+ * カテゴリ
+ */
+ @NotBlank
+ @Column(nullable = false, length = 225)
+ private String category = "その他" ;
+ }
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/model/ToBuys.java b/backend/src/main/java/com/example/todoapp/model/ToBuys.java
new file mode 100644
index 0000000..25bb797
--- /dev/null
+++ b/backend/src/main/java/com/example/todoapp/model/ToBuys.java
@@ -0,0 +1,81 @@
+//--------------------------------
+// ToBuys.java
+//
+// 分類:社員管理システムV2・ビジネスロジック層
+//
+// 更新履歴:2025/06/03 新規作成
+// Copyright(c) 2025 IVIS All rights reserved.
+//--------------------------------------------
+
+package com.example.todoapp.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * ユーザーの買うものリスト
+ */
+
+@Data
+@NoArgsConstructor
+@Entity
+@Table(name = "to_buys")
+public class ToBuys {
+
+ /**
+ * 購入項目の一意識別子
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int tobuy_id ;
+
+ /**
+ * 材料の一意識別子 FK
+ */
+ @NotBlank
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(
+ name = "stuff_id",
+ referencedColumnName = "stuff_id",
+ nullable = false
+ )
+ private Stuffs stuffs;
+
+ /**
+ * ユーザーテーブル参照用の外部キー
+ */
+ @NotBlank
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(
+ name = "user_id",
+ referencedColumnName = "id",
+ nullable = false
+ )
+ private User user_id;
+
+ /**
+ * 購入する数量
+ */
+ @NotBlank
+ @Column(nullable = false)
+ private int amount = 1;
+
+ /**
+ * 購入するお店
+ */
+ @NotBlank
+ @Column(nullable = false)
+ private String store;
+
+}
+
From ec4669c92b5bb9b35c5c738428e606debdf9fb2f Mon Sep 17 00:00:00 2001
From: "masato.fujita"
Date: Wed, 4 Jun 2025 11:04:31 +0900
Subject: [PATCH 02/23] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=83=9A?=
=?UTF-8?q?=E3=83=BC=E3=82=B8=E3=82=92=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
frontend/src/pages/TestPage.tsx | 12 ++++++++++++
1 file changed, 12 insertions(+)
create mode 100644 frontend/src/pages/TestPage.tsx
diff --git a/frontend/src/pages/TestPage.tsx b/frontend/src/pages/TestPage.tsx
new file mode 100644
index 0000000..f6d70be
--- /dev/null
+++ b/frontend/src/pages/TestPage.tsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Box } from '@mui/material';
+
+const TestPage: React.FC = () => {
+ return (
+
+ {/* 白紙のページ - 何も表示しない */}
+
+ );
+};
+
+export default TestPage;
\ No newline at end of file
From cb2ffbd4935ecad241b81dc29262843e6e5abb95 Mon Sep 17 00:00:00 2001
From: "zhang.pengcheng"
Date: Wed, 4 Jun 2025 16:03:35 +0900
Subject: [PATCH 03/23] =?UTF-8?q?add-=E6=97=A2=E5=AD=98=E3=81=AE=E9=A3=9F?=
=?UTF-8?q?=E6=9D=90=E3=81=AE=E5=A0=B4=E5=90=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../todoapp/controller/ToBuysController.java | 22 ++++++++
.../com/example/todoapp/dto/ToBuyDTO.java | 18 +++++++
.../todoapp/repository/StuffsRepository.java | 12 +++++
.../todoapp/repository/ToBuysRepository.java | 9 ++++
.../todoapp/service/ToBuysService.java | 51 +++++++++++++++++++
5 files changed, 112 insertions(+)
create mode 100644 backend/src/main/java/com/example/todoapp/controller/ToBuysController.java
create mode 100644 backend/src/main/java/com/example/todoapp/dto/ToBuyDTO.java
create mode 100644 backend/src/main/java/com/example/todoapp/repository/StuffsRepository.java
create mode 100644 backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java
create mode 100644 backend/src/main/java/com/example/todoapp/service/ToBuysService.java
diff --git a/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java b/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java
new file mode 100644
index 0000000..fbb0603
--- /dev/null
+++ b/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java
@@ -0,0 +1,22 @@
+package com.example.todoapp.controller;
+
+import com.example.todoapp.dto.ToBuyDTO;
+import com.example.todoapp.service.ToBuysService;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/api/tobuy/add")
+public class ToBuysController {
+
+ @Autowired
+ private ToBuysService toBuysService;
+
+ @PostMapping
+ public ResponseEntity addToBuys(@Valid @RequestBody ToBuyDTO dto) {
+ toBuysService.addToBuys(dto);
+ return ResponseEntity.ok("Item added to 'To Buys' successfully");
+ }
+}
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/dto/ToBuyDTO.java b/backend/src/main/java/com/example/todoapp/dto/ToBuyDTO.java
new file mode 100644
index 0000000..36295bf
--- /dev/null
+++ b/backend/src/main/java/com/example/todoapp/dto/ToBuyDTO.java
@@ -0,0 +1,18 @@
+package com.example.todoapp.dto;
+
+import lombok.Data;
+/**
+ * カテゴリDTOクラス
+ * このクラスはタスクのカテゴリ情報を表します。
+ * カテゴリは名前、色、所有ユーザーなどの情報を持ちます。
+ *
+ */
+
+ @Data
+ public class ToBuyDTO {
+ private Long stuffsId;
+ private Long userId;
+
+ private int amount;
+ private String store;
+ }
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/repository/StuffsRepository.java b/backend/src/main/java/com/example/todoapp/repository/StuffsRepository.java
new file mode 100644
index 0000000..3c29f31
--- /dev/null
+++ b/backend/src/main/java/com/example/todoapp/repository/StuffsRepository.java
@@ -0,0 +1,12 @@
+package com.example.todoapp.repository;
+
+import com.example.todoapp.model.Stuffs;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+
+@Repository
+public interface StuffsRepository extends JpaRepository {
+ Optional findById(Long id);
+}
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java b/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java
new file mode 100644
index 0000000..ff6469f
--- /dev/null
+++ b/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java
@@ -0,0 +1,9 @@
+package com.example.todoapp.repository;
+
+import com.example.todoapp.model.ToBuys;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ToBuysRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/service/ToBuysService.java b/backend/src/main/java/com/example/todoapp/service/ToBuysService.java
new file mode 100644
index 0000000..2a44acb
--- /dev/null
+++ b/backend/src/main/java/com/example/todoapp/service/ToBuysService.java
@@ -0,0 +1,51 @@
+package com.example.todoapp.service;
+
+import com.example.todoapp.dto.ToBuyDTO;
+import com.example.todoapp.model.Stuffs;
+import com.example.todoapp.model.ToBuys;
+import com.example.todoapp.model.User;
+import com.example.todoapp.repository.StuffsRepository;
+import com.example.todoapp.repository.ToBuysRepository;
+import com.example.todoapp.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Optional;
+
+@Service
+public class ToBuysService {
+
+ @Autowired
+ private ToBuysRepository toBuysRepository;
+
+ @Autowired
+ private UserRepository userRepository;
+
+ @Autowired
+ private StuffsRepository stuffsRepository;
+
+ public void addToBuys(ToBuyDTO toBuyDTO) {
+
+ //get user
+ Optional user = userRepository.findById(toBuyDTO.getUserId());
+ if (!user.isPresent()) {
+ throw new RuntimeException("no: " + toBuyDTO.getUserId());
+ }
+
+ //get stuffs
+ Optional stuffs = stuffsRepository.findById(toBuyDTO.getStuffsId());
+ if (!stuffs.isPresent()) {
+ throw new RuntimeException("材料不存在");
+ }
+
+ ToBuys toBuys = new ToBuys();
+ toBuys.setUser_id(user.get());
+ toBuys.setStuffs(stuffs.get());
+ toBuys.setAmount(toBuyDTO.getAmount());
+ toBuys.setStore(toBuyDTO.getStore());
+
+ // 保存到数据库
+ toBuysRepository.save(toBuys);
+
+ }
+}
\ No newline at end of file
From 840f2365403e8713aa0d4510dd4fab8753bba689 Mon Sep 17 00:00:00 2001
From: "zhang.pengcheng"
Date: Wed, 4 Jun 2025 17:19:31 +0900
Subject: [PATCH 04/23] ToBuyDto.java
---
.../src/main/java/com/example/todoapp/dto/ToBuyDTO.java | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/backend/src/main/java/com/example/todoapp/dto/ToBuyDTO.java b/backend/src/main/java/com/example/todoapp/dto/ToBuyDTO.java
index 36295bf..6212f7d 100644
--- a/backend/src/main/java/com/example/todoapp/dto/ToBuyDTO.java
+++ b/backend/src/main/java/com/example/todoapp/dto/ToBuyDTO.java
@@ -10,9 +10,12 @@ import lombok.Data;
@Data
public class ToBuyDTO {
- private Long stuffsId;
- private Long userId;
+ private Long stuff_id;
+ private Long user_id;
private int amount;
- private String store;
+ private String shop;
+
+ private String stuff_name;
+ private String category;
}
\ No newline at end of file
From 44cd5183cd3eae0744d66fb2c39c3a7b0610d6f2 Mon Sep 17 00:00:00 2001
From: "zhang.pengcheng"
Date: Thu, 5 Jun 2025 09:24:42 +0900
Subject: [PATCH 05/23] =?UTF-8?q?1.=20toBuysController,=20toBuysService,?=
=?UTF-8?q?=20toBuysRepository,=20stuffsRepository=E3=82=92=E4=BD=9C?=
=?UTF-8?q?=E6=88=90=202.=20recipes,=20stuffs,=20tobuys,=20stocks=20?=
=?UTF-8?q?=E3=81=AE=E3=80=80NotBlank=E3=81=A8NotNull=E3=82=92=E4=BF=AE?=
=?UTF-8?q?=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../todoapp/controller/ToBuysController.java | 23 +++++++-
.../com/example/todoapp/model/Recipes.java | 4 +-
.../com/example/todoapp/model/Stocks.java | 6 +-
.../com/example/todoapp/model/Stuffs.java | 8 +--
.../com/example/todoapp/model/ToBuys.java | 14 ++---
.../todoapp/repository/StuffsRepository.java | 19 ++++++-
.../todoapp/repository/ToBuysRepository.java | 14 +++++
.../todoapp/service/ToBuysService.java | 57 ++++++++++++++-----
8 files changed, 111 insertions(+), 34 deletions(-)
diff --git a/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java b/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java
index fbb0603..ceb10df 100644
--- a/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java
+++ b/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java
@@ -1,3 +1,10 @@
+//--------------------------------
+// ToBuysController.java
+//
+// 更新履歴:2025/06/05 新規作成
+// Copyright(c) 2025 IVIS All rights reserved.
+//--------------------------------------------
+
package com.example.todoapp.controller;
import com.example.todoapp.dto.ToBuyDTO;
@@ -7,13 +14,27 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
+/**
+ * 購入リストに関するRESTコントローラー
+ *
+ * このコントローラーは、購入リスト (to_buys) へのアイテム追加機能を提供します。
+ * リクエストボディには ToBuyDTO 形式のデータが期待されます。
+ *
+ */
@RestController
-@RequestMapping("/api/tobuy/add")
+@RequestMapping("/tobuy/add")
public class ToBuysController {
@Autowired
private ToBuysService toBuysService;
+ /**
+ * 新しい購入アイテムを追加する
+ *
+ * @param dto 追加する購入アイテムのデータ(DTO)
+ * @return 成功時のレスポンスメッセージ
+ */
+
@PostMapping
public ResponseEntity addToBuys(@Valid @RequestBody ToBuyDTO dto) {
toBuysService.addToBuys(dto);
diff --git a/backend/src/main/java/com/example/todoapp/model/Recipes.java b/backend/src/main/java/com/example/todoapp/model/Recipes.java
index 76de887..98d3936 100644
--- a/backend/src/main/java/com/example/todoapp/model/Recipes.java
+++ b/backend/src/main/java/com/example/todoapp/model/Recipes.java
@@ -15,7 +15,7 @@ import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
-import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -40,7 +40,7 @@ public class Recipes {
/**
* カテゴリ名
*/
- @NotBlank
+ @NotNull
@Column(unique = true, length = 255, nullable = false)
private String recipie_name;
diff --git a/backend/src/main/java/com/example/todoapp/model/Stocks.java b/backend/src/main/java/com/example/todoapp/model/Stocks.java
index 660ab87..d9f3f42 100644
--- a/backend/src/main/java/com/example/todoapp/model/Stocks.java
+++ b/backend/src/main/java/com/example/todoapp/model/Stocks.java
@@ -20,7 +20,7 @@ import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
-import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -45,7 +45,7 @@ public class Stocks {
/**
* 商品テーブル参照用の外部キー
*/
- @NotBlank
+ @NotNull
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(
name = "stuff_id",
@@ -58,7 +58,7 @@ public class Stocks {
/**
* ユーザーテーブル参照用の外部キー
*/
- @NotBlank
+ @NotNull
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(
name = "user_id",
diff --git a/backend/src/main/java/com/example/todoapp/model/Stuffs.java b/backend/src/main/java/com/example/todoapp/model/Stuffs.java
index b0e7939..55fe1f9 100644
--- a/backend/src/main/java/com/example/todoapp/model/Stuffs.java
+++ b/backend/src/main/java/com/example/todoapp/model/Stuffs.java
@@ -15,7 +15,7 @@ import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
-import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -35,12 +35,12 @@ import lombok.NoArgsConstructor;
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- private int stuff_id ;
+ private Long stuff_id ;
/**
* カテゴリ名
*/
- @NotBlank
+ @NotNull
@Column(unique = true, length = 255, nullable = false)
private String stuff_name;
@@ -53,7 +53,7 @@ import lombok.NoArgsConstructor;
/**
* カテゴリ
*/
- @NotBlank
+ @NotNull
@Column(nullable = false, length = 225)
private String category = "その他" ;
}
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/model/ToBuys.java b/backend/src/main/java/com/example/todoapp/model/ToBuys.java
index 25bb797..0670392 100644
--- a/backend/src/main/java/com/example/todoapp/model/ToBuys.java
+++ b/backend/src/main/java/com/example/todoapp/model/ToBuys.java
@@ -1,7 +1,6 @@
//--------------------------------
// ToBuys.java
//
-// 分類:社員管理システムV2・ビジネスロジック層
//
// 更新履歴:2025/06/03 新規作成
// Copyright(c) 2025 IVIS All rights reserved.
@@ -18,7 +17,7 @@ import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
-import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -42,7 +41,7 @@ public class ToBuys {
/**
* 材料の一意識別子 FK
*/
- @NotBlank
+ @NotNull
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(
name = "stuff_id",
@@ -54,26 +53,25 @@ public class ToBuys {
/**
* ユーザーテーブル参照用の外部キー
*/
- @NotBlank
+ // @NotNull
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(
name = "user_id",
- referencedColumnName = "id",
- nullable = false
+ referencedColumnName = "id"
)
private User user_id;
/**
* 購入する数量
*/
- @NotBlank
+ @NotNull
@Column(nullable = false)
private int amount = 1;
/**
* 購入するお店
*/
- @NotBlank
+ @NotNull
@Column(nullable = false)
private String store;
diff --git a/backend/src/main/java/com/example/todoapp/repository/StuffsRepository.java b/backend/src/main/java/com/example/todoapp/repository/StuffsRepository.java
index 3c29f31..1e2fa69 100644
--- a/backend/src/main/java/com/example/todoapp/repository/StuffsRepository.java
+++ b/backend/src/main/java/com/example/todoapp/repository/StuffsRepository.java
@@ -1,12 +1,25 @@
+//--------------------------------
+// StuffsRepository.java
+//
+//
+// 更新履歴:2025/06/05 新規作成
+// Copyright(c) 2025 IVIS All rights reserved.
+//--------------------------------------------
+
package com.example.todoapp.repository;
import com.example.todoapp.model.Stuffs;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
-import java.util.Optional;
-
+/**
+ * 材料 (stuffs) テーブルへのアクセスを行うリポジトリ.
+ *
+ * このクラスは材料テーブル (stuffs) に対する基本的なCRUD操作を提供します。
+ * Spring Data JPAによって自動的に実装されます。
+ *
+ */
@Repository
public interface StuffsRepository extends JpaRepository {
- Optional findById(Long id);
+ // 材料情報を主キーで取得するメソッド(必要に応じて追加)
}
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java b/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java
index ff6469f..368aef8 100644
--- a/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java
+++ b/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java
@@ -1,9 +1,23 @@
+//--------------------------------
+// ToBuysRepository.java
+//
+//
+// 更新履歴:2025/06/05 新規作成
+// Copyright(c) 2025 IVIS All rights reserved.
+//--------------------------------------------
package com.example.todoapp.repository;
import com.example.todoapp.model.ToBuys;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
+/**
+ * to_buys テーブルへのアクセスを行うリポジトリ
+ *
+ * このクラスは to_buys テーブルに対する基本的なCRUD操作を提供します。
+ * Spring Data JPAによって自動的に実装されます。
+ *
+ */
@Repository
public interface ToBuysRepository extends JpaRepository {
}
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/service/ToBuysService.java b/backend/src/main/java/com/example/todoapp/service/ToBuysService.java
index 2a44acb..475879f 100644
--- a/backend/src/main/java/com/example/todoapp/service/ToBuysService.java
+++ b/backend/src/main/java/com/example/todoapp/service/ToBuysService.java
@@ -1,3 +1,11 @@
+//--------------------------------
+// ToBuysService.java
+//
+//
+// 更新履歴:2025/06/05 新規作成
+// Copyright(c) 2025 IVIS All rights reserved.
+//--------------------------------------------
+
package com.example.todoapp.service;
import com.example.todoapp.dto.ToBuyDTO;
@@ -12,6 +20,14 @@ import org.springframework.stereotype.Service;
import java.util.Optional;
+/**
+ * 購入リストのサービスクラス
+ *
+ * このクラスは、購入リスト (to_buys) の登録処理を提供します。
+ * 材料 (stuffs) の存在確認と新規作成、ユーザー情報の取得などを行います。
+ *
+ */
+
@Service
public class ToBuysService {
@@ -24,27 +40,42 @@ public class ToBuysService {
@Autowired
private StuffsRepository stuffsRepository;
+
+ /**
+ * 購入リストに新しいアイテムを追加する
+ *
+ * @param toBuyDTO 追加する購入アイテムのデータ(DTO)
+ */
public void addToBuys(ToBuyDTO toBuyDTO) {
- //get user
- Optional user = userRepository.findById(toBuyDTO.getUserId());
- if (!user.isPresent()) {
- throw new RuntimeException("no: " + toBuyDTO.getUserId());
- }
+ // ユーザー情報を取得
+ User user = userRepository.findById(toBuyDTO.getUser_id())
+ .orElseThrow(() -> new RuntimeException("用户不存在: " + toBuyDTO.getUser_id()));
- //get stuffs
- Optional stuffs = stuffsRepository.findById(toBuyDTO.getStuffsId());
- if (!stuffs.isPresent()) {
- throw new RuntimeException("材料不存在");
+ Stuffs stuffs;
+ if (toBuyDTO.getStuff_id() == null) {
+ // 新しい材料を作成
+ stuffs = new Stuffs();
+ stuffs.setStuff_name(toBuyDTO.getStuff_name());
+ stuffs.setCategory(toBuyDTO.getCategory());
+ stuffs = stuffsRepository.save(stuffs);
+ } else {
+ // 材料情報を取得
+ Optional optionalStuffs = stuffsRepository.findById(toBuyDTO.getStuff_id());
+ if (!optionalStuffs.isPresent()) {
+ throw new RuntimeException("材料不存在");
+ }
+ stuffs = optionalStuffs.get();
}
ToBuys toBuys = new ToBuys();
- toBuys.setUser_id(user.get());
- toBuys.setStuffs(stuffs.get());
+ System.out.println("AAAAuser_id: " + toBuyDTO.getUser_id());
+ toBuys.setUser_id(user);
+ toBuys.setStuffs(stuffs);
toBuys.setAmount(toBuyDTO.getAmount());
- toBuys.setStore(toBuyDTO.getStore());
+ toBuys.setStore(toBuyDTO.getShop());
- // 保存到数据库
+ // データベースに保存
toBuysRepository.save(toBuys);
}
From 13cefbc829fd0c630d31f026a752d0ab0c7d6717 Mon Sep 17 00:00:00 2001
From: "masato.fujita"
Date: Thu, 5 Jun 2025 09:53:26 +0900
Subject: [PATCH 06/23] =?UTF-8?q?=E6=96=99=E7=90=86=E5=90=8D=E3=82=92?=
=?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=81=99=E3=82=8B=E6=A9=9F=E8=83=BD(?=
=?UTF-8?q?=E4=BA=88=E5=AE=9A)=E3=81=AE=E5=AE=9F=E8=A3=85=E3=80=81?=
=?UTF-8?q?=E3=81=9D=E3=82=8C=E3=81=AB=E5=AF=BE=E3=81=99=E3=82=8B=E3=83=AB?=
=?UTF-8?q?=E3=83=BC=E3=83=88=E3=81=A8=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6?=
=?UTF-8?q?=E3=83=88=E3=81=AE=E5=A4=89=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
frontend/src/App.tsx | 20 ++++++++
frontend/src/components/Layout.tsx | 9 ++++
frontend/src/pages/AddDishes1.tsx | 81 ++++++++++++++++++++++++++++++
frontend/src/pages/AddDishes2.tsx | 16 ++++++
4 files changed, 126 insertions(+)
create mode 100644 frontend/src/pages/AddDishes1.tsx
create mode 100644 frontend/src/pages/AddDishes2.tsx
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 7141e87..1d803fa 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -10,6 +10,9 @@ import LoginPage from './pages/LoginPage';
import RegisterPage from './pages/RegisterPage';
import TaskListPage from './pages/TaskListPage';
import './App.css';
+// 必要なインポートを追加
+import AddDishes1 from './pages/AddDishes1';
+import AddDishes2 from './pages/AddDishes2';
/**
* アプリケーション全体のMaterial UIテーマを定義
@@ -92,6 +95,23 @@ const App: React.FC = () => {
}
/>
+ {/* テストページへのルートを追加 */}
+
+
+
+ }
+ />
+
+
+
+ }
+ />
diff --git a/frontend/src/components/Layout.tsx b/frontend/src/components/Layout.tsx
index e8696a9..6854702 100644
--- a/frontend/src/components/Layout.tsx
+++ b/frontend/src/components/Layout.tsx
@@ -21,6 +21,7 @@ import {
import {
Menu as MenuIcon,
ListAlt as ListAltIcon,
+ Science as ScienceIcon, // テストページ用のアイコン
} from '@mui/icons-material';
import { useNavigate, Outlet, useLocation } from 'react-router-dom';
@@ -98,6 +99,14 @@ const Layout: React.FC = () => {
+ {/* テストページへのリンクを追加 */}
+ handleNavigate('/add1')}
+ selected={isSelected('/add1')}
+ >
+
+
+
diff --git a/frontend/src/pages/AddDishes1.tsx b/frontend/src/pages/AddDishes1.tsx
new file mode 100644
index 0000000..6cee3ab
--- /dev/null
+++ b/frontend/src/pages/AddDishes1.tsx
@@ -0,0 +1,81 @@
+import React, { useState } from 'react';
+import { useNavigate } from 'react-router-dom';
+import {
+ AppBar,
+ Toolbar,
+ Typography,
+ Container,
+ Box,
+ Button,
+ Drawer,
+ List,
+ ListItemText,
+ ListItemIcon,
+ ListItemButton,
+ Divider,
+ IconButton,
+ TextField,
+ Paper,
+ Alert,
+ Link,
+ Grid,
+ } from '@mui/material';
+ import { LoginCredentials } from '../types/types';
+import { authApi } from '../services/api';
+import { GENERAL_ERRORS } from '../constants/errorMessages';
+
+const AddDishes1: React.FC = () => {
+ const navigate = useNavigate();
+ const [dish, setDish] = useState("");
+ // エラーメッセージの状態管理
+ const [error, setError] = useState(false);
+
+ const handleChange = (event: React.ChangeEvent) => {
+ setDish(event.target.value);
+ };
+ const handleSubmit = async (e: React.FormEvent) => {
+ e.preventDefault(); // フォームのデフォルト送信動作を防止
+ if (!dish.trim()) {
+ setError(true);
+ } else {
+ alert("送信成功!");
+ navigate('/add2'); // タスク一覧ページにリダイレクト
+ }
+ };
+
+ return (
+
+
+ 料理の追加・編集
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default AddDishes1;
\ No newline at end of file
diff --git a/frontend/src/pages/AddDishes2.tsx b/frontend/src/pages/AddDishes2.tsx
new file mode 100644
index 0000000..ed12aa4
--- /dev/null
+++ b/frontend/src/pages/AddDishes2.tsx
@@ -0,0 +1,16 @@
+/**
+ * テストページコンポーネント
+ * 白紙の状態で表示されるテスト用のページ
+ */
+import React from 'react';
+import { Box } from '@mui/material';
+
+const AddDishes2: React.FC = () => {
+ return (
+
+ {/* 白紙のページ - 何も表示しない */}
+
+ );
+};
+
+export default AddDishes2;
\ No newline at end of file
From e57d01de15bd57e75df461b6014061a1b7ee0fac Mon Sep 17 00:00:00 2001
From: "zhang.pengcheng"
Date: Thu, 5 Jun 2025 10:25:22 +0900
Subject: [PATCH 07/23] =?UTF-8?q?=E5=8F=96=E5=BE=97=E3=82=92=E5=AE=9F?=
=?UTF-8?q?=E8=A3=85=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../todoapp/controller/ToBuysController.java | 44 +++++++++++++++++--
.../example/todoapp/dto/ToBuyResponse.java | 12 +++++
.../dto/{ToBuyDTO.java => ToBuysDTO.java} | 2 +-
.../todoapp/repository/ToBuysRepository.java | 13 ++++++
.../todoapp/service/ToBuysService.java | 20 ++++++---
5 files changed, 81 insertions(+), 10 deletions(-)
create mode 100644 backend/src/main/java/com/example/todoapp/dto/ToBuyResponse.java
rename backend/src/main/java/com/example/todoapp/dto/{ToBuyDTO.java => ToBuysDTO.java} (93%)
diff --git a/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java b/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java
index ceb10df..1efa39b 100644
--- a/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java
+++ b/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java
@@ -7,9 +7,17 @@
package com.example.todoapp.controller;
-import com.example.todoapp.dto.ToBuyDTO;
+import com.example.todoapp.dto.ToBuyResponse;
+import com.example.todoapp.dto.ToBuysDTO;
+import com.example.todoapp.model.ToBuys;
import com.example.todoapp.service.ToBuysService;
import jakarta.validation.Valid;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@@ -22,7 +30,7 @@ import org.springframework.web.bind.annotation.*;
*
*/
@RestController
-@RequestMapping("/tobuy/add")
+@RequestMapping("/tobuy")
public class ToBuysController {
@Autowired
@@ -35,9 +43,37 @@ public class ToBuysController {
* @return 成功時のレスポンスメッセージ
*/
- @PostMapping
- public ResponseEntity addToBuys(@Valid @RequestBody ToBuyDTO dto) {
+ @PostMapping("/add")
+ public ResponseEntity addToBuys(@Valid @RequestBody ToBuysDTO dto) {
toBuysService.addToBuys(dto);
return ResponseEntity.ok("Item added to 'To Buys' successfully");
}
+
+ /**
+ * 指定されたユーザーIDに基づいてすべての「買うもの」リストを取得する
+ *
+ * @param userId ユーザーID
+ * @return ユーザーに紐づく「買うもの」リスト
+ */
+ @GetMapping("/get")
+ public ResponseEntity> getAllToBuysByUserId(@RequestParam Long user_id) {
+ List toBuysList = toBuysService.getToBuysByUserId(user_id);
+
+ // DTO形式に変換して返す
+ List responseList = toBuysList.stream()
+ .map(toBuy -> {
+ ToBuyResponse resp = new ToBuyResponse();
+ resp.setTobuy_id(toBuy.getTobuy_id());
+ resp.setStuff_id(toBuy.getStuffs().getStuff_id());
+ resp.setAmount(toBuy.getAmount());
+ resp.setShop(toBuy.getStore());
+ return resp;
+ })
+ .collect(Collectors.toList());
+
+ Map responseBody = new HashMap<>();
+ responseBody.put("tobuy_array", responseList);
+
+ return ResponseEntity.ok(responseList);
+ }
}
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/dto/ToBuyResponse.java b/backend/src/main/java/com/example/todoapp/dto/ToBuyResponse.java
new file mode 100644
index 0000000..2ffab6e
--- /dev/null
+++ b/backend/src/main/java/com/example/todoapp/dto/ToBuyResponse.java
@@ -0,0 +1,12 @@
+// src/main/java/com/example/todoapp/dto/ToBuyResponse.java
+package com.example.todoapp.dto;
+
+import lombok.Data;
+
+@Data
+public class ToBuyResponse {
+ private int tobuy_id;
+ private Long stuff_id;
+ private int amount;
+ private String shop;
+}
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/dto/ToBuyDTO.java b/backend/src/main/java/com/example/todoapp/dto/ToBuysDTO.java
similarity index 93%
rename from backend/src/main/java/com/example/todoapp/dto/ToBuyDTO.java
rename to backend/src/main/java/com/example/todoapp/dto/ToBuysDTO.java
index 6212f7d..90830fd 100644
--- a/backend/src/main/java/com/example/todoapp/dto/ToBuyDTO.java
+++ b/backend/src/main/java/com/example/todoapp/dto/ToBuysDTO.java
@@ -9,7 +9,7 @@ import lombok.Data;
*/
@Data
- public class ToBuyDTO {
+ public class ToBuysDTO {
private Long stuff_id;
private Long user_id;
diff --git a/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java b/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java
index 368aef8..49029ea 100644
--- a/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java
+++ b/backend/src/main/java/com/example/todoapp/repository/ToBuysRepository.java
@@ -8,7 +8,11 @@
package com.example.todoapp.repository;
import com.example.todoapp.model.ToBuys;
+
+import java.util.List;
+
import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
/**
@@ -20,4 +24,13 @@ import org.springframework.stereotype.Repository;
*/
@Repository
public interface ToBuysRepository extends JpaRepository {
+ /**
+ * 指定されたユーザーIDに基づいて「買うもの」リストを取得する
+ *
+ * @param userId ユーザーID
+ * @return 「買うもの」リスト
+ */
+
+ @Query("SELECT t FROM ToBuys t WHERE t.user_id.id = ?1")
+ List findByUserId(Long user_id);
}
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/service/ToBuysService.java b/backend/src/main/java/com/example/todoapp/service/ToBuysService.java
index 475879f..d1cd65c 100644
--- a/backend/src/main/java/com/example/todoapp/service/ToBuysService.java
+++ b/backend/src/main/java/com/example/todoapp/service/ToBuysService.java
@@ -8,7 +8,7 @@
package com.example.todoapp.service;
-import com.example.todoapp.dto.ToBuyDTO;
+import com.example.todoapp.dto.ToBuysDTO;
import com.example.todoapp.model.Stuffs;
import com.example.todoapp.model.ToBuys;
import com.example.todoapp.model.User;
@@ -18,6 +18,7 @@ import com.example.todoapp.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.List;
import java.util.Optional;
/**
@@ -46,11 +47,11 @@ public class ToBuysService {
*
* @param toBuyDTO 追加する購入アイテムのデータ(DTO)
*/
- public void addToBuys(ToBuyDTO toBuyDTO) {
+ public void addToBuys(ToBuysDTO toBuyDTO) {
// ユーザー情報を取得
User user = userRepository.findById(toBuyDTO.getUser_id())
- .orElseThrow(() -> new RuntimeException("用户不存在: " + toBuyDTO.getUser_id()));
+ .orElseThrow(() -> new RuntimeException("ユーザーがありませ: " + toBuyDTO.getUser_id()));
Stuffs stuffs;
if (toBuyDTO.getStuff_id() == null) {
@@ -63,13 +64,12 @@ public class ToBuysService {
// 材料情報を取得
Optional optionalStuffs = stuffsRepository.findById(toBuyDTO.getStuff_id());
if (!optionalStuffs.isPresent()) {
- throw new RuntimeException("材料不存在");
+ throw new RuntimeException("材料がありません");
}
stuffs = optionalStuffs.get();
}
ToBuys toBuys = new ToBuys();
- System.out.println("AAAAuser_id: " + toBuyDTO.getUser_id());
toBuys.setUser_id(user);
toBuys.setStuffs(stuffs);
toBuys.setAmount(toBuyDTO.getAmount());
@@ -79,4 +79,14 @@ public class ToBuysService {
toBuysRepository.save(toBuys);
}
+
+ /**
+ * 指定されたユーザーIDに基づいてすべての「買うもの」リストを取得する
+ *
+ * @param userId ユーザーID
+ * @return ユーザーに紐づく「買うもの」リスト
+ */
+ public List getToBuysByUserId(Long userId) {
+ return toBuysRepository.findByUserId(userId);
+ }
}
\ No newline at end of file
From 2e2214c90837615005ab5429808871eeb3d9cdc9 Mon Sep 17 00:00:00 2001
From: "zhang.pengcheng"
Date: Thu, 5 Jun 2025 10:52:08 +0900
Subject: [PATCH 08/23] =?UTF-8?q?=E5=89=8A=E9=99=A4=E3=82=92=E5=AE=9F?=
=?UTF-8?q?=E8=A3=85=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../todoapp/controller/ToBuysController.java | 22 +++++++++++++++++++
.../todoapp/dto/DeleteToBuyRequest.java | 9 ++++++++
.../example/todoapp/dto/ToBuyResponse.java | 1 -
.../todoapp/repository/ToBuysRepository.java | 15 ++++++++++++-
.../todoapp/service/ToBuysService.java | 14 ++++++++++++
5 files changed, 59 insertions(+), 2 deletions(-)
create mode 100644 backend/src/main/java/com/example/todoapp/dto/DeleteToBuyRequest.java
diff --git a/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java b/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java
index 1efa39b..7398b01 100644
--- a/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java
+++ b/backend/src/main/java/com/example/todoapp/controller/ToBuysController.java
@@ -7,6 +7,7 @@
package com.example.todoapp.controller;
+import com.example.todoapp.dto.DeleteToBuyRequest;
import com.example.todoapp.dto.ToBuyResponse;
import com.example.todoapp.dto.ToBuysDTO;
import com.example.todoapp.model.ToBuys;
@@ -76,4 +77,25 @@ public class ToBuysController {
return ResponseEntity.ok(responseList);
}
+
+ /**
+ * ユーザーが指定したIDの「買うもの」を削除する
+ *
+ * @param request 削除する「買うもの」の情報を含むリクエストボディ
+ * @return 削除が成功した場合にtrueを含むレスポンス
+ */
+ @DeleteMapping("/delete")
+ public ResponseEntity