This commit is contained in:
2026-09-18 09:37:07 +09:00
parent 1c61909a48
commit 6d494e1ac1
18 changed files with 10 additions and 467 deletions

View File

@@ -1,10 +0,0 @@
package com.example.demo.app.domain.service;
import java.util.List;
import com.example.demo.app.domain.model.CourseInfoModel;
public interface CourseInfoService {
public List<CourseInfoModel> findAll();
}

View File

@@ -1,11 +0,0 @@
package com.example.demo.app.domain.service;
import java.util.List;
import com.example.demo.app.domain.model.CourseModel;
public interface CourseService {
public List<CourseModel> findAll();
}

View File

@@ -1,8 +0,0 @@
package com.example.demo.app.domain.service;
import com.example.demo.app.presentation.form.PasswordResetForm;
public interface PasswordResetService {
boolean resetPassword(Long userId, PasswordResetForm passwordResetForm);
}

View File

@@ -1,8 +0,0 @@
package com.example.demo.app.domain.service;
import com.example.demo.app.presentation.form.UserForm;
public interface UserService {
void register(UserForm userForm);
}

View File

@@ -1,23 +0,0 @@
package com.example.demo.app.domain.service.impl;
import java.util.List;
import org.springframework.stereotype.Service;
import com.example.demo.app.domain.model.CourseInfoModel;
import com.example.demo.app.domain.service.CourseInfoService;
import com.example.demo.app.infra.repository.AllocationRepository;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class CourseInfoServiceImpl implements CourseInfoService {
private final AllocationRepository allocationRepository;
@Override
public List<CourseInfoModel> findAll() {
return allocationRepository.findAllJoinedAllocation();
}
}

View File

@@ -1,24 +0,0 @@
package com.example.demo.app.domain.service.impl;
import java.util.List;
import org.springframework.stereotype.Service;
import com.example.demo.app.domain.model.CourseModel;
import com.example.demo.app.domain.service.CourseService;
import com.example.demo.app.infra.entity.CourseEntity;
import com.example.demo.app.infra.repository.CourseRepository;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class CourseServiceImpl implements CourseService {
private final CourseRepository courseRepository;
public List<CourseModel> findAll(){
return CourseEntity.createCourseModelList(courseRepository.findAll());
}
}

View File

@@ -1,41 +0,0 @@
package com.example.demo.app.domain.service.impl;
import org.springframework.stereotype.Service;
import com.example.demo.app.domain.service.PasswordResetService;
import com.example.demo.app.infra.entity.UserEntity;
import com.example.demo.app.infra.repository.UserRepository;
import com.example.demo.app.presentation.form.PasswordResetForm;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class PasswordResetServiceImpl implements PasswordResetService {
private final UserRepository userRepository;
@Override
public boolean resetPassword(
Long userId,
PasswordResetForm passwordResetForm) {
if (!passwordResetForm.getPassword()
.equals(passwordResetForm.getPasswordConfirm())) {
return false;
}
UserEntity userEntity =
userRepository.findById(userId).orElse(null);
if (userEntity == null) {
return false;
}
userEntity.setPassword(passwordResetForm.getPassword());
userRepository.save(userEntity);
return true;
}
}

View File

@@ -1,58 +0,0 @@
package com.example.demo.app.domain.service.impl;
import org.springframework.stereotype.Service;
import com.example.demo.app.domain.service.UserService;
import com.example.demo.app.infra.entity.CourseEntity;
import com.example.demo.app.infra.entity.GoalEntity;
import com.example.demo.app.infra.entity.QuestionEntity;
import com.example.demo.app.infra.entity.UserEntity;
import com.example.demo.app.infra.repository.CourseRepository;
import com.example.demo.app.infra.repository.GoalRepository;
import com.example.demo.app.infra.repository.QuestionRepository;
import com.example.demo.app.infra.repository.UserRepository;
import com.example.demo.app.presentation.form.UserForm;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
private final QuestionRepository questionRepository;
private final GoalRepository goalRepository;
private final CourseRepository courseRepository;
@Override
public void register(UserForm userForm) {
UserEntity userEntity = new UserEntity();
userEntity.setUserName(userForm.getUserName());
userEntity.setMailAddress(userForm.getMailAddress());
userEntity.setPassword(userForm.getPassword());
userEntity.setSecretQuestionAnswer(userForm.getSecretAnswer());
userEntity.setBirthDate(userForm.getBirthDate());
userEntity.setSaving(userForm.getSaving());
userEntity.setAnnualIncome(userForm.getAnnualIncome());
userEntity.setMonthlyBudget(userForm.getMonthlyBudget());
QuestionEntity questionEntity =
questionRepository.findById(userForm.getSecretQuestionId()).orElse(null);
GoalEntity goalEntity =
goalRepository.findById(userForm.getGoalId()).orElse(null);
CourseEntity courseEntity =
courseRepository.findById(userForm.getCourseId()).orElse(null);
userEntity.setQuestionEntity(questionEntity);
userEntity.setGoalEntity(goalEntity);
userEntity.setCourseEntity(courseEntity);
userEntity.setDeleteFlag(0);
userRepository.save(userEntity);
}
}

View File

@@ -9,7 +9,6 @@ import org.springframework.web.bind.annotation.GetMapping;
import com.example.demo.app.domain.model.AnalysisModel; import com.example.demo.app.domain.model.AnalysisModel;
import com.example.demo.app.domain.model.LoginModel; import com.example.demo.app.domain.model.LoginModel;
import com.example.demo.app.domain.service.AnalysisService; import com.example.demo.app.domain.service.AnalysisService;
import com.example.demo.app.presentation.form.AnalysisForm;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -24,15 +23,15 @@ public class AnalysisController {
public String showAnalysis(Model model, HttpSession session) { public String showAnalysis(Model model, HttpSession session) {
//ログインユーザーの取得(セッション) //ログインユーザーの取得(セッション)
LoginModel loginUser = (LoginModel) session.getAttribute("loginUser"); LoginModel loginUser = (LoginModel) session.getAttribute("loginUser");
//分析結果の取得(Service) //分析結果の取得(Service)
AnalysisModel analysisModel = analysisService.getAnalysis(loginUser.getUserId()); AnalysisModel analysisModel = analysisService.getAnalysis(loginUser.getUserId());
AnalysisForm analysisForm = AnalysisForm.convertFrom(analysisModel); AnalysisForm analysisForm = AnalysisForm.convertFrom(analysisModel);
//model格納 //model格納
model.addAttribute("analysisForm", analysisForm); model.addAttribute("analysisForm", analysisForm);
return "analysis"; return "analysis";
} }

View File

@@ -1,61 +0,0 @@
package com.example.demo.app.presentation.controller;
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.PostMapping;
import com.example.demo.app.domain.service.PasswordResetService;
import com.example.demo.app.presentation.form.PasswordResetForm;
import lombok.RequiredArgsConstructor;
@Controller
@RequiredArgsConstructor
public class PasswordResetController {
private final PasswordResetService passwordResetService;
@GetMapping("/password_reset")
public String showPasswordReset(Model model) {
model.addAttribute(
"passwordResetForm",
new PasswordResetForm());
return "password_reset";
}
@PostMapping("/password_reset")
public String resetPassword(
PasswordResetForm passwordResetForm,
Model model,
HttpSession session) {
Long userId =
(Long) session.getAttribute("passwordResetUserId");
if (userId == null) {
return "redirect:/login";
}
boolean isReset =
passwordResetService.resetPassword(
userId,
passwordResetForm);
if (!isReset) {
model.addAttribute(
"errorMessage",
"パスワードが一致していません。");
return "password_reset";
}
session.removeAttribute("passwordResetUserId");
return "redirect:/login";
}
}

View File

@@ -1,49 +0,0 @@
package com.example.demo.app.presentation.controller;
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 com.example.demo.app.presentation.form.UserForm;
import lombok.RequiredArgsConstructor;
@Controller
@RequiredArgsConstructor
public class UserController {
@GetMapping("/user/register")
public String showRegister(Model model) {
model.addAttribute("userForm", new UserForm());
return "user_register";
}
@PostMapping("/user/register/confirm")
public String confirmRegister(
@ModelAttribute UserForm userForm,
HttpSession session) {
session.setAttribute("userForm", userForm);
return "user_register_confirm";
}
@PostMapping("/user/register/complete")
public String completeRegister(HttpSession session) {
UserForm userForm =
(UserForm) session.getAttribute("userForm");
// DBへの登録処理
session.removeAttribute("userForm");
return "redirect:/login";
}
}

View File

@@ -1,32 +0,0 @@
package com.example.demo.app.presentation.form;
import java.util.List;
import com.example.demo.app.domain.model.AnalysisModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AnalysisForm {
private Integer currentMonthTotalAmount;
private Integer previousMonthTotalAmount;
private Integer totalDifferenceAmount;
private List<CategoryAnalysisForm> categoryAnalysisFormList;
public static AnalysisForm convertFrom(
AnalysisModel analysisModel) {
return new AnalysisForm(
analysisModel.getCurrentMonthTotalAmount(),
analysisModel.getPreviousMonthTotalAmount(),
analysisModel.getTotalDifferenceAmount(),
CategoryAnalysisForm.convertFrom(
analysisModel.getCategoryAnalysisModelList()));
}
}

View File

@@ -1,48 +0,0 @@
package com.example.demo.app.presentation.form;
import java.util.List;
import com.example.demo.app.domain.model.CategoryAnalysisModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CategoryAnalysisForm {
private String categoryName;
private Integer currentMonthAmount;
private Integer previousMonthAmount;
private Integer monthDifferenceAmount;
private Integer courseLimitAmount;
private Integer courseDifferenceAmount;
public static CategoryAnalysisForm convertFrom(
CategoryAnalysisModel categoryAnalysisModel) {
return new CategoryAnalysisForm(
categoryAnalysisModel.getCategoryName(),
categoryAnalysisModel.getCurrentMonthAmount(),
categoryAnalysisModel.getPreviousMonthAmount(),
categoryAnalysisModel.getMonthDifferenceAmount(),
categoryAnalysisModel.getCourseLimitAmount(),
categoryAnalysisModel.getCourseDifferenceAmount());
}
public static List<CategoryAnalysisForm> convertFrom(
List<CategoryAnalysisModel> categoryAnalysisModelList) {
return categoryAnalysisModelList.stream()
.map(CategoryAnalysisForm::convertFrom)
.toList();
}
}

View File

@@ -1,13 +0,0 @@
package com.example.demo.app.presentation.form;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PasswordResetForm {
private String password;
private String passwordConfirm;
}

View File

@@ -1,24 +0,0 @@
package com.example.demo.app.presentation.form;
import java.time.LocalDate;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserForm {
private String userName;
private String mailAddress;
private String password;
private Long secretQuestionId;
private String SecretAnswer;
private LocalDate birthDate;
private Integer saving;
private Integer annualIncome;
private Integer monthlyBudget;
private Long goalId;
private Long courseId;
}

View File

@@ -12,7 +12,7 @@
<table class="table text-center"> <table class="table text-center">
<thead> <thead>
<tr> <tr>
<th scope="col"></th> <th scope="col">カテゴリ別</th>
<th scope="col">支出</th> <th scope="col">支出</th>
<th scope="col">前月比</th> <th scope="col">前月比</th>
</tr> </tr>
@@ -42,11 +42,7 @@
<tr> <tr>
<th scope="col">カテゴリ別</th> <th scope="col">カテゴリ別</th>
<th scope="col">支出</th> <th scope="col">支出</th>
<th scope="col"> <th scope="col">前月比<br>コース比</th>
前月比
<br>
コース比
</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>

View File

@@ -1,42 +0,0 @@
<!DOCTYPE html>
<html lang="ja"xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>パスワード再設定</title>
</head>
<body>
<header></header>
<main>
<h1>パスワード再設定</h1>
<form th:action="@{/password_reset}" th:obiect="${passwordResteForm"} method="post">
<div>
<label for="password">新しいパスワード</label>
<input type="password"
id="password"
th:field="*{password}"
minlength="8"
maxlength="255"
required>
</div>
<div>
<label for="passwordConfirm">パスワード確認</label>
<input type="password"
id="passwordConfirm"
th:field="*{passwordConfirm}"
minlength="8"
maxlength="255"
required>
</div>
<button type="submit">再設定</button>
</form>
<div th:if="${errorMessage}">
<p th:text="${errorMessage}"></p>
</div>
</main>
</body>
</html>

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ja"xmlns:th="http://www.thymeleaf.org"> <html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>新規会員登録確認</title> <title>新規会員登録確認</title>