package org.xmx0632.deliciousfruit.service;
import net.sf.ehcache.Cache;
import net.sf.ehcache.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.xmx0632.deliciousfruit.api.v1.helper.PasswordHelper;
import org.xmx0632.deliciousfruit.entity.UserAccount;
import org.xmx0632.deliciousfruit.utilities.sms.SmsService;
@Component
public class DynamicPasswordService {
public static final String CACHE_NAME = "DYNAMIC_PASSWORD_CACHE";
private static Logger log = LoggerFactory
.getLogger(DynamicPasswordService.class);
@Autowired
private SmsService smsService;
@Autowired
private UserAccountService userAccountService;
@Autowired
private Cache dynamicPasswordCache;
private String getCurrentTimeString() {
return String.valueOf(System.currentTimeMillis());
}
public boolean sendDynamicPassword(String phoneNumber) {
UserAccount userAccount = userAccountService
.findByUsername(phoneNumber);
if (userAccount == null) {
log.debug("userAccount not exist [{}]", phoneNumber);
return false;
}
String currentTime = getCurrentTimeString();
String password = PasswordHelper.generatePassword(currentTime, 4);
boolean sendDynamicPasswordSuccess = smsService.sendDynamicPassword(
phoneNumber, password);
if (sendDynamicPasswordSuccess) {
log.debug("generate dynamic passord [{}] for [{}]", password,
phoneNumber);
String encodedPassword = PasswordHelper.md5(password);
dynamicPasswordCache.put(new Element(phoneNumber, encodedPassword));
return true;
}
return false;
}
}