diff --git a/moonshot-api/src/main/java/org/moonshot/objective/service/ObjectiveService.java b/moonshot-api/src/main/java/org/moonshot/objective/service/ObjectiveService.java index 86536eb1..ff9acadf 100644 --- a/moonshot-api/src/main/java/org/moonshot/objective/service/ObjectiveService.java +++ b/moonshot-api/src/main/java/org/moonshot/objective/service/ObjectiveService.java @@ -11,9 +11,7 @@ import static org.moonshot.validator.IndexValidator.isSameIndex; import java.time.LocalDate; -import java.util.Comparator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.moonshot.common.model.Period; @@ -144,7 +142,10 @@ public HistoryResponseDto getObjectiveHistory(final Long userId, final Integer y @Transactional(readOnly = true) public List getObjectiveSocial() { List objectives = objectiveRepository.findSocialObjectives(); + Set objectiveIds = new LinkedHashSet<>(); + return objectives.stream() + .filter(objective -> objectiveIds.add(objective.getId())) .map(SocialOKRResponseDto::of) .toList(); } diff --git a/moonshot-common/src/main/java/org/moonshot/constants/RegexConstants.java b/moonshot-common/src/main/java/org/moonshot/constants/RegexConstants.java index b1c5056a..fad49d34 100644 --- a/moonshot-common/src/main/java/org/moonshot/constants/RegexConstants.java +++ b/moonshot-common/src/main/java/org/moonshot/constants/RegexConstants.java @@ -1,5 +1,5 @@ package org.moonshot.constants; public class RegexConstants { - public static final String nicknameRegex = "^[a-zA-Z0-9가-힣]{1,7}$"; + public static final String nicknameRegex = "^[a-zA-Z0-9ㄱ-ㅎㅏ-ㅣ가-힣]{1,7}$"; } diff --git a/moonshot-domain/src/main/java/org/moonshot/objective/repository/ObjectiveCustomRepositoryImpl.java b/moonshot-domain/src/main/java/org/moonshot/objective/repository/ObjectiveCustomRepositoryImpl.java index 350884f8..d8a5996b 100644 --- a/moonshot-domain/src/main/java/org/moonshot/objective/repository/ObjectiveCustomRepositoryImpl.java +++ b/moonshot-domain/src/main/java/org/moonshot/objective/repository/ObjectiveCustomRepositoryImpl.java @@ -3,11 +3,17 @@ import static org.moonshot.keyresult.model.QKeyResult.keyResult; import static org.moonshot.objective.model.QObjective.objective; import static org.moonshot.task.model.QTask.task; +import static org.moonshot.user.model.QUser.user; import com.querydsl.core.types.OrderSpecifier; import com.querydsl.core.types.dsl.BooleanExpression; import com.querydsl.jpa.impl.JPAQueryFactory; + +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.hibernate.Hibernate; @@ -72,12 +78,12 @@ private OrderSpecifier order(Criteria criteria) { @Override public List findSocialObjectives() { - return queryFactory.selectFrom(objective).distinct() - .join(objective.user).fetchJoin() + return queryFactory.selectFrom(objective) + .join(objective.user, user).fetchJoin() .leftJoin(objective.keyResultList, keyResult).fetchJoin() .leftJoin(keyResult.taskList, task) .where(objective.isPublic.eq(true)) - .orderBy(objective.heartCount.desc(), objective.id.desc(), keyResult.idx.asc(), task.id.asc()) + .orderBy(objective.heartCount.desc(), objective.id.desc(), keyResult.idx.asc(), task.idx.asc()) .limit(10) .fetch(); }