package jp.agentec.sinaburocast.service; import java.sql.Timestamp; import java.util.List; import jp.agentec.sinaburocast.common.util.PropertyUtil; import jp.agentec.sinaburocast.dto.PointRecoveryDto; import jp.agentec.sinaburocast.entity.GiftExchange; import jp.agentec.sinaburocast.entity.Member; import org.apache.log4j.Logger; public class MemberMigrationInfoRegist2Service { private final Logger logger = Logger.getLogger(getClass()); public PointGet2Service pointGet2Service; public GiftExchangeService giftExchangeService; public MemberService memberService; public void pointRecovery(List<Integer> checkApplyDateMemberList) { String updateId = PropertyUtil.getString("BATCH_UPDATE"); // 対象利用者の検索、ポイント使用の合計算出 List<PointRecoveryDto> findPointRecoveryDtoList = pointGet2Service.findPointRecoveryDto(); logger.info("更新対象件数:" + findPointRecoveryDtoList.size()); for (int i = 0; i < findPointRecoveryDtoList.size(); i++) { if (0 == ((i + 1) % 100)) { logger.info("現在処理件数:" + i); } PointRecoveryDto dto = findPointRecoveryDtoList.get(i); pointGet2Service.clearPointUseNumByMemberId(dto.memberId); if (checkApplyDateMemberList.contains(dto.memberId)) { // 今年使用したポイント int thisYearPointUseNum = giftExchangeService.getSumRequiredPointByMemberId(dto.memberId); // 去年使用したポイント int lastYearPointUseNum = dto.amountPointUseNum - thisYearPointUseNum; // 去年までのポイント消込 pointGet2Service.cutDownPointLogicForMaigration(lastYearPointUseNum, dto.memberId, updateId); List<GiftExchange> giftExchangeList = giftExchangeService.findBymemberId(dto.memberId); for (GiftExchange gift : giftExchangeList) { // ポイント有効期限チェック pointGet2Service.cutExpiredPointBySqlForRecover(gift.applyDate, dto.memberId); // 今年使用したポイント消込 pointGet2Service.cutDownPointLogicForMaigration(gift.gift.requiredPoint, dto.memberId, updateId); } } else { pointGet2Service.cutDownPointLogicForMaigration(dto.amountPointUseNum, dto.memberId, updateId); } Timestamp timestampNow = new Timestamp(System.currentTimeMillis()); pointGet2Service.cutExpiredPointBySqlForRecover(timestampNow, dto.memberId); // メンバーテーブルとのポイント不一致チェック Member member = memberService.findById(dto.memberId); Integer sumPointUseNum = pointGet2Service.findPointSumByMemberId(dto.memberId); if(member == null){ logger.warn("メンバーテーブル 存在なし " + "MemberId:" + dto.memberId + "、sum point_use_num:" + sumPointUseNum); } else if (!member.pointNum.equals(sumPointUseNum) && member.delFlg == 0) { logger.warn("ポイント不一致 " + "MemberId:" + dto.memberId + "、member point: " + member.pointNum + "、sum point_use_num:" + sumPointUseNum); member.pointNum = sumPointUseNum; memberService.update(member, updateId); } } } }