Browse Source

短信登录、绑定运营人员

huangzhiguo 2 years ago
parent
commit
5c1ba60892

+ 4 - 0
src/main/java/com/caimei365/user/components/CommonService.java

@@ -63,6 +63,7 @@ public class CommonService {
             if ("dev".equals(profile) || "beta".equals(profile)){
                 redisSmsCode = (null != redisSmsCode && !"null".equals(redisSmsCode) ? redisSmsCode : "666666");
             }
+            log.info("手机验证码校验" + smsCode.equals(redisSmsCode));
             if (!smsCode.equals(redisSmsCode)) {
                 return "手机验证码错误";
             }
@@ -104,6 +105,9 @@ public class CommonService {
     public String operationBindCheck(String mobile, String smsCode) {
         // 手机号验证
         String result = mobileAndCodeValidate(mobile, smsCode);
+        if ("手机验证码错误".equals(result)) {
+            return result;
+        }
         if (result != null) {
             // 查询使用该手机号的运营人员或用户
             UserLoginVo dbUser = loginMapper.getLoginUserByMobile(mobile);

+ 1 - 1
src/main/java/com/caimei365/user/model/dto/LoginCodeDto.java

@@ -3,7 +3,6 @@ package com.caimei365.user.model.dto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 /**
@@ -47,5 +46,6 @@ public class LoginCodeDto implements Serializable {
      * 短信、密码
      * 0 密码 1短信
      */
+    @ApiModelProperty("验证类型")
     private String codeType;
 }

+ 2 - 2
src/main/java/com/caimei365/user/service/impl/BaseServiceImpl.java

@@ -355,7 +355,7 @@ public class BaseServiceImpl implements BaseService {
             return ResponseJson.error("该手机号暂未注册");
         }
         // 生成6位数验证码
-        String randomCode = CodeUtil.getRandomCharAndNumr(6);
+        String randomCode = CodeUtil.generateCodeInt(6);
         // 开发、测试环境下短信验证码固定为 666666
         boolean isCode = "dev".equals(profile)|| "beta".equals(profile);
         if (isCode) {
@@ -397,7 +397,7 @@ public class BaseServiceImpl implements BaseService {
             return ResponseJson.error("该手机号暂未注册");
         }
         // 生成6位数验证码
-        String randomCode = CodeUtil.getRandomCharAndNumr(6);
+        String randomCode = CodeUtil.generateCodeInt(6);
         // 开发、测试环境下短信验证码固定为666666
         boolean isCode = "dev".equals(profile)||"beta".equals(profile);
         if (isCode) {

+ 58 - 29
src/main/java/com/caimei365/user/service/impl/LoginServiceImpl.java

@@ -197,7 +197,6 @@ public class LoginServiceImpl implements LoginService {
                         // 返回登录校验结果
                         return logonVerify(baseUser);
                     }
-
                 } else {
                     return ResponseJson.error("验证码不匹配,请重新输入");
                 }
@@ -695,6 +694,7 @@ public class LoginServiceImpl implements LoginService {
     @Override
     public ResponseJson<UserLoginVo> qrCodeAuthScanBind(ScanBindDto scanBindDto) {
         String mobileOrEmail = null;
+
         if (!ObjectUtils.isEmpty(scanBindDto.getMobileOrEmail())) {
             mobileOrEmail = scanBindDto.getMobileOrEmail();
         }
@@ -1084,41 +1084,70 @@ public class LoginServiceImpl implements LoginService {
      */
     @Override
     public ResponseJson<String> operateVerification(LoginCodeDto loginCodeDto) {
-        if (ObjectUtils.isEmpty(loginCodeDto.getMobile())) {
-            return ResponseJson.error("请输入手机号",null);
-        }
-        if (ObjectUtils.isEmpty(loginCodeDto.getCode())) {
-            return ResponseJson.error("请输入验证码",null);
-        }
-        String mobile = loginCodeDto.getMobile();
-        String code = loginCodeDto.getCode();
-        String result = ValidateUtil.validateMobile(mobile);
-        
-        if (result != null) {
-            return ResponseJson.error(result);
+
+        // 验证码或者账号密码
+        String codeType = null;
+        if (!ObjectUtils.isEmpty(loginCodeDto.getCodeType())) {
+            codeType = loginCodeDto.getCodeType();
         }
-        // 判断redis中是否存在
-        boolean exists = redisService.exists("code:" + mobile);
-        if (exists) {
-            // 校验验证码是否过期
-            long expireTime = redisService.getExpireTime("code:" + mobile);
-            if (expireTime < 0) {
-                return ResponseJson.error("验证码已失效,请重新获取");
+        // 账号密码验证
+        if ("0".equals(codeType)) {
+            if (ObjectUtils.isEmpty(loginCodeDto.getMobileOrEmail())) {
+                return ResponseJson.error("请输入账号",null);
             }
-            // 获取redis缓存验证码
-            Object randomCode = redisService.get("code:" + mobile);
-            if (!ObjectUtils.isEmpty(randomCode)) {
-                if (code.equals(randomCode.toString())) {
-                    redisService.remove("code:"+mobile);
-                    return ResponseJson.success("验证码匹配成功");
+            if (ObjectUtils.isEmpty(loginCodeDto.getPassword())) {
+                return ResponseJson.error("请输入密码",null);
+            }
+            // 账号
+            String mobileOrEmail = loginCodeDto.getMobileOrEmail();
+            // 密码
+            String password = loginCodeDto.getPassword();
+
+            // 根据手机号或者邮箱获取账户信息
+            UserLoginVo user = loginMapper.getLoginUserByMobileOrEmail(mobileOrEmail);
+            // 账号密码验证
+            String md5Password = Md5Util.md5(password);
+            if (md5Password.equals(user.getPassword())) {
+                return ResponseJson.success("账号与密码匹配成功");
+            }
+            return ResponseJson.error("账号与密码不匹配,请检查后重新输入");
+        } else {
+            // 手机短信验证
+            if (ObjectUtils.isEmpty(loginCodeDto.getMobile())) {
+                return ResponseJson.error("请输入手机号",null);
+            }
+            if (ObjectUtils.isEmpty(loginCodeDto.getCode())) {
+                return ResponseJson.error("请输入验证码",null);
+            }
+            String mobile = loginCodeDto.getMobile();
+            String code = loginCodeDto.getCode();
+            String result = ValidateUtil.validateMobile(mobile);
+            if (result != null) {
+                return ResponseJson.error(result);
+            }
+            // 判断redis中是否存在
+            boolean exists = redisService.exists("code:" + mobile);
+            if (exists) {
+                // 校验验证码是否过期
+                long expireTime = redisService.getExpireTime("code:" + mobile);
+                if (expireTime < 0) {
+                    return ResponseJson.error("验证码已失效,请重新获取");
+                }
+                // 获取redis缓存验证码
+                Object randomCode = redisService.get("code:" + mobile);
+                if (!ObjectUtils.isEmpty(randomCode)) {
+                    if (code.equals(randomCode.toString())) {
+                        redisService.remove("code:" + mobile);
+                        return ResponseJson.success("验证码匹配成功");
+                    } else {
+                        return ResponseJson.error("验证码不匹配,请重新输入");
+                    }
                 } else {
-                    return ResponseJson.error("验证码不匹配,请重新输入");
+                    return ResponseJson.error("验证码错误,请重新获取");
                 }
             } else {
                 return ResponseJson.error("验证码错误,请重新获取");
             }
-        } else {
-            return ResponseJson.error("验证码错误,请重新获取");
         }
     }
 

+ 1 - 0
src/main/java/com/caimei365/user/service/impl/RemoteCallServiceImpl.java

@@ -53,6 +53,7 @@ public class RemoteCallServiceImpl implements RemoteCallService {
             list.add("18476937515");
             list.add("18175515644");
             list.add("18670511721");
+            list.add("15017915300");
             if ("prod".equals(profile) || list.contains(mobile)) {
                 if (StringUtils.isNotBlank(mobile) && mobile.length() == 11) {
                     String regex = "^(1[3-9]\\d{9}$)";