diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/controller/ChannelController.java b/src/main/java/com/mtvs/devlinkbackend/channel/controller/ChannelController.java index 5ef7ac6..e05426e 100644 --- a/src/main/java/com/mtvs/devlinkbackend/channel/controller/ChannelController.java +++ b/src/main/java/com/mtvs/devlinkbackend/channel/controller/ChannelController.java @@ -1,15 +1,14 @@ package com.mtvs.devlinkbackend.channel.controller; -import com.mtvs.devlinkbackend.channel.dto.ChannelRegistRequestDTO; -import com.mtvs.devlinkbackend.channel.dto.ChannelUpdateRequestDTO; -import com.mtvs.devlinkbackend.channel.entity.Channel; +import com.mtvs.devlinkbackend.channel.dto.response.ChannelListResponseDTO; +import com.mtvs.devlinkbackend.channel.dto.request.ChannelRegistRequestDTO; +import com.mtvs.devlinkbackend.channel.dto.response.ChannelSingleResponseDTO; +import com.mtvs.devlinkbackend.channel.dto.request.ChannelUpdateRequestDTO; import com.mtvs.devlinkbackend.channel.service.ChannelService; import com.mtvs.devlinkbackend.util.JwtUtil; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.util.List; - @RestController @RequestMapping("/api/channel") public class ChannelController { @@ -23,40 +22,39 @@ public ChannelController(ChannelService channelService, JwtUtil jwtUtil) { // 새 채널 생성 @PostMapping - public ResponseEntity createChannel( + public ResponseEntity createChannel( @RequestBody ChannelRegistRequestDTO channelRegistRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - Channel savedChannel = channelService.saveChannel(channelRegistRequestDTO, accountId); + ChannelSingleResponseDTO savedChannel = channelService.saveChannel(channelRegistRequestDTO, accountId); return ResponseEntity.ok(savedChannel); } // 모든 채널 조회 @GetMapping - public ResponseEntity> getAllChannels() { - List channels = channelService.findAllChannels(); + public ResponseEntity getAllChannels() { + ChannelListResponseDTO channels = channelService.findAllChannels(); return ResponseEntity.ok(channels); } // 특정 채널 조회 @GetMapping("/{channelId}") - public ResponseEntity getChannelById(@PathVariable String channelId) { - return channelService.findChannelByChannelId(channelId) - .map(ResponseEntity::ok) - .orElse(ResponseEntity.notFound().build()); + public ResponseEntity getChannelById(@PathVariable String channelId) { + ChannelSingleResponseDTO channel = channelService.findChannelByChannelId(channelId); + return channel != null ? ResponseEntity.ok(channel) : ResponseEntity.notFound().build(); } // 채널 업데이트 @PatchMapping - public ResponseEntity updateChannel( + public ResponseEntity updateChannel( @RequestBody ChannelUpdateRequestDTO channelUpdateRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); try { - Channel updatedChannel = channelService.updateChannel(channelUpdateRequestDTO, accountId); - return ResponseEntity.ok(updatedChannel); + ChannelSingleResponseDTO updatedChannelDTO = channelService.updateChannel(channelUpdateRequestDTO, accountId); + return ResponseEntity.ok(updatedChannelDTO); } catch (IllegalArgumentException e) { return ResponseEntity.badRequest().body(null); } diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/dto/ChannelRegistRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/channel/dto/request/ChannelRegistRequestDTO.java similarity index 83% rename from src/main/java/com/mtvs/devlinkbackend/channel/dto/ChannelRegistRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/channel/dto/request/ChannelRegistRequestDTO.java index b26bbf6..abfe82b 100644 --- a/src/main/java/com/mtvs/devlinkbackend/channel/dto/ChannelRegistRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/channel/dto/request/ChannelRegistRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.channel.dto; +package com.mtvs.devlinkbackend.channel.dto.request; import com.mtvs.devlinkbackend.channel.entity.PositionType; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/dto/ChannelUpdateRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/channel/dto/request/ChannelUpdateRequestDTO.java similarity index 84% rename from src/main/java/com/mtvs/devlinkbackend/channel/dto/ChannelUpdateRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/channel/dto/request/ChannelUpdateRequestDTO.java index a55268f..d5d477a 100644 --- a/src/main/java/com/mtvs/devlinkbackend/channel/dto/ChannelUpdateRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/channel/dto/request/ChannelUpdateRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.channel.dto; +package com.mtvs.devlinkbackend.channel.dto.request; import com.mtvs.devlinkbackend.channel.entity.PositionType; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/dto/response/ChannelListResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/channel/dto/response/ChannelListResponseDTO.java new file mode 100644 index 0000000..e4145f4 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/channel/dto/response/ChannelListResponseDTO.java @@ -0,0 +1,14 @@ +package com.mtvs.devlinkbackend.channel.dto.response; + +import com.mtvs.devlinkbackend.channel.entity.Channel; +import lombok.*; + +import java.util.List; + +@Getter @Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class ChannelListResponseDTO { + private List data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/dto/response/ChannelSingleResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/channel/dto/response/ChannelSingleResponseDTO.java new file mode 100644 index 0000000..e6a9a5a --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/channel/dto/response/ChannelSingleResponseDTO.java @@ -0,0 +1,13 @@ +package com.mtvs.devlinkbackend.channel.dto.response; + +import com.mtvs.devlinkbackend.channel.entity.Channel; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class ChannelSingleResponseDTO { + private Channel data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/service/ChannelService.java b/src/main/java/com/mtvs/devlinkbackend/channel/service/ChannelService.java index 646dea2..42f777d 100644 --- a/src/main/java/com/mtvs/devlinkbackend/channel/service/ChannelService.java +++ b/src/main/java/com/mtvs/devlinkbackend/channel/service/ChannelService.java @@ -1,13 +1,14 @@ package com.mtvs.devlinkbackend.channel.service; -import com.mtvs.devlinkbackend.channel.dto.ChannelRegistRequestDTO; -import com.mtvs.devlinkbackend.channel.dto.ChannelUpdateRequestDTO; +import com.mtvs.devlinkbackend.channel.dto.response.ChannelListResponseDTO; +import com.mtvs.devlinkbackend.channel.dto.request.ChannelRegistRequestDTO; +import com.mtvs.devlinkbackend.channel.dto.response.ChannelSingleResponseDTO; +import com.mtvs.devlinkbackend.channel.dto.request.ChannelUpdateRequestDTO; import com.mtvs.devlinkbackend.channel.entity.Channel; import com.mtvs.devlinkbackend.channel.repository.ChannelRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; import java.util.Optional; @Service @@ -20,33 +21,33 @@ public ChannelService(ChannelRepository channelRepository) { // 새 채널 저장 @Transactional - public Channel saveChannel(ChannelRegistRequestDTO channelRegistRequestDTO, String accountId) { - return channelRepository.save(new Channel( + public ChannelSingleResponseDTO saveChannel(ChannelRegistRequestDTO channelRegistRequestDTO, String accountId) { + return new ChannelSingleResponseDTO(channelRepository.save(new Channel( accountId, channelRegistRequestDTO.getPositionTypes() - )); + ))); } // 모든 채널 조회 - public List findAllChannels() { - return channelRepository.findAll(); + public ChannelListResponseDTO findAllChannels() { + return new ChannelListResponseDTO(channelRepository.findAll()); } // ID로 특정 채널 조회 - public Optional findChannelByChannelId(String channelId) { - return channelRepository.findById(channelId); + public ChannelSingleResponseDTO findChannelByChannelId(String channelId) { + return new ChannelSingleResponseDTO(channelRepository.findById(channelId).orElse(null)); } // ID로 채널 업데이트 @Transactional - public Channel updateChannel(ChannelUpdateRequestDTO channelUpdateRequestDTO, String accountId) { + public ChannelSingleResponseDTO updateChannel(ChannelUpdateRequestDTO channelUpdateRequestDTO, String accountId) { Optional channel = channelRepository.findById(channelUpdateRequestDTO.getChannelId()); if (channel.isPresent()) { Channel foundChannel = channel.get(); if(foundChannel.getOwnerId().equals(accountId)) { foundChannel.setPositionTypes(channelUpdateRequestDTO.getPositionTypes()); - return foundChannel; + return new ChannelSingleResponseDTO(foundChannel); } else throw new IllegalArgumentException("주인이 아닌 다른 사용자 계정으로 채널 수정 시도중"); } else throw new IllegalArgumentException("요청한 channelId로 해당 채널이 존재하지 않음"); } diff --git a/src/main/java/com/mtvs/devlinkbackend/character/controller/UserCharacterController.java b/src/main/java/com/mtvs/devlinkbackend/character/controller/UserCharacterController.java index 204ae0c..5ebd60b 100644 --- a/src/main/java/com/mtvs/devlinkbackend/character/controller/UserCharacterController.java +++ b/src/main/java/com/mtvs/devlinkbackend/character/controller/UserCharacterController.java @@ -1,8 +1,8 @@ package com.mtvs.devlinkbackend.character.controller; -import com.mtvs.devlinkbackend.character.dto.UserCharacterRegistRequestDTO; -import com.mtvs.devlinkbackend.character.dto.UserCharacterUpdateRequestDTO; -import com.mtvs.devlinkbackend.character.entity.UserCharacter; +import com.mtvs.devlinkbackend.character.dto.request.UserCharacterRegistRequestDTO; +import com.mtvs.devlinkbackend.character.dto.response.UserCharacterSingleResponseDTO; +import com.mtvs.devlinkbackend.character.dto.request.UserCharacterUpdateRequestDTO; import com.mtvs.devlinkbackend.character.service.UserCharacterService; import com.mtvs.devlinkbackend.util.JwtUtil; import io.swagger.v3.oas.annotations.Operation; @@ -25,12 +25,13 @@ public UserCharacterController(UserCharacterService userCharacterService, JwtUti @Operation(summary = "캐릭터 등록", description = "새로운 캐릭터를 등록합니다.") @ApiResponse(responseCode = "201", description = "캐릭터가 성공적으로 등록되었습니다.") @PostMapping - public ResponseEntity registerCharacter( + public ResponseEntity registerCharacter( @RequestBody UserCharacterRegistRequestDTO userCharacterRegistRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - UserCharacter userCharacter = userCharacterService.registCharacter(userCharacterRegistRequestDTO, accountId); + UserCharacterSingleResponseDTO userCharacter = + userCharacterService.registCharacter(userCharacterRegistRequestDTO, accountId); return new ResponseEntity<>(userCharacter, HttpStatus.CREATED); } @@ -38,11 +39,11 @@ public ResponseEntity registerCharacter( @ApiResponse(responseCode = "200", description = "캐릭터가 성공적으로 조회되었습니다.") @ApiResponse(responseCode = "404", description = "해당 계정 ID로 캐릭터를 찾을 수 없습니다.") @GetMapping - public ResponseEntity getCharacter( + public ResponseEntity getCharacter( @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - UserCharacter userCharacter = userCharacterService.findCharacterByAccountId(accountId); + UserCharacterSingleResponseDTO userCharacter = userCharacterService.findCharacterByAccountId(accountId); if (userCharacter == null) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } @@ -53,13 +54,13 @@ public ResponseEntity getCharacter( @ApiResponse(responseCode = "200", description = "캐릭터가 성공적으로 수정되었습니다.") @ApiResponse(responseCode = "404", description = "해당 계정 ID로 캐릭터를 찾을 수 없습니다.") @PatchMapping - public ResponseEntity updateCharacter( + public ResponseEntity updateCharacter( @RequestBody UserCharacterUpdateRequestDTO userCharacterUpdateRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); try { - UserCharacter updatedCharacter = userCharacterService.updateCharacter(userCharacterUpdateRequestDTO, accountId); + UserCharacterSingleResponseDTO updatedCharacter = userCharacterService.updateCharacter(userCharacterUpdateRequestDTO, accountId); return new ResponseEntity<>(updatedCharacter, HttpStatus.OK); } catch (IllegalArgumentException e) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); diff --git a/src/main/java/com/mtvs/devlinkbackend/character/dto/UserCharacterRegistRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/character/dto/request/UserCharacterRegistRequestDTO.java similarity index 77% rename from src/main/java/com/mtvs/devlinkbackend/character/dto/UserCharacterRegistRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/character/dto/request/UserCharacterRegistRequestDTO.java index 0f5b0b8..7ee21d2 100644 --- a/src/main/java/com/mtvs/devlinkbackend/character/dto/UserCharacterRegistRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/character/dto/request/UserCharacterRegistRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.character.dto; +package com.mtvs.devlinkbackend.character.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/character/dto/UserCharacterUpdateRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/character/dto/request/UserCharacterUpdateRequestDTO.java similarity index 79% rename from src/main/java/com/mtvs/devlinkbackend/character/dto/UserCharacterUpdateRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/character/dto/request/UserCharacterUpdateRequestDTO.java index d062c83..52045bf 100644 --- a/src/main/java/com/mtvs/devlinkbackend/character/dto/UserCharacterUpdateRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/character/dto/request/UserCharacterUpdateRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.character.dto; +package com.mtvs.devlinkbackend.character.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/character/dto/response/UserCharacterSingleResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/character/dto/response/UserCharacterSingleResponseDTO.java new file mode 100644 index 0000000..7848a1d --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/character/dto/response/UserCharacterSingleResponseDTO.java @@ -0,0 +1,12 @@ +package com.mtvs.devlinkbackend.character.dto.response; + +import com.mtvs.devlinkbackend.character.entity.UserCharacter; +import lombok.*; + +@Getter @Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class UserCharacterSingleResponseDTO { + private UserCharacter data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/character/service/UserCharacterService.java b/src/main/java/com/mtvs/devlinkbackend/character/service/UserCharacterService.java index 3c39a97..be03dd4 100644 --- a/src/main/java/com/mtvs/devlinkbackend/character/service/UserCharacterService.java +++ b/src/main/java/com/mtvs/devlinkbackend/character/service/UserCharacterService.java @@ -1,7 +1,8 @@ package com.mtvs.devlinkbackend.character.service; -import com.mtvs.devlinkbackend.character.dto.UserCharacterRegistRequestDTO; -import com.mtvs.devlinkbackend.character.dto.UserCharacterUpdateRequestDTO; +import com.mtvs.devlinkbackend.character.dto.request.UserCharacterRegistRequestDTO; +import com.mtvs.devlinkbackend.character.dto.response.UserCharacterSingleResponseDTO; +import com.mtvs.devlinkbackend.character.dto.request.UserCharacterUpdateRequestDTO; import com.mtvs.devlinkbackend.character.entity.UserCharacter; import com.mtvs.devlinkbackend.character.repository.UserCharacterRepository; import jakarta.transaction.Transactional; @@ -16,25 +17,25 @@ public UserCharacterService(UserCharacterRepository userCharacterRepository) { } @Transactional - public UserCharacter registCharacter(UserCharacterRegistRequestDTO userCharacterRegistRequestDTO, String accountId) { - return userCharacterRepository.save(new UserCharacter( + public UserCharacterSingleResponseDTO registCharacter(UserCharacterRegistRequestDTO userCharacterRegistRequestDTO, String accountId) { + return new UserCharacterSingleResponseDTO(userCharacterRepository.save(new UserCharacter( accountId, userCharacterRegistRequestDTO.getStatus() - )); + ))); } - public UserCharacter findCharacterByAccountId(String accountId) { - return userCharacterRepository.findByAccountId(accountId); + public UserCharacterSingleResponseDTO findCharacterByAccountId(String accountId) { + return new UserCharacterSingleResponseDTO(userCharacterRepository.findByAccountId(accountId)); } @Transactional - public UserCharacter updateCharacter(UserCharacterUpdateRequestDTO userCharacterUpdateRequestDTO, String accountId) { + public UserCharacterSingleResponseDTO updateCharacter(UserCharacterUpdateRequestDTO userCharacterUpdateRequestDTO, String accountId) { UserCharacter userCharacter = userCharacterRepository.findByAccountId(accountId); if(userCharacter == null) throw new IllegalArgumentException("잘못된 계정으로 캐릭터 수정 시도"); userCharacter.setStatus(userCharacterUpdateRequestDTO.getStatus()); - return userCharacter; + return new UserCharacterSingleResponseDTO(userCharacter); } @Transactional diff --git a/src/main/java/com/mtvs/devlinkbackend/comment/controller/CommentController.java b/src/main/java/com/mtvs/devlinkbackend/comment/controller/CommentController.java index 40fed87..11777be 100644 --- a/src/main/java/com/mtvs/devlinkbackend/comment/controller/CommentController.java +++ b/src/main/java/com/mtvs/devlinkbackend/comment/controller/CommentController.java @@ -1,8 +1,9 @@ package com.mtvs.devlinkbackend.comment.controller; -import com.mtvs.devlinkbackend.comment.dto.CommentRegistRequestDTO; -import com.mtvs.devlinkbackend.comment.dto.CommentUpdateRequestDTO; -import com.mtvs.devlinkbackend.comment.entity.Comment; +import com.mtvs.devlinkbackend.comment.dto.response.CommentListResponseDTO; +import com.mtvs.devlinkbackend.comment.dto.request.CommentRegistRequestDTO; +import com.mtvs.devlinkbackend.comment.dto.response.CommentSingleResponseDTO; +import com.mtvs.devlinkbackend.comment.dto.request.CommentUpdateRequestDTO; import com.mtvs.devlinkbackend.comment.service.CommentService; import com.mtvs.devlinkbackend.util.JwtUtil; import io.swagger.v3.oas.annotations.Operation; @@ -12,8 +13,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.util.List; - @RestController @RequestMapping("/api/comment") public class CommentController { @@ -31,12 +30,12 @@ public CommentController(CommentService commentService, JwtUtil jwtUtil) { @ApiResponse(responseCode = "404", description = "해당 요청을 찾을 수 없습니다.") }) @PostMapping - public ResponseEntity registComment( + public ResponseEntity registComment( @RequestBody CommentRegistRequestDTO commentRegistRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - Comment comment = commentService.registComment(commentRegistRequestDTO, accountId); + CommentSingleResponseDTO comment = commentService.registComment(commentRegistRequestDTO, accountId); return ResponseEntity.status(HttpStatus.CREATED).body(comment); } @@ -46,27 +45,27 @@ public ResponseEntity registComment( @ApiResponse(responseCode = "404", description = "해당 댓글을 찾을 수 없습니다.") }) @GetMapping("/{commentId}") - public ResponseEntity findCommentByCommentId(@PathVariable Long commentId) { - Comment comment = commentService.findCommentByCommentId(commentId); + public ResponseEntity findCommentByCommentId(@PathVariable Long commentId) { + CommentSingleResponseDTO comment = commentService.findCommentByCommentId(commentId); return comment != null ? ResponseEntity.ok(comment) : ResponseEntity.notFound().build(); } @Operation(summary = "요청 ID로 댓글 조회", description = "특정 요청에 연관된 모든 댓글을 조회합니다.") @ApiResponse(responseCode = "200", description = "댓글 목록이 성공적으로 조회되었습니다.") @GetMapping("/request/{requestId}") - public ResponseEntity> findCommentsByRequestId(@PathVariable Long requestId) { - List comments = commentService.findCommentsByProjectId(requestId); + public ResponseEntity findCommentsByRequestId(@PathVariable Long requestId) { + CommentListResponseDTO comments = commentService.findCommentsByProjectId(requestId); return ResponseEntity.ok(comments); } @Operation(summary = "사용자 ID로 댓글 조회", description = "특정 사용자가 작성한 모든 댓글을 조회합니다.") @ApiResponse(responseCode = "200", description = "사용자의 댓글 목록이 성공적으로 조회되었습니다.") @GetMapping("/account") - public ResponseEntity> findCommentsByAccountId( + public ResponseEntity findCommentsByAccountId( @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - List comments = commentService.findCommentsByAccountId(accountId); + CommentListResponseDTO comments = commentService.findCommentsByAccountId(accountId); return ResponseEntity.ok(comments); } @@ -77,12 +76,12 @@ public ResponseEntity> findCommentsByAccountId( @ApiResponse(responseCode = "404", description = "해당 댓글을 찾을 수 없습니다.") }) @PatchMapping - public ResponseEntity updateComment( + public ResponseEntity updateComment( @RequestBody CommentUpdateRequestDTO commentUpdateRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - Comment updatedComment = commentService.updateComment(commentUpdateRequestDTO, accountId); + CommentSingleResponseDTO updatedComment = commentService.updateComment(commentUpdateRequestDTO, accountId); return ResponseEntity.ok(updatedComment); } diff --git a/src/main/java/com/mtvs/devlinkbackend/comment/dto/CommentRegistRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/comment/dto/request/CommentRegistRequestDTO.java similarity index 77% rename from src/main/java/com/mtvs/devlinkbackend/comment/dto/CommentRegistRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/comment/dto/request/CommentRegistRequestDTO.java index a2de63c..cafa1cd 100644 --- a/src/main/java/com/mtvs/devlinkbackend/comment/dto/CommentRegistRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/comment/dto/request/CommentRegistRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.comment.dto; +package com.mtvs.devlinkbackend.comment.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/comment/dto/CommentUpdateRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/comment/dto/request/CommentUpdateRequestDTO.java similarity index 77% rename from src/main/java/com/mtvs/devlinkbackend/comment/dto/CommentUpdateRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/comment/dto/request/CommentUpdateRequestDTO.java index a82cfd6..5e2d950 100644 --- a/src/main/java/com/mtvs/devlinkbackend/comment/dto/CommentUpdateRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/comment/dto/request/CommentUpdateRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.comment.dto; +package com.mtvs.devlinkbackend.comment.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/comment/dto/response/CommentListResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/comment/dto/response/CommentListResponseDTO.java new file mode 100644 index 0000000..bd99851 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/comment/dto/response/CommentListResponseDTO.java @@ -0,0 +1,14 @@ +package com.mtvs.devlinkbackend.comment.dto.response; + +import com.mtvs.devlinkbackend.comment.entity.Comment; +import lombok.*; + +import java.util.List; + +@Getter @Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class CommentListResponseDTO { + private List data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/comment/dto/response/CommentSingleResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/comment/dto/response/CommentSingleResponseDTO.java new file mode 100644 index 0000000..872e2b5 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/comment/dto/response/CommentSingleResponseDTO.java @@ -0,0 +1,13 @@ +package com.mtvs.devlinkbackend.comment.dto.response; + +import com.mtvs.devlinkbackend.comment.entity.Comment; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class CommentSingleResponseDTO { + private Comment data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/comment/service/CommentService.java b/src/main/java/com/mtvs/devlinkbackend/comment/service/CommentService.java index 0ee3fd0..eedbde3 100644 --- a/src/main/java/com/mtvs/devlinkbackend/comment/service/CommentService.java +++ b/src/main/java/com/mtvs/devlinkbackend/comment/service/CommentService.java @@ -1,7 +1,9 @@ package com.mtvs.devlinkbackend.comment.service; -import com.mtvs.devlinkbackend.comment.dto.CommentRegistRequestDTO; -import com.mtvs.devlinkbackend.comment.dto.CommentUpdateRequestDTO; +import com.mtvs.devlinkbackend.comment.dto.response.CommentListResponseDTO; +import com.mtvs.devlinkbackend.comment.dto.request.CommentRegistRequestDTO; +import com.mtvs.devlinkbackend.comment.dto.response.CommentSingleResponseDTO; +import com.mtvs.devlinkbackend.comment.dto.request.CommentUpdateRequestDTO; import com.mtvs.devlinkbackend.comment.entity.Comment; import com.mtvs.devlinkbackend.comment.repository.CommentRepository; import com.mtvs.devlinkbackend.project.entity.Project; @@ -9,7 +11,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; import java.util.Optional; @Service @@ -23,35 +24,35 @@ public CommentService(CommentRepository commentRepository, ProjectRepository pro } @Transactional - public Comment registComment(CommentRegistRequestDTO commentRegistRequestDTO, String accountId) { + public CommentSingleResponseDTO registComment(CommentRegistRequestDTO commentRegistRequestDTO, String accountId) { Project project = projectRepository.findById(commentRegistRequestDTO.getRequestId()).orElse(null); - return commentRepository.save(new Comment( + return new CommentSingleResponseDTO(commentRepository.save(new Comment( commentRegistRequestDTO.getContent(), accountId, project - )); + ))); } - public Comment findCommentByCommentId(Long commentId) { - return commentRepository.findById(commentId).orElse(null); + public CommentSingleResponseDTO findCommentByCommentId(Long commentId) { + return new CommentSingleResponseDTO(commentRepository.findById(commentId).orElse(null)); } - public List findCommentsByProjectId(Long requestId) { - return commentRepository.findCommentsByProject_ProjectId(requestId); + public CommentListResponseDTO findCommentsByProjectId(Long requestId) { + return new CommentListResponseDTO(commentRepository.findCommentsByProject_ProjectId(requestId)); } - public List findCommentsByAccountId(String accountId) { - return commentRepository.findCommentsByAccountId(accountId); + public CommentListResponseDTO findCommentsByAccountId(String accountId) { + return new CommentListResponseDTO(commentRepository.findCommentsByAccountId(accountId)); } @Transactional - public Comment updateComment(CommentUpdateRequestDTO commentUpdateRequestDTO, String accountId) { + public CommentSingleResponseDTO updateComment(CommentUpdateRequestDTO commentUpdateRequestDTO, String accountId) { Optional comment = commentRepository.findById(commentUpdateRequestDTO.getCommentId()); if (comment.isPresent()) { Comment foundComment = comment.get(); if(foundComment.getAccountId().equals(accountId)) { foundComment.setContent(commentUpdateRequestDTO.getContent()); - return foundComment; + return new CommentSingleResponseDTO(foundComment); } else throw new IllegalArgumentException("다른 사용자가 코멘트 수정 시도 / commentId : " + commentUpdateRequestDTO.getCommentId() diff --git a/src/main/java/com/mtvs/devlinkbackend/ether/controller/EtherController.java b/src/main/java/com/mtvs/devlinkbackend/ether/controller/EtherController.java index 98397bf..54a0301 100644 --- a/src/main/java/com/mtvs/devlinkbackend/ether/controller/EtherController.java +++ b/src/main/java/com/mtvs/devlinkbackend/ether/controller/EtherController.java @@ -1,9 +1,10 @@ package com.mtvs.devlinkbackend.ether.controller; +import com.mtvs.devlinkbackend.ether.dto.response.EtherListResponseDTO; +import com.mtvs.devlinkbackend.ether.dto.response.EtherSingleResponseDTO; import com.mtvs.devlinkbackend.util.JwtUtil; -import com.mtvs.devlinkbackend.ether.dto.EtherRegistRequestDTO; -import com.mtvs.devlinkbackend.ether.dto.EtherUpdateRequestDTO; -import com.mtvs.devlinkbackend.ether.entity.Ether; +import com.mtvs.devlinkbackend.ether.dto.request.EtherRegistRequestDTO; +import com.mtvs.devlinkbackend.ether.dto.request.EtherUpdateRequestDTO; import com.mtvs.devlinkbackend.ether.service.EtherService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -11,8 +12,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.util.List; - @RestController @RequestMapping("/api/ether") public class EtherController { @@ -31,12 +30,12 @@ public EtherController(EtherService etherService, JwtUtil jwtUtil) { @ApiResponse(responseCode = "401", description = "인증되지 않음") }) @PostMapping - public ResponseEntity registEther( + public ResponseEntity registEther( @RequestBody EtherRegistRequestDTO etherRegistRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - Ether newEther = etherService.registEther(etherRegistRequestDTO, accountId); + EtherSingleResponseDTO newEther = etherService.registEther(etherRegistRequestDTO, accountId); return ResponseEntity.ok(newEther); } @@ -47,8 +46,8 @@ public ResponseEntity registEther( @ApiResponse(responseCode = "404", description = "Ether를 찾을 수 없음") }) @GetMapping("/{etherId}") - public ResponseEntity findEtherByEtherId(@PathVariable Long etherId) { - Ether ether = etherService.findEtherByEtherId(etherId); + public ResponseEntity findEtherByEtherId(@PathVariable Long etherId) { + EtherSingleResponseDTO ether = etherService.findEtherByEtherId(etherId); return ether != null ? ResponseEntity.ok(ether) : ResponseEntity.notFound().build(); } @@ -58,11 +57,11 @@ public ResponseEntity findEtherByEtherId(@PathVariable Long etherId) { @ApiResponse(responseCode = "401", description = "인증되지 않음") }) @GetMapping("/account") - public ResponseEntity> findEthersByAccountId( + public ResponseEntity findEthersByAccountId( @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - List ethers = etherService.findEthersByAccountId(accountId); + EtherListResponseDTO ethers = etherService.findEthersByAccountId(accountId); return ResponseEntity.ok(ethers); } @@ -72,8 +71,8 @@ public ResponseEntity> findEthersByAccountId( @ApiResponse(responseCode = "401", description = "인증되지 않음") }) @GetMapping("/reason/{reason}") - public ResponseEntity> findEthersByReason(@PathVariable String reason) { - List ethers = etherService.findEthersByReason(reason); + public ResponseEntity findEthersByReason(@PathVariable String reason) { + EtherListResponseDTO ethers = etherService.findEthersByReason(reason); return ResponseEntity.ok(ethers); } @@ -84,9 +83,9 @@ public ResponseEntity> findEthersByReason(@PathVariable String reaso @ApiResponse(responseCode = "401", description = "인증되지 않음") }) @PatchMapping - public ResponseEntity updateEther(@RequestBody EtherUpdateRequestDTO etherUpdateRequestDTO) { + public ResponseEntity updateEther(@RequestBody EtherUpdateRequestDTO etherUpdateRequestDTO) { try { - Ether updatedEther = etherService.updateEther(etherUpdateRequestDTO); + EtherSingleResponseDTO updatedEther = etherService.updateEther(etherUpdateRequestDTO); return ResponseEntity.ok(updatedEther); } catch (IllegalArgumentException e) { return ResponseEntity.badRequest().body(null); diff --git a/src/main/java/com/mtvs/devlinkbackend/ether/dto/EtherRegistRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/ether/dto/request/EtherRegistRequestDTO.java similarity index 77% rename from src/main/java/com/mtvs/devlinkbackend/ether/dto/EtherRegistRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/ether/dto/request/EtherRegistRequestDTO.java index 33235bb..b0a5394 100644 --- a/src/main/java/com/mtvs/devlinkbackend/ether/dto/EtherRegistRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/ether/dto/request/EtherRegistRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.ether.dto; +package com.mtvs.devlinkbackend.ether.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/ether/dto/EtherUpdateRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/ether/dto/request/EtherUpdateRequestDTO.java similarity index 79% rename from src/main/java/com/mtvs/devlinkbackend/ether/dto/EtherUpdateRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/ether/dto/request/EtherUpdateRequestDTO.java index 575b8af..b6005d6 100644 --- a/src/main/java/com/mtvs/devlinkbackend/ether/dto/EtherUpdateRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/ether/dto/request/EtherUpdateRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.ether.dto; +package com.mtvs.devlinkbackend.ether.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/ether/dto/response/EtherListResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/ether/dto/response/EtherListResponseDTO.java new file mode 100644 index 0000000..7e54eb2 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/ether/dto/response/EtherListResponseDTO.java @@ -0,0 +1,14 @@ +package com.mtvs.devlinkbackend.ether.dto.response; + +import com.mtvs.devlinkbackend.ether.entity.Ether; +import lombok.*; + +import java.util.List; + +@Getter @Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class EtherListResponseDTO { + private List data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/ether/dto/response/EtherSingleResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/ether/dto/response/EtherSingleResponseDTO.java new file mode 100644 index 0000000..2a42486 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/ether/dto/response/EtherSingleResponseDTO.java @@ -0,0 +1,13 @@ +package com.mtvs.devlinkbackend.ether.dto.response; + +import com.mtvs.devlinkbackend.ether.entity.Ether; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class EtherSingleResponseDTO { + private Ether data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/ether/service/EtherService.java b/src/main/java/com/mtvs/devlinkbackend/ether/service/EtherService.java index fb77172..9ac8903 100644 --- a/src/main/java/com/mtvs/devlinkbackend/ether/service/EtherService.java +++ b/src/main/java/com/mtvs/devlinkbackend/ether/service/EtherService.java @@ -1,13 +1,14 @@ package com.mtvs.devlinkbackend.ether.service; -import com.mtvs.devlinkbackend.ether.dto.EtherRegistRequestDTO; -import com.mtvs.devlinkbackend.ether.dto.EtherUpdateRequestDTO; +import com.mtvs.devlinkbackend.ether.dto.response.EtherListResponseDTO; +import com.mtvs.devlinkbackend.ether.dto.request.EtherRegistRequestDTO; +import com.mtvs.devlinkbackend.ether.dto.response.EtherSingleResponseDTO; +import com.mtvs.devlinkbackend.ether.dto.request.EtherUpdateRequestDTO; import com.mtvs.devlinkbackend.ether.entity.Ether; import com.mtvs.devlinkbackend.ether.repository.EtherRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; import java.util.Optional; @Service @@ -19,35 +20,35 @@ public EtherService(EtherRepository etherRepository) { } @Transactional - public Ether registEther(EtherRegistRequestDTO etherRegistRequestDTO, String accountId) { - return etherRepository.save( + public EtherSingleResponseDTO registEther(EtherRegistRequestDTO etherRegistRequestDTO, String accountId) { + return new EtherSingleResponseDTO(etherRepository.save( new Ether( accountId, etherRegistRequestDTO.getReason(), etherRegistRequestDTO.getAmount()) - ); + )); } - public Ether findEtherByEtherId(Long etherId) { - return etherRepository.findById(etherId).orElse(null); + public EtherSingleResponseDTO findEtherByEtherId(Long etherId) { + return new EtherSingleResponseDTO(etherRepository.findById(etherId).orElse(null)); } - public List findEthersByAccountId(String accountId) { - return etherRepository.findEthersByAccountId(accountId); + public EtherListResponseDTO findEthersByAccountId(String accountId) { + return new EtherListResponseDTO(etherRepository.findEthersByAccountId(accountId)); } - public List findEthersByReason(String reason) { - return etherRepository.findEthersByReason(reason); + public EtherListResponseDTO findEthersByReason(String reason) { + return new EtherListResponseDTO(etherRepository.findEthersByReason(reason)); } @Transactional - public Ether updateEther(EtherUpdateRequestDTO etherUpdateRequestDTO) { + public EtherSingleResponseDTO updateEther(EtherUpdateRequestDTO etherUpdateRequestDTO) { Optional ether = etherRepository.findById(etherUpdateRequestDTO.getEtherId()); if(ether.isPresent()) { Ether foundEther = ether.get(); foundEther.setReason(etherUpdateRequestDTO.getReason()); foundEther.setAmount(etherUpdateRequestDTO.getAmount()); - return foundEther; + return new EtherSingleResponseDTO(foundEther); } else throw new IllegalArgumentException("잘못된 Ether Id로 호출, ETHER_ID : " + etherUpdateRequestDTO.getEtherId()); } diff --git a/src/main/java/com/mtvs/devlinkbackend/guild/controller/GuildController.java b/src/main/java/com/mtvs/devlinkbackend/guild/controller/GuildController.java index 62d8117..87d058a 100644 --- a/src/main/java/com/mtvs/devlinkbackend/guild/controller/GuildController.java +++ b/src/main/java/com/mtvs/devlinkbackend/guild/controller/GuildController.java @@ -1,18 +1,17 @@ package com.mtvs.devlinkbackend.guild.controller; +import com.mtvs.devlinkbackend.guild.dto.request.GuildMemberModifyRequestDTO; +import com.mtvs.devlinkbackend.guild.dto.request.GuildRegistRequestDTO; +import com.mtvs.devlinkbackend.guild.dto.request.GuildUpdateRequestDTO; +import com.mtvs.devlinkbackend.guild.dto.response.GuildListResponseDTO; +import com.mtvs.devlinkbackend.guild.dto.response.GuildSingleResponseDTO; import com.mtvs.devlinkbackend.util.JwtUtil; -import com.mtvs.devlinkbackend.guild.dto.GuildMemberModifyRequestDTO; -import com.mtvs.devlinkbackend.guild.dto.GuildRegistRequestDTO; -import com.mtvs.devlinkbackend.guild.dto.GuildUpdateRequestDTO; -import com.mtvs.devlinkbackend.guild.entity.Guild; import com.mtvs.devlinkbackend.guild.service.GuildService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import org.springframework.web.bind.annotation.*; -import java.util.List; - @RestController @RequestMapping("/api/guild") public class GuildController { @@ -31,7 +30,7 @@ public GuildController(GuildService guildService, JwtUtil jwtUtil) { @ApiResponse(responseCode = "400", description = "길드 생성 요청이 잘못되었습니다.") }) @PostMapping - public Guild createGuild( + public GuildSingleResponseDTO createGuild( @RequestBody GuildRegistRequestDTO guildRegistRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { @@ -45,21 +44,21 @@ public Guild createGuild( @ApiResponse(responseCode = "404", description = "길드를 찾을 수 없습니다.") }) @GetMapping("/{guildId}") - public Guild findGuildByGuildId(@PathVariable Long guildId) { + public GuildSingleResponseDTO findGuildByGuildId(@PathVariable Long guildId) { return guildService.findGuildByGuildId(guildId); } @Operation(summary = "길드 이름 검색", description = "이름이 특정 문자열을 포함하는 길드 목록을 조회합니다.") @ApiResponse(responseCode = "200", description = "길드 목록이 성공적으로 조회되었습니다.") @GetMapping("/search") - public List findGuildsByGuildNameContaining(@RequestParam String guildName) { + public GuildListResponseDTO findGuildsByGuildNameContaining(@RequestParam String guildName) { return guildService.findGuildsByGuildNameContaining(guildName); } @Operation(summary = "사용자가 소유자인 길드 조회", description = "사용자가 소유자인 길드를 조회합니다.") @ApiResponse(responseCode = "200", description = "길드 목록이 성공적으로 조회되었습니다.") @GetMapping("/owner") - public List findGuildsByOwnerId( + public GuildListResponseDTO findGuildsByOwnerId( @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String ownerId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); @@ -69,7 +68,7 @@ public List findGuildsByOwnerId( @Operation(summary = "사용자가 멤버인 길드 조회", description = "사용자가 멤버인 길드를 조회합니다.") @ApiResponse(responseCode = "200", description = "길드 목록이 성공적으로 조회되었습니다.") @GetMapping("/member") - public List findGuildsByMemberIdContaining( + public GuildListResponseDTO findGuildsByMemberIdContaining( @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String memberId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); @@ -83,7 +82,7 @@ public List findGuildsByMemberIdContaining( @ApiResponse(responseCode = "404", description = "길드를 찾을 수 없습니다.") }) @PatchMapping - public Guild updateGuild( + public GuildSingleResponseDTO updateGuild( @RequestBody GuildUpdateRequestDTO guildUpdateRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { @@ -98,7 +97,7 @@ public Guild updateGuild( @ApiResponse(responseCode = "404", description = "길드를 찾을 수 없습니다.") }) @PostMapping("/member") - public Guild addMemberToGuild( + public GuildSingleResponseDTO addMemberToGuild( @RequestBody GuildMemberModifyRequestDTO guildMemberModifyRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { @@ -113,7 +112,7 @@ public Guild addMemberToGuild( @ApiResponse(responseCode = "404", description = "길드를 찾을 수 없습니다.") }) @DeleteMapping("/member") - public Guild removeMemberFromGuild( + public GuildSingleResponseDTO removeMemberFromGuild( @RequestBody GuildMemberModifyRequestDTO guildMemberModifyRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { diff --git a/src/main/java/com/mtvs/devlinkbackend/guild/dto/GuildMemberModifyRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/guild/dto/request/GuildMemberModifyRequestDTO.java similarity index 81% rename from src/main/java/com/mtvs/devlinkbackend/guild/dto/GuildMemberModifyRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/guild/dto/request/GuildMemberModifyRequestDTO.java index 5968ebb..5ef114c 100644 --- a/src/main/java/com/mtvs/devlinkbackend/guild/dto/GuildMemberModifyRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/guild/dto/request/GuildMemberModifyRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.guild.dto; +package com.mtvs.devlinkbackend.guild.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/guild/dto/GuildRegistRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/guild/dto/request/GuildRegistRequestDTO.java similarity index 84% rename from src/main/java/com/mtvs/devlinkbackend/guild/dto/GuildRegistRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/guild/dto/request/GuildRegistRequestDTO.java index 8829192..93f5717 100644 --- a/src/main/java/com/mtvs/devlinkbackend/guild/dto/GuildRegistRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/guild/dto/request/GuildRegistRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.guild.dto; +package com.mtvs.devlinkbackend.guild.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/guild/dto/GuildUpdateRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/guild/dto/request/GuildUpdateRequestDTO.java similarity index 86% rename from src/main/java/com/mtvs/devlinkbackend/guild/dto/GuildUpdateRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/guild/dto/request/GuildUpdateRequestDTO.java index c7ace17..5c2e782 100644 --- a/src/main/java/com/mtvs/devlinkbackend/guild/dto/GuildUpdateRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/guild/dto/request/GuildUpdateRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.guild.dto; +package com.mtvs.devlinkbackend.guild.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/guild/dto/response/GuildListResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/guild/dto/response/GuildListResponseDTO.java new file mode 100644 index 0000000..24340b7 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/guild/dto/response/GuildListResponseDTO.java @@ -0,0 +1,15 @@ +package com.mtvs.devlinkbackend.guild.dto.response; + +import com.mtvs.devlinkbackend.guild.entity.Guild; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class GuildListResponseDTO { + private List data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/guild/dto/response/GuildSingleResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/guild/dto/response/GuildSingleResponseDTO.java new file mode 100644 index 0000000..bf41710 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/guild/dto/response/GuildSingleResponseDTO.java @@ -0,0 +1,12 @@ +package com.mtvs.devlinkbackend.guild.dto.response; + +import com.mtvs.devlinkbackend.guild.entity.Guild; +import lombok.*; + +@Getter @Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class GuildSingleResponseDTO { + private Guild data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/guild/service/GuildService.java b/src/main/java/com/mtvs/devlinkbackend/guild/service/GuildService.java index 31c6915..d7fb384 100644 --- a/src/main/java/com/mtvs/devlinkbackend/guild/service/GuildService.java +++ b/src/main/java/com/mtvs/devlinkbackend/guild/service/GuildService.java @@ -1,14 +1,15 @@ package com.mtvs.devlinkbackend.guild.service; -import com.mtvs.devlinkbackend.guild.dto.GuildMemberModifyRequestDTO; -import com.mtvs.devlinkbackend.guild.dto.GuildRegistRequestDTO; -import com.mtvs.devlinkbackend.guild.dto.GuildUpdateRequestDTO; +import com.mtvs.devlinkbackend.guild.dto.request.GuildMemberModifyRequestDTO; +import com.mtvs.devlinkbackend.guild.dto.request.GuildRegistRequestDTO; +import com.mtvs.devlinkbackend.guild.dto.request.GuildUpdateRequestDTO; +import com.mtvs.devlinkbackend.guild.dto.response.GuildListResponseDTO; +import com.mtvs.devlinkbackend.guild.dto.response.GuildSingleResponseDTO; import com.mtvs.devlinkbackend.guild.entity.Guild; import com.mtvs.devlinkbackend.guild.repository.GuildRepository; import jakarta.transaction.Transactional; import org.springframework.stereotype.Service; -import java.util.List; import java.util.Optional; @Service @@ -21,34 +22,34 @@ public GuildService(GuildRepository guildRepository) { } @Transactional - public Guild createGuild(GuildRegistRequestDTO guildRegistRequestDTO, String accountId) { - return guildRepository.save(new Guild( + public GuildSingleResponseDTO createGuild(GuildRegistRequestDTO guildRegistRequestDTO, String accountId) { + return new GuildSingleResponseDTO(guildRepository.save(new Guild( accountId, guildRegistRequestDTO.getGuildName(), guildRegistRequestDTO.getIntroduction(), guildRegistRequestDTO.getMaximumMember(), guildRegistRequestDTO.getMemberList() - )); + ))); } - public Guild findGuildByGuildId(Long guildId) { - return guildRepository.findById(guildId).orElse(null); + public GuildSingleResponseDTO findGuildByGuildId(Long guildId) { + return new GuildSingleResponseDTO(guildRepository.findById(guildId).orElse(null)); } - public List findGuildsByGuildNameContaining(String guildName) { - return guildRepository.findGuildsByGuildNameContaining(guildName); + public GuildListResponseDTO findGuildsByGuildNameContaining(String guildName) { + return new GuildListResponseDTO(guildRepository.findGuildsByGuildNameContaining(guildName)); } - public List findGuildsByOwnerId(String ownerId) { - return guildRepository.findGuildsByOwnerId(ownerId); + public GuildListResponseDTO findGuildsByOwnerId(String ownerId) { + return new GuildListResponseDTO(guildRepository.findGuildsByOwnerId(ownerId)); } - public List findGuildsByMemberIdContaining(String memberId) { - return guildRepository.findGuildsByMemberIdContaining(memberId); + public GuildListResponseDTO findGuildsByMemberIdContaining(String memberId) { + return new GuildListResponseDTO(guildRepository.findGuildsByMemberIdContaining(memberId)); } @Transactional - public Guild updateGuild(GuildUpdateRequestDTO guildUpdateRequestDTO, String accountId) { + public GuildSingleResponseDTO updateGuild(GuildUpdateRequestDTO guildUpdateRequestDTO, String accountId) { Optional guild = guildRepository.findById(guildUpdateRequestDTO.getGuildId()); if (guild.isPresent()) { Guild foundGuild = guild.get(); @@ -58,31 +59,31 @@ public Guild updateGuild(GuildUpdateRequestDTO guildUpdateRequestDTO, String acc foundGuild.setMaximumMember(guildUpdateRequestDTO.getMaximumMember()); foundGuild.setMemberList(guildUpdateRequestDTO.getMemberList()); foundGuild.setChannelId(guildUpdateRequestDTO.getChannelId()); - return foundGuild; + return new GuildSingleResponseDTO(); } else throw new IllegalArgumentException("owner가 아닌 계정으로 Guild 수정 시도"); } else return null; } @Transactional - public Guild addMemberToGuild(GuildMemberModifyRequestDTO guildMemberModifyRequestDTO, String accountId) { + public GuildSingleResponseDTO addMemberToGuild(GuildMemberModifyRequestDTO guildMemberModifyRequestDTO, String accountId) { Optional guild = guildRepository.findById(guildMemberModifyRequestDTO.getGuildId()); if (guild.isPresent()) { Guild foundGuild = guild.get(); if(foundGuild.getOwnerId().equals(accountId)) { foundGuild.getMemberList().addAll(guildMemberModifyRequestDTO.getNewMemberList()); - return foundGuild; + return new GuildSingleResponseDTO(foundGuild); } else throw new IllegalArgumentException("owner가 아닌 계정으로 Guild 수정 시도"); } else return null; } @Transactional - public Guild removeMemberToGuild(GuildMemberModifyRequestDTO guildMemberModifyRequestDTO, String accountId) { + public GuildSingleResponseDTO removeMemberToGuild(GuildMemberModifyRequestDTO guildMemberModifyRequestDTO, String accountId) { Optional guild = guildRepository.findById(guildMemberModifyRequestDTO.getGuildId()); if (guild.isPresent()) { Guild foundGuild = guild.get(); if(foundGuild.getOwnerId().equals(accountId)) { foundGuild.getMemberList().removeAll(guildMemberModifyRequestDTO.getNewMemberList()); - return foundGuild; + return new GuildSingleResponseDTO(foundGuild); } else throw new IllegalArgumentException("owner가 아닌 계정으로 Guild 수정 시도"); } else return null; } diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/Oauth2UserController.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/Oauth2UserController.java index c83178c..806774e 100644 --- a/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/Oauth2UserController.java +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/Oauth2UserController.java @@ -2,10 +2,9 @@ import com.mtvs.devlinkbackend.oauth2.service.UserService; import com.mtvs.devlinkbackend.util.JwtUtil; -import com.mtvs.devlinkbackend.oauth2.dto.EpicGamesCallbackRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.request.EpicGamesCallbackRequestDTO; import com.mtvs.devlinkbackend.oauth2.entity.User; import com.mtvs.devlinkbackend.oauth2.service.EpicGamesTokenService; -import com.mtvs.devlinkbackend.oauth2.service.UserPartnerService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/UserClientGroupController.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/UserClientGroupController.java index 56acfc7..0bc1cfd 100644 --- a/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/UserClientGroupController.java +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/UserClientGroupController.java @@ -1,6 +1,8 @@ package com.mtvs.devlinkbackend.oauth2.controller; -import com.mtvs.devlinkbackend.oauth2.dto.UserClientGroupRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.request.UserClientGroupRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.response.UserClientGroupListResponseDTO; +import com.mtvs.devlinkbackend.oauth2.dto.response.UserClientGroupSingleResponseDTO; import com.mtvs.devlinkbackend.oauth2.entity.UserClientGroup; import com.mtvs.devlinkbackend.oauth2.service.UserClientGroupService; import com.mtvs.devlinkbackend.util.JwtUtil; @@ -29,12 +31,12 @@ public UserClientGroupController(UserClientGroupService userClientGroupService, @ApiResponse(responseCode = "400", description = "잘못된 입력 데이터") }) @PostMapping - public ResponseEntity convertUserToUserClientGroup( + public ResponseEntity convertUserToUserClientGroup( @RequestBody UserClientGroupRequestDTO userClientGroupRequestDTO, @RequestHeader("Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - UserClientGroup userClientGroup = + UserClientGroupSingleResponseDTO userClientGroup = userClientGroupService.registUserClientGroup(userClientGroupRequestDTO, accountId); return ResponseEntity.ok(userClientGroup); } @@ -45,11 +47,11 @@ public ResponseEntity convertUserToUserClientGroup( @ApiResponse(responseCode = "404", description = "UserClientGroup을 찾을 수 없음") }) @GetMapping - public ResponseEntity findUserClientGroupByAuthorizationHeader( + public ResponseEntity findUserClientGroupByAuthorizationHeader( @RequestHeader("Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - UserClientGroup userClientGroup = userClientGroupService.findUserClientGroupByAccountId(accountId); + UserClientGroupSingleResponseDTO userClientGroup = userClientGroupService.findUserClientGroupByAccountId(accountId); return ResponseEntity.ok(userClientGroup); } @@ -58,8 +60,8 @@ public ResponseEntity findUserClientGroupByAuthorizationHeader( @ApiResponse(responseCode = "200", description = "성공적으로 UserClientGroups를 조회함") }) @GetMapping("/manager-name/{managerName}") - public ResponseEntity> findByManagerNameContainingIgnoreCase(@PathVariable String managerName) { - List userClientGroups = userClientGroupService.findByManagerNameContainingIgnoreCase(managerName); + public ResponseEntity findByManagerNameContainingIgnoreCase(@PathVariable String managerName) { + UserClientGroupListResponseDTO userClientGroups = userClientGroupService.findByManagerNameContainingIgnoreCase(managerName); return ResponseEntity.ok(userClientGroups); } @@ -68,8 +70,8 @@ public ResponseEntity> findByManagerNameContainingIgnoreCa @ApiResponse(responseCode = "200", description = "성공적으로 UserClientGroups를 조회함") }) @GetMapping("/group-name/{groupName}") - public ResponseEntity> findByGroupNameContainingIgnoreCase(@PathVariable String groupName) { - List userClientGroups = userClientGroupService.findByGroupNameContainingIgnoreCase(groupName); + public ResponseEntity findByGroupNameContainingIgnoreCase(@PathVariable String groupName) { + UserClientGroupListResponseDTO userClientGroups = userClientGroupService.findByGroupNameContainingIgnoreCase(groupName); return ResponseEntity.ok(userClientGroups); } @@ -78,8 +80,8 @@ public ResponseEntity> findByGroupNameContainingIgnoreCase @ApiResponse(responseCode = "200", description = "성공적으로 UserClientGroups를 조회함") }) @GetMapping("/client-type/{clientType}") - public ResponseEntity> findByClientType(@PathVariable String clientType) { - List userClientGroups = userClientGroupService.findByClientType(clientType); + public ResponseEntity findByClientType(@PathVariable String clientType) { + UserClientGroupListResponseDTO userClientGroups = userClientGroupService.findByClientType(clientType); return ResponseEntity.ok(userClientGroups); } @@ -88,8 +90,8 @@ public ResponseEntity> findByClientType(@PathVariable Stri @ApiResponse(responseCode = "200", description = "성공적으로 UserClientGroups를 조회함") }) @GetMapping("/manager-phone/{managerPhone}") - public ResponseEntity> findByManagerPhone(@PathVariable String managerPhone) { - List userClientGroups = userClientGroupService.findByManagerPhone(managerPhone); + public ResponseEntity findByManagerPhone(@PathVariable String managerPhone) { + UserClientGroupListResponseDTO userClientGroups = userClientGroupService.findByManagerPhone(managerPhone); return ResponseEntity.ok(userClientGroups); } @@ -99,12 +101,12 @@ public ResponseEntity> findByManagerPhone(@PathVariable St @ApiResponse(responseCode = "404", description = "UserClientGroup을 찾을 수 없음") }) @PatchMapping - public ResponseEntity updateUserClientGroup( + public ResponseEntity updateUserClientGroup( @RequestBody UserClientGroupRequestDTO userClientGroupRequestDTO, @RequestHeader("Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - UserClientGroup userClientGroup = + UserClientGroupSingleResponseDTO userClientGroup = userClientGroupService.updateUserClientGroup(userClientGroupRequestDTO, accountId); return ResponseEntity.ok(userClientGroup); } diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/UserClientIndividualController.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/UserClientIndividualController.java index 3ab0ef7..c20d4c5 100644 --- a/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/UserClientIndividualController.java +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/UserClientIndividualController.java @@ -1,6 +1,8 @@ package com.mtvs.devlinkbackend.oauth2.controller; -import com.mtvs.devlinkbackend.oauth2.dto.UserClientIndividualRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.request.UserClientIndividualRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.response.UserClientIndividualListResponseDTO; +import com.mtvs.devlinkbackend.oauth2.dto.response.UserClientIndividualSingleResponseDTO; import com.mtvs.devlinkbackend.oauth2.entity.UserClientIndividual; import com.mtvs.devlinkbackend.oauth2.service.UserClientIndividualService; import com.mtvs.devlinkbackend.util.JwtUtil; @@ -29,12 +31,12 @@ public UserClientIndividualController(UserClientIndividualService userClientIndi @ApiResponse(responseCode = "400", description = "잘못된 입력 데이터") }) @PostMapping - public ResponseEntity convertUserToUserClientIndividual( + public ResponseEntity convertUserToUserClientIndividual( @RequestBody UserClientIndividualRequestDTO userClientIndividualRequestDTO, @RequestHeader("Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - UserClientIndividual userClientIndividual = + UserClientIndividualSingleResponseDTO userClientIndividual = userClientIndividualService.registUserClientIndividual( userClientIndividualRequestDTO, accountId); return ResponseEntity.ok(userClientIndividual); @@ -46,11 +48,11 @@ public ResponseEntity convertUserToUserClientIndividual( @ApiResponse(responseCode = "404", description = "UserClientIndividual을 찾을 수 없음") }) @GetMapping - public ResponseEntity findUserClientIndividualByAuthorizationHeader( + public ResponseEntity findUserClientIndividualByAuthorizationHeader( @RequestHeader("Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - UserClientIndividual userClientIndividual = + UserClientIndividualSingleResponseDTO userClientIndividual = userClientIndividualService.findUserClientIndividualByAccountId(accountId); return ResponseEntity.ok(userClientIndividual); } @@ -60,8 +62,8 @@ public ResponseEntity findUserClientIndividualByAuthorizat @ApiResponse(responseCode = "200", description = "성공적으로 UserClientIndividuals를 조회함") }) @GetMapping("/name/{name}") - public ResponseEntity> findUserClientIndividualsByNameContainingIgnoreCase(@PathVariable String name) { - List userClientIndividuals = + public ResponseEntity findUserClientIndividualsByNameContainingIgnoreCase(@PathVariable String name) { + UserClientIndividualListResponseDTO userClientIndividuals = userClientIndividualService.findUserClientIndividualsByNameContainingIgnoreCase(name); return ResponseEntity.ok(userClientIndividuals); } @@ -71,8 +73,8 @@ public ResponseEntity> findUserClientIndividualsByNam @ApiResponse(responseCode = "200", description = "성공적으로 UserClientIndividuals를 조회함") }) @GetMapping("/phone/{phone}") - public ResponseEntity> findUserClientIndividualsByPhone(@PathVariable String phone) { - List userClientIndividuals = + public ResponseEntity findUserClientIndividualsByPhone(@PathVariable String phone) { + UserClientIndividualListResponseDTO userClientIndividuals = userClientIndividualService.findUserClientIndividualsByPhone(phone); return ResponseEntity.ok(userClientIndividuals); } @@ -83,12 +85,12 @@ public ResponseEntity> findUserClientIndividualsByPho @ApiResponse(responseCode = "404", description = "UserClientIndividual을 찾을 수 없음") }) @PatchMapping - public ResponseEntity updateUserClientIndividual( + public ResponseEntity updateUserClientIndividual( @RequestBody UserClientIndividualRequestDTO userClientIndividualRequestDTO, @RequestHeader("Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - UserClientIndividual userClientIndividual = + UserClientIndividualSingleResponseDTO userClientIndividual = userClientIndividualService.updateUserClientIndividual( userClientIndividualRequestDTO, accountId); return ResponseEntity.ok(userClientIndividual); diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/UserPartnerController.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/UserPartnerController.java index c625c19..e5252d0 100644 --- a/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/UserPartnerController.java +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/controller/UserPartnerController.java @@ -1,6 +1,8 @@ package com.mtvs.devlinkbackend.oauth2.controller; -import com.mtvs.devlinkbackend.oauth2.dto.UserPartnerRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.request.UserPartnerRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.response.UserPartnerListResponseDTO; +import com.mtvs.devlinkbackend.oauth2.dto.response.UserPartnerSingleResponseDTO; import com.mtvs.devlinkbackend.oauth2.entity.UserPartner; import com.mtvs.devlinkbackend.oauth2.service.UserPartnerService; import com.mtvs.devlinkbackend.util.JwtUtil; @@ -29,12 +31,12 @@ public UserPartnerController(UserPartnerService userPartnerService, JwtUtil jwtU @ApiResponse(responseCode = "400", description = "잘못된 입력 데이터") }) @PostMapping - public ResponseEntity convertUserToUserPartner( + public ResponseEntity convertUserToUserPartner( @RequestBody UserPartnerRequestDTO userPartnerRequestDTO, @RequestHeader("Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - UserPartner userPartner = userPartnerService.registUserPartner(userPartnerRequestDTO, accountId); + UserPartnerSingleResponseDTO userPartner = userPartnerService.registUserPartner(userPartnerRequestDTO, accountId); return ResponseEntity.ok(userPartner); } @@ -44,11 +46,11 @@ public ResponseEntity convertUserToUserPartner( @ApiResponse(responseCode = "404", description = "UserPartner를 찾을 수 없음") }) @GetMapping - public ResponseEntity findUserPartnerByAccountId( + public ResponseEntity findUserPartnerByAccountId( @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - UserPartner userPartner = userPartnerService.findUserPartnerByAccountId(accountId); + UserPartnerSingleResponseDTO userPartner = userPartnerService.findUserPartnerByAccountId(accountId); return ResponseEntity.ok(userPartner); } @@ -57,8 +59,8 @@ public ResponseEntity findUserPartnerByAccountId( @ApiResponse(responseCode = "200", description = "성공적으로 UserPartners를 조회함") }) @GetMapping("/name/{name}") - public ResponseEntity> findUserPartnersByNameContainingIgnoreCase(@PathVariable String name) { - List userPartners = userPartnerService.findUserPartnersByNameContainingIgnoreCase(name); + public ResponseEntity findUserPartnersByNameContainingIgnoreCase(@PathVariable String name) { + UserPartnerListResponseDTO userPartners = userPartnerService.findUserPartnersByNameContainingIgnoreCase(name); return ResponseEntity.ok(userPartners); } @@ -67,8 +69,8 @@ public ResponseEntity> findUserPartnersByNameContainingIgnoreC @ApiResponse(responseCode = "200", description = "성공적으로 UserPartners를 조회함") }) @GetMapping("/nickname/{nickname}") - public ResponseEntity> findUserPartnersByNicknameContainingIgnoreCase(@PathVariable String nickname) { - List userPartners = userPartnerService.findUserPartnersByNicknameContainingIgnoreCase(nickname); + public ResponseEntity findUserPartnersByNicknameContainingIgnoreCase(@PathVariable String nickname) { + UserPartnerListResponseDTO userPartners = userPartnerService.findUserPartnersByNicknameContainingIgnoreCase(nickname); return ResponseEntity.ok(userPartners); } @@ -77,8 +79,8 @@ public ResponseEntity> findUserPartnersByNicknameContainingIgn @ApiResponse(responseCode = "200", description = "성공적으로 UserPartners를 조회함") }) @GetMapping("/email/{email}") - public ResponseEntity> findUserPartnersByEmail(@PathVariable String email) { - List userPartners = userPartnerService.findUserPartnersByEmail(email); + public ResponseEntity findUserPartnersByEmail(@PathVariable String email) { + UserPartnerListResponseDTO userPartners = userPartnerService.findUserPartnersByEmail(email); return ResponseEntity.ok(userPartners); } @@ -87,8 +89,8 @@ public ResponseEntity> findUserPartnersByEmail(@PathVariable S @ApiResponse(responseCode = "200", description = "성공적으로 UserPartner를 조회함") }) @GetMapping("/phone/{phone}") - public ResponseEntity findUserPartnerByPhone(@PathVariable String phone) { - UserPartner userPartner = userPartnerService.findUserPartnerByPhone(phone); + public ResponseEntity findUserPartnerByPhone(@PathVariable String phone) { + UserPartnerSingleResponseDTO userPartner = userPartnerService.findUserPartnerByPhone(phone); return ResponseEntity.ok(userPartner); } @@ -98,12 +100,12 @@ public ResponseEntity findUserPartnerByPhone(@PathVariable String p @ApiResponse(responseCode = "404", description = "UserPartner를 찾을 수 없음") }) @PatchMapping - public ResponseEntity updateUserPartner( + public ResponseEntity updateUserPartner( @RequestBody UserPartnerRequestDTO userPartnerRequestDTO, @RequestHeader("Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - UserPartner userPartner = userPartnerService.updateUserPartner(userPartnerRequestDTO, accountId); + UserPartnerSingleResponseDTO userPartner = userPartnerService.updateUserPartner(userPartnerRequestDTO, accountId); return ResponseEntity.ok(userPartner); } diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/EpicGamesCallbackRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/request/EpicGamesCallbackRequestDTO.java similarity index 86% rename from src/main/java/com/mtvs/devlinkbackend/oauth2/dto/EpicGamesCallbackRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/oauth2/dto/request/EpicGamesCallbackRequestDTO.java index 07f535f..9f808d6 100644 --- a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/EpicGamesCallbackRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/request/EpicGamesCallbackRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.oauth2.dto; +package com.mtvs.devlinkbackend.oauth2.dto.request; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/UserClientGroupRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/request/UserClientGroupRequestDTO.java similarity index 85% rename from src/main/java/com/mtvs/devlinkbackend/oauth2/dto/UserClientGroupRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/oauth2/dto/request/UserClientGroupRequestDTO.java index 13f668c..822689e 100644 --- a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/UserClientGroupRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/request/UserClientGroupRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.oauth2.dto; +package com.mtvs.devlinkbackend.oauth2.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/UserClientIndividualRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/request/UserClientIndividualRequestDTO.java similarity index 81% rename from src/main/java/com/mtvs/devlinkbackend/oauth2/dto/UserClientIndividualRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/oauth2/dto/request/UserClientIndividualRequestDTO.java index dd88896..ba3bf26 100644 --- a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/UserClientIndividualRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/request/UserClientIndividualRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.oauth2.dto; +package com.mtvs.devlinkbackend.oauth2.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/UserPartnerRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/request/UserPartnerRequestDTO.java similarity index 58% rename from src/main/java/com/mtvs/devlinkbackend/oauth2/dto/UserPartnerRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/oauth2/dto/request/UserPartnerRequestDTO.java index 19583d8..b7171fe 100644 --- a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/UserPartnerRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/request/UserPartnerRequestDTO.java @@ -1,5 +1,6 @@ -package com.mtvs.devlinkbackend.oauth2.dto; +package com.mtvs.devlinkbackend.oauth2.dto.request; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.List; @@ -17,6 +18,10 @@ public class UserPartnerRequestDTO { private String phone; private List portfolioList; private String experience; + @Schema( + description = "기술 숙련도에 대한 정보. Key는 기술 이름이고, Value는 해당 기술의 숙련도입니다.", + example = "{ \"Java\": 5, \"Spring\": 4, \"Docker\": 3 }" + ) private Map skillSet; private String message; } diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserClientGroupListResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserClientGroupListResponseDTO.java new file mode 100644 index 0000000..e76ad6e --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserClientGroupListResponseDTO.java @@ -0,0 +1,15 @@ +package com.mtvs.devlinkbackend.oauth2.dto.response; + +import com.mtvs.devlinkbackend.oauth2.entity.UserClientGroup; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class UserClientGroupListResponseDTO { + private List data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserClientGroupSingleResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserClientGroupSingleResponseDTO.java new file mode 100644 index 0000000..98d3fd9 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserClientGroupSingleResponseDTO.java @@ -0,0 +1,13 @@ +package com.mtvs.devlinkbackend.oauth2.dto.response; + +import com.mtvs.devlinkbackend.oauth2.entity.UserClientGroup; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class UserClientGroupSingleResponseDTO { + private UserClientGroup data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserClientIndividualListResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserClientIndividualListResponseDTO.java new file mode 100644 index 0000000..6c87b05 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserClientIndividualListResponseDTO.java @@ -0,0 +1,15 @@ +package com.mtvs.devlinkbackend.oauth2.dto.response; + +import com.mtvs.devlinkbackend.oauth2.entity.UserClientIndividual; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class UserClientIndividualListResponseDTO { + private List data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserClientIndividualSingleResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserClientIndividualSingleResponseDTO.java new file mode 100644 index 0000000..5eaab1e --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserClientIndividualSingleResponseDTO.java @@ -0,0 +1,13 @@ +package com.mtvs.devlinkbackend.oauth2.dto.response; + +import com.mtvs.devlinkbackend.oauth2.entity.UserClientIndividual; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class UserClientIndividualSingleResponseDTO { + private UserClientIndividual data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserPartnerListResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserPartnerListResponseDTO.java new file mode 100644 index 0000000..774f4a6 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserPartnerListResponseDTO.java @@ -0,0 +1,15 @@ +package com.mtvs.devlinkbackend.oauth2.dto.response; + +import com.mtvs.devlinkbackend.oauth2.entity.UserPartner; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class UserPartnerListResponseDTO { + private List data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserPartnerSingleResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserPartnerSingleResponseDTO.java new file mode 100644 index 0000000..4053b66 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/dto/response/UserPartnerSingleResponseDTO.java @@ -0,0 +1,12 @@ +package com.mtvs.devlinkbackend.oauth2.dto.response; + +import com.mtvs.devlinkbackend.oauth2.entity.UserPartner; +import lombok.*; + +@Getter @Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class UserPartnerSingleResponseDTO { + private UserPartner data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/entity/User.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/entity/User.java index 5494b1e..b435df8 100644 --- a/src/main/java/com/mtvs/devlinkbackend/oauth2/entity/User.java +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/entity/User.java @@ -21,7 +21,7 @@ public class User { @Column(name = "ACCOUNT_ID", unique = true) private String accountId; - @Column(name = "PURPOSE", insertable = false, updatable = false) // "UserClient", "UserPartners" 둘 중 한개 + @Column(name = "PURPOSE", insertable = false, updatable = false) // "UserClient", "UserPartner" 둘 중 한개 private String purpose; @Column(name = "CHARACTER_ID", unique = true) diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/service/UserClientGroupService.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/service/UserClientGroupService.java index cf92533..e1b238c 100644 --- a/src/main/java/com/mtvs/devlinkbackend/oauth2/service/UserClientGroupService.java +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/service/UserClientGroupService.java @@ -1,6 +1,8 @@ package com.mtvs.devlinkbackend.oauth2.service; -import com.mtvs.devlinkbackend.oauth2.dto.UserClientGroupRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.request.UserClientGroupRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.response.UserClientGroupListResponseDTO; +import com.mtvs.devlinkbackend.oauth2.dto.response.UserClientGroupSingleResponseDTO; import com.mtvs.devlinkbackend.oauth2.entity.UserClientGroup; import com.mtvs.devlinkbackend.oauth2.repository.UserClientGroupRepository; import org.springframework.stereotype.Service; @@ -17,40 +19,41 @@ public UserClientGroupService(UserClientGroupRepository userClientGroupRepositor } @Transactional - public UserClientGroup registUserClientGroup(UserClientGroupRequestDTO userClientGroupRequestDTO, - String accountId) { - return userClientGroupRepository.save(new UserClientGroup( + public UserClientGroupSingleResponseDTO registUserClientGroup(UserClientGroupRequestDTO userClientGroupRequestDTO, + String accountId) { + return new UserClientGroupSingleResponseDTO(userClientGroupRepository.save(new UserClientGroup( accountId, userClientGroupRequestDTO.getPurpose(), userClientGroupRequestDTO.getClientType(), userClientGroupRequestDTO.getGroupName(), userClientGroupRequestDTO.getManagerName(), userClientGroupRequestDTO.getManagerPhone() - )); + ))); } - public UserClientGroup findUserClientGroupByAccountId(String accountId) { - return userClientGroupRepository.findUserClientGroupByAccountId(accountId); + public UserClientGroupSingleResponseDTO findUserClientGroupByAccountId(String accountId) { + return new UserClientGroupSingleResponseDTO(userClientGroupRepository.findUserClientGroupByAccountId(accountId)); }; - public List findByManagerNameContainingIgnoreCase(String managerName) { - return userClientGroupRepository.findByManagerNameContainingIgnoreCase(managerName); + public UserClientGroupListResponseDTO findByManagerNameContainingIgnoreCase(String managerName) { + return new UserClientGroupListResponseDTO( + userClientGroupRepository.findByManagerNameContainingIgnoreCase(managerName)); }; - public List findByGroupNameContainingIgnoreCase(String groupName) { - return userClientGroupRepository.findByGroupNameContainingIgnoreCase(groupName); + public UserClientGroupListResponseDTO findByGroupNameContainingIgnoreCase(String groupName) { + return new UserClientGroupListResponseDTO(userClientGroupRepository.findByGroupNameContainingIgnoreCase(groupName)); }; - public List findByClientType(String clientType) { - return userClientGroupRepository.findByClientType(clientType); + public UserClientGroupListResponseDTO findByClientType(String clientType) { + return new UserClientGroupListResponseDTO(userClientGroupRepository.findByClientType(clientType)); }; - public List findByManagerPhone(String managerPhone) { - return userClientGroupRepository.findByManagerPhone(managerPhone); + public UserClientGroupListResponseDTO findByManagerPhone(String managerPhone) { + return new UserClientGroupListResponseDTO(userClientGroupRepository.findByManagerPhone(managerPhone)); }; @Transactional - public UserClientGroup updateUserClientGroup(UserClientGroupRequestDTO userClientGroupRequestDTO, + public UserClientGroupSingleResponseDTO updateUserClientGroup(UserClientGroupRequestDTO userClientGroupRequestDTO, String accountId) { UserClientGroup userClientGroup = userClientGroupRepository.findUserClientGroupByAccountId(accountId); @@ -62,7 +65,7 @@ public UserClientGroup updateUserClientGroup(UserClientGroupRequestDTO userClien userClientGroup.setManagerName(userClientGroup.getManagerName()); userClientGroup.setManagerPhone(userClientGroup.getManagerPhone()); - return userClientGroup; + return new UserClientGroupSingleResponseDTO(userClientGroup); } public void deleteByAccountId(String accountId) { diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/service/UserClientIndividualService.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/service/UserClientIndividualService.java index 6d3331d..df64e68 100644 --- a/src/main/java/com/mtvs/devlinkbackend/oauth2/service/UserClientIndividualService.java +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/service/UserClientIndividualService.java @@ -1,6 +1,8 @@ package com.mtvs.devlinkbackend.oauth2.service; -import com.mtvs.devlinkbackend.oauth2.dto.UserClientIndividualRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.request.UserClientIndividualRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.response.UserClientIndividualListResponseDTO; +import com.mtvs.devlinkbackend.oauth2.dto.response.UserClientIndividualSingleResponseDTO; import com.mtvs.devlinkbackend.oauth2.entity.UserClientIndividual; import com.mtvs.devlinkbackend.oauth2.repository.UserClientIndividualRepository; import org.springframework.stereotype.Service; @@ -18,31 +20,33 @@ public UserClientIndividualService(UserClientIndividualRepository userClientIndi } @Transactional - public UserClientIndividual registUserClientIndividual(UserClientIndividualRequestDTO userClientIndividualRequestDTO, - String accountId) { + public UserClientIndividualSingleResponseDTO registUserClientIndividual(UserClientIndividualRequestDTO userClientIndividualRequestDTO, + String accountId) { - return userClientIndividualRepository.save(new UserClientIndividual( + return new UserClientIndividualSingleResponseDTO(userClientIndividualRepository.save(new UserClientIndividual( accountId, userClientIndividualRequestDTO.getPurpose(), userClientIndividualRequestDTO.getName(), userClientIndividualRequestDTO.getPhone() - )); + ))); } - public UserClientIndividual findUserClientIndividualByAccountId(String accountId) { - return userClientIndividualRepository.findUserClientIndividualByAccountId(accountId); + public UserClientIndividualSingleResponseDTO findUserClientIndividualByAccountId(String accountId) { + return new UserClientIndividualSingleResponseDTO( + userClientIndividualRepository.findUserClientIndividualByAccountId(accountId)); }; - public List findUserClientIndividualsByNameContainingIgnoreCase(String name) { - return userClientIndividualRepository.findUserClientIndividualsByNameContainingIgnoreCase(name); + public UserClientIndividualListResponseDTO findUserClientIndividualsByNameContainingIgnoreCase(String name) { + return new UserClientIndividualListResponseDTO( + userClientIndividualRepository.findUserClientIndividualsByNameContainingIgnoreCase(name)); }; - public List findUserClientIndividualsByPhone(String phone) { - return userClientIndividualRepository.findUserClientIndividualsByPhone(phone); + public UserClientIndividualListResponseDTO findUserClientIndividualsByPhone(String phone) { + return new UserClientIndividualListResponseDTO(userClientIndividualRepository.findUserClientIndividualsByPhone(phone)); }; @Transactional - public UserClientIndividual updateUserClientIndividual(UserClientIndividualRequestDTO userClientIndividualRequestDTO, + public UserClientIndividualSingleResponseDTO updateUserClientIndividual(UserClientIndividualRequestDTO userClientIndividualRequestDTO, String accountId) { UserClientIndividual userClientIndividual = userClientIndividualRepository.findUserClientIndividualByAccountId(accountId); @@ -52,7 +56,7 @@ public UserClientIndividual updateUserClientIndividual(UserClientIndividualReque userClientIndividual.setName(userClientIndividualRequestDTO.getName()); userClientIndividual.setPhone(userClientIndividualRequestDTO.getPhone()); - return userClientIndividual; + return new UserClientIndividualSingleResponseDTO(userClientIndividual); } public void deleteByAccountId(String accountId) { diff --git a/src/main/java/com/mtvs/devlinkbackend/oauth2/service/UserPartnerService.java b/src/main/java/com/mtvs/devlinkbackend/oauth2/service/UserPartnerService.java index 547cbef..d533f69 100644 --- a/src/main/java/com/mtvs/devlinkbackend/oauth2/service/UserPartnerService.java +++ b/src/main/java/com/mtvs/devlinkbackend/oauth2/service/UserPartnerService.java @@ -1,6 +1,8 @@ package com.mtvs.devlinkbackend.oauth2.service; -import com.mtvs.devlinkbackend.oauth2.dto.UserPartnerRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.request.UserPartnerRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.response.UserPartnerListResponseDTO; +import com.mtvs.devlinkbackend.oauth2.dto.response.UserPartnerSingleResponseDTO; import com.mtvs.devlinkbackend.oauth2.entity.UserPartner; import com.mtvs.devlinkbackend.oauth2.repository.UserPartnersRepository; import org.springframework.stereotype.Service; @@ -17,10 +19,10 @@ public UserPartnerService(UserPartnersRepository userPartnersRepository) { } @Transactional - public UserPartner registUserPartner(UserPartnerRequestDTO userPartnerRequestDTO, - String accountId) { + public UserPartnerSingleResponseDTO registUserPartner(UserPartnerRequestDTO userPartnerRequestDTO, + String accountId) { - return userPartnersRepository.save(new UserPartner( + return new UserPartnerSingleResponseDTO(userPartnersRepository.save(new UserPartner( accountId, userPartnerRequestDTO.getPurpose(), userPartnerRequestDTO.getNickname(), @@ -31,31 +33,32 @@ public UserPartner registUserPartner(UserPartnerRequestDTO userPartnerRequestDTO userPartnerRequestDTO.getExperience(), userPartnerRequestDTO.getSkillSet(), userPartnerRequestDTO.getMessage() - )); + ))); } - public UserPartner findUserPartnerByAccountId(String accountId) { - return userPartnersRepository.findUserPartnerByAccountId(accountId); + public UserPartnerSingleResponseDTO findUserPartnerByAccountId(String accountId) { + return new UserPartnerSingleResponseDTO(userPartnersRepository.findUserPartnerByAccountId(accountId)); }; - public List findUserPartnersByNameContainingIgnoreCase(String name) { - return userPartnersRepository.findUserPartnersByNameContainingIgnoreCase(name); + public UserPartnerListResponseDTO findUserPartnersByNameContainingIgnoreCase(String name) { + return new UserPartnerListResponseDTO(userPartnersRepository.findUserPartnersByNameContainingIgnoreCase(name)); }; - public List findUserPartnersByNicknameContainingIgnoreCase(String nickname) { - return userPartnersRepository.findUserPartnersByNicknameContainingIgnoreCase(nickname); + public UserPartnerListResponseDTO findUserPartnersByNicknameContainingIgnoreCase(String nickname) { + return new UserPartnerListResponseDTO( + userPartnersRepository.findUserPartnersByNicknameContainingIgnoreCase(nickname)); }; - public List findUserPartnersByEmail(String email) { - return userPartnersRepository.findUserPartnersByEmail(email); + public UserPartnerListResponseDTO findUserPartnersByEmail(String email) { + return new UserPartnerListResponseDTO(userPartnersRepository.findUserPartnersByEmail(email)); }; - public UserPartner findUserPartnerByPhone(String phone) { - return userPartnersRepository.findUserPartnerByPhone(phone); + public UserPartnerSingleResponseDTO findUserPartnerByPhone(String phone) { + return new UserPartnerSingleResponseDTO(userPartnersRepository.findUserPartnerByPhone(phone)); }; @Transactional - public UserPartner updateUserPartner(UserPartnerRequestDTO userPartnerRequestDTO, + public UserPartnerSingleResponseDTO updateUserPartner(UserPartnerRequestDTO userPartnerRequestDTO, String accountId) { UserPartner userPartner = userPartnersRepository.findUserPartnerByAccountId(accountId); @@ -71,7 +74,7 @@ public UserPartner updateUserPartner(UserPartnerRequestDTO userPartnerRequestDTO userPartner.setSkillSet(userPartnerRequestDTO.getSkillSet()); userPartner.setMesssage(userPartnerRequestDTO.getMessage()); - return userPartner; + return new UserPartnerSingleResponseDTO(userPartner); } public void deleteByAccountId(String accountId) { diff --git a/src/main/java/com/mtvs/devlinkbackend/project/controller/ProjectController.java b/src/main/java/com/mtvs/devlinkbackend/project/controller/ProjectController.java index 370be69..1ea9cc4 100644 --- a/src/main/java/com/mtvs/devlinkbackend/project/controller/ProjectController.java +++ b/src/main/java/com/mtvs/devlinkbackend/project/controller/ProjectController.java @@ -1,10 +1,11 @@ package com.mtvs.devlinkbackend.project.controller; -import com.mtvs.devlinkbackend.project.dto.ProjectVectorRegistRequestDTO; +import com.mtvs.devlinkbackend.project.dto.response.ProjectPagingResponseDTO; +import com.mtvs.devlinkbackend.project.dto.request.ProjectVectorRegistRequestDTO; +import com.mtvs.devlinkbackend.project.dto.response.ProjectSingleResponseDTO; import com.mtvs.devlinkbackend.util.JwtUtil; -import com.mtvs.devlinkbackend.project.dto.ProjectRegistRequestDTO; -import com.mtvs.devlinkbackend.project.dto.ProjectUpdateRequestDTO; -import com.mtvs.devlinkbackend.project.entity.Project; +import com.mtvs.devlinkbackend.project.dto.request.ProjectRegistRequestDTO; +import com.mtvs.devlinkbackend.project.dto.request.ProjectUpdateRequestDTO; import com.mtvs.devlinkbackend.project.service.ProjectService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -14,7 +15,6 @@ import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; -import java.util.List; import java.util.Map; @RestController @@ -35,12 +35,13 @@ public ProjectController(ProjectService projectService, JwtUtil jwtUtil) { @ApiResponse(responseCode = "400", description = "잘못된 파라미터") }) @PostMapping - public ResponseEntity registerProject( + public ResponseEntity registerProject( @RequestBody ProjectRegistRequestDTO requestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { + System.out.println(requestDTO); String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - Project newProject = projectService.registProject(requestDTO, accountId); + ProjectSingleResponseDTO newProject = projectService.registProject(requestDTO, accountId); return new ResponseEntity<>(newProject, HttpStatus.CREATED); } @@ -50,8 +51,8 @@ public ResponseEntity registerProject( @ApiResponse(responseCode = "404", description = "프로젝트 의뢰를 찾을 수 없음") }) @GetMapping("/{projectId}") - public ResponseEntity getProjectById(@PathVariable Long projectId) { - Project project = projectService.findProjectByProjectId(projectId); + public ResponseEntity getProjectById(@PathVariable Long projectId) { + ProjectSingleResponseDTO project = projectService.findProjectByProjectId(projectId); if (project != null) { return ResponseEntity.ok(project); } else { @@ -59,87 +60,102 @@ public ResponseEntity getProjectById(@PathVariable Long projectId) { } } - @Operation(summary = "계정별 프로젝트 의뢰 목록 조회", description = "특정 계정에 대한 모든 프로젝트 의뢰를 조회합니다.") + @Operation(summary = "Pagination으로 계정별 프로젝트 의뢰 목록 조회", description = "Pagination으로 특정 계정에 대한 모든 프로젝트 의뢰를 조회합니다.") @ApiResponses({ @ApiResponse(responseCode = "200", description = "프로젝트 의뢰 목록이 성공적으로 조회됨") }) @GetMapping("/account") - public ResponseEntity> getProjectsByAccountId( + public ResponseEntity getProjectsByAccountId( + @RequestParam int page, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - List projects = projectService.findProjectsByAccountId(accountId); + ProjectPagingResponseDTO projects = projectService.findProjectsByAccountIdWithPaging(page, accountId); return ResponseEntity.ok(projects); } - @Operation(summary = "업무 범위별 프로젝트 의뢰 목록 조회", description = "특정 업무 범위에 대한 모든 프로젝트 의뢰를 조회합니다.") + @Operation(summary = "Pagination으로 업무 범위별 프로젝트 의뢰 목록 조회", description = "Pagination으로 특정 업무 범위에 대한 모든 프로젝트 의뢰를 조회합니다.") @ApiResponses({ @ApiResponse(responseCode = "200", description = "프로젝트 의뢰 목록이 성공적으로 조회됨") }) @GetMapping("/work-scope") - public ResponseEntity> getProjectsByWorkScope(@RequestParam String workScope) { + public ResponseEntity getProjectsByWorkScope( + @RequestParam int page, + @RequestParam String workScope) { - List projects = projectService.findProjectsByWorkScope(workScope); + ProjectPagingResponseDTO projects = projectService.findProjectsByWorkScopeWithPaging(page, workScope); return ResponseEntity.ok(projects); } - @Operation(summary = "근무 형태별 프로젝트 의뢰 목록 조회", description = "근무 형태 범위에 대한 모든 프로젝트 의뢰를 조회합니다.") + @Operation(summary = "Pagination으로 근무 형태별 프로젝트 의뢰 목록 조회", description = "Pagination으로 근무 형태 범위에 대한 모든 프로젝트 의뢰를 조회합니다.") @ApiResponses({ @ApiResponse(responseCode = "200", description = "프로젝트 의뢰 목록이 성공적으로 조회됨") }) @GetMapping("/work-type") - public ResponseEntity> getProjectsByWorkType(@RequestParam String workType) { + public ResponseEntity getProjectsByWorkType( + @RequestParam int page, + @RequestParam String workType) { - List projects = projectService.findProjectsByWorkType(workType); + ProjectPagingResponseDTO projects = + projectService.findProjectsByWorkTypeWithPaging(page, workType); return ResponseEntity.ok(projects); } - @Operation(summary = "진행 분류별 프로젝트 의뢰 목록 조회", description = "진행 분류 범위에 대한 모든 프로젝트 의뢰를 조회합니다.") + @Operation(summary = "Pagination으로 진행 분류별 프로젝트 의뢰 목록 조회", description = "Pagination으로 진행 분류 범위에 대한 모든 프로젝트 의뢰를 조회합니다.") @ApiResponses({ @ApiResponse(responseCode = "200", description = "프로젝트 의뢰 목록이 성공적으로 조회됨") }) @GetMapping("/progress-classfication") - public ResponseEntity> getProjectsByProgressClassification(@RequestParam String progressClassification) { + public ResponseEntity getProjectsByProgressClassification( + @RequestParam int page, + @RequestParam String progressClassification) { - List projects = projectService.findProjectsByProgressClassification(progressClassification); + ProjectPagingResponseDTO projects = + projectService.findProjectsByProgressClassificationWithPaging(page, progressClassification); return ResponseEntity.ok(projects); } - @Operation(summary = "프로젝트 주제(제목)별 프로젝트 의뢰 목록 조회", description = "프로젝트 주제(제목) 범위에 대한 모든 프로젝트 의뢰를 조회합니다.") + @Operation(summary = "Pagination으로 프로젝트 주제(제목)별 프로젝트 의뢰 목록 조회", description = "Pagination으로 프로젝트 주제(제목) 범위에 대한 모든 프로젝트 의뢰를 조회합니다.") @ApiResponses({ @ApiResponse(responseCode = "200", description = "프로젝트 의뢰 목록이 성공적으로 조회됨") }) @GetMapping("/title") - public ResponseEntity> getProjectsByTitleContainingIgnoreCase(@RequestParam String title) { + public ResponseEntity getProjectsByTitleContainingIgnoreCase( + @RequestParam int page, + @RequestParam String title) { - List projects = projectService.findProjectsByTitleContainingIgnoreCase(title); + ProjectPagingResponseDTO projects = + projectService.findProjectsByTitleContainingIgnoreCaseWithPaging(page, title); return ResponseEntity.ok(projects); } - @Operation(summary = "특정 기간 내의 프로젝트 의뢰 목록 조회", description = "시작날짜 또는 끝 날짜를 포함하는 모든 프로젝트 의뢰를 조회합니다.") + @Operation(summary = "Pagination으로 특정 기간 내의 프로젝트 의뢰 목록 조회", description = "Pagination으로 시작날짜 또는 끝 날짜를 포함하는 모든 프로젝트 의뢰를 조회합니다.") @ApiResponses({ @ApiResponse(responseCode = "200", description = "프로젝트 의뢰 목록이 성공적으로 조회됨") }) @GetMapping("/date-range") - public ResponseEntity> getProjectsBetweenDates( - @RequestParam LocalDateTime startDateTime, @RequestParam LocalDateTime endDateTime) { - - List projects = projectService.findProjectsByStartDateTimeLessThanEqualOrEndDateTimeGreaterThanEqual( - startDateTime, endDateTime); + public ResponseEntity getProjectsBetweenDates( + @RequestParam int page, + @RequestParam LocalDateTime startDateTime, + @RequestParam LocalDateTime endDateTime) { + + ProjectPagingResponseDTO projects = + projectService.findProjectsByStartDateTimeLessThanEqualOrEndDateTimeGreaterThanEqualWithPaging( + page, startDateTime, endDateTime); return ResponseEntity.ok(projects); } - @Operation(summary = "원하는 직군별 프로젝트 의뢰 목록 조회", description = "원하는 직군 숫자보다 많이 모집하는 모든 프로젝트 의뢰를 조회합니다.") + @Operation(summary = "Pagination으로 원하는 직군별 프로젝트 의뢰 목록 조회", description = "Pagination으로 원하는 직군 숫자보다 많이 모집하는 모든 프로젝트 의뢰를 조회합니다.") @ApiResponses({ @ApiResponse(responseCode = "200", description = "프로젝트 의뢰 목록이 성공적으로 조회됨") }) @GetMapping("/required") - public ResponseEntity> getProjectsByTitleContainingIgnoreCase( - @RequestParam int requiredClient, @RequestParam int requiredServer, @RequestParam int requiredDesign, - @RequestParam int requiredPlanner, @RequestParam int requiredAIEngineer) { + public ResponseEntity getProjectsByTitleContainingIgnoreCase( + @RequestParam int page, @RequestParam int requiredClient, @RequestParam int requiredServer, + @RequestParam int requiredDesign, @RequestParam int requiredPlanner, @RequestParam int requiredAIEngineer) { - List projects = projectService.findProjectsWithLargerRequirements( - requiredClient, requiredServer, requiredDesign, requiredPlanner, requiredAIEngineer + ProjectPagingResponseDTO projects = projectService.findProjectsWithLargerRequirementsWithPaging( + page, requiredClient, requiredServer, requiredDesign, requiredPlanner, requiredAIEngineer ); return ResponseEntity.ok(projects); } @@ -163,13 +179,13 @@ public ResponseEntity> getProjectVectorByProjectId( @ApiResponse(responseCode = "400", description = "잘못된 파라미터 또는 권한 없음") }) @PatchMapping - public ResponseEntity updateProject( + public ResponseEntity updateProject( @RequestBody ProjectUpdateRequestDTO requestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) { try { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - Project updatedProject = projectService.updateProject(requestDTO, accountId); + ProjectSingleResponseDTO updatedProject = projectService.updateProject(requestDTO, accountId); return ResponseEntity.ok(updatedProject); } catch (Exception e) { return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); @@ -182,11 +198,11 @@ public ResponseEntity updateProject( @ApiResponse(responseCode = "400", description = "잘못된 파라미터 또는 권한 없음") }) @PatchMapping("/vector") - public ResponseEntity updateProject( + public ResponseEntity updateProject( @RequestBody ProjectVectorRegistRequestDTO projectVectorRegistRequestDTO) { try { - Project updatedProject = projectService.updateProjectVector(projectVectorRegistRequestDTO); + ProjectSingleResponseDTO updatedProject = projectService.updateProjectVector(projectVectorRegistRequestDTO); return ResponseEntity.ok(updatedProject); } catch (Exception e) { return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); diff --git a/src/main/java/com/mtvs/devlinkbackend/project/dto/ProjectRegistRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/project/dto/request/ProjectRegistRequestDTO.java similarity index 92% rename from src/main/java/com/mtvs/devlinkbackend/project/dto/ProjectRegistRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/project/dto/request/ProjectRegistRequestDTO.java index 781b649..eb6d414 100644 --- a/src/main/java/com/mtvs/devlinkbackend/project/dto/ProjectRegistRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/project/dto/request/ProjectRegistRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.project.dto; +package com.mtvs.devlinkbackend.project.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/project/dto/ProjectUpdateRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/project/dto/request/ProjectUpdateRequestDTO.java similarity index 92% rename from src/main/java/com/mtvs/devlinkbackend/project/dto/ProjectUpdateRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/project/dto/request/ProjectUpdateRequestDTO.java index 8a2b9d1..02b53f5 100644 --- a/src/main/java/com/mtvs/devlinkbackend/project/dto/ProjectUpdateRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/project/dto/request/ProjectUpdateRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.project.dto; +package com.mtvs.devlinkbackend.project.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/project/dto/ProjectVectorRegistRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/project/dto/request/ProjectVectorRegistRequestDTO.java similarity index 90% rename from src/main/java/com/mtvs/devlinkbackend/project/dto/ProjectVectorRegistRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/project/dto/request/ProjectVectorRegistRequestDTO.java index 219803f..4300510 100644 --- a/src/main/java/com/mtvs/devlinkbackend/project/dto/ProjectVectorRegistRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/project/dto/request/ProjectVectorRegistRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.project.dto; +package com.mtvs.devlinkbackend.project.dto.request; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/project/dto/response/ProjectPagingResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/project/dto/response/ProjectPagingResponseDTO.java new file mode 100644 index 0000000..a688c91 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/project/dto/response/ProjectPagingResponseDTO.java @@ -0,0 +1,16 @@ +package com.mtvs.devlinkbackend.project.dto.response; + +import com.mtvs.devlinkbackend.project.entity.Project; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class ProjectPagingResponseDTO { + private List data; + private Integer totalPages; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/project/dto/response/ProjectSingleResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/project/dto/response/ProjectSingleResponseDTO.java new file mode 100644 index 0000000..79e71bc --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/project/dto/response/ProjectSingleResponseDTO.java @@ -0,0 +1,13 @@ +package com.mtvs.devlinkbackend.project.dto.response; + +import com.mtvs.devlinkbackend.project.entity.Project; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class ProjectSingleResponseDTO { + private Project data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/project/repository/ProjectRepository.java b/src/main/java/com/mtvs/devlinkbackend/project/repository/ProjectRepository.java index 6053340..2bb19c3 100644 --- a/src/main/java/com/mtvs/devlinkbackend/project/repository/ProjectRepository.java +++ b/src/main/java/com/mtvs/devlinkbackend/project/repository/ProjectRepository.java @@ -1,40 +1,49 @@ package com.mtvs.devlinkbackend.project.repository; import com.mtvs.devlinkbackend.project.entity.Project; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.time.LocalDateTime; -import java.util.List; @Repository public interface ProjectRepository extends JpaRepository { - List findProjectsByAccountId(String accountId); + // AccountId로 프로젝트 조회 (페이징 추가) + Page findProjectsByAccountId(String accountId, Pageable pageable); - List findProjectsByWorkScope(String workScope); + // WorkScope로 프로젝트 조회 (페이징 추가) + Page findProjectsByWorkScope(String workScope, Pageable pageable); - List findProjectsByWorkType(String workType); + // WorkType으로 프로젝트 조회 (페이징 추가) + Page findProjectsByWorkType(String workType, Pageable pageable); - List findProjectsByProgressClassification(String progressClassification); + // ProgressClassification으로 프로젝트 조회 (페이징 추가) + Page findProjectsByProgressClassification(String progressClassification, Pageable pageable); - List findProjectsByTitleContainingIgnoreCase(String title); + // Title에 특정 문자열이 포함된 프로젝트 조회 (대소문자 구분 없이, 페이징 추가) + Page findProjectsByTitleContainingIgnoreCase(String title, Pageable pageable); - List findProjectsByStartDateTimeLessThanEqualOrEndDateTimeGreaterThanEqual(LocalDateTime startDateTime, LocalDateTime endDateTime); + // 시작일과 종료일 기준으로 프로젝트 조회 (페이징 추가) + Page findProjectsByStartDateTimeLessThanEqualOrEndDateTimeGreaterThanEqual( + LocalDateTime startDateTime, LocalDateTime endDateTime, Pageable pageable); - // required 값들이 넘겨준 값보다 큰 row를 조회하는 쿼리 + // required 값들이 넘겨준 값보다 큰 row를 조회하는 쿼리 (페이징 추가) @Query("SELECT p FROM Project p WHERE " + "(:requiredClient IS NULL OR p.requiredClient > :requiredClient) AND " + "(:requiredServer IS NULL OR p.requiredServer > :requiredServer) AND " + "(:requiredDesign IS NULL OR p.requiredDesign > :requiredDesign) AND " + "(:requiredPlanner IS NULL OR p.requiredPlanner > :requiredPlanner) AND " + "(:requiredAIEngineer IS NULL OR p.requiredAIEngineer > :requiredAIEngineer)") - List findProjectsWithLargerRequirements( + Page findProjectsWithLargerRequirements( @Param("requiredClient") Integer requiredClient, @Param("requiredServer") Integer requiredServer, @Param("requiredDesign") Integer requiredDesign, @Param("requiredPlanner") Integer requiredPlanner, - @Param("requiredAIEngineer") Integer requiredAIEngineer + @Param("requiredAIEngineer") Integer requiredAIEngineer, + Pageable pageable ); } diff --git a/src/main/java/com/mtvs/devlinkbackend/project/service/ProjectService.java b/src/main/java/com/mtvs/devlinkbackend/project/service/ProjectService.java index 39325ef..391e5e9 100644 --- a/src/main/java/com/mtvs/devlinkbackend/project/service/ProjectService.java +++ b/src/main/java/com/mtvs/devlinkbackend/project/service/ProjectService.java @@ -1,21 +1,29 @@ package com.mtvs.devlinkbackend.project.service; -import com.mtvs.devlinkbackend.project.dto.ProjectRegistRequestDTO; -import com.mtvs.devlinkbackend.project.dto.ProjectUpdateRequestDTO; -import com.mtvs.devlinkbackend.project.dto.ProjectVectorRegistRequestDTO; +import com.mtvs.devlinkbackend.project.dto.response.ProjectPagingResponseDTO; +import com.mtvs.devlinkbackend.project.dto.request.ProjectRegistRequestDTO; +import com.mtvs.devlinkbackend.project.dto.request.ProjectUpdateRequestDTO; +import com.mtvs.devlinkbackend.project.dto.request.ProjectVectorRegistRequestDTO; +import com.mtvs.devlinkbackend.project.dto.response.ProjectSingleResponseDTO; import com.mtvs.devlinkbackend.project.entity.Project; import com.mtvs.devlinkbackend.project.repository.ProjectRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; @Service public class ProjectService { + + private static final int pageSize = 15; + private final ProjectRepository projectRepository; public ProjectService(ProjectRepository projectRepository) { @@ -23,8 +31,8 @@ public ProjectService(ProjectRepository projectRepository) { } @Transactional - public Project registProject(ProjectRegistRequestDTO projectRegistRequestDTO, String accountId) { - return projectRepository.save(new Project( + public ProjectSingleResponseDTO registProject(ProjectRegistRequestDTO projectRegistRequestDTO, String accountId) { + return new ProjectSingleResponseDTO(projectRepository.save(new Project( projectRegistRequestDTO.getWorkScope(), projectRegistRequestDTO.getWorkType(), projectRegistRequestDTO.getProgressClassification(), @@ -40,44 +48,62 @@ public Project registProject(ProjectRegistRequestDTO projectRegistRequestDTO, St projectRegistRequestDTO.getEndDateTime(), projectRegistRequestDTO.getEstimatedCost(), accountId - )); + ))); } - public Project findProjectByProjectId(Long projectId) { - return projectRepository.findById(projectId).orElse(null); + public ProjectSingleResponseDTO findProjectByProjectId(Long projectId) { + return new ProjectSingleResponseDTO(projectRepository.findById(projectId).orElse(null)); } - public List findProjectsByAccountId(String accountId) { - return projectRepository.findProjectsByAccountId(accountId); + public ProjectPagingResponseDTO findProjectsByAccountIdWithPaging(int page, String accountId) { + Pageable pageable = PageRequest.of(page, pageSize, Sort.by("createdAt").descending()); + Page projectPage = projectRepository.findProjectsByAccountId(accountId, pageable); + return new ProjectPagingResponseDTO(projectPage.getContent(), projectPage.getTotalPages()); } - public List findProjectsByWorkScope(String workScope) { - return projectRepository.findProjectsByWorkScope(workScope); + public ProjectPagingResponseDTO findProjectsByWorkScopeWithPaging(int page, String workScope) { + Pageable pageable = PageRequest.of(page, pageSize, Sort.by("createdAt").descending()); + Page projectPage = projectRepository.findProjectsByWorkScope(workScope, pageable); + return new ProjectPagingResponseDTO(projectPage.getContent(), projectPage.getTotalPages()); } - public List findProjectsByWorkType(String workType) { - return projectRepository.findProjectsByWorkType(workType); + public ProjectPagingResponseDTO findProjectsByWorkTypeWithPaging(int page, String workType) { + Pageable pageable = PageRequest.of(page, pageSize, Sort.by("createdAt").descending()); + Page projectPage = projectRepository.findProjectsByWorkType(workType, pageable); + return new ProjectPagingResponseDTO(projectPage.getContent(), projectPage.getTotalPages()); } - public List findProjectsByProgressClassification(String progressClassification) { - return projectRepository.findProjectsByProgressClassification(progressClassification); + public ProjectPagingResponseDTO findProjectsByProgressClassificationWithPaging( + int page,String progressClassification) { + + Pageable pageable = PageRequest.of(page, pageSize, Sort.by("createdAt").descending()); + Page projectPage = projectRepository.findProjectsByProgressClassification(progressClassification, pageable); + return new ProjectPagingResponseDTO(projectPage.getContent(), projectPage.getTotalPages()); } - public List findProjectsByTitleContainingIgnoreCase(String title) { - return projectRepository.findProjectsByTitleContainingIgnoreCase(title); + public ProjectPagingResponseDTO findProjectsByTitleContainingIgnoreCaseWithPaging(int page, String title) { + Pageable pageable = PageRequest.of(page, pageSize, Sort.by("createdAt").descending()); + Page projectPage = projectRepository.findProjectsByTitleContainingIgnoreCase(title, pageable); + return new ProjectPagingResponseDTO(projectPage.getContent(), projectPage.getTotalPages()); } - public List findProjectsByStartDateTimeLessThanEqualOrEndDateTimeGreaterThanEqual( - LocalDateTime starDateTime, LocalDateTime endDateTime) { - return projectRepository.findProjectsByStartDateTimeLessThanEqualOrEndDateTimeGreaterThanEqual(starDateTime, endDateTime); + public ProjectPagingResponseDTO findProjectsByStartDateTimeLessThanEqualOrEndDateTimeGreaterThanEqualWithPaging( + int page, LocalDateTime starDateTime, LocalDateTime endDateTime) { + + Pageable pageable = PageRequest.of(page, pageSize, Sort.by("createdAt").descending()); + Page projectPage = projectRepository. + findProjectsByStartDateTimeLessThanEqualOrEndDateTimeGreaterThanEqual(starDateTime, endDateTime, pageable); + return new ProjectPagingResponseDTO(projectPage.getContent(), projectPage.getTotalPages()); } - public List findProjectsWithLargerRequirements( - Integer requiredClient, Integer requiredServer, Integer requiredDesign, - Integer requiredPlanner, Integer requiredAIEngineer) { + public ProjectPagingResponseDTO findProjectsWithLargerRequirementsWithPaging( + int page, Integer requiredClient, Integer requiredServer, + Integer requiredDesign, Integer requiredPlanner, Integer requiredAIEngineer) { - return projectRepository.findProjectsWithLargerRequirements( - requiredClient, requiredServer, requiredDesign, requiredPlanner, requiredAIEngineer); + Pageable pageable = PageRequest.of(page, pageSize, Sort.by("createdAt").descending()); + Page projectPage = projectRepository.findProjectsWithLargerRequirements( + requiredClient, requiredServer, requiredDesign, requiredPlanner, requiredAIEngineer, pageable); + return new ProjectPagingResponseDTO(projectPage.getContent(), projectPage.getTotalPages()); } public Map findProjectVectorByProjectId(Long projectId) { @@ -85,7 +111,7 @@ public Map findProjectVectorByProjectId(Long projectId) { } @Transactional - public Project updateProject(ProjectUpdateRequestDTO projectUpdateRequestDTO, String accountId) { + public ProjectSingleResponseDTO updateProject(ProjectUpdateRequestDTO projectUpdateRequestDTO, String accountId) { Optional request = projectRepository.findById(projectUpdateRequestDTO.getRequestId()); if (request.isPresent()) { Project foundProject = request.get(); @@ -103,7 +129,7 @@ public Project updateProject(ProjectUpdateRequestDTO projectUpdateRequestDTO, St foundProject.setStartDateTime(projectUpdateRequestDTO.getStartDateTime()); foundProject.setEndDateTime(projectUpdateRequestDTO.getEndDateTime()); foundProject.setEstimatedCost(projectUpdateRequestDTO.getEstimatedCost()); - return foundProject; + return new ProjectSingleResponseDTO(foundProject); } else throw new IllegalArgumentException("잘못된 accountId로 Request ID : " + projectUpdateRequestDTO.getRequestId() + "를 수정 시도"); @@ -112,13 +138,13 @@ else throw new IllegalArgumentException("잘못된 accountId로 Request ID : " } @Transactional - public Project updateProjectVector(ProjectVectorRegistRequestDTO projectVectorRegistRequestDTO) { + public ProjectSingleResponseDTO updateProjectVector(ProjectVectorRegistRequestDTO projectVectorRegistRequestDTO) { Optional project = projectRepository.findById(projectVectorRegistRequestDTO.getProjectId()); if(project.isPresent()) { Project foundProject = project.get(); if(foundProject.getProjectVector().keySet().containsAll(List.of("x","y","z"))) { foundProject.setProjectVector(projectVectorRegistRequestDTO.getProjectVector()); - return foundProject; + return new ProjectSingleResponseDTO(foundProject); } else throw new IllegalArgumentException("잘못된 vector key를 넣고 있음 | vector = " + projectVectorRegistRequestDTO.getProjectVector()); diff --git a/src/main/java/com/mtvs/devlinkbackend/question/controller/QuestionController.java b/src/main/java/com/mtvs/devlinkbackend/question/controller/QuestionController.java index c331915..6ee6377 100644 --- a/src/main/java/com/mtvs/devlinkbackend/question/controller/QuestionController.java +++ b/src/main/java/com/mtvs/devlinkbackend/question/controller/QuestionController.java @@ -1,8 +1,9 @@ package com.mtvs.devlinkbackend.question.controller; +import com.mtvs.devlinkbackend.question.dto.response.QuestionPagingResponseDTO; import com.mtvs.devlinkbackend.util.JwtUtil; -import com.mtvs.devlinkbackend.question.dto.QuestionRegistRequestDTO; -import com.mtvs.devlinkbackend.question.dto.QuestionUpdateRequestDTO; +import com.mtvs.devlinkbackend.question.dto.request.QuestionRegistRequestDTO; +import com.mtvs.devlinkbackend.question.dto.request.QuestionUpdateRequestDTO; import com.mtvs.devlinkbackend.question.entity.Question; import com.mtvs.devlinkbackend.question.service.QuestionService; import io.swagger.v3.oas.annotations.Operation; @@ -12,8 +13,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.util.List; - @RestController @RequestMapping("/question") public class QuestionController { @@ -78,9 +77,9 @@ public ResponseEntity getQuestionById(@PathVariable Long questionId) { @ApiResponse(responseCode = "400", description = "잘못된 헤더 또는 파라미터 전달"), @ApiResponse(responseCode = "401", description = "인증되지 않음") }) - public ResponseEntity> getAllQuestionsWithPaging(@RequestParam int page) { - List questions = questionService.findAllQuestionsWithPaging(page); - return ResponseEntity.ok(questions); + public ResponseEntity getAllQuestionsWithPaging(@RequestParam int page) { + QuestionPagingResponseDTO questionPagingResponseDTO = questionService.findAllQuestionsWithPaging(page); + return ResponseEntity.ok(questionPagingResponseDTO); } // Retrieve questions by account ID with pagination @@ -94,13 +93,13 @@ public ResponseEntity> getAllQuestionsWithPaging(@RequestParam in @ApiResponse(responseCode = "401", description = "인증되지 않음") }) @GetMapping("/account") - public ResponseEntity> getQuestionsByAccountIdWithPaging( + public ResponseEntity getQuestionsByAccountIdWithPaging( @RequestParam int page, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - List questions = questionService.findQuestionsByAccountIdWithPaging(page, accountId); - return ResponseEntity.ok(questions); + QuestionPagingResponseDTO questionPagingResponseDTO = questionService.findQuestionsByAccountIdWithPaging(page, accountId); + return ResponseEntity.ok(questionPagingResponseDTO); } // Update a question by ID diff --git a/src/main/java/com/mtvs/devlinkbackend/question/dto/QuestionRegistRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/question/dto/request/QuestionRegistRequestDTO.java similarity index 76% rename from src/main/java/com/mtvs/devlinkbackend/question/dto/QuestionRegistRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/question/dto/request/QuestionRegistRequestDTO.java index a99b900..1045b79 100644 --- a/src/main/java/com/mtvs/devlinkbackend/question/dto/QuestionRegistRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/question/dto/request/QuestionRegistRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.question.dto; +package com.mtvs.devlinkbackend.question.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/question/dto/QuestionUpdateRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/question/dto/request/QuestionUpdateRequestDTO.java similarity index 79% rename from src/main/java/com/mtvs/devlinkbackend/question/dto/QuestionUpdateRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/question/dto/request/QuestionUpdateRequestDTO.java index 2925049..bd3cb9e 100644 --- a/src/main/java/com/mtvs/devlinkbackend/question/dto/QuestionUpdateRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/question/dto/request/QuestionUpdateRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.question.dto; +package com.mtvs.devlinkbackend.question.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/question/dto/response/QuestionPagingResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/question/dto/response/QuestionPagingResponseDTO.java new file mode 100644 index 0000000..92f613c --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/question/dto/response/QuestionPagingResponseDTO.java @@ -0,0 +1,16 @@ +package com.mtvs.devlinkbackend.question.dto.response; + +import com.mtvs.devlinkbackend.question.entity.Question; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class QuestionPagingResponseDTO { + private List data; + private Integer totalPages; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/question/service/QuestionService.java b/src/main/java/com/mtvs/devlinkbackend/question/service/QuestionService.java index e2d5d05..8b07fc6 100644 --- a/src/main/java/com/mtvs/devlinkbackend/question/service/QuestionService.java +++ b/src/main/java/com/mtvs/devlinkbackend/question/service/QuestionService.java @@ -1,7 +1,8 @@ package com.mtvs.devlinkbackend.question.service; -import com.mtvs.devlinkbackend.question.dto.QuestionRegistRequestDTO; -import com.mtvs.devlinkbackend.question.dto.QuestionUpdateRequestDTO; +import com.mtvs.devlinkbackend.question.dto.response.QuestionPagingResponseDTO; +import com.mtvs.devlinkbackend.question.dto.request.QuestionRegistRequestDTO; +import com.mtvs.devlinkbackend.question.dto.request.QuestionUpdateRequestDTO; import com.mtvs.devlinkbackend.question.entity.Question; import com.mtvs.devlinkbackend.question.repository.QuestionRepository; import org.springframework.data.domain.Page; @@ -19,7 +20,7 @@ public class QuestionService { private final QuestionRepository questionRepository; - private static int pageSize = 20; + private static final int pageSize = 15; public QuestionService(QuestionRepository questionRepository) { this.questionRepository = questionRepository; @@ -41,17 +42,17 @@ public Question findQuestionByQuestionId(long questionId) { } // findAll with pagination - public List findAllQuestionsWithPaging(int page) { + public QuestionPagingResponseDTO findAllQuestionsWithPaging(int page) { Pageable pageable = PageRequest.of(page, pageSize, Sort.by("createdAt").descending()); Page questionPage = questionRepository.findAll(pageable); - return questionPage.getContent(); // Returns the list of questions + return new QuestionPagingResponseDTO(questionPage.getContent(), questionPage.getTotalPages()); // Returns the list of questions } // findQuestionsByAccountId with pagination - public List findQuestionsByAccountIdWithPaging(int page, String accountId) { + public QuestionPagingResponseDTO findQuestionsByAccountIdWithPaging(int page, String accountId) { Pageable pageable = PageRequest.of(page, pageSize, Sort.by("createdAt").descending()); Page questionPage = questionRepository.findQuestionsByAccountId(accountId, pageable); - return questionPage.getContent(); // Returns the list of questions for the given accountId + return new QuestionPagingResponseDTO(questionPage.getContent(), questionPage.getTotalPages()); // Returns the list of questions for the given accountId } public List findAllQuestions() { diff --git a/src/main/java/com/mtvs/devlinkbackend/reply/controller/ReplyController.java b/src/main/java/com/mtvs/devlinkbackend/reply/controller/ReplyController.java index e5f67b1..a7c22a8 100644 --- a/src/main/java/com/mtvs/devlinkbackend/reply/controller/ReplyController.java +++ b/src/main/java/com/mtvs/devlinkbackend/reply/controller/ReplyController.java @@ -1,9 +1,10 @@ package com.mtvs.devlinkbackend.reply.controller; +import com.mtvs.devlinkbackend.reply.dto.response.ReplyListResponseDTO; +import com.mtvs.devlinkbackend.reply.dto.response.ReplySingleResponseDTO; import com.mtvs.devlinkbackend.util.JwtUtil; -import com.mtvs.devlinkbackend.reply.dto.ReplyRegistRequestDTO; -import com.mtvs.devlinkbackend.reply.dto.ReplyUpdateRequestDTO; -import com.mtvs.devlinkbackend.reply.entity.Reply; +import com.mtvs.devlinkbackend.reply.dto.request.ReplyRegistRequestDTO; +import com.mtvs.devlinkbackend.reply.dto.request.ReplyUpdateRequestDTO; import com.mtvs.devlinkbackend.reply.service.ReplyService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -11,8 +12,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.util.List; - @RestController @RequestMapping("/api/reply") public class ReplyController { @@ -32,12 +31,12 @@ public ReplyController(ReplyService replyService, JwtUtil jwtUtil) { @ApiResponse(responseCode = "401", description = "인증되지 않음") }) @PostMapping - public ResponseEntity registReply( + public ResponseEntity registReply( @RequestBody ReplyRegistRequestDTO replyRegistRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithAuth(authorizationHeader); - Reply reply = replyService.registReply(replyRegistRequestDTO, accountId); + ReplySingleResponseDTO reply = replyService.registReply(replyRegistRequestDTO, accountId); return ResponseEntity.ok(reply); } @@ -48,8 +47,8 @@ public ResponseEntity registReply( @ApiResponse(responseCode = "404", description = "댓글을 찾을 수 없음") }) @GetMapping("/{replyId}") - public ResponseEntity findReplyByReplyId(@PathVariable Long replyId) { - Reply reply = replyService.findReplyByReplyId(replyId); + public ResponseEntity findReplyByReplyId(@PathVariable Long replyId) { + ReplySingleResponseDTO reply = replyService.findReplyByReplyId(replyId); return reply != null ? ResponseEntity.ok(reply) : ResponseEntity.notFound().build(); } @@ -60,8 +59,8 @@ public ResponseEntity findReplyByReplyId(@PathVariable Long replyId) { @ApiResponse(responseCode = "404", description = "댓글을 찾을 수 없음") }) @GetMapping("/question/{questionId}") - public ResponseEntity> findRepliesByQuestionId(@PathVariable Long questionId) { - List replies = replyService.findRepliesByQuestionId(questionId); + public ResponseEntity findRepliesByQuestionId(@PathVariable Long questionId) { + ReplyListResponseDTO replies = replyService.findRepliesByQuestionId(questionId); return ResponseEntity.ok(replies); } @@ -72,11 +71,11 @@ public ResponseEntity> findRepliesByQuestionId(@PathVariable Long qu @ApiResponse(responseCode = "404", description = "댓글을 찾을 수 없음") }) @GetMapping("/account") - public ResponseEntity> findRepliesByAccountId( + public ResponseEntity findRepliesByAccountId( @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - List replies = replyService.findRepliesByAccountId(accountId); + ReplyListResponseDTO replies = replyService.findRepliesByAccountId(accountId); return ResponseEntity.ok(replies); } @@ -87,13 +86,13 @@ public ResponseEntity> findRepliesByAccountId( @ApiResponse(responseCode = "401", description = "인증되지 않음") }) @PatchMapping - public ResponseEntity updateReply( + public ResponseEntity updateReply( @RequestBody ReplyUpdateRequestDTO replyUpdateRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); try { - Reply updatedReply = replyService.updateReply(replyUpdateRequestDTO, accountId); + ReplySingleResponseDTO updatedReply = replyService.updateReply(replyUpdateRequestDTO, accountId); return ResponseEntity.ok(updatedReply); } catch (IllegalArgumentException e) { return ResponseEntity.badRequest().body(null); diff --git a/src/main/java/com/mtvs/devlinkbackend/reply/dto/ReplyRegistRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/reply/dto/request/ReplyRegistRequestDTO.java similarity index 77% rename from src/main/java/com/mtvs/devlinkbackend/reply/dto/ReplyRegistRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/reply/dto/request/ReplyRegistRequestDTO.java index d1b1bd1..6581743 100644 --- a/src/main/java/com/mtvs/devlinkbackend/reply/dto/ReplyRegistRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/reply/dto/request/ReplyRegistRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.reply.dto; +package com.mtvs.devlinkbackend.reply.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/reply/dto/ReplyUpdateRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/reply/dto/request/ReplyUpdateRequestDTO.java similarity index 77% rename from src/main/java/com/mtvs/devlinkbackend/reply/dto/ReplyUpdateRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/reply/dto/request/ReplyUpdateRequestDTO.java index 9776523..1898809 100644 --- a/src/main/java/com/mtvs/devlinkbackend/reply/dto/ReplyUpdateRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/reply/dto/request/ReplyUpdateRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.reply.dto; +package com.mtvs.devlinkbackend.reply.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/reply/dto/response/ReplyListResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/reply/dto/response/ReplyListResponseDTO.java new file mode 100644 index 0000000..2f9059f --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/reply/dto/response/ReplyListResponseDTO.java @@ -0,0 +1,15 @@ +package com.mtvs.devlinkbackend.reply.dto.response; + +import com.mtvs.devlinkbackend.reply.entity.Reply; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class ReplyListResponseDTO { + private List data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/reply/dto/response/ReplySingleResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/reply/dto/response/ReplySingleResponseDTO.java new file mode 100644 index 0000000..c0af04e --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/reply/dto/response/ReplySingleResponseDTO.java @@ -0,0 +1,13 @@ +package com.mtvs.devlinkbackend.reply.dto.response; + +import com.mtvs.devlinkbackend.reply.entity.Reply; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class ReplySingleResponseDTO { + private Reply data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/reply/service/ReplyService.java b/src/main/java/com/mtvs/devlinkbackend/reply/service/ReplyService.java index 5fd2cb3..18b04f0 100644 --- a/src/main/java/com/mtvs/devlinkbackend/reply/service/ReplyService.java +++ b/src/main/java/com/mtvs/devlinkbackend/reply/service/ReplyService.java @@ -1,15 +1,16 @@ package com.mtvs.devlinkbackend.reply.service; import com.mtvs.devlinkbackend.question.repository.QuestionRepository; -import com.mtvs.devlinkbackend.reply.dto.ReplyRegistRequestDTO; -import com.mtvs.devlinkbackend.reply.dto.ReplyUpdateRequestDTO; +import com.mtvs.devlinkbackend.reply.dto.response.ReplyListResponseDTO; +import com.mtvs.devlinkbackend.reply.dto.request.ReplyRegistRequestDTO; +import com.mtvs.devlinkbackend.reply.dto.response.ReplySingleResponseDTO; +import com.mtvs.devlinkbackend.reply.dto.request.ReplyUpdateRequestDTO; import com.mtvs.devlinkbackend.reply.entity.Reply; import com.mtvs.devlinkbackend.reply.repository.ReplyRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; -import java.util.List; import java.util.Optional; @Service @@ -23,35 +24,35 @@ public ReplyService(ReplyRepository replyRepository, QuestionRepository question } @Transactional - public Reply registReply(ReplyRegistRequestDTO replyRegistRequestDTO, String accountId) { - return replyRepository.save( + public ReplySingleResponseDTO registReply(ReplyRegistRequestDTO replyRegistRequestDTO, String accountId) { + return new ReplySingleResponseDTO(replyRepository.save( new Reply( replyRegistRequestDTO.getContent(), accountId, questionRepository.getReferenceById(replyRegistRequestDTO.getQuestionId()) - )); + ))); } - public Reply findReplyByReplyId(Long replyId) { - return replyRepository.findById(replyId).orElse(null); + public ReplySingleResponseDTO findReplyByReplyId(Long replyId) { + return new ReplySingleResponseDTO(replyRepository.findById(replyId).orElse(null)); } - public List findRepliesByQuestionId(Long questionId) { - return replyRepository.findRepliesByQuestion_QuestionId(questionId); + public ReplyListResponseDTO findRepliesByQuestionId(Long questionId) { + return new ReplyListResponseDTO(replyRepository.findRepliesByQuestion_QuestionId(questionId)); } - public List findRepliesByAccountId(String accountId) { - return replyRepository.findRepliesByAccountId(accountId); + public ReplyListResponseDTO findRepliesByAccountId(String accountId) { + return new ReplyListResponseDTO(replyRepository.findRepliesByAccountId(accountId)); } @Transactional - public Reply updateReply(ReplyUpdateRequestDTO replyUpdateRequestDTO, String accountId) { + public ReplySingleResponseDTO updateReply(ReplyUpdateRequestDTO replyUpdateRequestDTO, String accountId) { Optional reply = replyRepository.findById(replyUpdateRequestDTO.getReplyId()); if (reply.isPresent()) { Reply foundReply = reply.get(); if (foundReply.getAccountId().equals(accountId)) { foundReply.setContent(replyUpdateRequestDTO.getContent()); - return foundReply; + return new ReplySingleResponseDTO(foundReply); } else throw new IllegalArgumentException("Reply Update Error : 다른 사용자가 남의 질문 내용 변경 시도"); } else throw new IllegalArgumentException( "Reply not found while updating reply id : " + replyUpdateRequestDTO.getReplyId()); diff --git a/src/main/java/com/mtvs/devlinkbackend/support/controller/SupportController.java b/src/main/java/com/mtvs/devlinkbackend/support/controller/SupportController.java index defbe9e..77c050b 100644 --- a/src/main/java/com/mtvs/devlinkbackend/support/controller/SupportController.java +++ b/src/main/java/com/mtvs/devlinkbackend/support/controller/SupportController.java @@ -1,7 +1,8 @@ package com.mtvs.devlinkbackend.support.controller; -import com.mtvs.devlinkbackend.support.dto.SupportRegistRequestDTO; -import com.mtvs.devlinkbackend.support.entity.Support; +import com.mtvs.devlinkbackend.support.dto.response.SupportListResponseDTO; +import com.mtvs.devlinkbackend.support.dto.request.SupportRegistRequestDTO; +import com.mtvs.devlinkbackend.support.dto.response.SupportSingleResponseDTO; import com.mtvs.devlinkbackend.support.service.SupportService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -10,8 +11,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.util.List; - @RestController @RequestMapping("/api/support") public class SupportController { @@ -32,8 +31,8 @@ public SupportController(SupportService supportService) { @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터") }) @PostMapping - public ResponseEntity createSupport(@RequestBody SupportRegistRequestDTO supportRegistRequestDTO) { - Support createdSupport = supportService.createSupport(supportRegistRequestDTO); + public ResponseEntity createSupport(@RequestBody SupportRegistRequestDTO supportRegistRequestDTO) { + SupportSingleResponseDTO createdSupport = supportService.createSupport(supportRegistRequestDTO); return new ResponseEntity<>(createdSupport, HttpStatus.CREATED); } @@ -48,8 +47,8 @@ public ResponseEntity createSupport(@RequestBody SupportRegistRequestDT @ApiResponse(responseCode = "404", description = "해당 프로젝트를 찾을 수 없음") }) @GetMapping("/project/{projectId}") - public ResponseEntity> getSupportsByProjectId(@PathVariable Long projectId) { - List supports = supportService.findSupportsByProjectId(projectId); + public ResponseEntity getSupportsByProjectId(@PathVariable Long projectId) { + SupportListResponseDTO supports = supportService.findSupportsByProjectId(projectId); return new ResponseEntity<>(supports, HttpStatus.OK); } @@ -64,8 +63,8 @@ public ResponseEntity> getSupportsByProjectId(@PathVariable Long p @ApiResponse(responseCode = "404", description = "해당 팀을 찾을 수 없음") }) @GetMapping("/team/{teamId}") - public ResponseEntity> getSupportsByTeamId(@PathVariable Long teamId) { - List supports = supportService.findSupportsByTeamId(teamId); + public ResponseEntity getSupportsByTeamId(@PathVariable Long teamId) { + SupportListResponseDTO supports = supportService.findSupportsByTeamId(teamId); return new ResponseEntity<>(supports, HttpStatus.OK); } diff --git a/src/main/java/com/mtvs/devlinkbackend/support/dto/SupportRegistRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/support/dto/request/SupportRegistRequestDTO.java similarity index 77% rename from src/main/java/com/mtvs/devlinkbackend/support/dto/SupportRegistRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/support/dto/request/SupportRegistRequestDTO.java index 64bf592..33e1d7f 100644 --- a/src/main/java/com/mtvs/devlinkbackend/support/dto/SupportRegistRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/support/dto/request/SupportRegistRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.support.dto; +package com.mtvs.devlinkbackend.support.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/support/dto/response/SupportListResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/support/dto/response/SupportListResponseDTO.java new file mode 100644 index 0000000..ecb2f2e --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/support/dto/response/SupportListResponseDTO.java @@ -0,0 +1,15 @@ +package com.mtvs.devlinkbackend.support.dto.response; + +import com.mtvs.devlinkbackend.support.entity.Support; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class SupportListResponseDTO { + private List data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/support/dto/response/SupportSingleResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/support/dto/response/SupportSingleResponseDTO.java new file mode 100644 index 0000000..00d8f64 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/support/dto/response/SupportSingleResponseDTO.java @@ -0,0 +1,13 @@ +package com.mtvs.devlinkbackend.support.dto.response; + +import com.mtvs.devlinkbackend.support.entity.Support; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class SupportSingleResponseDTO { + private Support data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/support/service/SupportService.java b/src/main/java/com/mtvs/devlinkbackend/support/service/SupportService.java index d319f18..040a0d3 100644 --- a/src/main/java/com/mtvs/devlinkbackend/support/service/SupportService.java +++ b/src/main/java/com/mtvs/devlinkbackend/support/service/SupportService.java @@ -1,13 +1,13 @@ package com.mtvs.devlinkbackend.support.service; -import com.mtvs.devlinkbackend.support.dto.SupportRegistRequestDTO; +import com.mtvs.devlinkbackend.support.dto.response.SupportListResponseDTO; +import com.mtvs.devlinkbackend.support.dto.request.SupportRegistRequestDTO; +import com.mtvs.devlinkbackend.support.dto.response.SupportSingleResponseDTO; import com.mtvs.devlinkbackend.support.entity.Support; import com.mtvs.devlinkbackend.support.repository.SupportRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; - @Service public class SupportService { private final SupportRepository supportRepository; @@ -17,20 +17,20 @@ public SupportService(SupportRepository supportRepository) { } @Transactional - public Support createSupport(SupportRegistRequestDTO supportRegistRequestDTO) { - return supportRepository.save(new Support( + public SupportSingleResponseDTO createSupport(SupportRegistRequestDTO supportRegistRequestDTO) { + return new SupportSingleResponseDTO(supportRepository.save(new Support( supportRegistRequestDTO.getProjectId(), supportRegistRequestDTO.getTeamId(), "waiting" - )); + ))); } - public List findSupportsByProjectId(Long projectId) { - return supportRepository.findSupportsByProjectId(projectId); + public SupportListResponseDTO findSupportsByProjectId(Long projectId) { + return new SupportListResponseDTO(supportRepository.findSupportsByProjectId(projectId)); } - public List findSupportsByTeamId(Long teamId) { - return supportRepository.findSupportsByTeamId(teamId); + public SupportListResponseDTO findSupportsByTeamId(Long teamId) { + return new SupportListResponseDTO(supportRepository.findSupportsByTeamId(teamId)); } public void deleteSupport(Long supportId) { diff --git a/src/main/java/com/mtvs/devlinkbackend/team/controller/TeamController.java b/src/main/java/com/mtvs/devlinkbackend/team/controller/TeamController.java index 2a92939..5d6d5c1 100644 --- a/src/main/java/com/mtvs/devlinkbackend/team/controller/TeamController.java +++ b/src/main/java/com/mtvs/devlinkbackend/team/controller/TeamController.java @@ -1,10 +1,11 @@ package com.mtvs.devlinkbackend.team.controller; +import com.mtvs.devlinkbackend.team.dto.request.TeamMemberModifyRequestDTO; +import com.mtvs.devlinkbackend.team.dto.request.TeamRegistRequestDTO; +import com.mtvs.devlinkbackend.team.dto.request.TeamUpdateRequestDTO; +import com.mtvs.devlinkbackend.team.dto.response.TeamListResponseDTO; +import com.mtvs.devlinkbackend.team.dto.response.TeamSingleReponseDTO; import com.mtvs.devlinkbackend.util.JwtUtil; -import com.mtvs.devlinkbackend.team.dto.TeamMemberModifyRequestDTO; -import com.mtvs.devlinkbackend.team.dto.TeamRegistRequestDTO; -import com.mtvs.devlinkbackend.team.dto.TeamUpdateRequestDTO; -import com.mtvs.devlinkbackend.team.entity.Team; import com.mtvs.devlinkbackend.team.service.TeamService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -13,8 +14,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.util.List; - @RestController @RequestMapping("/api/team") public class TeamController { @@ -33,8 +32,10 @@ public TeamController(TeamService teamService, JwtUtil jwtUtil) { @ApiResponse(responseCode = "400", description = "잘못된 입력 데이터입니다.") }) @PostMapping - public ResponseEntity registTeam(@RequestBody TeamRegistRequestDTO teamRegistRequestDTO, @RequestParam String accountId) { - Team team = teamService.registTeam(teamRegistRequestDTO, accountId); + public ResponseEntity registTeam( + @RequestBody TeamRegistRequestDTO teamRegistRequestDTO, @RequestParam String accountId) { + + TeamSingleReponseDTO team = teamService.registTeam(teamRegistRequestDTO, accountId); return new ResponseEntity<>(team, HttpStatus.CREATED); } @@ -44,10 +45,10 @@ public ResponseEntity registTeam(@RequestBody TeamRegistRequestDTO teamReg @ApiResponse(responseCode = "404", description = "팀을 찾을 수 없습니다.") }) @GetMapping("/{teamId}") - public ResponseEntity getTeamById( + public ResponseEntity getTeamById( @PathVariable Long teamId) { - Team team = teamService.findTeamByTeamId(teamId); + TeamSingleReponseDTO team = teamService.findTeamByTeamId(teamId); if (team != null) { return ResponseEntity.ok(team); } else { @@ -61,11 +62,11 @@ public ResponseEntity getTeamById( @ApiResponse(responseCode = "404", description = "주어진 프로젝트 매니저 ID에 대한 팀이 없습니다.") }) @GetMapping("/manager") - public ResponseEntity> getTeamsByPmId( + public ResponseEntity getTeamsByPmId( @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String pmId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - List teams = teamService.findTeamsByPmId(pmId); + TeamListResponseDTO teams = teamService.findTeamsByPmId(pmId); return ResponseEntity.ok(teams); } @@ -74,10 +75,10 @@ public ResponseEntity> getTeamsByPmId( @ApiResponse(responseCode = "200", description = "팀이 성공적으로 조회되었습니다.") }) @GetMapping("/search") - public ResponseEntity> getTeamsByTeamNameContaining( + public ResponseEntity getTeamsByTeamNameContaining( @RequestParam String teamName) { - List teams = teamService.findTeamsByTeamNameContaining(teamName); + TeamListResponseDTO teams = teamService.findTeamsByTeamNameContaining(teamName); return ResponseEntity.ok(teams); } @@ -86,11 +87,11 @@ public ResponseEntity> getTeamsByTeamNameContaining( @ApiResponse(responseCode = "200", description = "팀이 성공적으로 조회되었습니다.") }) @GetMapping("/members/search") - public ResponseEntity> getTeamsByMemberIdContaining( + public ResponseEntity getTeamsByMemberIdContaining( @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { String memberId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader); - List teams = teamService.findTeamsByMemberIdContaining(memberId); + TeamListResponseDTO teams = teamService.findTeamsByMemberIdContaining(memberId); return ResponseEntity.ok(teams); } @@ -101,12 +102,12 @@ public ResponseEntity> getTeamsByMemberIdContaining( @ApiResponse(responseCode = "404", description = "팀을 찾을 수 없습니다.") }) @PatchMapping - public ResponseEntity updateTeam( + public ResponseEntity updateTeam( @RequestBody TeamUpdateRequestDTO teamUpdateRequestDTO, @RequestParam String accountId) { try { - Team updatedTeam = teamService.updateTeam(teamUpdateRequestDTO, accountId); + TeamSingleReponseDTO updatedTeam = teamService.updateTeam(teamUpdateRequestDTO, accountId); return ResponseEntity.ok(updatedTeam); } catch (IllegalArgumentException e) { return ResponseEntity.status(HttpStatus.BAD_REQUEST).build(); @@ -120,7 +121,7 @@ public ResponseEntity updateTeam( @ApiResponse(responseCode = "404", description = "길드를 찾을 수 없습니다.") }) @PostMapping("/member") - public Team addMemberToTeam( + public TeamSingleReponseDTO addMemberToTeam( @RequestBody TeamMemberModifyRequestDTO teamMemberModifyRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { @@ -135,7 +136,7 @@ public Team addMemberToTeam( @ApiResponse(responseCode = "404", description = "길드를 찾을 수 없습니다.") }) @DeleteMapping("/member") - public Team removeMemberFromTeam( + public TeamSingleReponseDTO removeMemberFromTeam( @RequestBody TeamMemberModifyRequestDTO teamMemberModifyRequestDTO, @RequestHeader(name = "Authorization") String authorizationHeader) throws Exception { diff --git a/src/main/java/com/mtvs/devlinkbackend/team/dto/TeamMemberModifyRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/team/dto/request/TeamMemberModifyRequestDTO.java similarity index 81% rename from src/main/java/com/mtvs/devlinkbackend/team/dto/TeamMemberModifyRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/team/dto/request/TeamMemberModifyRequestDTO.java index 0fd420d..e795ba9 100644 --- a/src/main/java/com/mtvs/devlinkbackend/team/dto/TeamMemberModifyRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/team/dto/request/TeamMemberModifyRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.team.dto; +package com.mtvs.devlinkbackend.team.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/team/dto/TeamRegistRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/team/dto/request/TeamRegistRequestDTO.java similarity index 83% rename from src/main/java/com/mtvs/devlinkbackend/team/dto/TeamRegistRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/team/dto/request/TeamRegistRequestDTO.java index c2fd161..2642334 100644 --- a/src/main/java/com/mtvs/devlinkbackend/team/dto/TeamRegistRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/team/dto/request/TeamRegistRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.team.dto; +package com.mtvs.devlinkbackend.team.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/team/dto/TeamUpdateRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/team/dto/request/TeamUpdateRequestDTO.java similarity index 84% rename from src/main/java/com/mtvs/devlinkbackend/team/dto/TeamUpdateRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/team/dto/request/TeamUpdateRequestDTO.java index 73162cb..f3edfb0 100644 --- a/src/main/java/com/mtvs/devlinkbackend/team/dto/TeamUpdateRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/team/dto/request/TeamUpdateRequestDTO.java @@ -1,4 +1,4 @@ -package com.mtvs.devlinkbackend.team.dto; +package com.mtvs.devlinkbackend.team.dto.request; import lombok.*; diff --git a/src/main/java/com/mtvs/devlinkbackend/team/dto/response/TeamListResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/team/dto/response/TeamListResponseDTO.java new file mode 100644 index 0000000..b3ea00e --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/team/dto/response/TeamListResponseDTO.java @@ -0,0 +1,15 @@ +package com.mtvs.devlinkbackend.team.dto.response; + +import com.mtvs.devlinkbackend.team.entity.Team; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class TeamListResponseDTO { + private List data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/team/dto/response/TeamSingleReponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/team/dto/response/TeamSingleReponseDTO.java new file mode 100644 index 0000000..77bb287 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/team/dto/response/TeamSingleReponseDTO.java @@ -0,0 +1,13 @@ +package com.mtvs.devlinkbackend.team.dto.response; + +import com.mtvs.devlinkbackend.team.entity.Team; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class TeamSingleReponseDTO { + private Team data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/team/service/TeamService.java b/src/main/java/com/mtvs/devlinkbackend/team/service/TeamService.java index 8a93aba..57eb133 100644 --- a/src/main/java/com/mtvs/devlinkbackend/team/service/TeamService.java +++ b/src/main/java/com/mtvs/devlinkbackend/team/service/TeamService.java @@ -1,15 +1,15 @@ package com.mtvs.devlinkbackend.team.service; -import com.mtvs.devlinkbackend.guild.entity.Guild; -import com.mtvs.devlinkbackend.team.dto.TeamMemberModifyRequestDTO; -import com.mtvs.devlinkbackend.team.dto.TeamRegistRequestDTO; -import com.mtvs.devlinkbackend.team.dto.TeamUpdateRequestDTO; +import com.mtvs.devlinkbackend.team.dto.request.TeamMemberModifyRequestDTO; +import com.mtvs.devlinkbackend.team.dto.request.TeamRegistRequestDTO; +import com.mtvs.devlinkbackend.team.dto.request.TeamUpdateRequestDTO; +import com.mtvs.devlinkbackend.team.dto.response.TeamListResponseDTO; +import com.mtvs.devlinkbackend.team.dto.response.TeamSingleReponseDTO; import com.mtvs.devlinkbackend.team.entity.Team; import com.mtvs.devlinkbackend.team.repository.TeamRepository; import jakarta.transaction.Transactional; import org.springframework.stereotype.Service; -import java.util.List; import java.util.Optional; @Service @@ -21,33 +21,33 @@ public TeamService(TeamRepository teamRepository) { } @Transactional - public Team registTeam(TeamRegistRequestDTO teamRegistRequestDTO, String accountId) { - return teamRepository.save(new Team( + public TeamSingleReponseDTO registTeam(TeamRegistRequestDTO teamRegistRequestDTO, String accountId) { + return new TeamSingleReponseDTO(teamRepository.save(new Team( accountId, teamRegistRequestDTO.getTeamName(), teamRegistRequestDTO.getIntroduction(), teamRegistRequestDTO.getMemberList() - )); + ))); } - public Team findTeamByTeamId(Long teamId) { - return teamRepository.findById(teamId).orElse(null); + public TeamSingleReponseDTO findTeamByTeamId(Long teamId) { + return new TeamSingleReponseDTO(teamRepository.findById(teamId).orElse(null)); } - public List findTeamsByPmId(String pmId) { - return teamRepository.findTeamByPmId(pmId); + public TeamListResponseDTO findTeamsByPmId(String pmId) { + return new TeamListResponseDTO(teamRepository.findTeamByPmId(pmId)); } - public List findTeamsByTeamNameContaining(String teamName) { - return teamRepository.findTeamsByTeamNameContaining(teamName); + public TeamListResponseDTO findTeamsByTeamNameContaining(String teamName) { + return new TeamListResponseDTO(teamRepository.findTeamsByTeamNameContaining(teamName)); } - public List findTeamsByMemberIdContaining(String memberId) { - return teamRepository.findTeamsByMemberIdContaining(memberId); + public TeamListResponseDTO findTeamsByMemberIdContaining(String memberId) { + return new TeamListResponseDTO(teamRepository.findTeamsByMemberIdContaining(memberId)); } @Transactional - public Team updateTeam(TeamUpdateRequestDTO teamUpdateRequestDTO, String accountId) { + public TeamSingleReponseDTO updateTeam(TeamUpdateRequestDTO teamUpdateRequestDTO, String accountId) { Optional team = teamRepository.findById(teamUpdateRequestDTO.getTeamId()); if (team.isPresent()) { Team foundTeam = team.get(); @@ -55,31 +55,31 @@ public Team updateTeam(TeamUpdateRequestDTO teamUpdateRequestDTO, String account foundTeam.setTeamName(teamUpdateRequestDTO.getTeamName()); foundTeam.setIntroduction(teamUpdateRequestDTO.getIntroduction()); foundTeam.setMemberList(teamUpdateRequestDTO.getMemberList()); - return foundTeam; + return new TeamSingleReponseDTO(foundTeam); } else throw new IllegalArgumentException("pm이 아닌 계정으로 team 수정 시도"); } else throw new IllegalArgumentException("해당 Team은 존재하지 않음"); } @Transactional - public Team addMemberToTeam(TeamMemberModifyRequestDTO teamMemberModifyRequestDTO, String accountId) { + public TeamSingleReponseDTO addMemberToTeam(TeamMemberModifyRequestDTO teamMemberModifyRequestDTO, String accountId) { Optional team = teamRepository.findById(teamMemberModifyRequestDTO.getTeamId()); if (team.isPresent()) { Team foundTeam = team.get(); if(foundTeam.getPmId().equals(accountId)) { foundTeam.getMemberList().addAll(teamMemberModifyRequestDTO.getNewMemberList()); - return foundTeam; + return new TeamSingleReponseDTO(foundTeam); } else throw new IllegalArgumentException("owner가 아닌 계정으로 Guild 수정 시도"); } else return null; } @Transactional - public Team removeMemberToTeam(TeamMemberModifyRequestDTO teamMemberModifyRequestDTO, String accountId) { + public TeamSingleReponseDTO removeMemberToTeam(TeamMemberModifyRequestDTO teamMemberModifyRequestDTO, String accountId) { Optional team = teamRepository.findById(teamMemberModifyRequestDTO.getTeamId()); if (team.isPresent()) { Team foundTeam = team.get(); if(foundTeam.getPmId().equals(accountId)) { foundTeam.getMemberList().removeAll(teamMemberModifyRequestDTO.getNewMemberList()); - return foundTeam; + return new TeamSingleReponseDTO(foundTeam); } else throw new IllegalArgumentException("owner가 아닌 계정으로 Guild 수정 시도"); } else return null; } diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/ChannelCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/ChannelCRUDTest.java index cdc8514..9bb75d6 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/ChannelCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/ChannelCRUDTest.java @@ -1,7 +1,7 @@ package com.mtvs.devlinkbackend.crud; -import com.mtvs.devlinkbackend.channel.dto.ChannelRegistRequestDTO; -import com.mtvs.devlinkbackend.channel.dto.ChannelUpdateRequestDTO; +import com.mtvs.devlinkbackend.channel.dto.request.ChannelRegistRequestDTO; +import com.mtvs.devlinkbackend.channel.dto.request.ChannelUpdateRequestDTO; import com.mtvs.devlinkbackend.channel.entity.PositionType; import com.mtvs.devlinkbackend.channel.service.ChannelService; import org.junit.jupiter.api.Assertions; diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/CommentCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/CommentCRUDTest.java index b975f19..396f738 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/CommentCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/CommentCRUDTest.java @@ -1,7 +1,7 @@ package com.mtvs.devlinkbackend.crud; -import com.mtvs.devlinkbackend.comment.dto.CommentRegistRequestDTO; -import com.mtvs.devlinkbackend.comment.dto.CommentUpdateRequestDTO; +import com.mtvs.devlinkbackend.comment.dto.request.CommentRegistRequestDTO; +import com.mtvs.devlinkbackend.comment.dto.request.CommentUpdateRequestDTO; import com.mtvs.devlinkbackend.comment.service.CommentService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/EtherCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/EtherCRUDTest.java index 071e709..1e73ea4 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/EtherCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/EtherCRUDTest.java @@ -1,7 +1,7 @@ package com.mtvs.devlinkbackend.crud; -import com.mtvs.devlinkbackend.ether.dto.EtherRegistRequestDTO; -import com.mtvs.devlinkbackend.ether.dto.EtherUpdateRequestDTO; +import com.mtvs.devlinkbackend.ether.dto.request.EtherRegistRequestDTO; +import com.mtvs.devlinkbackend.ether.dto.request.EtherUpdateRequestDTO; import com.mtvs.devlinkbackend.ether.service.EtherService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/GuildCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/GuildCRUDTest.java index c525192..af89a26 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/GuildCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/GuildCRUDTest.java @@ -1,9 +1,10 @@ package com.mtvs.devlinkbackend.crud; -import com.mtvs.devlinkbackend.guild.dto.GuildMemberModifyRequestDTO; -import com.mtvs.devlinkbackend.guild.dto.GuildRegistRequestDTO; -import com.mtvs.devlinkbackend.guild.dto.GuildUpdateRequestDTO; -import com.mtvs.devlinkbackend.guild.entity.Guild; +import com.mtvs.devlinkbackend.guild.dto.request.GuildMemberModifyRequestDTO; +import com.mtvs.devlinkbackend.guild.dto.request.GuildRegistRequestDTO; +import com.mtvs.devlinkbackend.guild.dto.request.GuildUpdateRequestDTO; +import com.mtvs.devlinkbackend.guild.dto.response.GuildListResponseDTO; +import com.mtvs.devlinkbackend.guild.dto.response.GuildSingleResponseDTO; import com.mtvs.devlinkbackend.guild.repository.GuildRepository; import com.mtvs.devlinkbackend.guild.service.GuildService; import jakarta.transaction.Transactional; @@ -25,7 +26,7 @@ public class GuildCRUDTest { @Autowired private GuildRepository guildRepository; - private Guild guild; + private GuildSingleResponseDTO guild; @BeforeEach public void setUp() { @@ -38,69 +39,69 @@ public void setUp() { @Test public void testCreateGuild() { assertNotNull(guild); - assertEquals("테스트 길드", guild.getGuildName()); - assertEquals("testOwner", guild.getOwnerId()); + assertEquals("테스트 길드", guild.getData().getGuildName()); + assertEquals("testOwner", guild.getData().getOwnerId()); } @Test public void testFindGuildByGuildId() { - Guild foundGuild = guildService.findGuildByGuildId(guild.getGuildId()); + GuildSingleResponseDTO foundGuild = guildService.findGuildByGuildId(guild.getData().getGuildId()); assertNotNull(foundGuild); - assertEquals(guild.getGuildId(), foundGuild.getGuildId()); + assertEquals(guild.getData().getGuildId(), foundGuild.getData().getGuildId()); } @Test public void testFindGuildsByGuildNameContaining() { - List foundGuilds = guildService.findGuildsByGuildNameContaining("테스트"); - assertFalse(foundGuilds.isEmpty()); - assertTrue(foundGuilds.stream().anyMatch(g -> g.getGuildName().contains("테스트"))); + GuildListResponseDTO foundGuilds = guildService.findGuildsByGuildNameContaining("테스트"); + assertFalse(foundGuilds.getData().isEmpty()); + assertTrue(foundGuilds.getData().stream().anyMatch(g -> g.getGuildName().contains("테스트"))); } @Test public void testFindGuildsByOwnerId() { - List foundGuilds = guildService.findGuildsByOwnerId("testOwner"); - assertFalse(foundGuilds.isEmpty()); - assertTrue(foundGuilds.stream().anyMatch(g -> g.getOwnerId().equals("testOwner"))); + GuildListResponseDTO foundGuilds = guildService.findGuildsByOwnerId("testOwner"); + assertFalse(foundGuilds.getData().isEmpty()); + assertTrue(foundGuilds.getData().stream().anyMatch(g -> g.getOwnerId().equals("testOwner"))); } @Test public void testUpdateGuild() { GuildUpdateRequestDTO updateRequest = new GuildUpdateRequestDTO( - guild.getGuildId(), "업데이트 길드 이름", "업데이트 소개", 15L, List.of("member1"), 1L + guild.getData().getGuildId(), "업데이트 길드 이름", "업데이트 소개", 15L, List.of("member1"), 1L ); - Guild updatedGuild = guildService.updateGuild(updateRequest, "testOwner"); + GuildSingleResponseDTO updatedGuild = guildService.updateGuild(updateRequest, "testOwner"); assertNotNull(updatedGuild); - assertEquals("업데이트 길드 이름", updatedGuild.getGuildName()); - assertEquals(1L, updatedGuild.getChannelId()); + assertEquals("업데이트 길드 이름", updatedGuild.getData().getGuildName()); + assertEquals(1L, updatedGuild.getData().getChannelId()); } @Test public void testAddMemberToGuild() { GuildMemberModifyRequestDTO addRequest = new GuildMemberModifyRequestDTO( - guild.getGuildId(), List.of("newMember") + guild.getData().getGuildId(), List.of("newMember") ); - Guild updatedGuild = guildService.addMemberToGuild(addRequest, "testOwner"); + GuildSingleResponseDTO updatedGuild = guildService.addMemberToGuild(addRequest, "testOwner"); assertNotNull(updatedGuild); - assertTrue(updatedGuild.getMemberList().contains("newMember")); + assertTrue(updatedGuild.getData().getMemberList().contains("newMember")); } @Test public void testRemoveMemberToGuild() { GuildMemberModifyRequestDTO removeRequest = new GuildMemberModifyRequestDTO( - guild.getGuildId(), List.of("member1") + guild.getData().getGuildId(), List.of("member1") ); - Guild updatedGuild = guildService.removeMemberToGuild(removeRequest, "testOwner"); + GuildSingleResponseDTO updatedGuild = guildService.removeMemberToGuild(removeRequest, "testOwner"); assertNotNull(updatedGuild); - assertFalse(updatedGuild.getMemberList().contains("member1")); + assertFalse(updatedGuild.getData().getMemberList().contains("member1")); } @Test public void testDeleteGuild() { - guildService.deleteGuild(guild.getGuildId()); - Guild deletedGuild = guildService.findGuildByGuildId(guild.getGuildId()); + guildService.deleteGuild(guild.getData().getGuildId()); + GuildSingleResponseDTO deletedGuild = guildService.findGuildByGuildId(guild.getData().getGuildId()); assertNull(deletedGuild); } } diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/ProjectCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/ProjectCRUDTest.java index 01326f7..ef4b64d 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/ProjectCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/ProjectCRUDTest.java @@ -1,7 +1,7 @@ package com.mtvs.devlinkbackend.crud; -import com.mtvs.devlinkbackend.project.dto.ProjectRegistRequestDTO; -import com.mtvs.devlinkbackend.project.dto.ProjectUpdateRequestDTO; +import com.mtvs.devlinkbackend.project.dto.request.ProjectRegistRequestDTO; +import com.mtvs.devlinkbackend.project.dto.request.ProjectUpdateRequestDTO; import com.mtvs.devlinkbackend.project.service.ProjectService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; @@ -114,12 +114,12 @@ public void testFindRequestByRequestId(long questionId) { } @DisplayName("계정 ID에 따른 의뢰 paging 조회 테스트") - @ValueSource( strings = {"계정1", "계정2"}) + @CsvSource({"0, 계정1", "0, 계정2"}) @ParameterizedTest @Order(2) - public void testFindRequestsByAccountId(String accountId) { + public void testFindRequestsByAccountId(int page, String accountId) { Assertions.assertDoesNotThrow(() -> - System.out.println("Request = " + projectService.findProjectsByAccountId(accountId))); + System.out.println("Request = " + projectService.findProjectsByAccountIdWithPaging(page, accountId))); } @DisplayName("의뢰 수정 테스트") @@ -141,52 +141,53 @@ public void testDeleteRequest(long requestId) { } @DisplayName("업무 범위에 따른 의뢰 조회 테스트") - @ValueSource( strings = {"업무범위1", "업무범위2"}) + @CsvSource({"0, 업무범위1", "0, 업무범위2"}) @ParameterizedTest @Order(2) - public void testFindRequestsByWorkScope(String workScope) { + public void testFindRequestsByWorkScope(int page, String workScope) { Assertions.assertDoesNotThrow(() -> - System.out.println("Request = " + projectService.findProjectsByWorkScope(workScope))); + System.out.println("Request = " + projectService.findProjectsByWorkScopeWithPaging(page, workScope))); } @DisplayName("근무 형태에 따른 의뢰 조회 테스트") - @ValueSource( strings = {"근무형태1", "근무형태2"}) + @CsvSource({"0, 근무형태1", "0, 근무형태2"}) @ParameterizedTest @Order(2) - public void testFindRequestsByWorkType(String workType) { + public void testFindRequestsByWorkType(int page, String workType) { Assertions.assertDoesNotThrow(() -> - System.out.println("Request = " + projectService.findProjectsByWorkType(workType))); + System.out.println("Request = " + projectService.findProjectsByWorkTypeWithPaging(page, workType))); } @DisplayName("진행 분류에 따른 의뢰 조회 테스트") - @ValueSource( strings = {"진행분류1", "진행분류2"}) + @CsvSource({"0, 진행분류1", "0, 진행분류2"}) @ParameterizedTest @Order(2) - public void testFindRequestsByProgressClassification(String progressClassification) { + public void testFindRequestsByProgressClassification(int page, String progressClassification) { Assertions.assertDoesNotThrow(() -> System.out.println("Request = " + projectService. - findProjectsByProgressClassification(progressClassification))); + findProjectsByProgressClassificationWithPaging(page, progressClassification))); } @DisplayName("프로젝트 주제(제목)에 따른 의뢰 조회 테스트") - @ValueSource( strings = {"제목1", "제목2"}) + @CsvSource({"0, 제목1", "0, 제목2"}) @ParameterizedTest @Order(2) - public void testFindRequestsByTitleContainingIgnoreCase(String title) { + public void testFindRequestsByTitleContainingIgnoreCase(int page, String title) { Assertions.assertDoesNotThrow(() -> - System.out.println("Request = " + projectService.findProjectsByTitleContainingIgnoreCase(title))); + System.out.println("Request = " + projectService + .findProjectsByTitleContainingIgnoreCaseWithPaging(page, title))); } @DisplayName("필요 직군보다 더 많이 모집하는 의뢰 조회 테스트") - @CsvSource({"2,2,3,1,3", "3,2,1,1,3"}) + @CsvSource({"0,2,2,3,1,3", "0,3,2,1,1,3"}) @ParameterizedTest @Order(2) - public void testFindRequestsWithLargerRequirements(Integer requiredClient, Integer requiredServer, - Integer requiredDesign, Integer requiredPlanner, - Integer requiredAIEngineer) { + public void testFindRequestsWithLargerRequirements(int page, Integer requiredClient, + Integer requiredServer, Integer requiredDesign, + Integer requiredPlanner, Integer requiredAIEngineer) { Assertions.assertDoesNotThrow(() -> - System.out.println("Request = " + projectService.findProjectsWithLargerRequirements( - requiredClient, requiredServer, requiredDesign, requiredPlanner, requiredAIEngineer + System.out.println("Request = " + projectService.findProjectsWithLargerRequirementsWithPaging( + page, requiredClient, requiredServer, requiredDesign, requiredPlanner, requiredAIEngineer ))); } } diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/QuestionCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/QuestionCRUDTest.java index 6a3c9d5..1af0fd8 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/QuestionCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/QuestionCRUDTest.java @@ -1,7 +1,7 @@ package com.mtvs.devlinkbackend.crud; -import com.mtvs.devlinkbackend.question.dto.QuestionRegistRequestDTO; -import com.mtvs.devlinkbackend.question.dto.QuestionUpdateRequestDTO; +import com.mtvs.devlinkbackend.question.dto.request.QuestionRegistRequestDTO; +import com.mtvs.devlinkbackend.question.dto.request.QuestionUpdateRequestDTO; import com.mtvs.devlinkbackend.question.service.QuestionService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/ReplyCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/ReplyCRUDTest.java index 41c8346..0bcb21a 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/ReplyCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/ReplyCRUDTest.java @@ -1,7 +1,7 @@ package com.mtvs.devlinkbackend.crud; -import com.mtvs.devlinkbackend.reply.dto.ReplyRegistRequestDTO; -import com.mtvs.devlinkbackend.reply.dto.ReplyUpdateRequestDTO; +import com.mtvs.devlinkbackend.reply.dto.request.ReplyRegistRequestDTO; +import com.mtvs.devlinkbackend.reply.dto.request.ReplyUpdateRequestDTO; import com.mtvs.devlinkbackend.reply.service.ReplyService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/SupportCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/SupportCRUDTest.java index 6191b4c..a5f36d7 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/SupportCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/SupportCRUDTest.java @@ -1,6 +1,8 @@ package com.mtvs.devlinkbackend.crud; -import com.mtvs.devlinkbackend.support.dto.SupportRegistRequestDTO; +import com.mtvs.devlinkbackend.support.dto.request.SupportRegistRequestDTO; +import com.mtvs.devlinkbackend.support.dto.response.SupportListResponseDTO; +import com.mtvs.devlinkbackend.support.dto.response.SupportSingleResponseDTO; import com.mtvs.devlinkbackend.support.entity.Support; import com.mtvs.devlinkbackend.support.repository.SupportRepository; import com.mtvs.devlinkbackend.support.service.SupportService; @@ -45,37 +47,37 @@ public void testCreateSupport() { SupportRegistRequestDTO supportRegistRequestDTO = new SupportRegistRequestDTO(1L, 2L); // when - Support createdSupport = supportService.createSupport(supportRegistRequestDTO); + SupportSingleResponseDTO createdSupport = supportService.createSupport(supportRegistRequestDTO); // then assertNotNull(createdSupport, "Created support should not be null"); - assertEquals(support1.getProjectId(), createdSupport.getProjectId(), "Project ID should match"); - assertEquals(support1.getTeamId(), createdSupport.getTeamId(), "Team ID should match"); - assertEquals("waiting", createdSupport.getSupportConfirmation(), "Status should be 'waiting'"); + assertEquals(support1.getProjectId(), createdSupport.getData().getProjectId(), "Project ID should match"); + assertEquals(support1.getTeamId(), createdSupport.getData().getTeamId(), "Team ID should match"); + assertEquals("waiting", createdSupport.getData().getSupportConfirmation(), "Status should be 'waiting'"); } @Test public void testFindSupportsByProjectId() { // when - List foundSupports = supportService.findSupportsByProjectId(1L); + SupportListResponseDTO foundSupports = supportService.findSupportsByProjectId(1L); // then assertNotNull(foundSupports, "Found supports should not be null"); - assertEquals(2, foundSupports.size(), "The size of found supports should be 2"); - assertEquals(support1.getProjectId(), foundSupports.get(0).getProjectId(), "First support project ID should match"); - assertEquals(support2.getTeamId(), foundSupports.get(1).getTeamId(), "Second support team ID should match"); + assertEquals(2, foundSupports.getData().size(), "The size of found supports should be 2"); + assertEquals(support1.getProjectId(), foundSupports.getData().get(0).getProjectId(), "First support project ID should match"); + assertEquals(support2.getTeamId(), foundSupports.getData().get(1).getTeamId(), "Second support team ID should match"); } @Test public void testFindSupportsByTeamId() { // when - List foundSupports = supportService.findSupportsByTeamId(2L); + SupportListResponseDTO foundSupports = supportService.findSupportsByTeamId(2L); // then assertNotNull(foundSupports, "Found supports should not be null"); - assertEquals(1, foundSupports.size(), "The size of found supports should be 1"); - assertEquals(support1.getTeamId(), foundSupports.get(0).getTeamId(), "Support team ID should match"); - assertEquals(support1.getSupportConfirmation(), foundSupports.get(0).getSupportConfirmation(), "Support status should match"); + assertEquals(1, foundSupports.getData().size(), "The size of found supports should be 1"); + assertEquals(support1.getTeamId(), foundSupports.getData().get(0).getTeamId(), "Support team ID should match"); + assertEquals(support1.getSupportConfirmation(), foundSupports.getData().get(0).getSupportConfirmation(), "Support status should match"); } @Test @@ -85,10 +87,10 @@ public void testDeleteSupport() { // when supportService.deleteSupport(supportId); - List foundSupports = supportService.findSupportsByProjectId(1L); + SupportListResponseDTO foundSupports = supportService.findSupportsByProjectId(1L); System.out.println(foundSupports); // then - assertEquals(1, foundSupports.size()); + assertEquals(1, foundSupports.getData().size()); } } diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/TeamCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/TeamCRUDTest.java index 2547da1..c7306fe 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/TeamCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/TeamCRUDTest.java @@ -1,8 +1,8 @@ package com.mtvs.devlinkbackend.crud; -import com.mtvs.devlinkbackend.team.dto.TeamMemberModifyRequestDTO; -import com.mtvs.devlinkbackend.team.dto.TeamRegistRequestDTO; -import com.mtvs.devlinkbackend.team.dto.TeamUpdateRequestDTO; +import com.mtvs.devlinkbackend.team.dto.request.TeamMemberModifyRequestDTO; +import com.mtvs.devlinkbackend.team.dto.request.TeamRegistRequestDTO; +import com.mtvs.devlinkbackend.team.dto.request.TeamUpdateRequestDTO; import com.mtvs.devlinkbackend.team.service.TeamService; import jakarta.transaction.Transactional; import org.junit.jupiter.api.Assertions; diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/UserCharacterCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/UserCharacterCRUDTest.java index 87c4ae9..264ad99 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/UserCharacterCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/UserCharacterCRUDTest.java @@ -1,7 +1,7 @@ package com.mtvs.devlinkbackend.crud; -import com.mtvs.devlinkbackend.character.dto.UserCharacterRegistRequestDTO; -import com.mtvs.devlinkbackend.character.dto.UserCharacterUpdateRequestDTO; +import com.mtvs.devlinkbackend.character.dto.request.UserCharacterRegistRequestDTO; +import com.mtvs.devlinkbackend.character.dto.request.UserCharacterUpdateRequestDTO; import com.mtvs.devlinkbackend.character.service.UserCharacterService; import jakarta.transaction.Transactional; import org.junit.jupiter.api.Assertions; diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/UserClientGroupCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/UserClientGroupCRUDTest.java index 14ffcc2..53a8b03 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/UserClientGroupCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/UserClientGroupCRUDTest.java @@ -1,6 +1,6 @@ package com.mtvs.devlinkbackend.crud; -import com.mtvs.devlinkbackend.oauth2.dto.UserClientGroupRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.request.UserClientGroupRequestDTO; import com.mtvs.devlinkbackend.oauth2.service.UserClientGroupService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/UserClientIndividualCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/UserClientIndividualCRUDTest.java index e0f8c35..16849f4 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/UserClientIndividualCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/UserClientIndividualCRUDTest.java @@ -1,6 +1,6 @@ package com.mtvs.devlinkbackend.crud; -import com.mtvs.devlinkbackend.oauth2.dto.UserClientIndividualRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.request.UserClientIndividualRequestDTO; import com.mtvs.devlinkbackend.oauth2.service.UserClientIndividualService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/UserPartnerCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/UserPartnerCRUDTest.java index 2410f89..05e6237 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/UserPartnerCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/UserPartnerCRUDTest.java @@ -1,6 +1,6 @@ package com.mtvs.devlinkbackend.crud; -import com.mtvs.devlinkbackend.oauth2.dto.UserPartnerRequestDTO; +import com.mtvs.devlinkbackend.oauth2.dto.request.UserPartnerRequestDTO; import com.mtvs.devlinkbackend.oauth2.service.UserPartnerService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach;