Skip to content

Commit

Permalink
어드민 : 본사에 의한 회원 조회 및 역할 수정 (#80) (#85)
Browse files Browse the repository at this point in the history
* feat : 본사 회원 조회 api

* feat : 본사 회원 조회 api

* refact : 회원 삭제

* refact : 회원 역할 수정

* refact : 본사에 의한 회원 조회 및 역할 수정

* refact : 본사에 의한 회원 조회

* refact : 역할 수정 에러 해결

Co-authored-by: Songhyeon Seo <[email protected]>
  • Loading branch information
seulgi99 and songhyeon99 authored Jan 30, 2024
1 parent 325db9d commit 5ec8831
Show file tree
Hide file tree
Showing 9 changed files with 54 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import likelion.univ.adminUser.dto.response.UserInfoResponseDto;
import likelion.univ.adminUser.usecase.FindAllByHeadqueatersUseCase;
import likelion.univ.common.response.PageResponse;
import likelion.univ.domain.user.entity.Role;
import likelion.univ.response.SuccessResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -31,8 +32,8 @@ public class HeadquatersController {
public SuccessResponse<PageResponse<UserInfoResponseDto>> findUsersByUnivOfUser(
@ParameterObject @PageableDefault(size=12, page = 0,
sort="createdDate", direction = Sort.Direction.DESC) Pageable pageable,
@RequestParam(required = false) String role, @RequestParam(required = false) String univName) {
PageResponse<UserInfoResponseDto> response = findAllByHeadqueatersUseCase.execute(pageable, role, univName);
@RequestParam(required = false) Role role, @RequestParam(required = false) String univName) {
PageResponse<UserInfoResponseDto> response = findAllByHeadqueatersUseCase.execute(role, univName, pageable);
return SuccessResponse.of(response);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package likelion.univ.adminUser.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import likelion.univ.domain.user.entity.Role;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
Expand All @@ -26,7 +27,7 @@ public class UpdateUserRequestDto {
private Long ordinal;
@NotBlank
@Schema(description = "역할", example = "MANAGER", required = true)
private String role;
private Role role;


}
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,11 @@ public class FindAllByHeadqueatersUseCase {

private final UserAdaptor userAdaptor;

public PageResponse execute(Pageable pageable, String role, String univName){
Page<User> users = userAdaptor.findAllWithUniversity(pageable);
if (role != null && univName == null) {
users = userAdaptor.findByRole(Role.valueOf(role), pageable);
}else if (role == null && univName != null) {
users = userAdaptor.findByUnivName(univName, pageable);
}else if (role != null && univName != null){
users = userAdaptor.findByUnivNameAndRole(Role.valueOf(role), univName, pageable);
}
public PageResponse<UserInfoResponseDto> execute(Role role, String univName, Pageable pageable) {

return PageResponse.of(users.map(u-> UserInfoResponseDto.of(u)));
}
Page<User> users = userAdaptor.findByUnivNameAndRole(role, univName, pageable);

return PageResponse.of(users.map(u -> UserInfoResponseDto.of(u)));

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class UpdateUserUseCase {


public UserInfoResponseDto execute(Long userId, UpdateUserRequestDto updateUserRequestDto){
User user = userAdaptor.findById(userId);
User user = userAdaptor.findByIdWithUniversity(userId);
userDomainService.updateUser(user, updateUserRequestDto.getName(),
updateUserRequestDto.getPart(),updateUserRequestDto.getMajor(),
updateUserRequestDto.getOrdinal(), updateUserRequestDto.getRole());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,19 +41,10 @@ public Page<User> findByUniversityInfoUniversityId(Long id, Pageable pageable) {
return userRepository.findByUniversityInfoUniversityId(id, pageable);
}


public Page<User> findAll(Pageable pageable) {
return userRepository.findAll(pageable);
}
public Page<User> findByUnivName(String univName, Pageable pageable){
return userRepository.findByUniversityInfoUniversityName(univName, pageable);
}
public Page<User> findByRole(Role role, Pageable pageable){
return userRepository.findByAuthInfoRole(role, pageable);
}
public Page<User> findByUnivNameAndRole(Role role, String univName, Pageable pageable){
public Page<User> findByUnivNameAndRole(Role role, String univName, Pageable pageable) {
return userRepository.findByUnivNameAndRole(role, univName, pageable);
}

public List<User> findDynamicUsers(UserSearchCondition condition) {
return userRepository.findDynamicUsers(condition);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package likelion.univ.domain.user.repository;

import likelion.univ.domain.user.entity.Role;
import likelion.univ.domain.user.entity.User;
import likelion.univ.domain.user.repository.searchcondition.UserSearchCondition;
import org.springframework.data.domain.Page;
Expand All @@ -15,4 +16,5 @@ public interface UserCustomRepository {
Slice<User> searchByName(String name, Pageable pageable);
List<User> findMyFollowingUsersByFollowingIdIn(Long followerId, List<Long> followingIdList);
Page<User> findAllWithUniversity(Pageable pageable);
Page<User> findByUnivNameAndRole(Role role, String univName, Pageable pageable);
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,28 +18,6 @@ public interface UserRepository extends JpaRepository<User,Long>, UserCustomRepo
countQuery = "SELECT count(u.id) FROM User u join u.universityInfo.university " +
"where u.universityInfo.university.id = :univId and u.authInfo.accountStatus= 'ACTIVE'")
Page<User> findByUniversityInfoUniversityId(Long univId, Pageable pageable);
@Query(value = "SELECT u FROM User u join fetch u.universityInfo.university " +
"where u.universityInfo.university.name like :univName% and u.authInfo.role = :role " +
"and u.authInfo.accountStatus= 'ACTIVE'",
countQuery = "SELECT count(u.id) FROM User u join u.universityInfo.university " +
"where u.universityInfo.university.name like :univName% and u.authInfo.role = :role " +
"and u.authInfo.accountStatus= 'ACTIVE'")
Page<User> findByUnivNameAndRole(Role role, String univName, Pageable pageable);
@Query(value = "SELECT u FROM User u " +
"where u.authInfo.accountStatus= 'ACTIVE'",
countQuery = "SELECT count(u.id) FROM User u " +
"where u.authInfo.accountStatus= 'ACTIVE'")
Page<User> findAll(Pageable pageable);
@Query(value = "SELECT u FROM User u join fetch u.universityInfo.university " +
"where u.universityInfo.university.name like :univName% and u.authInfo.accountStatus= 'ACTIVE'",
countQuery = "SELECT count(u.id) FROM User u join u.universityInfo.university " +
"where u.universityInfo.university.name like :univName% and u.authInfo.accountStatus= 'ACTIVE'")
Page<User> findByUniversityInfoUniversityName(String univName, Pageable pageable);
@Query(value = "SELECT u FROM User u join fetch u.universityInfo.university " +
"where u.authInfo.role = :role and u.authInfo.accountStatus= 'ACTIVE'",
countQuery = "SELECT count(u.id) FROM User u join u.universityInfo.university " +
"where u.authInfo.role = :role and u.authInfo.accountStatus= 'ACTIVE'")
Page<User> findByAuthInfoRole(Role role, Pageable pageable);

@Query(value = "SELECT u FROM User u join fetch u.universityInfo.university where u.id = :id ")
Optional<User> findByIdWithUniversity(Long id);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,12 @@
import likelion.univ.common.processor.ConvertSliceProcessor;
import likelion.univ.domain.user.entity.AccountStatus;
import likelion.univ.domain.user.entity.Part;
import likelion.univ.domain.user.entity.Role;
import likelion.univ.domain.user.entity.User;
import likelion.univ.domain.user.repository.UserCustomRepository;
import likelion.univ.domain.user.repository.searchcondition.UserSearchCondition;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.*;
import org.springframework.data.support.PageableExecutionUtils;
import org.springframework.util.StringUtils;

Expand Down Expand Up @@ -53,11 +51,45 @@ private BooleanExpression containsName(String searchName) {
private BooleanExpression eqUniversity(String searchUniversity) {
return searchUniversity != null ? user.universityInfo.university.name.eq(searchUniversity) : null;
}
private BooleanExpression startsWithUniversity(String searchUniversity) {
return StringUtils.hasText(searchUniversity) ?
user.universityInfo.university.name.startsWith(searchUniversity) : null;
}

private BooleanExpression eqPart(String searchPart) {
return searchPart != null ? user.profile.part.eq(Part.valueOf(searchPart)) : null;
}

private BooleanExpression eqRole(Role role) {
return role != null ?
switch (role){
case GUEST -> user.authInfo.role.eq(Role.GUEST);
case USER -> user.authInfo.role.eq(Role.USER);
case MANAGER -> user.authInfo.role.eq(Role.MANAGER);
case UNIVERSITY_ADMIN -> user.authInfo.role.eq(Role.UNIVERSITY_ADMIN);
case SUPER_ADMIN -> user.authInfo.role.eq(Role.SUPER_ADMIN);
}
: null;
}


@Override
public Page<User> findByUnivNameAndRole(Role role, String univName, Pageable pageable){
List<User> users =
queryFactory
.select(user)
.from(user)
.innerJoin(user.universityInfo.university, university).fetchJoin()
.where(startsWithUniversity(univName),
eqRole(role),
user.authInfo.accountStatus.eq(AccountStatus.ACTIVE))
.orderBy(user.createdDate.desc())
.fetch();

return new PageImpl<>(users, pageable, users.size());

}


@Override
public Slice<User> findFollowingUsersByFollowerID(Long followerId, Pageable pageable){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,14 @@ public User editProfile(Long userId, Profile profile){
return user;
}


@Transactional
public void updateUser(User user, String name, String part,
String major, Long ordinal, String role){
String major, Long ordinal, Role role){

user.getProfile().updateProfile(name,Part.valueOf(part));
user.getUniversityInfo().updateUniversityInfo(major,ordinal);
user.getAuthInfo().updateRole(Role.valueOf(role));
user.getAuthInfo().updateRole(role);

userAdaptor.save(user);
}
Expand Down

0 comments on commit 5ec8831

Please sign in to comment.