User Service 리팩토링
This commit is contained in:
@@ -3,13 +3,16 @@ package com.roy.springcloud.userservice.controller;
|
||||
import com.roy.springcloud.userservice.dto.UserDto;
|
||||
import com.roy.springcloud.userservice.service.UserService;
|
||||
import com.roy.springcloud.userservice.vo.request.UserSaveRequest;
|
||||
import com.roy.springcloud.userservice.vo.response.UserSaveResponse;
|
||||
import com.roy.springcloud.userservice.vo.response.UserResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.roy.springcloud.util.mapper.MapperUtil.toObject;
|
||||
|
||||
@RestController
|
||||
@@ -21,7 +24,7 @@ public class UserController {
|
||||
|
||||
@GetMapping("/health-check")
|
||||
public String healthCheck() {
|
||||
return "User service is working";
|
||||
return String.format("It's Working in User Service on PORT: %s", environment.getProperty("local.server.port"));
|
||||
}
|
||||
|
||||
@GetMapping("/welcome")
|
||||
@@ -30,11 +33,28 @@ public class UserController {
|
||||
}
|
||||
|
||||
@PostMapping("/users")
|
||||
public ResponseEntity<UserSaveResponse> createUser(@RequestBody UserSaveRequest request) {
|
||||
public ResponseEntity<UserResponse> createUser(@RequestBody UserSaveRequest request) {
|
||||
UserDto userDto = toObject(request, UserDto.class);
|
||||
userService.createUser(userDto);
|
||||
UserSaveResponse response = toObject(userDto, UserSaveResponse.class);
|
||||
UserResponse response = toObject(userDto, UserResponse.class);
|
||||
return ResponseEntity.status(HttpStatus.CREATED).body(response);
|
||||
}
|
||||
|
||||
@GetMapping("/users")
|
||||
public ResponseEntity<List<UserResponse>> getUsers() {
|
||||
List<UserDto> savedUsers = userService.getAllUser();
|
||||
List<UserResponse> response = new ArrayList<>();
|
||||
savedUsers.forEach(user -> {
|
||||
response.add(toObject(user, UserResponse.class));
|
||||
});
|
||||
return ResponseEntity.status(HttpStatus.OK).body(response);
|
||||
}
|
||||
|
||||
@GetMapping("/users/{userId}")
|
||||
public ResponseEntity<UserResponse> getUser(@PathVariable("userId") String userId) {
|
||||
UserDto userDto = userService.getUserByUserId(userId);
|
||||
UserResponse response = toObject(userDto, UserResponse.class);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(response);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package com.roy.springcloud.userservice.dto;
|
||||
|
||||
import com.roy.springcloud.userservice.vo.response.OrderResponse;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class UserDto {
|
||||
@@ -12,4 +15,5 @@ public class UserDto {
|
||||
private String userId;
|
||||
private LocalDateTime createdAt;
|
||||
private String encryptedPassword;
|
||||
private List<OrderResponse> orders = new ArrayList<>();
|
||||
}
|
||||
|
||||
@@ -3,5 +3,9 @@ package com.roy.springcloud.userservice.repository;
|
||||
import com.roy.springcloud.userservice.domain.User;
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface UserRepository extends CrudRepository<User, Long> {
|
||||
Optional<User> findByUserId(String userId);
|
||||
Iterable<User> findAll();
|
||||
}
|
||||
|
||||
@@ -2,6 +2,10 @@ package com.roy.springcloud.userservice.service;
|
||||
|
||||
import com.roy.springcloud.userservice.dto.UserDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface UserService {
|
||||
UserDto createUser(UserDto userDTO);
|
||||
void createUser(UserDto userDTO);
|
||||
UserDto getUserByUserId(String userId);
|
||||
List<UserDto> getAllUser();
|
||||
}
|
||||
|
||||
@@ -4,13 +4,17 @@ import com.roy.springcloud.userservice.domain.User;
|
||||
import com.roy.springcloud.userservice.dto.UserDto;
|
||||
import com.roy.springcloud.userservice.repository.UserRepository;
|
||||
import com.roy.springcloud.userservice.service.UserService;
|
||||
import com.roy.springcloud.util.mapper.MapperUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static com.roy.springcloud.util.mapper.MapperUtil.toObject;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class UserServiceImpl implements UserService {
|
||||
@@ -18,11 +22,27 @@ public class UserServiceImpl implements UserService {
|
||||
private final BCryptPasswordEncoder passwordEncoder;
|
||||
|
||||
@Override
|
||||
public UserDto createUser(UserDto userDto) {
|
||||
public void createUser(UserDto userDto) {
|
||||
userDto.setUserId(UUID.randomUUID().toString());
|
||||
User user = MapperUtil.toObject(userDto, User.class);
|
||||
User user = toObject(userDto, User.class);
|
||||
user.setEncryptedPassword(passwordEncoder.encode(userDto.getPassword()));
|
||||
userRepository.save(user);
|
||||
return userDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserDto getUserByUserId(String userId) {
|
||||
User savedUser = userRepository.findByUserId(userId)
|
||||
.orElseThrow(() -> new UsernameNotFoundException("User not found"));
|
||||
return toObject(savedUser, UserDto.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserDto> getAllUser() {
|
||||
Iterable<User> savedUsers = userRepository.findAll();
|
||||
List<UserDto> response = new ArrayList<>();
|
||||
savedUsers.forEach(user -> {
|
||||
response.add(toObject(user, UserDto.class));
|
||||
});
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.roy.springcloud.userservice.vo.response;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class OrderResponse {
|
||||
private String productId;
|
||||
private Integer quantity;
|
||||
private Integer unitPrice;
|
||||
private Integer totalPrice;
|
||||
private LocalDateTime createdAt;
|
||||
|
||||
private String orderId;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.roy.springcloud.userservice.vo.response;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class UserResponse {
|
||||
private String email;
|
||||
private String name;
|
||||
private String userId;
|
||||
|
||||
private List<OrderResponse> orders;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
package com.roy.springcloud.userservice.vo.response;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class UserSaveResponse {
|
||||
private String email;
|
||||
private String name;
|
||||
private String userId;
|
||||
}
|
||||
Reference in New Issue
Block a user