diff --git a/src/main/java/com/makefire/anonymous/domain/user/entity/User.java b/src/main/java/com/makefire/anonymous/domain/user/entity/User.java index f9ae46b..16d930f 100644 --- a/src/main/java/com/makefire/anonymous/domain/user/entity/User.java +++ b/src/main/java/com/makefire/anonymous/domain/user/entity/User.java @@ -1,5 +1,13 @@ package com.makefire.anonymous.domain.user.entity; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.*; +import java.util.Date; + /** *packageName : com.makefire.anonymous * fileName : User @@ -9,7 +17,36 @@ * ================================= * DATE AUTHOR NOTE * 22-01-15 최푸름 + * 22-02-08 김민철 * --------------------------------- */ +@Getter +@Entity +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Table(name = "SYS_USER") public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long id; + + @Column(name="USER_ID", nullable = false) + private String userId; //아이디 + + @Column(name="USER_NM", nullable = false) + private String name; //이름 + + @Column(name="PWD", nullable = false) + private String password; //패스워드 + + @Temporal(TemporalType.TIMESTAMP) + private Date regDate; //등록일자 + + @Builder + public User(String userId, String name, String password){ + this.userId = userId; + this.name = name; + this.password = password; + } + } diff --git a/src/main/java/com/makefire/anonymous/domain/user/repository/UserRepository.java b/src/main/java/com/makefire/anonymous/domain/user/repository/UserRepository.java index c61b2f4..dcc9d1c 100644 --- a/src/main/java/com/makefire/anonymous/domain/user/repository/UserRepository.java +++ b/src/main/java/com/makefire/anonymous/domain/user/repository/UserRepository.java @@ -1,8 +1,8 @@ package com.makefire.anonymous.domain.user.repository; -import com.makefire.anonymous.domain.user.entity.Authority; -import com.makefire.anonymous.service.user.UserService; +import com.makefire.anonymous.domain.user.entity.User; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; /** *packageName : com.makefire.anonymous @@ -13,8 +13,10 @@ * ================================= * DATE AUTHOR NOTE * 22-01-15 최푸름 + * 22-02-14 김민철 * --------------------------------- */ -public interface UserRepository extends JpaRepository { +@Repository +public interface UserRepository extends JpaRepository { } diff --git a/src/main/java/com/makefire/anonymous/rest/controller/api/UserController.java b/src/main/java/com/makefire/anonymous/rest/controller/api/UserController.java index de85eb5..26e2640 100644 --- a/src/main/java/com/makefire/anonymous/rest/controller/api/UserController.java +++ b/src/main/java/com/makefire/anonymous/rest/controller/api/UserController.java @@ -1,6 +1,16 @@ package com.makefire.anonymous.rest.controller.api; +import com.makefire.anonymous.rest.RestSupport; +import com.makefire.anonymous.rest.dto.request.UserRequest; +import com.makefire.anonymous.rest.dto.response.Response; +import com.makefire.anonymous.rest.dto.response.UserResponse; +import com.makefire.anonymous.service.user.UserService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; /** *packageName : com.makefire.anonymous @@ -10,9 +20,34 @@ * description : 유저 E2E * ================================= * DATE AUTHOR NOTE - * 22-01-15 최푸름 + * 22-02-16 김민철 * --------------------------------- */ @Controller -public class UserController { +@RequiredArgsConstructor +@RequestMapping("/api/user") +public class UserController extends RestSupport{ + + private final UserService userService; + + //사용자 등록 + @PostMapping("/userSignUp") + public ResponseEntity insertUser(@Valid @RequestBody UserRequest userRequest){ + return response(userService.save(userRequest)); + //ResponseEntity.ok(userService.save(userRequest)); + + } + + //사용자 조회 + @GetMapping("/findUserId/{id}") + public ResponseEntity getUser(@PathVariable("id") long userId){ + return response(userService.getUser(userId)); + } + + //사용자 목록 + @GetMapping("/userList") + public ResponseEntity getUserList(){ + return response(userService.getUserList()); + } + } diff --git a/src/main/java/com/makefire/anonymous/rest/dto/request/UserRequest.java b/src/main/java/com/makefire/anonymous/rest/dto/request/UserRequest.java new file mode 100644 index 0000000..abd661f --- /dev/null +++ b/src/main/java/com/makefire/anonymous/rest/dto/request/UserRequest.java @@ -0,0 +1,33 @@ +package com.makefire.anonymous.rest.dto.request; + +import com.makefire.anonymous.domain.user.entity.User; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + + +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class UserRequest { + + private Long id; // id값 + private String userId; //아이디 + private String name; //이름 + private String password; //비밀번호 + + @Builder + public UserRequest (String userId, String name, String password){ + this.userId = userId; + this.name = name; + this.password = password; + } + + public static User toEntity(UserRequest userRequest){ + return User.builder(). + userId(userRequest.getUserId()). + name(userRequest.getName()). + password(userRequest.getPassword()). + build(); + } +} diff --git a/src/main/java/com/makefire/anonymous/rest/dto/response/UserResponse.java b/src/main/java/com/makefire/anonymous/rest/dto/response/UserResponse.java new file mode 100644 index 0000000..b236e47 --- /dev/null +++ b/src/main/java/com/makefire/anonymous/rest/dto/response/UserResponse.java @@ -0,0 +1,64 @@ +package com.makefire.anonymous.rest.dto.response; + +import com.makefire.anonymous.domain.user.entity.User; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; + +/** + * packageName : com.makefire.anonymous.rest.dto.response + * fileName : Response + * author : User + * date : 2022-01-15 + * description : + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2022-01-15 User 최초 생성 + */ + +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class UserResponse { + + private Long id; // id값 + private String userId; //사용자 아이디 + private String name; //이름 + private String password; //패스워드 + + @Builder + public UserResponse(Long id, String userId, String name, String password){ + this.id= id; + this.userId = userId; + this.name = name; + this.password = password; + } + + public static UserResponse from(User user){ + + return UserResponse.builder() + .id(user.getId()) + .userId(user.getUserId()) + .name(user.getName()) + .password(user.getPassword()) + .build(); + } + + public static List fromList(List users){ + List userList = new ArrayList<>(); + + users.forEach(user -> userList.add( + UserResponse.builder() + .id(user.getId()) + .userId(user.getUserId()) + .name(user.getName()) + .build() + )); + return userList; + } + +} diff --git a/src/main/java/com/makefire/anonymous/service/user/UserService.java b/src/main/java/com/makefire/anonymous/service/user/UserService.java index 9dc2165..d3f5751 100644 --- a/src/main/java/com/makefire/anonymous/service/user/UserService.java +++ b/src/main/java/com/makefire/anonymous/service/user/UserService.java @@ -1,8 +1,16 @@ package com.makefire.anonymous.service.user; +import com.makefire.anonymous.domain.user.entity.User; import com.makefire.anonymous.domain.user.repository.UserRepository; -import lombok.AllArgsConstructor; +import com.makefire.anonymous.exception.BadRequestException; +import com.makefire.anonymous.rest.dto.request.UserRequest; +import com.makefire.anonymous.rest.dto.response.UserResponse; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; /** *packageName : com.makefire.anonymous @@ -16,8 +24,31 @@ * --------------------------------- */ @Service -@AllArgsConstructor +@RequiredArgsConstructor public class UserService { + private final UserRepository userRepository; + //사용자 생성 + @Transactional + public UserResponse save(UserRequest userRequest){ + + User user = UserRequest.toEntity(userRequest); + return UserResponse.from(userRepository.save(user)); + } + + //사용자 조회 + public UserResponse getUser(Long userId){ + User user = userRepository.findById(userId).orElseThrow(() + -> new BadRequestException("해당 사용자를 찾을수없습니다. 사용자 id를 확인해주세요.")); + return UserResponse.from(user); + } + + //사용자 목록 + public List getUserList(){ + List userList = userRepository.findAll(); + return UserResponse.fromList(userList); + } + } +