MemberMigrationInfoRegist2Service.java.svn-base 2.98 KB
Newer Older
Kim Gyeongeun committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
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);
			}
		}
	}
}