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; } }