[Spring Boot 쇼핑몰] CRUD - User 클래스 ①

개발자·2022년 1월 29일

Spring boot 쇼핑몰

목록 보기
8/14

아이템 CRUD 를 구현 하였으니 이제 User에 대한 CRUD를 구현하려고 한다.

사용자를 위한 구현은 초반에 설계했던 대로 구현하려한다.
먼저 판매자 / 구매자의 구현 기능이 공통된것도 있고 다른 것도 있다.

공통

  • 마이페이지

판매자

  • 상품 등록
  • 등록한 상품
  • 판매 현황

구매자

  • 장바구니
  • 구매 내역

설계한 내용중 다음을 먼저 구현하려고 한다.

이번시간에는 공통인 마이페이지의 구현을 해보겠다.

UserPageService.java

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();
    }
}

UserPageController.java

@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";
    }
  • 마이페이지의 CRUD 구현
  • User 정보는 이전에 로그인/회원가입 시간에 구현하였으니
    마이페이지와 정보수정을 구현한다.

구현화면

  • 템플릿은 부트스트랩을 사용하였다.
  • 주소는 Daum에서 주소 Open API를 사용하였다. 이를 위해 User Entity를 수정하였다.

0개의 댓글