Browse Source

用户名卡控是否是手机号

fangzhen 7 months ago
parent
commit
16d3afb045

+ 1 - 1
ruoyi-admin/src/main/resources/application-druid.yml

@@ -4,7 +4,7 @@ spring:
         type: com.alibaba.druid.pool.DruidDataSource
         driverClassName: com.mysql.cj.jdbc.Driver
         druid:
-            # 主库数据源
+            # 主库数据源  47.122.10.161
             master:
                 url: jdbc:mysql://121.4.140.159:3306/ruoyi-community?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: root

+ 1 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -67,7 +67,7 @@ spring:
       enabled: true
   # redis 配置
   redis:
-    # 地址
+    # 地址 47.122.10.161
     host: 121.4.140.159
     # 端口,默认为6379
     port: 6379

+ 48 - 42
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java

@@ -22,14 +22,16 @@ import org.apache.commons.lang3.RandomUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 /**
  * 注册校验方法
- * 
+ *
  * @author ruoyi
  */
 @Component
-public class SysRegisterService
-{
+public class SysRegisterService {
     @Autowired
     private ISysUserService userService;
 
@@ -38,59 +40,48 @@ public class SysRegisterService
 
     @Autowired
     private RedisCache redisCache;
-    
+
     @Autowired
     private CommunityUserInfoMapper communityUserInfoMapper;
 
     /**
      * 注册
      */
-    public String register(RegisterBody registerBody)
-    {
+    public String register(RegisterBody registerBody) {
         String msg = "", username = registerBody.getUsername(), password = registerBody.getPassword();
         SysUser sysUser = new SysUser();
         sysUser.setUserName(username);
 
         // 验证码开关
         boolean captchaEnabled = configService.selectCaptchaEnabled();
-        if (captchaEnabled)
-        {
+        if (captchaEnabled) {
             validateCaptcha(username, registerBody.getCode(), registerBody.getUuid());
         }
 
-        if (StringUtils.isEmpty(username))
-        {
+        if (StringUtils.isEmpty(username)) {
             msg = "用户名不能为空";
-        }
-        else if (StringUtils.isEmpty(password))
-        {
+        } else if (!StringUtils.isEmpty(username)) {
+            boolean result = checkPhoneNumber(username);
+            if (!result) {
+                msg = "请用手机号进行注册!";
+            }
+        } else if (StringUtils.isEmpty(password)) {
             msg = "用户密码不能为空";
-        }
-        else if (username.length() < UserConstants.USERNAME_MIN_LENGTH
-                || username.length() > UserConstants.USERNAME_MAX_LENGTH)
-        {
+        } else if (username.length() < UserConstants.USERNAME_MIN_LENGTH
+                || username.length() > UserConstants.USERNAME_MAX_LENGTH) {
             msg = "账户长度必须在2到20个字符之间";
-        }
-        else if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
-                || password.length() > UserConstants.PASSWORD_MAX_LENGTH)
-        {
+        } else if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
+                || password.length() > UserConstants.PASSWORD_MAX_LENGTH) {
             msg = "密码长度必须在5到20个字符之间";
-        }
-        else if (!userService.checkUserNameUnique(sysUser))
-        {
+        } else if (!userService.checkUserNameUnique(sysUser)) {
             msg = "保存用户'" + username + "'失败,注册账号已存在";
-        }
-        else
-        {
-            sysUser.setNickName(username+ RandomUtils.nextInt(100000,999999));
+        } else {
+            sysUser.setNickName(username + RandomUtils.nextInt(100000, 999999));
             sysUser.setPassword(SecurityUtils.encryptPassword(password));
             boolean regFlag = userService.registerUser(sysUser);
-            if (!regFlag)
-            {
+            if (!regFlag) {
                 msg = "注册失败,请联系系统管理人员";
-            }
-            else
-            {
+            } else {
                 AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.register.success")));
             }
         }
@@ -109,24 +100,39 @@ public class SysRegisterService
 
     /**
      * 校验验证码
-     * 
+     *
      * @param username 用户名
-     * @param code 验证码
-     * @param uuid 唯一标识
+     * @param code     验证码
+     * @param uuid     唯一标识
      * @return 结果
      */
-    public void validateCaptcha(String username, String code, String uuid)
-    {
+    public void validateCaptcha(String username, String code, String uuid) {
         String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");
         String captcha = redisCache.getCacheObject(verifyKey);
         redisCache.deleteObject(verifyKey);
-        if (captcha == null)
-        {
+        if (captcha == null) {
             throw new CaptchaExpireException();
         }
-        if (!code.equalsIgnoreCase(captcha))
-        {
+        if (!code.equalsIgnoreCase(captcha)) {
             throw new CaptchaException();
         }
     }
+
+    /**
+     * 校验手机号
+     *
+     * @param phoneNumber 手机号
+     * @return 是否是手机号
+     */
+    public boolean checkPhoneNumber(String phoneNumber) {
+        String mobileRegEx = "^1[3,4,5,6,7,8,9][0-9]{9}$";//正则表达式
+        boolean result = true;
+        Pattern pattern = Pattern.compile(mobileRegEx);//函数语法 匹配的正则表达式
+        Matcher matcher = pattern.matcher(phoneNumber);//进行匹配
+        if (!matcher.matches()) {//校验手机号格式是否正确,若是匹配成功则返回true
+            result = false;
+            System.out.println("移动手机号格式错误");
+        }
+        return result;
+    }
 }