From cec0dcccc6da7c1e866615bcc79685ebe30f85bd Mon Sep 17 00:00:00 2001 From: sunwoong Date: Sat, 9 Mar 2024 18:14:51 +0900 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=EC=97=AC=ED=96=89=20=EC=84=B1?= =?UTF-8?q?=ED=96=A5=20=EA=B2=80=EC=82=AC=20=EA=B4=80=EB=A0=A8=20=EC=83=81?= =?UTF-8?q?=EC=88=98=20=EC=B6=94=EA=B0=80=20(#151)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/doorip/common/Constants.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/doorip-api/src/main/java/org/doorip/common/Constants.java b/doorip-api/src/main/java/org/doorip/common/Constants.java index c331bb6..09d0e9c 100644 --- a/doorip-api/src/main/java/org/doorip/common/Constants.java +++ b/doorip-api/src/main/java/org/doorip/common/Constants.java @@ -8,15 +8,9 @@ public abstract class Constants { public static final String COMPLETE = "complete"; public static final String OUR = "our"; public static final String MY = "my"; - public static final String STYLE_A = "style_a"; - public static final String STYLE_B = "style_b"; - public static final String STYLE_C = "style_c"; - public static final String STYLE_D = "style_d"; - public static final String STYLE_E = "style_e"; - public static final int MIN_STYLE_RATE = 0; - public static final int MAX_STYLE_RATE = 100; - public static final int PROPENSITY_WEIGHT = 25; - public static final int MAX_PARTICIPANT_COUNT = 6; public static final int MIN_PARTICIPANT_COUNT = 1; + public static final int MAX_PARTICIPANT_COUNT = 6; public static final int TODO_OWNER_POSITION = 0; + public static final int START_STYLE_POS = 0; + public static final int END_STYLE_POS = 5; } From 5b935174eff5cf879fd65642d1dcaab48e0485ab Mon Sep 17 00:00:00 2001 From: sunwoong Date: Sat, 9 Mar 2024 18:15:39 +0900 Subject: [PATCH 2/6] =?UTF-8?q?fix:=20=EC=97=AC=ED=96=89=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=20=EC=84=B1=ED=96=A5=20=ED=86=B5=EA=B3=84=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20dto=20=EC=88=98=EC=A0=95=20(#151)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../doorip/trip/actor/TripTendencyTestResult.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/doorip-api/src/main/java/org/doorip/trip/actor/TripTendencyTestResult.java b/doorip-api/src/main/java/org/doorip/trip/actor/TripTendencyTestResult.java index a346d9c..095e16b 100644 --- a/doorip-api/src/main/java/org/doorip/trip/actor/TripTendencyTestResult.java +++ b/doorip-api/src/main/java/org/doorip/trip/actor/TripTendencyTestResult.java @@ -1,12 +1,21 @@ package org.doorip.trip.actor; +import lombok.AccessLevel; +import lombok.Builder; + import java.util.List; +@Builder(access = AccessLevel.PRIVATE) public record TripTendencyTestResult( List bestPrefer, - List> styles + List> rates, + List> counts ) { - public static TripTendencyTestResult of(List bestPrefer, List> styles) { - return new TripTendencyTestResult(bestPrefer, styles); + public static TripTendencyTestResult of(List bestPrefer, List> rates, List> counts) { + return TripTendencyTestResult.builder() + .bestPrefer(bestPrefer) + .rates(rates) + .counts(counts) + .build(); } } From f679a3ad51ef791890756a6d51a67e2b9fd8865a Mon Sep 17 00:00:00 2001 From: sunwoong Date: Sat, 9 Mar 2024 18:16:09 +0900 Subject: [PATCH 3/6] =?UTF-8?q?fix:=20=EC=97=AC=ED=96=89=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=20=EC=84=B1=ED=96=A5=20=ED=86=B5=EA=B3=84=20=EA=B3=84?= =?UTF-8?q?=EC=82=B0=20=EB=B9=84=EC=A6=88=EB=8B=88=EC=8A=A4=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=88=98=EC=A0=95=20(#151)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../trip/actor/TripTendencyTestActor.java | 51 ++++++++++--------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/doorip-api/src/main/java/org/doorip/trip/actor/TripTendencyTestActor.java b/doorip-api/src/main/java/org/doorip/trip/actor/TripTendencyTestActor.java index ee13da6..00c105d 100644 --- a/doorip-api/src/main/java/org/doorip/trip/actor/TripTendencyTestActor.java +++ b/doorip-api/src/main/java/org/doorip/trip/actor/TripTendencyTestActor.java @@ -29,12 +29,13 @@ public class TripTendencyTestActor { ); public TripTendencyTestResult calculateTripTendencyTest(List participants) { - List> styles = generateStyles(); + List> rates = generateStyles(); + List> counts = generateStyles(); int participantCount = participants.size(); - accumulateStyles(participants, styles); - List bestPrefer = calculateBestPrefer(styles, participantCount); - calculateStyleAverage(styles, participantCount); - return TripTendencyTestResult.of(bestPrefer, styles); + accumulateCounts(participants, counts); + List bestPrefer = calculateBestPrefer(counts, participantCount); + calculateRatesAverage(rates, counts, participantCount); + return TripTendencyTestResult.of(bestPrefer, rates, counts); } private List> generateStyles() { @@ -44,43 +45,47 @@ private List> generateStyles() { return styles; } - private void accumulateStyles(List participants, List> styles) { + private void accumulateCounts(List participants, List> counts) { participants.forEach(participant -> { - accumulateStyle(styles, participant.getStyleA(), 0); - accumulateStyle(styles, participant.getStyleB(), 1); - accumulateStyle(styles, participant.getStyleC(), 2); - accumulateStyle(styles, participant.getStyleD(), 3); - accumulateStyle(styles, participant.getStyleE(), 4); + accumulateCount(counts, participant.getStyleA(), 0); + accumulateCount(counts, participant.getStyleB(), 1); + accumulateCount(counts, participant.getStyleC(), 2); + accumulateCount(counts, participant.getStyleD(), 3); + accumulateCount(counts, participant.getStyleE(), 4); }); } - private List calculateBestPrefer(List> styles, int participantCount) { + private List calculateBestPrefer(List> counts, int participantCount) { List bestPrefer = new ArrayList<>(); IntStream.range(INITIALIZATION, HIGH_RANGE_STYLES) .forEach(i -> { - List style = styles.get(i); - if (style.contains(participantCount)) { + List count = counts.get(i); + if (count.contains(participantCount)) { bestPrefer.add(prefer.get(i)); } }); return bestPrefer; } - private void calculateStyleAverage(List> styles, int participantCount) { + private void calculateRatesAverage(List> rates, List> counts, int participantCount) { double percentage = 100.0 / participantCount; - styles.forEach(style -> - IntStream.range(INITIALIZATION, HIGH_RANGE_STYLE) - .forEach(i -> style.set(i, (int) Math.floor(style.get(i) * percentage)))); + IntStream.range(INITIALIZATION, HIGH_RANGE_STYLES) + .forEach(i -> { + List rate = rates.get(i); + List count = counts.get(i); + IntStream.range(INITIALIZATION, HIGH_RANGE_STYLE) + .forEach(j -> rate.set(j, (int) Math.floor(count.get(j) * percentage))); + }); } - private void accumulateStyle(List> styles, int styleValue, int pos) { - List style = styles.get(pos); + private void accumulateCount(List> counts, int styleValue, int pos) { + List count = counts.get(pos); if (styleValue < CENTER_POS) { - style.set(0, style.get(0) + 1); + count.set(0, count.get(0) + 1); } else if (styleValue == CENTER_POS) { - style.set(1, style.get(1) + 1); + count.set(1, count.get(1) + 1); } else { - style.set(2, style.get(2) + 1); + count.set(2, count.get(2) + 1); } } } From 3870ddb64f06458bb1a77fc9007f8105498bc2e2 Mon Sep 17 00:00:00 2001 From: sunwoong Date: Sat, 9 Mar 2024 18:16:36 +0900 Subject: [PATCH 4/6] =?UTF-8?q?fix:=20=EC=97=AC=ED=96=89=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=20=EC=84=B1=ED=96=A5=20=ED=86=B5=EA=B3=84=20dto=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20(#151)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/doorip/trip/dto/response/TripStyleResponse.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doorip-api/src/main/java/org/doorip/trip/dto/response/TripStyleResponse.java b/doorip-api/src/main/java/org/doorip/trip/dto/response/TripStyleResponse.java index 91ca7ae..a9e6990 100644 --- a/doorip-api/src/main/java/org/doorip/trip/dto/response/TripStyleResponse.java +++ b/doorip-api/src/main/java/org/doorip/trip/dto/response/TripStyleResponse.java @@ -3,9 +3,10 @@ import java.util.List; public record TripStyleResponse( - List rates + List rates, + List counts ) { - public static TripStyleResponse from(List rates) { - return new TripStyleResponse(rates); + public static TripStyleResponse of(List rates, List counts) { + return new TripStyleResponse(rates, counts); } } From 2ae613a5b99f021aace5de1053ab8964d5e559db Mon Sep 17 00:00:00 2001 From: sunwoong Date: Sat, 9 Mar 2024 18:17:08 +0900 Subject: [PATCH 5/6] =?UTF-8?q?fix:=20=EC=97=AC=ED=96=89=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=20=EC=A0=84=EC=B2=B4=20=EC=A1=B0=ED=9A=8C=20=EC=9D=91?= =?UTF-8?q?=EB=8B=B5=20dto=20=EC=88=98=EC=A0=95=20(#151)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/response/TripParticipantGetResponse.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/doorip-api/src/main/java/org/doorip/trip/dto/response/TripParticipantGetResponse.java b/doorip-api/src/main/java/org/doorip/trip/dto/response/TripParticipantGetResponse.java index 109d58c..1862f95 100644 --- a/doorip-api/src/main/java/org/doorip/trip/dto/response/TripParticipantGetResponse.java +++ b/doorip-api/src/main/java/org/doorip/trip/dto/response/TripParticipantGetResponse.java @@ -2,9 +2,12 @@ import lombok.AccessLevel; import lombok.Builder; +import org.doorip.common.Constants; import org.doorip.trip.domain.Participant; +import java.util.ArrayList; import java.util.List; +import java.util.stream.IntStream; @Builder(access = AccessLevel.PRIVATE) public record TripParticipantGetResponse( @@ -12,15 +15,16 @@ public record TripParticipantGetResponse( List participants, List styles ) { - public static TripParticipantGetResponse of(List bestPrefer, List participants, List> styles) { + public static TripParticipantGetResponse of(List bestPrefer, List participants, List> rates, List> counts) { + List styles = new ArrayList<>(); + IntStream.range(Constants.START_STYLE_POS, Constants.END_STYLE_POS) + .forEach(i -> styles.add(TripStyleResponse.of(rates.get(i), counts.get(i)))); return TripParticipantGetResponse.builder() .bestPrefer(bestPrefer) .participants(participants.stream() .map(TripParticipantResponse::of) .toList()) - .styles(styles.stream() - .map(TripStyleResponse::from) - .toList()) + .styles(styles) .build(); } } From ae351aab98d365ad3a9a49d82c1bdd93a7267f7d Mon Sep 17 00:00:00 2001 From: sunwoong Date: Sat, 9 Mar 2024 18:17:25 +0900 Subject: [PATCH 6/6] =?UTF-8?q?fix:=20=EC=97=AC=ED=96=89=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=20=EC=A0=84=EC=B2=B4=20=EC=A1=B0=ED=9A=8C=20=EB=B9=84?= =?UTF-8?q?=EC=A6=88=EB=8B=88=EC=8A=A4=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#151)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/doorip/trip/service/TripDetailService.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doorip-api/src/main/java/org/doorip/trip/service/TripDetailService.java b/doorip-api/src/main/java/org/doorip/trip/service/TripDetailService.java index 375a64e..f804d7a 100644 --- a/doorip-api/src/main/java/org/doorip/trip/service/TripDetailService.java +++ b/doorip-api/src/main/java/org/doorip/trip/service/TripDetailService.java @@ -61,7 +61,7 @@ public TripParticipantGetResponse getParticipants(Long userId, Long tripId) { Participant ownerParticipant = getOwnerParticipant(userId, participants); sortParticipants(participants, ownerParticipant); TripTendencyTestResult result = tripTendencyTestActor.calculateTripTendencyTest(participants); - return TripParticipantGetResponse.of(result.bestPrefer(), participants, result.styles()); + return TripParticipantGetResponse.of(result.bestPrefer(), participants, result.rates(), result.counts()); } @Transactional @@ -166,8 +166,7 @@ private boolean isEqualUserAndParticipantUser(User user, User participantUser) { private int getValidatedResult(User user) { if (user.getResult() == null) { return -1; - } - else { + } else { return user.getResult().getNumResult(); } }