CodeServiceImpl.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package nju.seec.helper.service.impl;
  2. import nju.seec.helper.service.CodeService;
  3. import nju.seec.helper.util.Consts;
  4. import nju.seec.helper.util.MailUtils;
  5. import nju.seec.helper.util.RedisCacheUtils;
  6. import nju.seec.helper.util.SmsUtils;
  7. import org.springframework.stereotype.Service;
  8. import java.util.Random;
  9. import java.util.concurrent.TimeUnit;
  10. /**
  11. * @author cst
  12. */
  13. @Service
  14. public class CodeServiceImpl implements CodeService {
  15. private static final int MAIL_CODE_LIVING_MINUTES = 5;
  16. private static final int PHONE_CODE_LIVING_MINUTES = 5;
  17. private final MailUtils mailUtils;
  18. private final SmsUtils smsUtils;
  19. private final RedisCacheUtils cacheUtils;
  20. public CodeServiceImpl(MailUtils mailUtils, SmsUtils smsUtils, RedisCacheUtils cacheUtils) {
  21. this.mailUtils = mailUtils;
  22. this.smsUtils = smsUtils;
  23. this.cacheUtils = cacheUtils;
  24. }
  25. @Override
  26. public void sendEmailCode(String email) {
  27. String code = getSixBitsCode();
  28. mailUtils.sendSimpleMailMessage(String.format("您的验证码:%s,%d分钟内有效,请勿泄漏于他人!", code, MAIL_CODE_LIVING_MINUTES), email);
  29. cacheUtils.set(Consts.EMAIL_CACHE_NAME, email, code, MAIL_CODE_LIVING_MINUTES, TimeUnit.MINUTES);
  30. }
  31. private String getSixBitsCode() {
  32. return String.valueOf(new Random().nextInt(900000) + 100000);
  33. }
  34. @Override
  35. public void sendPhoneCode(String phone) {
  36. String code = getSixBitsCode();
  37. smsUtils.sendSmsCode(phone, code);
  38. cacheUtils.set(Consts.PHONE_CACHE_NAME, phone, code, PHONE_CODE_LIVING_MINUTES, TimeUnit.MINUTES);
  39. }
  40. }