| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- package com.inspur.customer.service.authcode;
- import com.alibaba.cola.dto.Response;
- import com.google.common.collect.Lists;
- import com.google.common.collect.Maps;
- import com.inspur.customer.client.authcode.AuthCodeService;
- import com.inspur.customer.object.user.authcode.AuthCodeCheckDTO;
- import com.inspur.customer.object.user.authcode.AuthCodeCheckResponse;
- import com.inspur.customer.object.user.authcode.AuthCodeDTO;
- import com.inspur.inform.client.email.SmsbEmailService;
- import com.inspur.inform.client.sms.SmsbSmsService;
- import com.inspur.inform.object.message.EmailMessage;
- import com.inspur.inform.object.message.SmsMessage;
- import com.inspur.inform.constants.SmsbSmsTemplateType;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.dubbo.config.annotation.DubboReference;
- import org.apache.dubbo.config.annotation.DubboService;
- import org.springframework.data.redis.core.RedisTemplate;
- import javax.annotation.Resource;
- import java.util.Map;
- import java.util.concurrent.TimeUnit;
- /**
- * 验证码相关功能实现类
- * @version v1.0
- * @author joe wan
- * @date 2022/6/29 17:22
- */
- @Slf4j
- @DubboService(interfaceClass = AuthCodeService.class)
- public class AuthCodeServiceImpl implements AuthCodeService {
- @DubboReference
- SmsbSmsService smsbSmsService;
- @DubboReference
- SmsbEmailService smsbEmailService;
- @Resource
- private RedisTemplate<String, String> redisTemplate;
- /**@Description: 电话、邮件发送验证码
- * @param[com.inspur.customer.service.dto.AuthCodeDTO]
- * @return com.alibaba.cola.dto.Response
- * @version v1.0
- * @author joe wan
- * @date 2022/6/29 17:20
- */
- @Override
- public Response sendAuthCode(AuthCodeDTO authCodeDTO){
- try{
- //生成一个6位验证码
- int authcode = (int)((Math.random() * 9 + 1) * 100000);
- //发送邮件
- if(StringUtils.isNotBlank(authCodeDTO.getEmail())){
- EmailMessage emailMessage = new EmailMessage();
- emailMessage.setSubject("浪潮安播云");
- emailMessage.setEmailContent("【浪潮安播云】您的验证码"+ authcode +",该验证码5分钟内有效,请勿泄漏于他人!");
- emailMessage.setAddressees(Lists.newArrayList(authCodeDTO.getEmail()));
- Boolean aBoolean = smsbEmailService.sendEmail(emailMessage);
- if(aBoolean) {
- redisTemplate.opsForValue().set("smsb:authcode:email:" + authCodeDTO.getEmail(), authcode + "", 5, TimeUnit.MINUTES);
- }
- }
- //发送手机短信
- if(StringUtils.isNotBlank(authCodeDTO.getPhoneNum())){
- SmsMessage smsMessage = new SmsMessage();
- Map<String, String> maps = Maps.newHashMap();
- maps.put("MSRcode",""+authcode);
- smsMessage.setTemplateParam(maps);
- smsMessage.setPhones(Lists.newArrayList(authCodeDTO.getPhoneNum()));
- smsMessage.setSignName("浪潮安播云");
- smsMessage.setTemplateType(SmsbSmsTemplateType.AUTH_CODE);
- Response sendResponse = smsbSmsService.sendWarningMessage(smsMessage);
- if (sendResponse.isSuccess()) {
- redisTemplate.opsForValue().set("smsb:authcode:phoneNum:" + authCodeDTO.getPhoneNum(), authcode + "", 5, TimeUnit.MINUTES);
- }
- }
- } catch (Exception e){
- log.error("发送验证码报错 --》 {}", authCodeDTO, e);
- return Response.buildFailure("999","发送失败!");
- }
- return Response.buildSuccess();
- }
- /**@Description: 电话、邮件验证码check
- * @param[com.inspur.customer.service.dto.AuthCodeCheckDTO]
- * @return com.inspur.customer.object.user.authcode.AuthCodeCheckResponse
- * @version v1.0
- * @author joe wan
- * @date 2022/6/30 17:56
- */
- @Override
- public AuthCodeCheckResponse checkAuthCode(AuthCodeCheckDTO authCodeCheckDTO){
- AuthCodeCheckResponse result = new AuthCodeCheckResponse();
- if (StringUtils.isNotBlank(authCodeCheckDTO.getPhoneNumAuthCode())) {
- String authcodePhone = redisTemplate.opsForValue().get("smsb:authcode:phoneNum:" + authCodeCheckDTO.getPhoneNum());
- if (authCodeCheckDTO.getPhoneNumAuthCode().equals(authcodePhone)) {
- result.setCheckPhoneNum(true);
- }
- }
- if (StringUtils.isNotBlank(authCodeCheckDTO.getEmailAuthCode())) {
- String authcodeEmail = redisTemplate.opsForValue().get("smsb:authcode:email:" + authCodeCheckDTO.getEmail());
- if (authCodeCheckDTO.getEmailAuthCode().equals(authcodeEmail)) {
- result.setCheckEmail(true);
- }
- }
- return result;
- }
- }
|