Browse Source

fix: "国内邮箱登陆"
"TODO: 忘记密码"

ritchie 2 năm trước cách đây
mục cha
commit
f84f923fdd

+ 116 - 59
src/main/java/com/szwl/controller/TMessageCodeController.java

@@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Date;
 import java.util.List;
+import java.util.regex.Pattern;
 
 /**
  * <p>
@@ -38,105 +39,161 @@ public class TMessageCodeController {
     TAdminService tAdminService;
     @Autowired
     TMessageCodeService tMessageCodeService;
+
     @ApiOperation(value = "发送注册验证码")
     @PostMapping("/sentRegisterCode")
-    public ResponseModel<?> sentRegisterCode(String ifForeign,String phoneOrEmail) {
-        if(ifForeign.equals("0")){
-            if(StringUtils.isEmpty(phoneOrEmail)){
-                return R.fail(ResponseCodesEnum.A0100,"手机号为空!");
+    public ResponseModel<?> sentRegisterCode(String ifForeign, String phoneOrEmail) {
+        // 如果是国内
+        if (ifForeign.equals("0")) {
+            if (StringUtils.isEmpty(phoneOrEmail)) {
+                // 说明参数为空
+                return R.fail(ResponseCodesEnum.A0100, "手机号或邮箱为空!");
             }
-            //检测是否已有手机号注册
-            LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
-            query.eq(TAdmin::getPhone,phoneOrEmail);
-            List<TAdmin> list = tAdminService.list(query);
-            if(list.size()>0){
-                return R.fail(ResponseCodesEnum.A0202,"用户手机号已存在");
+            // 定义国内手机号和邮箱的正则表达式
+            String phoneReg = "^1[3-9]\\d{9}$";
+            String emailReg = "^[a-zA-Z0-9_-]+([a-zA-Z0-9_.-]*[a-zA-Z0-9])*@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
+
+            // 判断 phoneOrEmail 是手机号还是邮箱
+            if (Pattern.matches(phoneReg, phoneOrEmail)) {
+                System.out.println("这是一个手机号");
+                //检测是否已有手机号注册
+                LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
+                query.eq(TAdmin::getPhone, phoneOrEmail);
+                List<TAdmin> list = tAdminService.list(query);
+                if (list.size() > 0) {
+                    return R.fail(ResponseCodesEnum.A0202, "用户手机号已存在");
+                }
+                //国内发送短信
+                String result = tMessageCodeService.sentMessage("0", phoneOrEmail);
+                return R.ok(result);
+            } else if (Pattern.matches(emailReg, phoneOrEmail)) {
+                System.out.println("这是一个邮箱地址");
+                // 检测是否已有邮箱注册
+                LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
+                query.eq(TAdmin::getEmail, phoneOrEmail);
+                List<TAdmin> list = tAdminService.list(query);
+                if (list.size() > 0) {
+                    return R.fail(ResponseCodesEnum.A0207, "用户邮箱已存在");
+                }
+                String result = tMessageCodeService.sentEmail("0", phoneOrEmail);
+                return R.ok(result);
+            } else {
+                System.out.println("不是有效的手机号或邮箱地址");
+                return R.fail(ResponseCodesEnum.A0100, "不是有效的手机号或邮箱地址");
             }
-            //国内发送短信
-            String result = tMessageCodeService.sentMessage("0", phoneOrEmail);
-            return R.ok(result);
-        }else {
-            if(StringUtils.isEmpty(phoneOrEmail)){
-                return R.fail(ResponseCodesEnum.A0100,"邮箱为空!");
+        } else {
+            // 海外
+            if (StringUtils.isEmpty(phoneOrEmail)) {
+                return R.fail(ResponseCodesEnum.A0100, "邮箱为空!");
             }
             //检测是否已有邮箱注册
             LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
-            query.eq(TAdmin::getEmail,phoneOrEmail);
+            query.eq(TAdmin::getEmail, phoneOrEmail);
             List<TAdmin> list = tAdminService.list(query);
-            if(list.size()>0){
-                return R.fail(ResponseCodesEnum.A0207,"用户邮箱已存在");
+            if (list.size() > 0) {
+                return R.fail(ResponseCodesEnum.A0207, "用户邮箱已存在");
             }
             //国外发邮件
-            String result = tMessageCodeService.sentEmail("0",phoneOrEmail);
+            String result = tMessageCodeService.sentEmail("0", phoneOrEmail);
             return R.ok(result);
         }
     }
+
     @ApiOperation(value = "发送忘记密码验证码")
     @PostMapping("/sentForgetCode")
-    public ResponseModel<?> sentForgetCode(String ifForeign,String username,String phoneOrEmail) {
-        if(StringUtils.isEmpty(username)){
-            return R.fail(ResponseCodesEnum.A0100,"用户名为空!");
+    public ResponseModel<?> sentForgetCode(String ifForeign, String username, String phoneOrEmail) {
+        if (StringUtils.isEmpty(username)) {
+            return R.fail(ResponseCodesEnum.A0100, "用户名为空!");
         }
-        if(ifForeign.equals("0")){
-            if(StringUtils.isEmpty(phoneOrEmail)){
-                return R.fail(ResponseCodesEnum.A0100,"手机号为空!");
+        // 如果是国内
+        if (ifForeign.equals("0")) {
+            if (StringUtils.isEmpty(phoneOrEmail)) {
+                return R.fail(ResponseCodesEnum.A0100, "手机号为空!");
             }
-            //检测是否已有手机号注册
-            LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
-            query.eq(TAdmin::getPhone,phoneOrEmail);
-            query.eq(TAdmin::getUsername,username);
-            List<TAdmin> list = tAdminService.list(query);
-            if(list.size()<=0){
-                return R.fail(ResponseCodesEnum.A0001,"登录名或手机号出错");
+            // 定义国内手机号和邮箱的正则表达式
+            String phoneReg = "^1[3-9]\\d{9}$";
+            String emailReg = "^[a-zA-Z0-9_-]+([a-zA-Z0-9_.-]*[a-zA-Z0-9])*@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
+
+            // 判断 phoneOrEmail 是手机号还是邮箱
+            if (Pattern.matches(phoneReg, phoneOrEmail)) {
+                System.out.println("忘记密码 >>> 这是一个手机号");
+                //检测是否已有手机号注册
+                LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
+                query.eq(TAdmin::getPhone, phoneOrEmail);
+                query.eq(TAdmin::getUsername, username);
+                List<TAdmin> list = tAdminService.list(query);
+                if (list.size() <= 0) { // 说明手机未注册
+                    return R.fail(ResponseCodesEnum.A0001, "登录名或手机号出错");
+                }
+                //国内发送短信
+                String result = tMessageCodeService.sentMessage("1", phoneOrEmail);
+                return R.ok(result);
+            } else if (Pattern.matches(emailReg, phoneOrEmail)) {
+                System.out.println("忘记密码 >>> 这是一个邮箱地址");
+                //检测是否已有邮箱注册
+                LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
+                query.eq(TAdmin::getEmail, phoneOrEmail);
+                query.eq(TAdmin::getUsername, username);
+                List<TAdmin> list = tAdminService.list(query);
+                if (list.size() <= 0) { // 邮箱未注册
+                    return R.fail(ResponseCodesEnum.A0001, "登录名或邮箱出错");
+                }
+                //国外发邮件
+                String result = tMessageCodeService.sentEmail("1", phoneOrEmail);
+                return R.ok(result);
+            } else {
+                System.out.println("忘记密码 >>> 不是有效的手机号或邮箱地址");
+                return R.fail(ResponseCodesEnum.A0001, "非有效的手机号或邮箱地址");
             }
-            //国内发送短信
-            String result = tMessageCodeService.sentMessage("1", phoneOrEmail);
-            return R.ok(result);
-        }else {
-            if(StringUtils.isEmpty(phoneOrEmail)){
-                return R.fail(ResponseCodesEnum.A0100,"邮箱为空!");
+        } else {
+            if (StringUtils.isEmpty(phoneOrEmail)) {
+                return R.fail(ResponseCodesEnum.A0100, "邮箱为空!");
             }
             //检测是否已有邮箱注册
             LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
-            query.eq(TAdmin::getEmail,phoneOrEmail);
-            query.eq(TAdmin::getUsername,username);
+            query.eq(TAdmin::getEmail, phoneOrEmail);
+            query.eq(TAdmin::getUsername, username);
             List<TAdmin> list = tAdminService.list(query);
-            if(list.size()<=0){
-                return R.fail(ResponseCodesEnum.A0001,"登录名或邮箱出错");
+            if (list.size() <= 0) {
+                return R.fail(ResponseCodesEnum.A0001, "登录名或邮箱出错");
             }
             //国外发邮件
-            String result = tMessageCodeService.sentEmail("1",phoneOrEmail);
+            String result = tMessageCodeService.sentEmail("1", phoneOrEmail);
             return R.ok(result);
         }
     }
+
+
     @ApiOperation(value = "校验验证码")
     @PostMapping("/checkForgetCode")
-    public ResponseModel<?> checkForgetCode(String ifForeign,String code,String phoneOrEmail) {
-        if(StringUtils.isEmpty(code)){
-            return R.fail(ResponseCodesEnum.A0100,"验证码为空!");
+    public ResponseModel<?> checkForgetCode(String ifForeign, String code, String phoneOrEmail) {
+        if (StringUtils.isEmpty(code)) {
+            return R.fail(ResponseCodesEnum.A0100, "验证码为空!");
         }
         LambdaQueryWrapper<TMessageCode> query2 = Wrappers.lambdaQuery();
-        if(ifForeign.equals("0")){
-            query2.eq(TMessageCode::getPhone,phoneOrEmail);
-        }else {
-            query2.eq(TMessageCode::getPhone,phoneOrEmail);
+        if (ifForeign.equals("0")) {
+            query2.eq(TMessageCode::getPhone, phoneOrEmail);
+        } else {
+            query2.eq(TMessageCode::getPhone, phoneOrEmail);
         }
-        query2.eq(TMessageCode::getType,"1");//1,忘记密码验证码
-        query2.eq(TMessageCode::getStatus,"0");
+        query2.eq(TMessageCode::getType, "1");//1,忘记密码验证码
+        query2.eq(TMessageCode::getStatus, "0");
         List<TMessageCode> messageCodeList = tMessageCodeService.list(query2);
-        if(messageCodeList.size()>0){
+        if (messageCodeList.size() > 0) {
             TMessageCode tMessageCode = messageCodeList.get(messageCodeList.size() - 1);
-            if(!tMessageCode.getCode().equals(code)){
-                return R.fail(ResponseCodesEnum.A0002,"验证码错误");
-            }else {
+            if (!tMessageCode.getCode().equals(code)) {
+                return R.fail(ResponseCodesEnum.A0002, "验证码错误");
+            } else {
                 tMessageCode.setStatus("1");
                 tMessageCode.setModifyDate(new Date());
                 tMessageCodeService.saveOrUpdate(tMessageCode);
                 return R.ok();
             }
-        }else {
-            return R.fail(ResponseCodesEnum.A0002,"没有找到验证码");
+        } else {
+            return R.fail(ResponseCodesEnum.A0002, "没有找到验证码");
         }
     }
+
+
 }
 

+ 0 - 1
src/main/java/com/szwl/service/impl/TMessageCodeServiceImpl.java

@@ -52,7 +52,6 @@ public class TMessageCodeServiceImpl extends ServiceImpl<TMessageCodeMapper, TMe
                 tMessageCode.setStatus("0");
                 int insert = tMessageCodeMapper.insert(tMessageCode);
             }
-
             int a= 0;
         } catch (Exception e) {