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.dto.UserDto;
|
||||||
import com.roy.springcloud.userservice.service.UserService;
|
import com.roy.springcloud.userservice.service.UserService;
|
||||||
import com.roy.springcloud.userservice.vo.request.UserSaveRequest;
|
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 lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static com.roy.springcloud.util.mapper.MapperUtil.toObject;
|
import static com.roy.springcloud.util.mapper.MapperUtil.toObject;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@@ -21,7 +24,7 @@ public class UserController {
|
|||||||
|
|
||||||
@GetMapping("/health-check")
|
@GetMapping("/health-check")
|
||||||
public String healthCheck() {
|
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")
|
@GetMapping("/welcome")
|
||||||
@@ -30,11 +33,28 @@ public class UserController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/users")
|
@PostMapping("/users")
|
||||||
public ResponseEntity<UserSaveResponse> createUser(@RequestBody UserSaveRequest request) {
|
public ResponseEntity<UserResponse> createUser(@RequestBody UserSaveRequest request) {
|
||||||
UserDto userDto = toObject(request, UserDto.class);
|
UserDto userDto = toObject(request, UserDto.class);
|
||||||
userService.createUser(userDto);
|
userService.createUser(userDto);
|
||||||
UserSaveResponse response = toObject(userDto, UserSaveResponse.class);
|
UserResponse response = toObject(userDto, UserResponse.class);
|
||||||
return ResponseEntity.status(HttpStatus.CREATED).body(response);
|
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;
|
package com.roy.springcloud.userservice.dto;
|
||||||
|
|
||||||
|
import com.roy.springcloud.userservice.vo.response.OrderResponse;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class UserDto {
|
public class UserDto {
|
||||||
@@ -12,4 +15,5 @@ public class UserDto {
|
|||||||
private String userId;
|
private String userId;
|
||||||
private LocalDateTime createdAt;
|
private LocalDateTime createdAt;
|
||||||
private String encryptedPassword;
|
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 com.roy.springcloud.userservice.domain.User;
|
||||||
import org.springframework.data.repository.CrudRepository;
|
import org.springframework.data.repository.CrudRepository;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public interface UserRepository extends CrudRepository<User, Long> {
|
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 com.roy.springcloud.userservice.dto.UserDto;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface UserService {
|
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.dto.UserDto;
|
||||||
import com.roy.springcloud.userservice.repository.UserRepository;
|
import com.roy.springcloud.userservice.repository.UserRepository;
|
||||||
import com.roy.springcloud.userservice.service.UserService;
|
import com.roy.springcloud.userservice.service.UserService;
|
||||||
import com.roy.springcloud.util.mapper.MapperUtil;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import static com.roy.springcloud.util.mapper.MapperUtil.toObject;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class UserServiceImpl implements UserService {
|
public class UserServiceImpl implements UserService {
|
||||||
@@ -18,11 +22,27 @@ public class UserServiceImpl implements UserService {
|
|||||||
private final BCryptPasswordEncoder passwordEncoder;
|
private final BCryptPasswordEncoder passwordEncoder;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UserDto createUser(UserDto userDto) {
|
public void createUser(UserDto userDto) {
|
||||||
userDto.setUserId(UUID.randomUUID().toString());
|
userDto.setUserId(UUID.randomUUID().toString());
|
||||||
User user = MapperUtil.toObject(userDto, User.class);
|
User user = toObject(userDto, User.class);
|
||||||
user.setEncryptedPassword(passwordEncoder.encode(userDto.getPassword()));
|
user.setEncryptedPassword(passwordEncoder.encode(userDto.getPassword()));
|
||||||
userRepository.save(user);
|
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