package com.pollex.pam.service; import com.pollex.pam.domain.LoginRecord; import com.pollex.pam.enums.LoginResult; import com.pollex.pam.repository.LoginRecordRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Optional; import static com.pollex.pam.enums.LoginMethod.E_SERVICE; import static com.pollex.pam.enums.LoginMethod.OTP; import static com.pollex.pam.enums.LoginResult.FAIL; import static com.pollex.pam.enums.LoginResult.SUCCESS; @Service @Transactional public class LoginRecordService { @Autowired LoginRecordRepository loginRecordRepository; public Optional findLatestLoginRecord(String account, LoginResult loginResult) { return loginRecordRepository.findTopByAccountAndResultOrderByLoginDateDesc(account, loginResult); } public void saveOTPLoginSuccessRecord(String account) { LoginRecord loginRecord = new LoginRecord(); loginRecord.setAccount(account); loginRecord.setLoginMethod(OTP); loginRecord.setResult(SUCCESS); loginRecordRepository.save(loginRecord); } public void saveOTPLoginFailRecord(String account, String failReason) { LoginRecord loginRecord = new LoginRecord(); loginRecord.setAccount(account); loginRecord.setLoginMethod(OTP); loginRecord.setResult(FAIL); loginRecord.setFailedReason(failReason); loginRecordRepository.save(loginRecord); } public void saveEServiceLoginSuccessRecord(String account) { LoginRecord loginRecord = new LoginRecord(); loginRecord.setAccount(account); loginRecord.setLoginMethod(E_SERVICE); loginRecord.setResult(SUCCESS); loginRecordRepository.save(loginRecord); } public void saveEServiceLoginFailRecord(String account, String failReason) { LoginRecord loginRecord = new LoginRecord(); loginRecord.setAccount(account); loginRecord.setLoginMethod(E_SERVICE); loginRecord.setResult(FAIL); loginRecord.setFailedReason(failReason); loginRecordRepository.save(loginRecord); } }