SmsHelp.java 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.qxgmat.help;
  2. import com.qxgmat.data.constants.SessionKey;
  3. import com.qxgmat.dto.SmsSessionDto;
  4. import com.nuliji.tools.Transform;
  5. import com.nuliji.tools.exception.ParameterException;
  6. import com.nuliji.tools.third.aliyuncs.Aliyun;
  7. import com.nuliji.tools.third.aliyuncs.SendSmsResponse;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.beans.factory.annotation.Value;
  12. import org.springframework.stereotype.Service;
  13. import javax.annotation.Resource;
  14. import javax.servlet.http.HttpSession;
  15. import java.util.Date;
  16. import java.util.Objects;
  17. /**
  18. * Created by GaoJie on 2017/11/3.
  19. */
  20. @Service
  21. public class SmsHelp {
  22. private static final Logger logger = LoggerFactory.getLogger(SmsHelp.class);
  23. final public String REGISTER_TEMPLATE = "SMS_105270065";
  24. final public String FORGET_TEMPLATE = "SMS_105305060";
  25. final public String VALID_TEMPLATE = "";
  26. final private Integer EXPIRE_MINUTES = 15;
  27. private Aliyun aliyun;
  28. @Autowired
  29. private void getAliyun(@Value("${third.aliyuncs.accessKeyId}") String accessKeyId,
  30. @Value("${third.aliyuncs.accessKeySecret}") String accessKeySecret,
  31. @Value("${third.aliyuncs.sign}") String sign,
  32. @Value("${third.aliyuncs.regionId}") String regionId) {
  33. this.aliyun = new Aliyun(accessKeyId, accessKeySecret, sign, regionId);
  34. }
  35. public boolean sendCode(String mobile, String templateId, HttpSession session){
  36. int verifyCode = (int) ((Math.random() * 9 + 1) * 100000);
  37. String code = String.valueOf(verifyCode);
  38. SmsSessionDto dto = new SmsSessionDto();
  39. dto.setCode(code);
  40. dto.setSendMobile(mobile);
  41. Date date = new Date();
  42. date.setTime(date.getTime() + EXPIRE_MINUTES*60*1000);
  43. dto.setExpireTime(date);
  44. try {
  45. Object response = aliyun.sendSms(mobile, templateId, code);
  46. dto.setResponse(Transform.convert(response, SendSmsResponse.class));
  47. } catch (Exception e) {
  48. logger.error("发送短信失败", e);
  49. return false;
  50. }
  51. session.setAttribute(SessionKey.SMS_KEY, dto);
  52. return true;
  53. }
  54. public boolean verifyCode(String mobile, String code, HttpSession session) {
  55. SmsSessionDto dto = (SmsSessionDto) session.getAttribute(SessionKey.SMS_KEY);
  56. if(dto == null){
  57. throw new ParameterException("手机验证码错误!");
  58. }
  59. session.removeAttribute(SessionKey.SMS_KEY);
  60. String originCode = dto.getCode();
  61. String originMobile = dto.getSendMobile();
  62. Date expireTime = dto.getExpireTime();
  63. if (originCode.equalsIgnoreCase(code) && originMobile.equalsIgnoreCase(mobile)) {
  64. if (new Date().getTime() > expireTime.getTime()) {
  65. throw new ParameterException("验证码已过期!");
  66. }
  67. return true;
  68. }
  69. return false;
  70. }
  71. }