From ab7ee4e09017f151b4542e7f4c32ac8a9b963f3d Mon Sep 17 00:00:00 2001 From: hyeonjeongs Date: Sat, 9 Mar 2024 20:38:32 +0900 Subject: [PATCH] =?UTF-8?q?YEL-223=20[fix]=20=EA=B2=80=EC=83=89=20?= =?UTF-8?q?=EB=B9=88=EB=A6=AC=EC=8A=A4=ED=8A=B8=EC=8B=9C=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EB=B0=9C=EC=83=9D=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/repository/UserJpaRepository.java | 9 -------- .../user/repository/UserRepositoryImpl.java | 21 ++++++++++++++++++- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/yello/server/domain/user/repository/UserJpaRepository.java b/src/main/java/com/yello/server/domain/user/repository/UserJpaRepository.java index 5e6d6df7..f6299dce 100644 --- a/src/main/java/com/yello/server/domain/user/repository/UserJpaRepository.java +++ b/src/main/java/com/yello/server/domain/user/repository/UserJpaRepository.java @@ -86,15 +86,6 @@ List findAllByGroupContainingName(@Param("groupName") String groupName, List findAllByOtherGroupContainingName(@Param("groupName") String groupName, @Param("keyword") String keyword, @Param("uuidList") List uuidList); - @Query("select u from User u " + - "where u.group.groupName like CONCAT('%', :keyword, '%') " + - "and u.uuid not in :uuidList " + - "and u not in :friendList " + - "and u.deletedAt is null " + - "order by u.name ASC ") - List findAllByGroupContaining(@Param("keyword") String keyword, @Param("uuidList") List uuidList, @Param("friendList") List friendList); - - @Query("select u from User u " + "where u.group.groupName = :groupName " + "and u.uuid not in :uuidList " diff --git a/src/main/java/com/yello/server/domain/user/repository/UserRepositoryImpl.java b/src/main/java/com/yello/server/domain/user/repository/UserRepositoryImpl.java index 7a9a85af..2ac72a3d 100644 --- a/src/main/java/com/yello/server/domain/user/repository/UserRepositoryImpl.java +++ b/src/main/java/com/yello/server/domain/user/repository/UserRepositoryImpl.java @@ -1,10 +1,15 @@ package com.yello.server.domain.user.repository; +import static com.yello.server.domain.user.entity.QUser.user; import static com.yello.server.global.common.ErrorCode.AUTH_UUID_NOT_FOUND_USER_EXCEPTION; import static com.yello.server.global.common.ErrorCode.DEVICE_TOKEN_NOT_FOUND_USER_EXCEPTION; import static com.yello.server.global.common.ErrorCode.USERID_NOT_FOUND_USER_EXCEPTION; import static com.yello.server.global.common.ErrorCode.YELLOID_NOT_FOUND_USER_EXCEPTION; +import com.querydsl.core.BooleanBuilder; +import com.querydsl.core.QueryMetadata; +import com.querydsl.core.types.Predicate; +import com.querydsl.jpa.impl.JPAQueryFactory; import com.yello.server.domain.user.entity.User; import com.yello.server.domain.user.exception.UserNotFoundException; import java.util.List; @@ -21,6 +26,7 @@ public class UserRepositoryImpl implements UserRepository { private final UserJpaRepository userJpaRepository; + private final JPAQueryFactory jpaQueryFactory; @Override public User save(User user) { @@ -155,7 +161,20 @@ public List findAllByOtherGroupContainingYelloId(String groupName, String @Override public List findAllByGroupNameContainingAndFriendListNotContaining(String keyword, List uuidList, List friendList) { - return userJpaRepository.findAllByGroupContaining(keyword, uuidList, friendList); + BooleanBuilder whereClause = new BooleanBuilder(); + + whereClause.and(user.group.groupName.like("%" + keyword + "%")); + whereClause.and(user.uuid.notIn(uuidList)); + whereClause.and(user.deletedAt.isNull()); + if(!friendList.isEmpty()) { + whereClause.and(user.notIn(friendList)); + } + + return jpaQueryFactory.selectFrom(user) + .where(whereClause) + .orderBy(user.name.asc()) + .fetch(); + } @Override