From 8763f88de4784398b9932cec6873dc8553b562f2 Mon Sep 17 00:00:00 2001 From: s-choi Date: Thu, 17 Sep 2026 13:47:01 +0900 Subject: [PATCH] =?UTF-8?q?[EDIT]=20=E5=8F=8E=E6=94=AF=E3=81=AE=E7=99=BB?= =?UTF-8?q?=E9=8C=B2=E3=83=BB=E4=BF=AE=E6=AD=A3=E6=A9=9F=E8=83=BD=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82?= =?UTF-8?q?=E6=97=A5=E4=BB=98=E3=81=AEDefault=E5=80=A4=E3=82=92=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=81=97=E3=80=81Session=20Attribute=E3=83=BB?= =?UTF-8?q?=E3=82=AA=E3=83=96=E3=82=B8=E3=82=A7=E3=82=AF=E3=83=88=E3=81=AE?= =?UTF-8?q?=E5=9E=8B=E3=82=92=E4=BF=AE=E6=AD=A3=E3=81=97=E3=81=BE=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/service/TransactionService.java | 4 + .../service/impl/TransactionServiceImpl.java | 73 +++++++++++++- .../controller/TransactionController.java | 95 ++++++++++++++----- 3 files changed, 143 insertions(+), 29 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 86b85d5..84edc52 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 @@ -16,4 +16,8 @@ public interface TransactionService { public int findTotalexpense(LocalDate startDate, LocalDate endDate, Long userId); + public int createTransaction(TransactionModel transactionModel); + + public int updateTransaction(TransactionModel transactionModel); + } 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 771d267..d33dc25 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 @@ -3,14 +3,19 @@ package com.example.demo.app.domain.service.impl; import java.time.LocalDate; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import org.springframework.stereotype.Service; import com.example.demo.app.domain.model.TransactionModel; import com.example.demo.app.domain.service.TransactionService; +import com.example.demo.app.infra.entity.CategoryEntity; import com.example.demo.app.infra.entity.TransactionEntity; +import com.example.demo.app.infra.entity.UserEntity; +import com.example.demo.app.infra.repository.CategoryRepository; import com.example.demo.app.infra.repository.TransactionRepository; +import com.example.demo.app.infra.repository.UserRepository; import lombok.RequiredArgsConstructor; @@ -19,6 +24,8 @@ import lombok.RequiredArgsConstructor; public class TransactionServiceImpl implements TransactionService { private final TransactionRepository transactionRepository; + private final UserRepository userRepository; + private final CategoryRepository categoryRepository; public Map> findAllByDate(LocalDate startDate, LocalDate endDate, Long userId) { @@ -34,16 +41,17 @@ public class TransactionServiceImpl implements TransactionService { return transactionModelMap; } - + public int findTotalIncome(LocalDate startDate, LocalDate endDate, Long userId) { - + return transactionRepository.findTotalIncome(startDate, endDate, userId); - + } + public int findTotalexpense(LocalDate startDate, LocalDate endDate, Long userId) { - + return transactionRepository.findTotalIncome(startDate, endDate, userId); - + } public List findByUserIdAndDate(LocalDate todayDate, Long userId) { @@ -52,4 +60,59 @@ public class TransactionServiceImpl implements TransactionService { } + public int createTransaction(TransactionModel transactionModel) { + + Optional userEntityOptional = userRepository.findById(transactionModel.getUserId()); + + if (userEntityOptional.isEmpty()) { + return -1; + } + + Optional categoryEntityOptional = categoryRepository.findById(transactionModel.getCategoryId()); + if (categoryEntityOptional.isEmpty()) { + return -1; + } + + TransactionEntity transactionEntity = TransactionModel.convertTo( + transactionModel, + userEntityOptional.get(), + categoryEntityOptional.get()); + if (transactionRepository.save(transactionEntity) != null) { + return 0; + + } else { + return -1; + } + + } + + public int updateTransaction(TransactionModel transactionModel) { + + if (!transactionRepository.existsById(transactionModel.getTransactionId())) { + return -1; + } + + Optional userEntityOptional = userRepository.findById(transactionModel.getUserId()); + + if (userEntityOptional.isEmpty()) { + return -1; + } + + Optional categoryEntityOptional = categoryRepository.findById(transactionModel.getCategoryId()); + if (categoryEntityOptional.isEmpty()) { + return -1; + } + + TransactionEntity transactionEntity = TransactionModel.convertTo( + transactionModel, + userEntityOptional.get(), + categoryEntityOptional.get()); + if (transactionRepository.save(transactionEntity) != null) { + return 0; + + } else { + return -1; + } + + } } 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 5e51565..1ccc329 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 @@ -11,8 +11,11 @@ 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.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; +import com.example.demo.app.domain.model.LoginModel; import com.example.demo.app.domain.service.CategoryService; import com.example.demo.app.domain.service.TransactionService; import com.example.demo.app.presentation.form.CategoryForm; @@ -26,27 +29,32 @@ 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, + public String transactionList(@RequestParam(required = false) LocalDate startDates, + @RequestParam(required = false) LocalDate endDates, Model model, HttpSession session) { - LoginUser loginUser = (LoginUser) session.getAttribute("loginUser"); + LocalDate startDate = (startDates == null) ? LocalDate.now().withDayOfMonth(1) : startDates; + + LocalDate endDate = (endDates == null) ? LocalDate.now().withDayOfMonth(LocalDate.now().lengthOfMonth()) + : endDates; + + LoginModel loginUser = (LoginModel) session.getAttribute("loginUser"); Map> transactionFormMap = new HashMap<>(); - - - transactionService.findAll(startDate, endDate, loginUser.getUserId).forEach((date, list) -> { + + transactionService.findAllByDate(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() - ); + 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); @@ -59,25 +67,64 @@ public class TransactionController { // 詳細画面 @GetMapping() - public String findOne(@RequestParam LocalDate todayDate, Model model, HttpSession session) { + public String findOne(@RequestParam(required = false) LocalDate todayDates, 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()); + LocalDate todayDate = (todayDates == null) ? LocalDate.now() : todayDates; + LoginModel loginUser = (LoginModel) session.getAttribute("loginUser"); + + List transactionFormList = transactionService + .findByUserIdAndDate(todayDate, 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 ""; } + @GetMapping("") + public String createOneGet(@ModelAttribute TransactionForm transactionForm) { + + return ""; + } + + @PostMapping() + public String createOnePost(@ModelAttribute TransactionForm transactionForm, Model model) { + + if (transactionService.createTransaction(TransactionForm.convertTo(transactionForm)) != 0) { + return "error"; + } + + return ""; + + } + + @GetMapping("") + public String updateOneGet(@ModelAttribute TransactionForm transactionForm) { + + return ""; + } + + @PostMapping() + public String updateOnePost(@ModelAttribute TransactionForm transactionForm, Model model) { + + if (transactionService.updateTransaction(TransactionForm.convertTo(transactionForm)) != 0) { + return "error"; + } + + return ""; + + } + }