HouseholdCleanupService.java
package com.hwhub.batch.application.service;
import com.hwhub.batch.domain.enums.ProgramType;
import com.hwhub.batch.domain.repository.HouseholdRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@RequiredArgsConstructor
@Slf4j
public class HouseholdCleanupService {
private static final long SYSTEM_USER_ID = 2;
private final HouseholdRepository repository;
@Transactional
public int cleanupHouseholds() {
log.info("Starting household cleanup...");
// 1ヶ月以上更新がなく、メンバーが0人の世帯を物理削除する
// 付随するデータもカスケード削除される(Repository実装内で処理)
int deletedCount =
repository.deleteOrphanedHouseholds(SYSTEM_USER_ID, ProgramType.BTC_HLD_CLEN.getCode());
log.info("Finished household cleanup. Deleted count: {}", deletedCount);
return deletedCount;
}
}