diff --git a/src/main/java/com/capstone/favicon/dataset/domain/Dataset.java b/src/main/java/com/capstone/favicon/dataset/domain/Dataset.java index 4f2402c..6a35e41 100644 --- a/src/main/java/com/capstone/favicon/dataset/domain/Dataset.java +++ b/src/main/java/com/capstone/favicon/dataset/domain/Dataset.java @@ -1,6 +1,5 @@ package com.capstone.favicon.dataset.domain; -import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/capstone/favicon/user/application/DataServiceImpl.java b/src/main/java/com/capstone/favicon/user/application/DataServiceImpl.java index afbb81e..e58701f 100644 --- a/src/main/java/com/capstone/favicon/user/application/DataServiceImpl.java +++ b/src/main/java/com/capstone/favicon/user/application/DataServiceImpl.java @@ -1,7 +1,10 @@ package com.capstone.favicon.user.application; +import com.capstone.favicon.dataset.domain.Dataset; +import com.capstone.favicon.dataset.repository.DatasetRepository; import com.capstone.favicon.user.application.service.DataService; import com.capstone.favicon.user.domain.Scrap; +import com.capstone.favicon.user.dto.ScrapResponseDto; import com.capstone.favicon.user.repository.DataRepository; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpSession; @@ -18,15 +21,24 @@ public class DataServiceImpl implements DataService { @Autowired private DataRepository dataRepository; + @Autowired + private DatasetRepository datasetRepository; @Override - public void addScrap(HttpServletRequest request, Long dataId) { + public ScrapResponseDto addScrap(HttpServletRequest request, Long dataId) { HttpSession session = request.getSession(); Long userId = (Long) session.getAttribute("id"); + Dataset dataset = datasetRepository.findById(dataId).orElse(null); + if (dataset == null) { + throw new RuntimeException(); + } Scrap scrap = new Scrap(); scrap.setUserId(userId); scrap.setDatasetId(dataId); + scrap.setTitle(dataset.getTitle()); + scrap.setTheme(dataset.getDatasetTheme().getTheme()); dataRepository.save(scrap); + return new ScrapResponseDto(dataId, dataset.getTitle(), dataset.getDatasetTheme().getTheme()); } @Override diff --git a/src/main/java/com/capstone/favicon/user/application/UserServiceImpl.java b/src/main/java/com/capstone/favicon/user/application/UserServiceImpl.java index 520b3d3..2d1958f 100644 --- a/src/main/java/com/capstone/favicon/user/application/UserServiceImpl.java +++ b/src/main/java/com/capstone/favicon/user/application/UserServiceImpl.java @@ -5,6 +5,7 @@ import com.capstone.favicon.user.application.service.UserService; import com.capstone.favicon.user.domain.User; import com.capstone.favicon.user.dto.LoginDto; +import com.capstone.favicon.user.dto.LoginResponseDto; import com.capstone.favicon.user.dto.RegisterDto; import com.capstone.favicon.user.repository.UserRepository; import jakarta.servlet.http.HttpServletRequest; @@ -65,7 +66,7 @@ public void join(RegisterDto registerDto) { } @Override - public void login(LoginDto loginDto, HttpServletRequest request) { + public LoginResponseDto login(LoginDto loginDto, HttpServletRequest request) { String email = loginDto.getEmail(); String password = loginDto.getPassword(); User user = userRepository.findByEmail(email); @@ -75,10 +76,10 @@ public void login(LoginDto loginDto, HttpServletRequest request) { if (user.getPassword().equals(password)) { HttpSession session = request.getSession(); session.setAttribute("id", user.getUserId()); + return new LoginResponseDto(user.getUserId(), user.getUsername()); } else { throw new BadCredentialsException("Wrong password"); } - } @Override diff --git a/src/main/java/com/capstone/favicon/user/application/service/DataService.java b/src/main/java/com/capstone/favicon/user/application/service/DataService.java index b53a3a8..56dd316 100644 --- a/src/main/java/com/capstone/favicon/user/application/service/DataService.java +++ b/src/main/java/com/capstone/favicon/user/application/service/DataService.java @@ -1,12 +1,13 @@ package com.capstone.favicon.user.application.service; import com.capstone.favicon.user.domain.Scrap; +import com.capstone.favicon.user.dto.ScrapResponseDto; import jakarta.servlet.http.HttpServletRequest; import java.util.List; public interface DataService { - void addScrap(HttpServletRequest request, Long dataId); + ScrapResponseDto addScrap(HttpServletRequest request, Long dataId); void deleteScrap(HttpServletRequest request, Long scrapId); List getScrap(HttpServletRequest request); } diff --git a/src/main/java/com/capstone/favicon/user/application/service/UserService.java b/src/main/java/com/capstone/favicon/user/application/service/UserService.java index 439d75d..17a2938 100644 --- a/src/main/java/com/capstone/favicon/user/application/service/UserService.java +++ b/src/main/java/com/capstone/favicon/user/application/service/UserService.java @@ -1,15 +1,17 @@ package com.capstone.favicon.user.application.service; import com.capstone.favicon.user.dto.LoginDto; +import com.capstone.favicon.user.dto.LoginResponseDto; import com.capstone.favicon.user.dto.RegisterDto; import jakarta.servlet.http.HttpServletRequest; + public interface UserService { void sendCode(RegisterDto.checkEmail checkEmail); void checkCode(RegisterDto.checkCode checkCode); void join(RegisterDto registerDto); - void login(LoginDto loginDto, HttpServletRequest request); + LoginResponseDto login(LoginDto loginDto, HttpServletRequest request); void logout(HttpServletRequest request); void delete(HttpServletRequest request); boolean checkAdmin(HttpServletRequest request); diff --git a/src/main/java/com/capstone/favicon/user/controller/UserController.java b/src/main/java/com/capstone/favicon/user/controller/UserController.java index 0ef40ea..1ff6fcb 100644 --- a/src/main/java/com/capstone/favicon/user/controller/UserController.java +++ b/src/main/java/com/capstone/favicon/user/controller/UserController.java @@ -2,7 +2,9 @@ import com.capstone.favicon.user.application.service.UserService; import com.capstone.favicon.config.APIResponse; +import com.capstone.favicon.user.domain.User; import com.capstone.favicon.user.dto.LoginDto; +import com.capstone.favicon.user.dto.LoginResponseDto; import com.capstone.favicon.user.dto.RegisterDto; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpSession; @@ -54,8 +56,8 @@ public ResponseEntity> register(@RequestBody RegisterDto register @PostMapping("/login") public ResponseEntity> login(@RequestBody LoginDto loginDto, HttpServletRequest request){ try { - userService.login(loginDto, request); - return ResponseEntity.ok().body(APIResponse.successAPI("Successfully login.", loginDto.getEmail())); + LoginResponseDto responseDto = userService.login(loginDto, request); + return ResponseEntity.ok().body(APIResponse.successAPI("Successfully login.", responseDto)); } catch (Exception e) { return ResponseEntity.badRequest().body(APIResponse.errorAPI(e.getMessage())); } diff --git a/src/main/java/com/capstone/favicon/user/domain/Scrap.java b/src/main/java/com/capstone/favicon/user/domain/Scrap.java index 9924438..63e24a8 100644 --- a/src/main/java/com/capstone/favicon/user/domain/Scrap.java +++ b/src/main/java/com/capstone/favicon/user/domain/Scrap.java @@ -1,6 +1,5 @@ package com.capstone.favicon.user.domain; -import com.capstone.favicon.dataset.domain.Dataset; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; @@ -10,19 +9,13 @@ @Setter @Table(name="scrap") public class Scrap { - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long scrapId; + private Long userId; private Long datasetId; - -// @ManyToOne -// @JoinColumn(name = "dataset_id", nullable = false) -// private Dataset dataset; -// -// @ManyToOne -// @JoinColumn(name = "user_id", nullable = false) -// private User user; + private String title; + private String theme; } diff --git a/src/main/java/com/capstone/favicon/user/dto/LoginResponseDto.java b/src/main/java/com/capstone/favicon/user/dto/LoginResponseDto.java new file mode 100644 index 0000000..84f969f --- /dev/null +++ b/src/main/java/com/capstone/favicon/user/dto/LoginResponseDto.java @@ -0,0 +1,14 @@ +package com.capstone.favicon.user.dto; + +import lombok.Getter; + +@Getter +public class LoginResponseDto { + private Long userId; + private String username; + + public LoginResponseDto(Long userId, String username) { + this.userId = userId; + this.username = username; + } +} diff --git a/src/main/java/com/capstone/favicon/user/dto/ScrapResponseDto.java b/src/main/java/com/capstone/favicon/user/dto/ScrapResponseDto.java new file mode 100644 index 0000000..9c85be4 --- /dev/null +++ b/src/main/java/com/capstone/favicon/user/dto/ScrapResponseDto.java @@ -0,0 +1,16 @@ +package com.capstone.favicon.user.dto; + + +public class ScrapResponseDto { + + private Long datasetId; + private String title; + private String theme; + + public ScrapResponseDto(Long datasetId, String title, String theme) { + this.datasetId = datasetId; + this.title = title; + this.theme = theme; + } + +}