Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions src/main/java/com/sc/secondHandMarket/TestUserDataInit.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.sc.secondHandMarket;

import com.sc.secondHandMarket.domain.user.entity.User;
import com.sc.secondHandMarket.domain.user.repository.UserRepository;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

/**
* User 데이터 넣는 코드
*
* 주석화 해놓은 @Component와 @PostConstruct를 주석화 헤제한 뒤
* 메인 코드를 실행시키면 자동으로 들어감.
*
* 이후에는 다시 두 어노테이션을 주석화할 것.
*
* * 마음대로 더 추가 가능
*/

//@Component
@RequiredArgsConstructor
public class TestUserDataInit {

private final UserRepository userRepository;

// @PostConstruct
public void testUserData() throws InterruptedException {
User user1 = new User("user1", "123123", "random1@naver.com", "010-1254-2314");
Thread.sleep(1000);
User user2 = new User("user2", "456456", "random2@naver.com", "010-1459-0897");
Thread.sleep(1000);
User user3 = new User("user3", "789789", "random3@naver.com", "010-9854-0283");

userRepository.save(user1);
userRepository.save(user2);
userRepository.save(user3);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public class Sale {
@ManyToOne(fetch= LAZY)
@JoinColumn(name = "user_id")
private User user;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "product_id")
private Product product;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,45 @@
package com.sc.secondHandMarket.domain.user.controller;

import org.springframework.stereotype.Controller;
import com.sc.secondHandMarket.domain.user.dto.request.UserRequestDto;
import com.sc.secondHandMarket.domain.user.dto.response.UserResponseDto;
import com.sc.secondHandMarket.domain.user.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@Controller
import java.util.List;

@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {

private final UserService userService;

// 전체 User 조회
@GetMapping
public ResponseEntity<List<UserResponseDto>> findAll() {
return ResponseEntity.ok(userService.findAll());
}

// ID로 User 조회
@GetMapping("/{userId}")
public ResponseEntity<UserResponseDto> findById(@PathVariable Long userId) {
return ResponseEntity.ok(userService.findById(userId));
}

// User 저장
@PostMapping
public ResponseEntity<String> saveUser(@RequestBody UserRequestDto userDto) {
userService.save(userDto.toUser());
return ResponseEntity.ok("User saved");
}

//ID로 User 삭제
@DeleteMapping("/{userId}")
public ResponseEntity<String> deleteUser(@PathVariable Long userId) {
userService.deleteById(userId);
return ResponseEntity.ok("User deleted");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.sc.secondHandMarket.domain.user.dto.request;

import com.sc.secondHandMarket.domain.user.entity.User;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
public class UserRequestDto {
private String nickname;
private String password;
private String email;
private String phone;

public User toUser() {
return new User(
nickname,
password,
email,
phone);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.sc.secondHandMarket.domain.user.dto.response;

import com.sc.secondHandMarket.domain.user.entity.User;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Getter
@NoArgsConstructor
public class UserResponseDto {

private String nickname;
private String email;
private String phone;
private LocalDateTime created_at;

public UserResponseDto(User user) {
this.nickname = user.getNickname();
this.email = user.getEmail();
this.phone = user.getPhone();
this.created_at = user.getCreated_at();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,16 @@ public class User {
@GeneratedValue
private Long id;

private String email;
private String password;
private String nickname;
private String password;
private String email;
private String phone;
private LocalDateTime created_at;

public User(String email, String password, String nickname, String phone) {
this.email = email;
this.password = password;
public User(String nickname, String password, String email, String phone) {
this.nickname = nickname;
this.password = password;
this.email = email;
this.phone = phone;
this.created_at = LocalDateTime.now();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
package com.sc.secondHandMarket.domain.user.service;

import org.springframework.stereotype.Service;
import com.sc.secondHandMarket.domain.user.dto.response.UserResponseDto;
import com.sc.secondHandMarket.domain.user.entity.User;

@Service
public class UserService {
import java.util.List;

public interface UserService {
List<UserResponseDto> findAll();

UserResponseDto findById(Long userId);

User save(User user);

User deleteById(Long userId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.sc.secondHandMarket.domain.user.service;

import com.sc.secondHandMarket.domain.user.dto.response.UserResponseDto;
import com.sc.secondHandMarket.domain.user.entity.User;
import com.sc.secondHandMarket.domain.user.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService{

private final UserRepository userRepository;

@Override
public List<UserResponseDto> findAll() {
List<UserResponseDto> dtoList = new ArrayList<>();
for (User user : userRepository.findAll()) {
dtoList.add(toDto(user));
}
return dtoList;
}

@Override
public UserResponseDto findById(Long userId) {
return toDto(userRepository.findById(userId).orElseThrow());
}

@Override
public User save(User user) {
return userRepository.save(user);
}

// DTO로 변환
private UserResponseDto toDto(User user) {
return new UserResponseDto(user);
}

@Override
public User deleteById(Long userId) {
User user = userRepository.findById(userId).orElseThrow();
userRepository.deleteById(userId);
return user;
}
}