Browse Source

短信登录、绑定运营人员

huangzhiguo 2 years ago
parent
commit
278147c9cb

+ 11 - 2
src/main/java/com/caimei365/user/controller/LoginApi.java

@@ -51,12 +51,13 @@ public class LoginApi {
     }
 
     /**
-     *
+     * 登录(手机号,验证码)
      * @param loginCodeDto {
      *                      mobile   手机号
      *                      code     短信验证码
+     *                      unionId  微信unionId
      *                     }
-     * @return
+     * @return UserLoginVo
      * @throws ParseException
      */
     @ApiOperation("登录(手机号,验证码)")
@@ -358,6 +359,14 @@ public class LoginApi {
     }
 
 
+    /**
+     * @param loginCodeDto {
+     *                      mobile   手机号
+     *                      code     短信验证码
+     *                     }
+     * @param loginCodeDto
+     * @return
+     */
     @ApiOperation("绑定运营人员")
     @PostMapping("/verification")
     public ResponseJson<String> operateVerification(LoginCodeDto loginCodeDto) {

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

@@ -1,5 +1,6 @@
 package com.caimei365.user.model.dto;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
@@ -14,15 +15,37 @@ import java.io.Serializable;
 @Data
 public class LoginCodeDto implements Serializable {
 
+    /**
+     * 手机号或邮箱
+     */
+    @ApiModelProperty("手机号或邮箱")
+    private String mobileOrEmail;
+    /**
+     * 密码
+     */
+    @ApiModelProperty("密码")
+    private String password;
     /**
      * 手机号
      */
-    @NotNull
+    @ApiModelProperty("手机号")
     private String mobile;
 
     /**
      * 短信验证码
      */
-    @NotNull
+    @ApiModelProperty("验证码")
     private String code;
+
+    /**
+     * 微信unionId
+     */
+    @ApiModelProperty("微信unionId")
+    private String unionId;
+
+    /**
+     * 短信、密码
+     * 0 密码 1短信
+     */
+    private String codeType;
 }

+ 13 - 0
src/main/java/com/caimei365/user/model/dto/ScanBindDto.java

@@ -52,4 +52,17 @@ public class ScanBindDto implements Serializable {
     @NotNull
     @ApiModelProperty("联系人")
     private String linkName;
+    /**
+     * 公司账号手机号
+     */
+    @ApiModelProperty("公司账号手机号")
+    private String companyMobile;
+
+    /**
+     * 密码或者短信验证
+     * 0 密码验证 1 短信
+     */
+    @NotNull
+    @ApiModelProperty("密码或者短信验证")
+    private String passOrNote;
 }

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

@@ -352,16 +352,16 @@ public class BaseServiceImpl implements BaseService {
         // 根据手机号查询用户Id
         dbUserId = baseMapper.getUserIdByMobile(mobile);
         if (dbUserId == null) {
-            ResponseJson.error("该手机号尚未注册");
+            return ResponseJson.error("该手机号暂未注册");
         }
         // 生成6位数验证码
         String randomCode = CodeUtil.getRandomCharAndNumr(6);
-        // 开发环境下短信验证码固定为 666666
-        boolean isCode = "dev".equals(profile);
+        // 开发、测试环境下短信验证码固定为 666666
+        boolean isCode = "dev".equals(profile)|| "beta".equals(profile);
         if (isCode) {
             randomCode = "666666";
         }
-        // 您正在操作登录采美商城,验证码:{6},请在5分钟内完成验证。如非本人操作,请忽略本短信。
+        // 您正在操作登录采美商城,验证码:{s6},请在5分钟内完成验证。如非本人操作,请忽略本短信。
         String content = "您正在操作登录采美商城,验证码:"+ randomCode +",请在5分钟内完成验证。如非本人操作,请忽略本短信。";
         boolean smsFlag = isCode || remoteCallService.remoteSendSms(0,1,mobile,content);
         if (!smsFlag) {
@@ -390,13 +390,20 @@ public class BaseServiceImpl implements BaseService {
         if (result != null) {
             return ResponseJson.error(result);
         }
+        Integer dbUserId = null;
+        // 根据手机号查询用户Id
+        dbUserId = baseMapper.getUserIdByMobile(mobile);
+        if (dbUserId == null) {
+            return ResponseJson.error("该手机号暂未注册");
+        }
         // 生成6位数验证码
         String randomCode = CodeUtil.getRandomCharAndNumr(6);
-        boolean isCode = "dev".equals(profile);
+        // 开发、测试环境下短信验证码固定为666666
+        boolean isCode = "dev".equals(profile)||"beta".equals(profile);
         if (isCode) {
             randomCode = "666666";
         }
-        // 您正在操作绑定运营人员,验证码:{6},请在5分钟内完成验证。如非本人操作,请忽略本短信。
+        // 您正在操作绑定运营人员,验证码:{s6},请在5分钟内完成验证。如非本人操作,请忽略本短信。
         String content = "您正在操作绑定运营人员,验证码:"+ randomCode+",请在5分钟内完成验证。如非本人操作,请忽略本短信。";
         boolean smsFlag = isCode || remoteCallService.remoteSendSms(0,1,mobile,content);
         if (!smsFlag) {

+ 57 - 18
src/main/java/com/caimei365/user/service/impl/LoginServiceImpl.java

@@ -167,6 +167,7 @@ public class LoginServiceImpl implements LoginService {
         }
         String mobile = loginCodeDto.getMobile();
         String code = loginCodeDto.getCode();
+        String unionId = loginCodeDto.getUnionId();
         String result = ValidateUtil.validateMobile(mobile);
         if (result != null) {
             return ResponseJson.error(result);
@@ -177,15 +178,18 @@ public class LoginServiceImpl implements LoginService {
             // 查看验证码是否过期
             long expireTime = redisService.getExpireTime("code:" + mobile);
             if (expireTime < 0) {
-                return ResponseJson.error("验证码已过期,请重新获取验证码");
+                return ResponseJson.error("验证码已失效,请重新获取");
             }
             // 获取redis手机短信验证码
             Object randomCode = redisService.get("code:"+mobile);
 
             if (!ObjectUtils.isEmpty(randomCode)) {
                 if (code.equals(randomCode.toString())) {
+                    redisService.remove("code:" + mobile);
                     // 根据手机号获取用户信息
                     UserLoginVo baseUser = loginMapper.getLoginUserByMobileOrEmail(mobile);
+                    // 如果前端传入unionId,则存入返回前端
+                    baseUser.setUnionId(unionId);
                     if (baseUser.getUserIdentity() == 1) {
                         // 协销登录
                         return ResponseJson.success(baseUser);
@@ -193,14 +197,15 @@ public class LoginServiceImpl implements LoginService {
                         // 返回登录校验结果
                         return logonVerify(baseUser);
                     }
+
                 } else {
                     return ResponseJson.error("验证码不匹配,请重新输入");
                 }
             } else {
-                return ResponseJson.error("验证码为空,请重新获取");
+                return ResponseJson.error("验证码错误,请重新获取");
             }
         } else {
-            return ResponseJson.error("手机验证码不存在,请重新获取");
+            return ResponseJson.error("验证码错误,请重新获取");
         }
     }
 
@@ -684,22 +689,40 @@ public class LoginServiceImpl implements LoginService {
      *                    mobile        手机号
      *                    smsCode       手机验证码
      *                    linkName      联系人
+     *                    passOrNote    0 密码验证 1 短信
      *                    }
      */
     @Override
     public ResponseJson<UserLoginVo> qrCodeAuthScanBind(ScanBindDto scanBindDto) {
-        String mobileOrEmail = scanBindDto.getMobileOrEmail();
-        String password = scanBindDto.getPassword();
+        String mobileOrEmail = null;
+        if (!ObjectUtils.isEmpty(scanBindDto.getMobileOrEmail())) {
+            mobileOrEmail = scanBindDto.getMobileOrEmail();
+        }
+        String password = null;
+        if (!ObjectUtils.isEmpty(scanBindDto.getPassword())) {
+            password = scanBindDto.getPassword();
+        }
         String mobile = scanBindDto.getMobile();
         String smsCode = scanBindDto.getSmsCode();
         String linkName = scanBindDto.getLinkName();
         String unionId = scanBindDto.getUnionId();
-        // 参数校验
-        if (StringUtils.isBlank(mobileOrEmail)) {
-            return ResponseJson.error("参数异常:手机号或邮箱不能为空!", null);
+        // 0 密码验证 1 短信
+        String passOrNote = "0";
+        if (!ObjectUtils.isEmpty(scanBindDto.getPassOrNote())) {
+            passOrNote = scanBindDto.getPassOrNote();
         }
-        if (StringUtils.isBlank(password)) {
-            return ResponseJson.error("参数异常:密码不能为空!", null);
+        String companyMobile = null;
+        if (!ObjectUtils.isEmpty(scanBindDto.getPassOrNote())) {
+            companyMobile = scanBindDto.getCompanyMobile();
+        }
+        // 参数校验
+        if ("0".equals(passOrNote)) {
+            if (StringUtils.isBlank(mobileOrEmail)) {
+                return ResponseJson.error("参数异常:手机号或邮箱不能为空!", null);
+            }
+            if (StringUtils.isBlank(password)) {
+                return ResponseJson.error("参数异常:密码不能为空!", null);
+            }
         }
         if (StringUtils.isBlank(mobile)) {
             return ResponseJson.error("参数异常:手机号不能为空!", null);
@@ -711,9 +734,26 @@ public class LoginServiceImpl implements LoginService {
             return ResponseJson.error("参数异常:unionId不能为空!", null);
         }
         //处理比对密码
+        if ("0".equals(passOrNote)) {
+            mobileOrEmail = mobileOrEmail;
+        }
+        if ("1".equals(passOrNote)) {
+            mobileOrEmail = companyMobile;
+        }
+        // 根据手机号或者邮箱获取账户信息
         UserLoginVo user = loginMapper.getLoginUserByMobileOrEmail(mobileOrEmail);
-        String md5Password = Md5Util.md5(password);
-        if (null != user && md5Password.equals(user.getPassword())) {
+        String md5Password = null;
+        boolean item = false;
+        // 账号密码验证、短信验证校验方式
+        if ("0".equals(passOrNote)) {
+            md5Password = Md5Util.md5(password);
+            item= md5Password.equals(user.getPassword());
+        }
+        if ("1".equals(passOrNote)) {
+            item = true;
+        }
+
+        if (null != user && item) {
             // 查询使用该手机号的运营人员或用户
             String checkRust = commonService.operationBindCheck(mobile, smsCode);
             if (checkRust != null) {
@@ -1039,10 +1079,7 @@ public class LoginServiceImpl implements LoginService {
     /**
      * 绑定运营人员短信验证
      *
-     * @param loginCodeDto {
-     *                     mobile   手机号
-     *                     code     短信验证码
-     *                     }
+     * @param loginCodeDto
      * @return
      */
     @Override
@@ -1056,6 +1093,7 @@ public class LoginServiceImpl implements LoginService {
         String mobile = loginCodeDto.getMobile();
         String code = loginCodeDto.getCode();
         String result = ValidateUtil.validateMobile(mobile);
+        
         if (result != null) {
             return ResponseJson.error(result);
         }
@@ -1071,15 +1109,16 @@ public class LoginServiceImpl implements LoginService {
             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("验证码不存在,请重新获取");
+            return ResponseJson.error("验证码错误,请重新获取");
         }
     }
 

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

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