라벨러,검수자 최종로그인 28일 넘으면 사용중지 처리
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user