Browse Source

fix 注册登录

Administrator 2 years ago
parent
commit
2f9247c7a6

+ 29 - 13
ruoyi-admin/src/main/java/com/ruoyi/web/controller/index/IndexController.java

@@ -1,5 +1,7 @@
 package com.ruoyi.web.controller.index;
 
+import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
+import com.aliyun.teautil.models.RuntimeOptions;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.constant.Constants;
@@ -7,18 +9,19 @@ import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.SendSmsUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.web.service.SysLoginService;
 import com.ruoyi.system.domain.KaoqinConfig;
 import com.ruoyi.system.domain.KaoqinRecord;
-import com.ruoyi.system.service.IKaoqinRecordService;
-import com.ruoyi.system.service.ISysDeptService;
-import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.domain.SendSms;
+import com.ruoyi.system.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -32,6 +35,7 @@ import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 import static com.ruoyi.common.utils.SecurityUtils.checkStrongPwd;
@@ -59,6 +63,11 @@ public class IndexController extends BaseController {
     @Autowired
     private ISysDeptService deptService;
 
+    @Autowired
+    private ISendSmsService sendSmsService;
+
+    @Autowired
+    private ISysDictDataService dictDataService;
 
     /**
      * app新增用户
@@ -86,23 +95,30 @@ public class IndexController extends BaseController {
         if (!user.getCode().equals(redisCache.getCacheObject(CacheConstants.SMS_CODE_KEY + user.getPhonenumber()))) {
             return error("新增用户'" + user.getUserName() + "'失败,短信验证码错误");
         }
-   /* else if ("1".equals(checkStrongPwd(user.getPassword()))) {
-            return AjaxResult.error("密码必须包含数字、大小写字母、特殊符号且大于8位");
-        }*/
         user.setCreateBy("APP");
         AjaxResult ajax = AjaxResult.success();
         // 生成令牌
         user.setCreateBy(user.getUserName());
         //生成一个密码
-        //String password = randomPassword();
-        String password = user.getUserName() + "Abc#";
+        String password = randomPassword();
         user.setPassword(password);
-        //todo 密码 要发送短信给用户
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
-        if (userService.insertUser(user) > 0) {
-            String token = loginService.loginZhuCe(user.getUserName(), password);
-            ajax.put(Constants.TOKEN, token);
-            return ajax;
+        // 密码 要发送短信给用户  SMS_270200447
+        String code = SendSmsUtils.sendPassword(password, user.getPhonenumber());
+        SendSms sendSms = new SendSms();
+        sendSms.setPhone(user.getPhonenumber());
+        sendSms.setContent("【中新云】尊敬的用户您好,您的中新云密码已经默认为"+password+",请妥善保管并且建议修改密码。");
+        if ("OK".equals(code)){
+            sendSms.setStatus("发送成功");
+            sendSmsService.insertSendSms(sendSms);
+            if (userService.insertUser(user) > 0) {
+                String token = loginService.loginZhuCe(user.getUserName(), password);
+                ajax.put(Constants.TOKEN, token);
+                return ajax;
+            }
+        }else {
+            sendSms.setStatus("发送失败");
+            sendSmsService.insertSendSms(sendSms);
         }
         return AjaxResult.error();
     }

+ 34 - 3
ruoyi-common/src/main/java/com/ruoyi/common/utils/SendSmsUtils.java

@@ -1,8 +1,8 @@
 package com.ruoyi.common.utils;
 
 
-
-import com.aliyun.tea.*;
+import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
+import com.aliyun.teautil.models.RuntimeOptions;
 
 /**
  * @author tjf
@@ -16,7 +16,7 @@ public class SendSmsUtils {
 
     //生成X位验证码
     public static String getCode(Integer num) {
-        String[] codes = { "1", "2", "3", "4", "5", "6", "7", "8", "9"};
+        String[] codes = {"1", "2", "3", "4", "5", "6", "7", "8", "9"};
         StringBuilder code = new StringBuilder();
         for (int i = 0; i < num; i++) {
             int j = (int) (Math.random() * 10);
@@ -27,6 +27,7 @@ public class SendSmsUtils {
 
     /**
      * 使用AK&SK初始化账号Client
+     *
      * @return Client
      * @throws Exception
      */
@@ -40,4 +41,34 @@ public class SendSmsUtils {
         config.endpoint = "dysmsapi.aliyuncs.com";
         return new com.aliyun.dysmsapi20170525.Client(config);
     }
+
+    /**
+     * 发送注册的随机密码
+     *
+     * @return
+     */
+    public static String sendPassword(String password,String phone) {
+        String code = "";
+        try {
+            // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html
+            com.aliyun.dysmsapi20170525.Client client = SendSmsUtils.createClient();
+            String smsCode = "{\"password\":\"" + password + "\"}";
+            com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
+                    //手机号码
+                    .setPhoneNumbers(phone)
+                    //短信签名名称。潜山市数据资源局
+                    .setSignName("中新云")
+                    //短信模板CODE
+                    .setTemplateCode("SMS_270200447")
+                    //短信模板变量对应的实际值{"name": code}
+                    .setTemplateParam(smsCode);
+            // 复制代码运行请自行打印 API 的返回值
+            System.out.println("发送短信" + "尊敬的用户您好,您的中新云密码已经默认为" + password + ",请妥善保管并且建议修改密码。");
+            SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, new RuntimeOptions());
+            code = sendSmsResponse.getBody().code;
+            System.out.println(code);
+        } catch (Exception _error) {
+        }
+        return code;
+    }
 }