package nju.seec.helper.service.impl; import nju.seec.helper.service.CodeService; import nju.seec.helper.util.Consts; import nju.seec.helper.util.MailUtils; import nju.seec.helper.util.RedisCacheUtils; import nju.seec.helper.util.SmsUtils; import org.springframework.stereotype.Service; import java.util.Random; import java.util.concurrent.TimeUnit; /** * @author cst */ @Service public class CodeServiceImpl implements CodeService { private static final int MAIL_CODE_LIVING_MINUTES = 5; private static final int PHONE_CODE_LIVING_MINUTES = 5; private final MailUtils mailUtils; private final SmsUtils smsUtils; private final RedisCacheUtils cacheUtils; public CodeServiceImpl(MailUtils mailUtils, SmsUtils smsUtils, RedisCacheUtils cacheUtils) { this.mailUtils = mailUtils; this.smsUtils = smsUtils; this.cacheUtils = cacheUtils; } @Override public void sendEmailCode(String email) { String code = getSixBitsCode(); mailUtils.sendSimpleMailMessage(String.format("您的验证码:%s,%d分钟内有效,请勿泄漏于他人!", code, MAIL_CODE_LIVING_MINUTES), email); cacheUtils.set(Consts.EMAIL_CACHE_NAME, email, code, MAIL_CODE_LIVING_MINUTES, TimeUnit.MINUTES); } private String getSixBitsCode() { return String.valueOf(new Random().nextInt(900000) + 100000); } @Override public void sendPhoneCode(String phone) { String code = getSixBitsCode(); smsUtils.sendSmsCode(phone, code); cacheUtils.set(Consts.PHONE_CACHE_NAME, phone, code, PHONE_CODE_LIVING_MINUTES, TimeUnit.MINUTES); } }