아이템 CRUD 를 구현 하였으니 이제 User에 대한 CRUD를 구현하려고 한다.
사용자를 위한 구현은 초반에 설계했던 대로 구현하려한다.
먼저 판매자 / 구매자의 구현 기능이 공통된것도 있고 다른 것도 있다.
공통
판매자
구매자
설계한 내용중 다음을 먼저 구현하려고 한다.
이번시간에는 공통인 마이페이지의 구현을 해보겠다.
package Shop.Shopping.service;
import Shop.Shopping.domain.user.User;
import Shop.Shopping.domain.user.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@RequiredArgsConstructor
@Service
public class UserPageService {
private final UserRepository userRepository;
public User findUser(Integer id){
return userRepository.findById(id).get();
}
}
@RequiredArgsConstructor
@Controller
public class UserPageController {
private final UserPageService userPageService;
private final AuthService authService;
// 유저 상세페이지
@GetMapping("/user/{id}")
public String userPage(@PathVariable("id") Integer id, Model model, @AuthenticationPrincipal PrincipalDetails principalDetails){
if(principalDetails.getUser().getId() == id){
model.addAttribute("user",userPageService.findUser(id));
return "/user/mypage";
}else{
return "redirect:/main";
}
}
// 유저 정보수정
@GetMapping("/user/modify/{id}")
public String userModify(@PathVariable("id") Integer id, Model model){
model.addAttribute("user",userPageService.findUser(id));
return "/user/useredit";
}
// 유저 정보수정 처리
@PostMapping("/user/update/{id}")
public String userUpdate(@PathVariable("id") Integer id, User user, @AuthenticationPrincipal PrincipalDetails principalDetails){
User tempUser = userPageService.findUser(id);
tempUser.setEmail(user.getEmail());
tempUser.setAddress(user.getAddress());
tempUser.setPhone_number(user.getPhone_number());
tempUser.setAddr1(user.getAddr1());
tempUser.setAddr2(user.getAddr2());
tempUser.setAddr3(user.getAddr3());
tempUser.setAddress(user.getAddr2() + ' ' + user.getAddr3());
authService.userUpdate(tempUser);
return "redirect:/main";
}