본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
공부 시작 시각 인증
공부 시작 시각 인증
수강 인증 사진
수강 인증 사진
AdminTableQueryRepositoryImpl.java
package org.fastcampus.admin.repository;
import com.querydsl.core.types.Projections;
import com.querydsl.core.types.dsl.BooleanExpression;
import com.querydsl.jpa.impl.JPAQueryFactory;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.fastcampus.admin.ui.dto.*;
import org.fastcampus.admin.ui.dto.users.GetUserTableRequestDto;
import org.fastcampus.admin.ui.dto.users.GetUserTableResponseDto;
import org.fastcampus.admin.ui.query.AdminTableQueryRepository;
import org.fastcampus.auth.repository.entity.*;
import org.fastcampus.user.repository.entity.*;
import org.springframework.stereotype.Repository;
@Repository
@RequiredArgsConstructor
public class AdminTableQueryRepositoryImpl implements AdminTableQueryRepository {
private final JPAQueryFactory queryFactory;
private static final QUserAuthEntity userAuthEntity = QUserAuthEntity.userAuthEntity;
private static final QUserEntity userEntity = QUserEntity.userEntity;
@Override
public GetTableListResponse<GetUserTableResponseDto> getUserTableData(
GetUserTableRequestDto dto) {
int total = queryFactory.select(userEntity.id)
.from(userEntity)
.where(likeName(dto.getName()))
.fetch()
.size();
List<Long> ids = queryFactory
.select(userEntity.id)
.from(userEntity)
.where(
likeName(dto.getName())
).orderBy(userEntity.id.desc())
.offset(dto.getOffset())
.limit(dto.getLimit())
.fetch();
List<GetUserTableResponseDto> result = queryFactory
.select(
Projections.fields(
GetUserTableResponseDto.class,
userEntity.id.as("id"),
userAuthEntity.email.as("email"),
userEntity.name.as("name"),
userAuthEntity.role.as("role"),
userEntity.regDt.as("createdAt"),
userEntity.updDt.as("updatedAt"),
userAuthEntity.lastLoginDt.as("lastLoginAt")
)
).from(userEntity)
.join(userAuthEntity).on(userAuthEntity.userId.eq(userEntity.id))
.where(
userEntity.id.in(ids)
).orderBy(userEntity.id.desc())
.fetch();
return new GetTableListResponse<>(total, result);
}
private BooleanExpression likeName(String name) {
if (name == null || name.isEmpty()) {
return null;
}
return userEntity.name.like(name + "%");
}
}
학습 인증샷
학습 인증샷
공부 종료 시각 인증
공부 종료 시각 인증
https://bit.ly/4hTSJNB