라벨러,검수자 최종로그인 28일 넘으면 사용중지 처리

This commit is contained in:
2026-01-21 14:37:12 +09:00
parent 425092f8db
commit c3fad1d27a
7 changed files with 163 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
package com.kamco.cd.kamcoback.postgres.core;
import com.kamco.cd.kamcoback.postgres.repository.members.MemberInactiveJobRepository;
import com.kamco.cd.kamcoback.scheduler.dto.MemberInactiveJobDto.MemberInfo;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class MemberInactiveJobCoreService {
private final MemberInactiveJobRepository memberInactiveJobRepository;
public List<MemberInfo> findInactiveLabelerReviewer() {
return memberInactiveJobRepository.findInactiveLabelerReviewer();
}
public void updateMemberStatusInactive(MemberInfo memberInfo) {
memberInactiveJobRepository.updateMemberStatusInactive(memberInfo);
}
}

View File

@@ -0,0 +1,7 @@
package com.kamco.cd.kamcoback.postgres.repository.members;
import com.kamco.cd.kamcoback.postgres.entity.MemberEntity;
import org.springframework.data.jpa.repository.JpaRepository;
public interface MemberInactiveJobRepository
extends JpaRepository<MemberEntity, Long>, MemberInactiveJobRepositoryCustom {}

View File

@@ -0,0 +1,11 @@
package com.kamco.cd.kamcoback.postgres.repository.members;
import com.kamco.cd.kamcoback.scheduler.dto.MemberInactiveJobDto.MemberInfo;
import java.util.List;
public interface MemberInactiveJobRepositoryCustom {
List<MemberInfo> findInactiveLabelerReviewer();
void updateMemberStatusInactive(MemberInfo memberInfo);
}

View File

@@ -0,0 +1,44 @@
package com.kamco.cd.kamcoback.postgres.repository.members;
import com.kamco.cd.kamcoback.common.enums.RoleType;
import com.kamco.cd.kamcoback.common.enums.StatusType;
import com.kamco.cd.kamcoback.postgres.entity.QMemberEntity;
import com.kamco.cd.kamcoback.scheduler.dto.MemberInactiveJobDto.MemberInfo;
import com.querydsl.core.types.Projections;
import com.querydsl.jpa.impl.JPAQueryFactory;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
@Repository
@RequiredArgsConstructor
public class MemberInactiveJobRepositoryImpl implements MemberInactiveJobRepositoryCustom {
private final JPAQueryFactory queryFactory;
private final QMemberEntity memberEntity = QMemberEntity.memberEntity;
@Override
public List<MemberInfo> findInactiveLabelerReviewer() {
ZonedDateTime checkTime = ZonedDateTime.now(ZoneId.of("Asia/Seoul")).minusDays(14);
return queryFactory
.select(Projections.constructor(MemberInfo.class, memberEntity.id, memberEntity.employeeNo))
.from(memberEntity)
.where(
memberEntity.userRole.in(RoleType.LABELER.getId(), RoleType.REVIEWER.getId()),
memberEntity.status.eq(StatusType.ACTIVE.getId()),
memberEntity.lastLoginDttm.lt(checkTime))
.fetch();
}
@Override
public void updateMemberStatusInactive(MemberInfo memberInfo) {
queryFactory
.update(memberEntity)
.set(memberEntity.status, StatusType.INACTIVE.getId())
.set(memberEntity.statusChgDttm, ZonedDateTime.now())
.where(memberEntity.id.eq(memberInfo.getId()))
.execute();
}
}