패스트캠퍼스
패스트캠퍼스 환급챌린지 49일차 : 9개 도메인 프로젝트로 끝내는 백엔드 웹 개발 (Java/Spring) 초격차 패키지 Online 강의 후기
이태우(1990년)
2025. 4. 22. 21:32
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
공부 시작 시각 인증
수강 인증 사진
UserStatusQueryRepositoryImpl.java
package org.fastcampus.admin.repository;
import com.querydsl.core.types.Projections;
import com.querydsl.jpa.impl.JPAQueryFactory;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.fastcampus.admin.ui.dto.GetDailyRegisterUserResponseDto;
import org.fastcampus.admin.ui.query.UserStatusQueryRepository;
import org.fastcampus.common.*;
import org.fastcampus.user.repository.entity.QUserEntity;
import org.springframework.stereotype.Repository;
@Repository
@RequiredArgsConstructor
public class UserStatusQueryRepositoryImpl implements UserStatusQueryRepository {
private final JPAQueryFactory queryFactory;
private static final QUserEntity userEntity = QUserEntity.userEntity;
@Override
public List<GetDailyRegisterUserResponseDto> getDailyRegisterStatus(int beforeDays) {
return queryFactory
.select(
Projections.fields(
GetDailyRegisterUserResponseDto.class,
userEntity.reg_date.as("date"),
userEntity.count().as("count")
)
).from(userEntity)
.where(userEntity.reg_date.after(TimeCalculator.getDateDaysAgo(beforeDays)))
.groupBy(userEntity.reg_date)
.orderBy(userEntity.reg_date.asc())
.fetch();
}
}
TimeCalculator
package org.fastcampus.common;
import java.time.LocalDate;
public class TimeCalculator {
private TimeCalculator() {
}
public static LocalDate getDateDaysAgo(int daysAgo) {
LocalDate currDate = LocalDate.now();
return currDate.minusDays(daysAgo);
}
}
AdminComtroller.java
package org.fastcampus.admin.ui;
import lombok.RequiredArgsConstructor;
import org.fastcampus.admin.ui.query.UserStatusQueryRepository;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
@RestController
@RequestMapping("/admin")
@RequiredArgsConstructor
public class AdminController {
private final UserStatusQueryRepository userStatusQueryRepository;
@GetMapping("/index")
public ModelAndView index() {
ModelAndView mav = new ModelAndView();
mav.setViewName("index");
mav.addObject("result", userStatusQueryRepository.getDailyRegisterStatus(7));
return mav;
}
}