From ff19134f4aadeb5ff90da4ac5c3e7a34c0342f04 Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 19:13:05 +0900 Subject: [PATCH 01/15] =?UTF-8?q?[feat]=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EC=A0=90=EC=88=98=20=EB=93=B1=EB=A1=9D=20API=20swa?= =?UTF-8?q?gger=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sweet/domain/gift/controller/GiftApi.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/org/sopt/sweet/domain/gift/controller/GiftApi.java b/src/main/java/org/sopt/sweet/domain/gift/controller/GiftApi.java index b87d7a9..2909b83 100644 --- a/src/main/java/org/sopt/sweet/domain/gift/controller/GiftApi.java +++ b/src/main/java/org/sopt/sweet/domain/gift/controller/GiftApi.java @@ -11,6 +11,7 @@ import jakarta.validation.Valid; import org.sopt.sweet.domain.gift.dto.request.CreateGiftRequestDto; import org.sopt.sweet.domain.gift.dto.request.MyGiftsRequestDto; +import org.sopt.sweet.domain.gift.dto.request.TournamentScoreRequestDto; import org.sopt.sweet.global.common.SuccessResponse; import org.sopt.sweet.global.config.auth.UserId; import org.springframework.http.ResponseEntity; @@ -122,4 +123,25 @@ ResponseEntity> getTournamentGiftList( ) @PathVariable Long roomId ); + @Operation( + summary = "선물 토너먼트 점수 등록 API", + responses = { + @ApiResponse( + responseCode = "201", + content = @Content( + mediaType = "application/json", + schema = @Schema(implementation = SuccessResponse.class) + ) + ) + }, + security = @SecurityRequirement(name = "token") + ) + ResponseEntity> evaluateTournamentScore( + @Parameter( + description = "authorization token에서 얻은 userId, 임의입력하면 대체됩니다.", + required = true, + example = "12345" + ) @UserId Long userId, + @Valid @RequestBody TournamentScoreRequestDto tournamentScoreRequestDto + ); } From 190bb69bbb281953dde858927c34681fda9d24fa Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 19:13:39 +0900 Subject: [PATCH 02/15] =?UTF-8?q?[feat]=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EC=A0=90=EC=88=98=20=EB=93=B1=EB=A1=9D=20API=20con?= =?UTF-8?q?troller=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/sweet/domain/gift/controller/GiftController.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/org/sopt/sweet/domain/gift/controller/GiftController.java b/src/main/java/org/sopt/sweet/domain/gift/controller/GiftController.java index 2b2c07f..42cf8e6 100644 --- a/src/main/java/org/sopt/sweet/domain/gift/controller/GiftController.java +++ b/src/main/java/org/sopt/sweet/domain/gift/controller/GiftController.java @@ -3,6 +3,7 @@ import lombok.RequiredArgsConstructor; import org.sopt.sweet.domain.gift.dto.request.CreateGiftRequestDto; import org.sopt.sweet.domain.gift.dto.request.MyGiftsRequestDto; +import org.sopt.sweet.domain.gift.dto.request.TournamentScoreRequestDto; import org.sopt.sweet.domain.gift.dto.response.MyGiftsResponseDto; import org.sopt.sweet.domain.gift.dto.response.TournamentListsResponseDto; import org.sopt.sweet.domain.gift.service.GiftService; @@ -44,6 +45,13 @@ public ResponseEntity> getTournamentGiftList(@UserId Long use return SuccessResponse.ok(tournamentGiftList); } + @PostMapping("/tonermant-score") + public ResponseEntity> evaluateTournamentScore(@UserId Long userId, @RequestBody TournamentScoreRequestDto tournamentScoreRequestDto) { + giftService.evaluateTournamentScore(tournamentScoreRequestDto); + return SuccessResponse.created(null); + } + + } From db3343f92aec4d4251bd27444b1db7247a01fbdf Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 19:17:42 +0900 Subject: [PATCH 03/15] =?UTF-8?q?[feat]=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EC=A0=90=EC=88=98=20=EB=93=B1=EB=A1=9D=20API=20rep?= =?UTF-8?q?ository=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/sopt/sweet/domain/gift/repository/GiftRepository.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/sopt/sweet/domain/gift/repository/GiftRepository.java b/src/main/java/org/sopt/sweet/domain/gift/repository/GiftRepository.java index 2958d9d..80c9890 100644 --- a/src/main/java/org/sopt/sweet/domain/gift/repository/GiftRepository.java +++ b/src/main/java/org/sopt/sweet/domain/gift/repository/GiftRepository.java @@ -9,6 +9,7 @@ import org.springframework.data.repository.query.Param; import java.util.List; +import java.util.Optional; public interface GiftRepository extends JpaRepository { long countByRoomAndMember(Room room, Member member); @@ -19,4 +20,5 @@ public interface GiftRepository extends JpaRepository { List findLatestGiftsByRoomAndNotMember(@Param("room") Room room, @Param("member") Member member, Pageable pageable); List findByRoom(Room room); + } From 81fd4ffbe73f7a392b1389d1bfe437c390e77be9 Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 19:17:49 +0900 Subject: [PATCH 04/15] =?UTF-8?q?[feat]=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EC=A0=90=EC=88=98=20=EB=93=B1=EB=A1=9D=20API=20ser?= =?UTF-8?q?vice=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/gift/service/GiftService.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java b/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java index cf58089..9260ee7 100644 --- a/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java +++ b/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java @@ -3,6 +3,7 @@ import lombok.RequiredArgsConstructor; import org.sopt.sweet.domain.gift.dto.request.CreateGiftRequestDto; import org.sopt.sweet.domain.gift.dto.request.MyGiftsRequestDto; +import org.sopt.sweet.domain.gift.dto.request.TournamentScoreRequestDto; import org.sopt.sweet.domain.gift.dto.response.MyGiftDto; import org.sopt.sweet.domain.gift.dto.response.MyGiftsResponseDto; import org.sopt.sweet.domain.gift.dto.response.TournamentListsResponseDto; @@ -127,6 +128,10 @@ private Gift findByIdOrThrow(Long giftId) { return giftRepository.findById(giftId) .orElseThrow(() -> new EntityNotFoundException(GIFT_NOT_FOUND)); } + private Room findGiftByIdOrThrow(Long roomId) { + return roomRepository.findById(roomId) + .orElseThrow(() -> new EntityNotFoundException(GIFT_NOT_FOUND)); + } @Transactional(readOnly = true) @@ -142,4 +147,28 @@ private List mapGiftsToTournamentLists(List gi .collect(Collectors.toList()); } + public void evaluateTournamentScore(TournamentScoreRequestDto tournamentScoreRequestDto) { + int firstPlaceScore = 10; + int secondPlaceScore = 5; + + Gift firstPlaceGift = updateScore(tournamentScoreRequestDto.firstPlaceGiftId(), firstPlaceScore); + Gift secondPlaceGift = updateScore(tournamentScoreRequestDto.secondPlaceGiftId(), secondPlaceScore); + + + giftRepository.save(firstPlaceGift); + giftRepository.save(secondPlaceGift); + } + + + + private Gift updateScore(Long giftId, int score) { + Gift gift = findByIdOrThrow(giftId); + int newScore = gift.getScore()+score; + gift.setScore(newScore); + return gift; + } + + + + } \ No newline at end of file From 789d338860672e26aa4701c421c5b31e09f97f7f Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 19:17:59 +0900 Subject: [PATCH 05/15] =?UTF-8?q?[feat]=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EC=A0=90=EC=88=98=20=EB=93=B1=EB=A1=9D=20API=20Dto?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/request/TournamentScoreRequestDto.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/main/java/org/sopt/sweet/domain/gift/dto/request/TournamentScoreRequestDto.java diff --git a/src/main/java/org/sopt/sweet/domain/gift/dto/request/TournamentScoreRequestDto.java b/src/main/java/org/sopt/sweet/domain/gift/dto/request/TournamentScoreRequestDto.java new file mode 100644 index 0000000..b4699d6 --- /dev/null +++ b/src/main/java/org/sopt/sweet/domain/gift/dto/request/TournamentScoreRequestDto.java @@ -0,0 +1,18 @@ +package org.sopt.sweet.domain.gift.dto.request; + +import lombok.Builder; +import org.sopt.sweet.domain.gift.dto.response.TournamentListsResponseDto; + +@Builder +public record TournamentScoreRequestDto( + Long firstPlaceGiftId, + Long secondPlaceGiftId +) { + public static TournamentScoreRequestDto of(Long firstPlaceGiftId, Long secondPlaceGiftId) { + return TournamentScoreRequestDto.builder() + .firstPlaceGiftId(firstPlaceGiftId) + .secondPlaceGiftId(secondPlaceGiftId) + .build(); + } + +} From 6a9a13ac4e77ba169baac665a28a6c74234d6720 Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 19:19:26 +0900 Subject: [PATCH 06/15] =?UTF-8?q?[feat]=20score=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/sopt/sweet/domain/gift/entity/Gift.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/org/sopt/sweet/domain/gift/entity/Gift.java b/src/main/java/org/sopt/sweet/domain/gift/entity/Gift.java index 608d4b5..78f32d2 100644 --- a/src/main/java/org/sopt/sweet/domain/gift/entity/Gift.java +++ b/src/main/java/org/sopt/sweet/domain/gift/entity/Gift.java @@ -48,4 +48,12 @@ public Gift(String url, String name, int cost, String imageUrl, Room room, Membe this.room = room; this.member = member; } + + public void setScore(int score) { + this.score = score; + } + + + + } From d7ac6506286b974b79535590f63f8a27201c2ba0 Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 23:09:22 +0900 Subject: [PATCH 07/15] =?UTF-8?q?[feat]=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EA=B4=80=EB=A0=A8=20=EC=A0=95=EB=B3=B4=20=EC=B6=94?= =?UTF-8?q?=EC=B6=9C=20API=20Controller=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/sweet/domain/gift/controller/GiftController.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/org/sopt/sweet/domain/gift/controller/GiftController.java b/src/main/java/org/sopt/sweet/domain/gift/controller/GiftController.java index 42cf8e6..44534c9 100644 --- a/src/main/java/org/sopt/sweet/domain/gift/controller/GiftController.java +++ b/src/main/java/org/sopt/sweet/domain/gift/controller/GiftController.java @@ -6,6 +6,7 @@ import org.sopt.sweet.domain.gift.dto.request.TournamentScoreRequestDto; import org.sopt.sweet.domain.gift.dto.response.MyGiftsResponseDto; import org.sopt.sweet.domain.gift.dto.response.TournamentListsResponseDto; +import org.sopt.sweet.domain.gift.dto.response.TournamentInfoDto; import org.sopt.sweet.domain.gift.service.GiftService; import org.sopt.sweet.global.common.SuccessResponse; import org.sopt.sweet.global.config.auth.UserId; @@ -51,6 +52,12 @@ public ResponseEntity> evaluateTournamentScore(@UserId Long u return SuccessResponse.created(null); } + @GetMapping("tournament-info/{roomId}") + public ResponseEntity> getTournamentInfo(@UserId Long userId, @PathVariable Long roomId) { + final TournamentInfoDto tournamentInfo = giftService.getTournamentInfo(userId, roomId); + return SuccessResponse.ok(tournamentInfo); + } + From cf730dd2e5cd6f0cf7220a58a191b5f4bf2fac21 Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 23:09:50 +0900 Subject: [PATCH 08/15] =?UTF-8?q?[feat]=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EA=B4=80=EB=A0=A8=20=EC=A0=95=EB=B3=B4=20=EC=B6=94?= =?UTF-8?q?=EC=B6=9C=20API=20Service=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/gift/service/GiftService.java | 37 ++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java b/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java index 9260ee7..dc2ef6f 100644 --- a/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java +++ b/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java @@ -7,10 +7,12 @@ import org.sopt.sweet.domain.gift.dto.response.MyGiftDto; import org.sopt.sweet.domain.gift.dto.response.MyGiftsResponseDto; import org.sopt.sweet.domain.gift.dto.response.TournamentListsResponseDto; +import org.sopt.sweet.domain.gift.dto.response.TournamentInfoDto; import org.sopt.sweet.domain.gift.entity.Gift; import org.sopt.sweet.domain.gift.repository.GiftRepository; import org.sopt.sweet.domain.member.entity.Member; import org.sopt.sweet.domain.member.repository.MemberRepository; +import org.sopt.sweet.domain.room.constant.TournamentDuration; import org.sopt.sweet.domain.room.entity.Room; import org.sopt.sweet.domain.room.entity.RoomMember; import org.sopt.sweet.domain.room.repository.RoomMemberRepository; @@ -37,6 +39,8 @@ public class GiftService { private final RoomRepository roomRepository; private final RoomMemberRepository roomMemberRepository; private static final int MAX_GIFT_COUNT = 2; + private static final int FirstPlaceScore = 10; + private static final int SecondPlaceScore = 5; public void createNewGift(Long memberId, CreateGiftRequestDto createGiftRequestDto) { Member member = findMemberByIdOrThrow(memberId); @@ -58,7 +62,7 @@ public MyGiftsResponseDto getMyGift(Long memberId, MyGiftsRequestDto myGiftsRequ return new MyGiftsResponseDto(myGiftsDtoList); } - public void deleteMyGift(Long memberId, Long giftId){ + public void deleteMyGift(Long memberId, Long giftId) { Member member = findMemberByIdOrThrow(memberId); Gift gift = findByIdOrThrow(giftId); validateMemberGiftOwner(member, gift); @@ -124,10 +128,12 @@ private Room findRoomByIdOrThrow(Long roomId) { .orElseThrow(() -> new EntityNotFoundException(ROOM_NOT_FOUND)); } + private Gift findByIdOrThrow(Long giftId) { return giftRepository.findById(giftId) .orElseThrow(() -> new EntityNotFoundException(GIFT_NOT_FOUND)); } + private Room findGiftByIdOrThrow(Long roomId) { return roomRepository.findById(roomId) .orElseThrow(() -> new EntityNotFoundException(GIFT_NOT_FOUND)); @@ -148,26 +154,39 @@ private List mapGiftsToTournamentLists(List gi } public void evaluateTournamentScore(TournamentScoreRequestDto tournamentScoreRequestDto) { - int firstPlaceScore = 10; - int secondPlaceScore = 5; - - Gift firstPlaceGift = updateScore(tournamentScoreRequestDto.firstPlaceGiftId(), firstPlaceScore); - Gift secondPlaceGift = updateScore(tournamentScoreRequestDto.secondPlaceGiftId(), secondPlaceScore); + Gift firstPlaceGift = updateScore(tournamentScoreRequestDto.firstPlaceGiftId(), FirstPlaceScore); + Gift secondPlaceGift = updateScore(tournamentScoreRequestDto.secondPlaceGiftId(), SecondPlaceScore); giftRepository.save(firstPlaceGift); giftRepository.save(secondPlaceGift); - } - + } private Gift updateScore(Long giftId, int score) { Gift gift = findByIdOrThrow(giftId); - int newScore = gift.getScore()+score; + int newScore = gift.getScore() + score; gift.setScore(newScore); return gift; } + public TournamentInfoDto getTournamentInfo(Long memberId, Long roomId) { + Room room = findRoomByIdOrThrow(roomId); + LocalDateTime tournamentStartDate = room.getTournamentStartDate(); + TournamentDuration tournamentDuration = room.getTournamentDuration(); + int totalParticipantsCount = room.getGifterNumber(); + updateTournamentParticipation(memberId, roomId); + int participatingMembersCount = roomMemberRepository.countByRoomIdAndTournamentParticipationIsTrue(roomId); + return new TournamentInfoDto(tournamentStartDate, tournamentDuration, totalParticipantsCount, participatingMembersCount); + } + + public void updateTournamentParticipation(Long memberId, Long roomId) { + System.out.println(roomId + " " + memberId); + RoomMember roomMember = roomMemberRepository.findByRoomIdAndMemberId(roomId, memberId); + roomMember.setTournamentParticipation(true); + roomMemberRepository.save(roomMember); + } + From d3843a11534d6bfc3a82ef5393734271d50d558c Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 23:10:15 +0900 Subject: [PATCH 09/15] =?UTF-8?q?[feat]=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EA=B4=80=EB=A0=A8=20=EC=A0=95=EB=B3=B4=20=EC=B6=94?= =?UTF-8?q?=EC=B6=9C=20API=20Repository=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sweet/domain/room/repository/RoomMemberRepository.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/org/sopt/sweet/domain/room/repository/RoomMemberRepository.java b/src/main/java/org/sopt/sweet/domain/room/repository/RoomMemberRepository.java index 3140cc0..4f7eead 100644 --- a/src/main/java/org/sopt/sweet/domain/room/repository/RoomMemberRepository.java +++ b/src/main/java/org/sopt/sweet/domain/room/repository/RoomMemberRepository.java @@ -11,4 +11,7 @@ public interface RoomMemberRepository extends JpaRepository { Optional findByRoomAndMember(Room room, Member member); List findByRoomId(Long roomId); + + int countByRoomIdAndTournamentParticipationIsTrue(Long roomId); + RoomMember findByRoomIdAndMemberId(Long roomId, Long memberId); } From f14eeeed5e7131d30b00fe62263a5f0b89d5c327 Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 23:10:21 +0900 Subject: [PATCH 10/15] =?UTF-8?q?[feat]=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EA=B4=80=EB=A0=A8=20=EC=A0=95=EB=B3=B4=20=EC=B6=94?= =?UTF-8?q?=EC=B6=9C=20API=20Repository=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/sopt/sweet/domain/room/repository/RoomRepository.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/org/sopt/sweet/domain/room/repository/RoomRepository.java b/src/main/java/org/sopt/sweet/domain/room/repository/RoomRepository.java index dc745a8..0286a4e 100644 --- a/src/main/java/org/sopt/sweet/domain/room/repository/RoomRepository.java +++ b/src/main/java/org/sopt/sweet/domain/room/repository/RoomRepository.java @@ -1,6 +1,7 @@ package org.sopt.sweet.domain.room.repository; import org.sopt.sweet.domain.room.entity.Room; +import org.sopt.sweet.domain.room.entity.RoomMember; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; @@ -9,4 +10,6 @@ public interface RoomRepository extends JpaRepository { boolean existsByInvitationCode(String invitationCode); Optional findByInvitationCode(String invitationCode); + + } From a7dc373df08794581c1a2016fd6b73afec2f2678 Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 23:10:52 +0900 Subject: [PATCH 11/15] =?UTF-8?q?[feat]=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EA=B4=80=EB=A0=A8=20=EC=A0=95=EB=B3=B4=20=EC=B6=94?= =?UTF-8?q?=EC=B6=9C=20API=20Dto=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gift/dto/response/TournamentInfoDto.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/main/java/org/sopt/sweet/domain/gift/dto/response/TournamentInfoDto.java diff --git a/src/main/java/org/sopt/sweet/domain/gift/dto/response/TournamentInfoDto.java b/src/main/java/org/sopt/sweet/domain/gift/dto/response/TournamentInfoDto.java new file mode 100644 index 0000000..42bc0d6 --- /dev/null +++ b/src/main/java/org/sopt/sweet/domain/gift/dto/response/TournamentInfoDto.java @@ -0,0 +1,28 @@ +package org.sopt.sweet.domain.gift.dto.response; + +import lombok.Builder; +import org.sopt.sweet.domain.room.constant.TournamentDuration; + +import java.time.LocalDateTime; +@Builder +public record TournamentInfoDto( + LocalDateTime tournamentStartDate, + TournamentDuration tournamentDuration, + + int TotalParticipantsCount, + int ParticipantsCount + +) { + public static TournamentInfoDto of(LocalDateTime tournamentStartDate, + TournamentDuration tournamentDuration, + int TotalParticipantsCount, + int ParticipantsCount) { + return TournamentInfoDto.builder() + .tournamentStartDate(tournamentStartDate) + .tournamentDuration(tournamentDuration) + .TotalParticipantsCount(TotalParticipantsCount) + .ParticipantsCount(ParticipantsCount) + .build(); + } + +} From 3115ab23d4c0be5ae67cfc74fce2596c61d2d270 Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 23:12:22 +0900 Subject: [PATCH 12/15] =?UTF-8?q?[feat]=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EC=B0=B8=EC=97=AC=EC=9E=90=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/sopt/sweet/domain/room/entity/RoomMember.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/org/sopt/sweet/domain/room/entity/RoomMember.java b/src/main/java/org/sopt/sweet/domain/room/entity/RoomMember.java index da566f1..ed59a37 100644 --- a/src/main/java/org/sopt/sweet/domain/room/entity/RoomMember.java +++ b/src/main/java/org/sopt/sweet/domain/room/entity/RoomMember.java @@ -31,4 +31,8 @@ public RoomMember(Room room, Member member){ this.member = member; } + public void setTournamentParticipation(boolean tournamentParticipation) { + this.tournamentParticipation = tournamentParticipation; + } + } From 63d0093a51b5fcddca11d96c2855863c3394075b Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 23:17:07 +0900 Subject: [PATCH 13/15] =?UTF-8?q?[feat]=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EA=B4=80=EB=A0=A8=20=EC=A0=95=EB=B3=B4=20=EC=B6=94?= =?UTF-8?q?=EC=B6=9C=20API=20swagger=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sweet/domain/gift/controller/GiftApi.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/main/java/org/sopt/sweet/domain/gift/controller/GiftApi.java b/src/main/java/org/sopt/sweet/domain/gift/controller/GiftApi.java index 2909b83..1612c5b 100644 --- a/src/main/java/org/sopt/sweet/domain/gift/controller/GiftApi.java +++ b/src/main/java/org/sopt/sweet/domain/gift/controller/GiftApi.java @@ -144,4 +144,41 @@ ResponseEntity> evaluateTournamentScore( ) @UserId Long userId, @Valid @RequestBody TournamentScoreRequestDto tournamentScoreRequestDto ); + + + @Operation( + summary = "토너먼트 정보 조회 API", + responses = { + @ApiResponse( + responseCode = "200", + content = @Content( + mediaType = "application/json", + schema = @Schema(implementation = SuccessResponse.class) + ) + ), + @ApiResponse( + responseCode = "404", + description = "토너먼트나 사용자가 존재하지 않음", + content = @Content + ), + @ApiResponse( + responseCode = "403", + description = "토너먼트 시작일이 지났거나 사용자가 방에 속해있지 않음", + content = @Content + ) + }, + security = @SecurityRequirement(name = "token") + ) + ResponseEntity> getTournamentInfo( + @Parameter( + description = "authorization token에서 얻은 userId, 임의입력하면 대체됩니다.", + required = true, + example = "12345" + ) @UserId Long userId, + @Parameter( + description = "조회하려는 토너먼트가 진행 중인 방의 ID", + required = true, + example = "2" + ) @PathVariable Long roomId + ); } From c2c97c1f9cbd157596cc4afd8e324e92c42d53ed Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 23:21:38 +0900 Subject: [PATCH 14/15] =?UTF-8?q?[refactor]=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/sopt/sweet/domain/gift/service/GiftService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java b/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java index dc2ef6f..92c2d47 100644 --- a/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java +++ b/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java @@ -172,16 +172,19 @@ private Gift updateScore(Long giftId, int score) { public TournamentInfoDto getTournamentInfo(Long memberId, Long roomId) { Room room = findRoomByIdOrThrow(roomId); + LocalDateTime tournamentStartDate = room.getTournamentStartDate(); TournamentDuration tournamentDuration = room.getTournamentDuration(); int totalParticipantsCount = room.getGifterNumber(); + updateTournamentParticipation(memberId, roomId); + int participatingMembersCount = roomMemberRepository.countByRoomIdAndTournamentParticipationIsTrue(roomId); + return new TournamentInfoDto(tournamentStartDate, tournamentDuration, totalParticipantsCount, participatingMembersCount); } public void updateTournamentParticipation(Long memberId, Long roomId) { - System.out.println(roomId + " " + memberId); RoomMember roomMember = roomMemberRepository.findByRoomIdAndMemberId(roomId, memberId); roomMember.setTournamentParticipation(true); roomMemberRepository.save(roomMember); From 65d2733ea6233d642aba5025a891fd9f68a87b00 Mon Sep 17 00:00:00 2001 From: hysong4u Date: Fri, 12 Jan 2024 23:24:50 +0900 Subject: [PATCH 15/15] =?UTF-8?q?[refactor]=20=EC=83=81=EC=88=98=20?= =?UTF-8?q?=EB=B3=80=EC=88=98=20=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/sopt/sweet/domain/gift/service/GiftService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java b/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java index 92c2d47..dbd1053 100644 --- a/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java +++ b/src/main/java/org/sopt/sweet/domain/gift/service/GiftService.java @@ -39,8 +39,8 @@ public class GiftService { private final RoomRepository roomRepository; private final RoomMemberRepository roomMemberRepository; private static final int MAX_GIFT_COUNT = 2; - private static final int FirstPlaceScore = 10; - private static final int SecondPlaceScore = 5; + private static final int FIRST_PLACE_SCORE = 10; + private static final int SECOND_PLACE_SCORE= 5; public void createNewGift(Long memberId, CreateGiftRequestDto createGiftRequestDto) { Member member = findMemberByIdOrThrow(memberId); @@ -155,8 +155,8 @@ private List mapGiftsToTournamentLists(List gi public void evaluateTournamentScore(TournamentScoreRequestDto tournamentScoreRequestDto) { - Gift firstPlaceGift = updateScore(tournamentScoreRequestDto.firstPlaceGiftId(), FirstPlaceScore); - Gift secondPlaceGift = updateScore(tournamentScoreRequestDto.secondPlaceGiftId(), SecondPlaceScore); + Gift firstPlaceGift = updateScore(tournamentScoreRequestDto.firstPlaceGiftId(), FIRST_PLACE_SCORE); + Gift secondPlaceGift = updateScore(tournamentScoreRequestDto.secondPlaceGiftId(), SECOND_PLACE_SCORE); giftRepository.save(firstPlaceGift); giftRepository.save(secondPlaceGift);