diff --git a/src/main/java/com/peanut/common/utils/MailUtil.java b/src/main/java/com/peanut/common/utils/MailUtil.java index fc34b793..6fb4a4ba 100644 --- a/src/main/java/com/peanut/common/utils/MailUtil.java +++ b/src/main/java/com/peanut/common/utils/MailUtil.java @@ -12,34 +12,37 @@ public class MailUtil { private final static String mailName = "fengzidushu@163.com"; private final static String mailToken = "GJIPUCQLQYTMDMPH"; - public static void sendMail(String title,String content,String receiveAddress) throws Exception{ - //smtp服务器 - Properties pros=new Properties(); - pros.put("mail.smtp.host", "smtp.163.com");//主机名 - pros.put("mail.smtp.port", "25");//主机端口号 - pros.put("mail.smtp.auth", "true");//是否需要用户认证 - pros.put("mail.smtp.starttls.enable", "true");//启用TLS加密 - //创建会话 - Session session=Session.getInstance(pros,new Authenticator(){ - @Override - protected javax.mail.PasswordAuthentication getPasswordAuthentication(){ - return new javax.mail.PasswordAuthentication(mailName, mailToken); - } - }); -// System.out.println(session); - //设置debug模式便于调试 - session.setDebug(true); - MimeMessage message=new MimeMessage(session); - //邮件标题 - message.setSubject(title); - //邮件内容(文本) - message.setText(content,"utf-8"); - //设置发送方地址 - message.setFrom(new InternetAddress(mailName)); - //设置收件方地址 - message.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(receiveAddress)); - //发送 - Transport.send(message); + public static R sendMail(String title,String content,String receiveAddress){ + try { + //smtp服务器 + Properties pros=new Properties(); + pros.put("mail.smtp.host", "smtp.163.com");//主机名 + pros.put("mail.smtp.port", "25");//主机端口号 + pros.put("mail.smtp.auth", "true");//是否需要用户认证 + pros.put("mail.smtp.starttls.enable", "true");//启用TLS加密 + //创建会话 + Session session=Session.getInstance(pros,new Authenticator(){ + @Override + protected javax.mail.PasswordAuthentication getPasswordAuthentication(){ + return new javax.mail.PasswordAuthentication(mailName, mailToken); + } + }); + //设置debug模式便于调试 + session.setDebug(true); + MimeMessage message=new MimeMessage(session); + //邮件标题 + message.setSubject(title); + //邮件内容(文本) + message.setText(content,"utf-8"); + //设置发送方地址 + message.setFrom(new InternetAddress(mailName)); + //设置收件方地址 + message.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(receiveAddress)); + //发送 + Transport.send(message); + return R.ok(); + }catch (Exception e) { + return R.error(e.getMessage()); + } } - } diff --git a/src/main/java/com/peanut/modules/book/controller/MyUserController.java b/src/main/java/com/peanut/modules/book/controller/MyUserController.java index e319863c..d6728f9b 100644 --- a/src/main/java/com/peanut/modules/book/controller/MyUserController.java +++ b/src/main/java/com/peanut/modules/book/controller/MyUserController.java @@ -237,8 +237,7 @@ public class MyUserController { //redis 缓存验证码 redisTemplate.opsForValue().set("RegistEMail"+email,timeCode,5, TimeUnit.MINUTES); //发送 - MailUtil.sendMail("疯子读书邮箱验证码",code,email); - return R.ok(); + return MailUtil.sendMail("疯子读书邮箱验证码",code,email); } @RequestMapping("/register") @@ -276,43 +275,41 @@ public class MyUserController { * 常规注册 / 验证码 登录 */ @RequestMapping("/registerOrLogin") - public R register(@RequestParam("tel") String tel, - @RequestParam("code") String code) { - + public R register(String tel, String code) { String redisCode = redisTemplate.opsForValue().get("RegistCode" + tel); - System.out.println(redisCode); - if (StringUtils.isEmpty(redisCode)){ return R.error(500,"短信验证码已过期,请重试"); } - String lcode = redisCode.split("_")[0]; - if (!lcode.equals(code)) { return R.error(500,"短信验证码不符!"); } - //查询是否存在当前用户手机号 - MyUserEntity userEntity = userService.getBaseMapper().selectOne(new QueryWrapper().eq("tel", tel)); - - - if (userEntity == null) { - // 用户不存在则创建用户 注册成功 - MyUserEntity myUserEntity = new MyUserEntity(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); + if (tel.contains("@")){ + wrapper.eq(MyUserEntity::getEmail,tel); + }else { + wrapper.eq(MyUserEntity::getTel,tel); + } + wrapper.orderByDesc(MyUserEntity::getLastLoginTime); + //防止多账号报错 + List userList = userService.getBaseMapper().selectList(wrapper); + if (userList == null || userList.size() == 0) { + // 用户不存在则创建用户 注册成功 + MyUserEntity myUserEntity = new MyUserEntity(); + if (tel.contains("@")){ + myUserEntity.setEmail(tel); + }else { myUserEntity.setTel(tel); - userService.save(myUserEntity); - R r = sysUserTokenService.createToken(myUserEntity.getId()); - return R.ok("注册成功").put("userInfo",myUserEntity).put("token",r); } - - if (userEntity != null) { - R r = sysUserTokenService.createToken(userEntity.getId()); - return R.ok("登录成功!").put("userInfo",userEntity).put("token",r); - } - - return R.ok(); - + userService.save(myUserEntity); + R r = sysUserTokenService.createToken(myUserEntity.getId()); + return R.ok("注册成功").put("userInfo",myUserEntity).put("token",r); + }else { + R r = sysUserTokenService.createToken(userList.get(0).getId()); + return R.ok("登录成功!").put("userInfo",userList.get(0)).put("token",r); + } } /** @@ -328,21 +325,26 @@ public class MyUserController { }else { wrapper.eq(MyUserEntity::getTel,phone); } - MyUserEntity user = userService.getBaseMapper().selectOne(wrapper); - if (user == null) { + //防止多账号报错 + List userList = userService.getBaseMapper().selectList(wrapper); + if (userList == null || userList.size() == 0) { return R.error(500,"用户不存在!"); - } - if (user.getPassword() == null) { - return R.error(500,"当前未设置密码,请使用验证码登录!"); - } - if (MD5Utils.getSaltverifyMD5(password,user.getPassword())){ -// if(true){ - R r = sysUserTokenService.createToken(user.getId()); - return R.ok("登陆成功!").put("userInfo",user).put("token",r); }else { + int flag = 0; + for (MyUserEntity user : userList) { + if (user.getPassword() == null) { + flag++; + } + if (MD5Utils.getSaltverifyMD5(password,user.getPassword())){ + R r = sysUserTokenService.createToken(user.getId()); + return R.ok("登陆成功!").put("userInfo",user).put("token",r); + } + } + if (flag>0){ + return R.error(500,"当前未设置密码,请使用验证码登录!"); + } return R.error(500,"密码不正确,请重试!"); } - } /**