Explorar el Código

feat:完成短信、邮件验证

wanwenbi hace 3 años
padre
commit
d08fcd2bae

+ 6 - 0
smsb-customer-manager-adapter/pom.xml

@@ -41,6 +41,12 @@
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.inspur</groupId>
+            <artifactId>smsb-event-logging-client</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 </project>

+ 5 - 0
smsb-customer-manager-adapter/src/main/java/com/inspur/customer/web/controller/authcode/AuthCodeController.java

@@ -6,6 +6,8 @@ import com.inspur.customer.service.client.authcode.AuthCodeService;
 import com.inspur.customer.service.dto.AuthCodeCheckDTO;
 import com.inspur.customer.service.dto.AuthCodeDTO;
 import com.inspur.customer.service.dto.AuthCodeCheckResponse;
+import com.inspur.inform.client.email.SmsbEmailService;
+import com.inspur.inform.object.message.EmailMessage;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -15,6 +17,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
+import java.util.List;
+
 
 /**@Description: 验证码相关接口
  * @version v1.0

+ 28 - 11
smsb-customer-manager-app/src/main/java/com/inspur/customer/service/authcode/AuthCodeServiceImpl.java

@@ -3,6 +3,7 @@ package com.inspur.customer.service.authcode;
 import com.alibaba.cola.dto.Response;
 import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import com.inspur.customer.service.client.authcode.AuthCodeService;
 import com.inspur.customer.service.dto.AuthCodeCheckDTO;
 import com.inspur.customer.service.dto.AuthCodeDTO;
@@ -10,12 +11,16 @@ import com.inspur.customer.service.dto.AuthCodeCheckResponse;
 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.object.message.sms.SmsbSmsMessageResponse;
+import com.inspur.inform.object.message.sms.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;
 
 
@@ -25,7 +30,7 @@ import java.util.concurrent.TimeUnit;
  * @date 2022/6/29 17:22
  */
 @Slf4j
-@DubboService
+@DubboService(interfaceClass = AuthCodeService.class)
 public class AuthCodeServiceImpl implements AuthCodeService {
 
     @DubboReference
@@ -46,22 +51,34 @@ public class AuthCodeServiceImpl implements AuthCodeService {
      */
     public Response sendAuthCode(AuthCodeDTO authCodeDTO){
         try{
+
             //生成一个6位验证码
             int authcode = (int)((Math.random() * 9 + 1) * 100000);
             //发送邮件
-            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.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);
+            }
             //发送手机短信
-            SendSmsResponse sendPhoneNum = smsbSmsService.send("待定 SMS_154950909", authCodeDTO.getPhoneNum(), "浪潮安播云", "{\"MSRcode\":\"" + authCodeDTO + "\"}");
-            if ("OK".equals(sendPhoneNum.body.code)) {
-                redisTemplate.opsForValue().set("smsb:authcode:phoneNum:" + authCodeDTO.getPhoneNum(), 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);
+                SmsbSmsMessageResponse smsbSmsMessageResponse = smsbSmsService.sendWarningMessage(smsMessage);
+                if (smsbSmsMessageResponse.getSuccess()) {
+                    redisTemplate.opsForValue().set("smsb:authcode:phoneNum:" + authCodeDTO.getPhoneNum(), authcode + "", 5, TimeUnit.MINUTES);
+                }
             }
         }catch (Exception e){
-            log.error("发送验证码报错 --》 {}", authCodeDTO);
+            log.error("发送验证码报错 --》 {}", authCodeDTO, e);
             return Response.buildFailure("999","发送失败!");
         }
         return Response.buildSuccess();

+ 3 - 3
smsb-customer-manager-client/src/main/java/com/inspur/customer/service/dto/AuthCodeCheckDTO.java

@@ -12,12 +12,12 @@ public class AuthCodeCheckDTO implements Serializable {
     @Email(message = "邮件格式错误")
     private String email;
 
-    @Pattern(regexp = "1[3-9]\\d{9}", message = "手机号码格式错误")
+    @Pattern(regexp = "^$|^[1][3-9][0-9]{9}$", message = "手机号码格式错误")
     private String phoneNum;
 
-    @Pattern(regexp = "\\\\d{6}", message = "请输入6位数字验证码!")
+    @Pattern(regexp = "^$|\\d{6}", message = "请输入6位数字邮箱验证码!")
     private String emailAuthCode;
 
-    @Pattern(regexp = "\\\\d{6}", message = "请输入6位数字验证码!")
+    @Pattern(regexp = "^$|\\d{6}", message = "请输入6位数字手机验证码!")
     private String phoneNumAuthCode;
 }

+ 3 - 5
smsb-customer-manager-client/src/main/java/com/inspur/customer/service/dto/AuthCodeDTO.java

@@ -12,10 +12,8 @@ public class AuthCodeDTO implements Serializable {
 
     @Email(message = "邮件格式错误")
     private String email;
-
-    @Pattern(regexp = "1[3-9]\\d{9}", message = "手机号码格式错误")
+//^[1][3-9][0-9]{9}$
+    //1[3-9]\d{9}
+    @Pattern(regexp = "^$|^[1][3-9][0-9]{9}$", message = "手机号码格式错误")
     private String phoneNum;
-
-    @Pattern(regexp = "\\\\d{6}", message = "请输入6位数字验证码!")
-    private String authCode;
 }