From 544ce423d0c7cec9f29522016e64d9fa78edfd6d Mon Sep 17 00:00:00 2001 From: s-choi Date: Thu, 17 Sep 2026 11:12:26 +0900 Subject: [PATCH] =?UTF-8?q?[EDIT]=20userId=E3=81=AB=E3=82=88=E3=82=8B?= =?UTF-8?q?=E6=A4=9C=E7=B4=A2=E6=A9=9F=E8=83=BD=E3=81=AB=E6=97=A5=E4=BB=98?= =?UTF-8?q?=E3=82=82=E5=85=A5=E5=8A=9B=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/service/TransactionService.java | 2 +- .../service/impl/TransactionServiceImpl.java | 9 +-- .../repository/TransactionRepository.java | 5 +- .../controller/TransactionController.java | 76 +++++++++++++++++-- 4 files changed, 76 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/example/demo/app/domain/service/TransactionService.java b/src/main/java/com/example/demo/app/domain/service/TransactionService.java index fe437f9..86b85d5 100644 --- a/src/main/java/com/example/demo/app/domain/service/TransactionService.java +++ b/src/main/java/com/example/demo/app/domain/service/TransactionService.java @@ -10,7 +10,7 @@ public interface TransactionService { public Map> findAllByDate(LocalDate startDate, LocalDate endDate, Long userId); - public TransactionModel findByUserId(TransactionModel transactionModel); + public List findByUserIdAndDate(LocalDate todayDate, Long userId); public int findTotalIncome(LocalDate startDate, LocalDate endDate, Long userId); diff --git a/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java b/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java index a4d1712..771d267 100644 --- a/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java +++ b/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java @@ -46,15 +46,10 @@ public class TransactionServiceImpl implements TransactionService { } - public TransactionModel findByUserId(TransactionModel transactionModel) { + public List findByUserIdAndDate(LocalDate todayDate, Long userId) { - TransactionEntity transactionEntity = transactionRepository.findByUserId(transactionModel.getUserId()); + return TransactionModel.convertFrom(transactionRepository.findByUserIdAndDate(todayDate, userId)); - if (transactionEntity == null) { - return null; - } - - return TransactionModel.convertFrom(transactionEntity); } } diff --git a/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java b/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java index a65d524..933aa4f 100644 --- a/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java +++ b/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java @@ -5,14 +5,13 @@ import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; import com.example.demo.app.infra.entity.TransactionEntity; public interface TransactionRepository extends JpaRepository { - @Query("select t from TransactionEntity t where t.userEntity.userId = :userId") - public TransactionEntity findByUserId(@Param("userId") Long userId); + @Query("select t from TransactionEntity t where t.userEntity.userId = :userId and t.transactionDate = :transactionDate") + public List findByUserIdAndDate(LocalDate todayDate, Long userId); @Query("select t from TransactionEntity t where (t.transactionDate between :startDate and :endDate) and (t.userId = :userId) order by t.transactionDate asc") public List findAllByDateAndUserId(LocalDate startDate, LocalDate endDate, Long userId); diff --git a/src/main/java/com/example/demo/app/presentation/controller/TransactionController.java b/src/main/java/com/example/demo/app/presentation/controller/TransactionController.java index fca93d3..5e51565 100644 --- a/src/main/java/com/example/demo/app/presentation/controller/TransactionController.java +++ b/src/main/java/com/example/demo/app/presentation/controller/TransactionController.java @@ -1,17 +1,83 @@ package com.example.demo.app.presentation.controller; -import org.springframework.stereotype.Controller; +import java.time.LocalDate; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import jakarta.servlet.http.HttpSession; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import com.example.demo.app.domain.service.CategoryService; import com.example.demo.app.domain.service.TransactionService; +import com.example.demo.app.presentation.form.CategoryForm; +import com.example.demo.app.presentation.form.TransactionForm; import lombok.RequiredArgsConstructor; @Controller @RequiredArgsConstructor public class TransactionController { - + private final TransactionService transactionService; - - - + private final CategoryService categoryService; + + // 一覧画面 + + @GetMapping("/transaction/list") + public String transactionList(@RequestParam LocalDate startDate, @RequestParam LocalDate endDate, Model model, + HttpSession session) { + + LoginUser loginUser = (LoginUser) session.getAttribute("loginUser"); + + Map> transactionFormMap = new HashMap<>(); + + + transactionService.findAll(startDate, endDate, loginUser.getUserId).forEach((date, list) -> { + List transactionFormList = list.stream().map(transaction -> { + TransactionForm transactionForm = TransactionForm.convertFrom( + transaction, + CategoryForm.convertFrom(categoryService.findOne(transaction.getCategoryId())).getCategoryName(), + transactionService.findTotalexpense(startDate, endDate, loginUser.getUserId), + transactionService.findTotalIncome(startDate, endDate, loginUser.getUserId), + CategoryForm.convertFrom(categoryService.findOne(transaction.getCategoryId())).getTransactionType() + ); + return transactionForm; + }).collect(Collectors.toList()); + transactionFormMap.put(date, transactionFormList); + }); + + model.addAttribute("transactionFormMap", transactionFormMap); + + return "transactionList"; + } + + // 詳細画面 + @GetMapping() + public String findOne(@RequestParam LocalDate todayDate, Model model, HttpSession session) { + + LoginUser loginUser = (LoginUser) session.getAttribute("loginUser"); + + List transactionFormList = transactionService.findByUserIdAndDate(todayDate, ((LoginUser)session.getAttribute("loginUser")).getUserId).stream().map(transaction -> { + TransactionForm transactionForm = TransactionForm.convertFrom( + transaction, + CategoryForm.convertFrom(categoryService.findOne(transaction.getCategoryId())).getCategoryName(), + transactionService.findTotalexpense(todayDate, todayDate, loginUser.getUserId), + transactionService.findTotalIncome(todayDate, todayDate, loginUser.getUserId), + CategoryForm.convertFrom(categoryService.findOne(transaction.getCategoryId())).getTransactionType() + ); + return transactionForm; + }).collect(Collectors.toList()); + + + model.addAttribute("transactionFormList", transactionFormList); + + return ""; + } + }