diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index beb0101..0fa9791 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -46,4 +46,4 @@ jobs: sudo docker rm hackathonm || true sudo docker rmi ${{ secrets.DOCKERHUB_USERNAME }}/hackathonm:latest || true - sudo docker run --name hackathonm -d -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/hackathonm:latest \ No newline at end of file + sudo docker run --name hackathonm -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/hackathonm:latest \ No newline at end of file diff --git a/src/main/java/hackerthon/demo/controller/LoginController.java b/src/main/java/hackerthon/demo/controller/MemberController.java similarity index 96% rename from src/main/java/hackerthon/demo/controller/LoginController.java rename to src/main/java/hackerthon/demo/controller/MemberController.java index 101797c..b4dbc79 100644 --- a/src/main/java/hackerthon/demo/controller/LoginController.java +++ b/src/main/java/hackerthon/demo/controller/MemberController.java @@ -14,8 +14,8 @@ @RestController @RequiredArgsConstructor -@RequestMapping("/api/member") -public class LoginController { +@RequestMapping("/api/v1/member") +public class MemberController { private final MemberService memberService; diff --git a/src/main/java/hackerthon/demo/controller/SuggestionController.java b/src/main/java/hackerthon/demo/controller/SuggestionController.java index 7b58470..3b587c2 100644 --- a/src/main/java/hackerthon/demo/controller/SuggestionController.java +++ b/src/main/java/hackerthon/demo/controller/SuggestionController.java @@ -2,9 +2,11 @@ import hackerthon.demo.common.dto.Response; import hackerthon.demo.controller.request.SuggestionCreateRequest; -import hackerthon.demo.controller.response.AcceptSuggetionResponseDto; import hackerthon.demo.controller.response.GameRoomResponseDto; +import hackerthon.demo.controller.response.SuggestionListResponseDto; import hackerthon.demo.controller.response.SuggestionResponseDto; +import hackerthon.demo.repository.MemberRepository; +import hackerthon.demo.service.MemberService; import hackerthon.demo.service.SuggestionService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -12,6 +14,7 @@ import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -23,6 +26,7 @@ @Tag(name = "제안 controller", description = "Suggestion API") public class SuggestionController { + private final MemberRepository memberRepository; private final SuggestionService suggestionService; @Operation( @@ -41,26 +45,33 @@ public Response suggest(@RequestBody SuggestionCreateRequ summary = "받은 제안 조회", responses = @ApiResponse(responseCode = "200", description = "자신이 만든 방에 대해서 받은 제안 요청을 봅니다") ) - @GetMapping("/test2") - public Response getPendingSuggestions(){ - return Response.data("success"); + @GetMapping("/get") + public Response> getPendingSuggestions(HttpServletRequest request, @RequestParam("gameRoomId") Long gameRoomId){ + String serialId = request.getHeader("Authorization"); + + List suggestionListResponseDtos = suggestionService.getSuggestions(gameRoomId); + + return Response.data(suggestionListResponseDtos); } - @PostMapping("/accept") @Operation( - summary = "제안 수락하기", + summary = "제안 수락하기 ", responses = @ApiResponse(responseCode = "200", description = "제안을 수락합니다.") ) - public Response< AcceptSuggetionResponseDto> acceptSuggestion(HttpServletRequest request, @RequestParam("suggestionId") Long suggestionId) { - - AcceptSuggetionResponseDto result = suggestionService.acceptSuggestion(request, suggestionId); - return Response.data(result); + @GetMapping("/accept") + public Response acceptSuggestion(){ + return Response.data("success"); } - @GetMapping("/test") - public Response getPendingSuggestion(){ + @Operation( + summary = "제안 거절하기 ", + responses = @ApiResponse(responseCode = "200", description = "제안을 거절합니다.") + ) + @GetMapping("/rejecct") + public Response rejectSuggestion(){ +// suggestionService.rejectSuggestion(); return Response.data("success"); } } diff --git a/src/main/java/hackerthon/demo/controller/request/GameRoomCreateRequest.java b/src/main/java/hackerthon/demo/controller/request/GameRoomCreateRequest.java index 03908f6..2d0cf45 100644 --- a/src/main/java/hackerthon/demo/controller/request/GameRoomCreateRequest.java +++ b/src/main/java/hackerthon/demo/controller/request/GameRoomCreateRequest.java @@ -13,6 +13,8 @@ import lombok.Builder; import lombok.Getter; +import java.util.ArrayList; + @Getter public class GameRoomCreateRequest { @@ -44,6 +46,7 @@ public static GameRoom toEntity(GameRoomCreateRequest request, Member host) { .gameType(request.getGameType()) .roomStatus(RoomStatus.RECRUIT) .host(host) + .gifticons(new ArrayList<>()) .build(); } } diff --git a/src/main/java/hackerthon/demo/controller/response/AcceptSuggetionResponseDto.java b/src/main/java/hackerthon/demo/controller/response/AcceptSuggetionResponseDto.java index 5a2cbcd..0238c5e 100644 --- a/src/main/java/hackerthon/demo/controller/response/AcceptSuggetionResponseDto.java +++ b/src/main/java/hackerthon/demo/controller/response/AcceptSuggetionResponseDto.java @@ -11,14 +11,14 @@ @Builder @AllArgsConstructor @NoArgsConstructor -public class AcceptSuggetionResponseDto { +public class AcceptSuggestionResponseDto { private Long hostId; private Long suggesterId; private Long gameRoomId; - public static AcceptSuggetionResponseDto resultDto(Long hostId, Long suggesterId, Long gameRoomId) { - return AcceptSuggetionResponseDto.builder() + public static AcceptSuggestionResponseDto resultDto(Long hostId, Long suggesterId, Long gameRoomId) { + return AcceptSuggestionResponseDto.builder() .hostId(hostId) .suggesterId(suggesterId) .gameRoomId(gameRoomId) diff --git a/src/main/java/hackerthon/demo/controller/response/SuggestionListResponseDto.java b/src/main/java/hackerthon/demo/controller/response/SuggestionListResponseDto.java new file mode 100644 index 0000000..8661f96 --- /dev/null +++ b/src/main/java/hackerthon/demo/controller/response/SuggestionListResponseDto.java @@ -0,0 +1,30 @@ +package hackerthon.demo.controller.response; + +import hackerthon.demo.domain.Suggestion; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@AllArgsConstructor +@Builder +public class SuggestionListResponseDto { + + private Long suggestionId; + private Long gifticonId; + private String gifticonImageUrl; + private String brand; + private String name; + private Long suggesterId; + + public static SuggestionListResponseDto fromEntity(Suggestion suggestion) { + return SuggestionListResponseDto.builder() + .suggesterId(suggestion.getId()) + .gifticonId(suggestion.getGifticon().getId()) + .gifticonImageUrl(suggestion.getGifticon().getImageUrl()) + .brand(suggestion.getGifticon().getBrand()) + .name(suggestion.getGifticon().getName()) + .suggesterId(suggestion.getSuggester().getId()) + .build(); + } +} diff --git a/src/main/java/hackerthon/demo/domain/PlayerGameRoom.java b/src/main/java/hackerthon/demo/domain/PlayerGameRoom.java deleted file mode 100644 index 1bcae82..0000000 --- a/src/main/java/hackerthon/demo/domain/PlayerGameRoom.java +++ /dev/null @@ -1,29 +0,0 @@ -package hackerthon.demo.domain; - -import jakarta.persistence.*; -import lombok.*; - - -@Entity -@Getter -@Builder -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor -public class PlayerGameRoom { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "member_id") - private Member player; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "game_room_id") - private GameRoom gameRoom; - - private Boolean isWin; - - private boolean isHost; -} diff --git a/src/main/java/hackerthon/demo/repository/SuggestionRepository.java b/src/main/java/hackerthon/demo/repository/SuggestionRepository.java index 01ef043..ebf742e 100644 --- a/src/main/java/hackerthon/demo/repository/SuggestionRepository.java +++ b/src/main/java/hackerthon/demo/repository/SuggestionRepository.java @@ -2,7 +2,12 @@ import hackerthon.demo.domain.Suggestion; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; public interface SuggestionRepository extends JpaRepository { + @Query("select s from Suggestion s where s.gameRoom.id = :gameRoomId") + List findByGameRoomId(Long gameRoomId); } diff --git a/src/main/java/hackerthon/demo/service/SuggestionService.java b/src/main/java/hackerthon/demo/service/SuggestionService.java index ec1e645..b2b858d 100644 --- a/src/main/java/hackerthon/demo/service/SuggestionService.java +++ b/src/main/java/hackerthon/demo/service/SuggestionService.java @@ -1,7 +1,7 @@ package hackerthon.demo.service; import hackerthon.demo.controller.request.SuggestionCreateRequest; -import hackerthon.demo.controller.response.AcceptSuggetionResponseDto; +import hackerthon.demo.controller.response.SuggestionListResponseDto; import hackerthon.demo.controller.response.SuggestionResponseDto; import hackerthon.demo.domain.GameRoom; import hackerthon.demo.domain.Gifticon; @@ -13,10 +13,11 @@ import hackerthon.demo.repository.SuggestionRepository; import jakarta.persistence.EntityNotFoundException; import jakarta.servlet.http.HttpServletRequest; -import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.List; + @Service @RequiredArgsConstructor public class SuggestionService { @@ -39,19 +40,14 @@ public SuggestionResponseDto createSuggestion(SuggestionCreateRequest request, H } - @Transactional - public AcceptSuggetionResponseDto acceptSuggestion(HttpServletRequest request, Long suggestionId){ - String serialId = request.getHeader("Authorization"); - Member member = memberRepository.findBySerialId(serialId).orElseThrow(() -> new EntityNotFoundException("해당 사용자 존재하지 않음")); - - Suggestion suggestion = suggestionRepository.findById(suggestionId).orElseThrow(() -> new EntityNotFoundException("해당 제안 존재하지 않음")); - GameRoom gameRoom = gameRoomRepository.findById(suggestion.getGameRoom().getId()).orElseThrow(() -> new EntityNotFoundException("해당 게임방 존재하지 않음")); + public List getSuggestions(Long gameRoomId) { + List suggestions = suggestionRepository.findByGameRoomId(gameRoomId); + List suggestionListResponseDtos =suggestions.stream() + .map(suggestion -> { + SuggestionListResponseDto suggestionListResponseDto = SuggestionListResponseDto.fromEntity(suggestion); + return suggestionListResponseDto; + }).toList(); - gameRoom.getGifticons().add(suggestion.getGifticon()); - gameRoomRepository.save(gameRoom); - - AcceptSuggetionResponseDto acceptSuggetionResponseDto = AcceptSuggetionResponseDto.resultDto(member.getId(), suggestion.getSuggester().getId(), gameRoom.getId()); - return acceptSuggetionResponseDto; + return suggestionListResponseDtos; } - } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml deleted file mode 100644 index 472dffd..0000000 --- a/src/main/resources/application.yml +++ /dev/null @@ -1,35 +0,0 @@ -spring: - application: - name: demo - - datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://hackathon-m-rds.ciwy7obdgrgx.ap-northeast-2.rds.amazonaws.com/hackathon_m - username: admin - password: admin123 - - # url: jdbc:mysql://localhost:3306/hackathon_m - # username: root - # password: 1108 - sql: - init: - mode: never - jpa: - properties: - hibernate: - dialect: org.hibernate.dialect.MySQL8Dialect - show_sql: true - format_sql: true - use_sql_comments: true - hbm2ddl: - auto: update - -cloud: - aws: - s3: - bucket: image-model-demo - path: - upload: upload - credentials: - access-key: AKIAVNC7ICKTGD3BG6GQ - secret-key: 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 \ No newline at end of file