From 865eeb5d1b4d883ba9a70b64e4f8e3e4d271ce4d Mon Sep 17 00:00:00 2001
From: PC-202403201522\Administrator <1041918560@qq.com>
Date: Mon, 13 May 2024 14:42:43 +0800
Subject: [PATCH] 增加邮箱校验
---
src/main/resources/application.properties | 18 +++
src/main/java/com/nq/controller/UserApiController.java | 16 ++
src/main/java/com/nq/utils/email/CodeUtil.java | 39 +++++++
src/main/java/com/nq/pojo/User.java | 7 +
src/main/java/com/nq/utils/email/EmailService.java | 32 ++++++
src/main/java/com/nq/service/IUserService.java | 4
src/main/java/com/nq/utils/email/EmailUtil.java | 127 +++++++++++++++++++++++++
src/main/java/com/nq/service/impl/UserServiceImpl.java | 32 +++++-
8 files changed, 267 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/nq/controller/UserApiController.java b/src/main/java/com/nq/controller/UserApiController.java
index 8c42607..26a3fa0 100644
--- a/src/main/java/com/nq/controller/UserApiController.java
+++ b/src/main/java/com/nq/controller/UserApiController.java
@@ -57,10 +57,22 @@
//注册
@RequestMapping(value = {"reg.do"}, method = {RequestMethod.POST})
@ResponseBody
- public ServerResponse reg(@RequestParam("agentCode") String agentCode, @RequestParam("phone") String phone, @RequestParam(value = "yzmCode", defaultValue = "") String yzmCode, @RequestParam("userPwd") String userPwd, HttpServletRequest httpServletRequest) {
- return this.iUserService.reg(yzmCode, agentCode, phone, userPwd, httpServletRequest);
+ public ServerResponse reg(@RequestParam("agentCode") String agentCode,
+ @RequestParam("phone") String phone,
+ @RequestParam(value = "yzmCode", defaultValue = "") String yzmCode,
+ @RequestParam("userPwd") String userPwd,
+ @RequestParam("email") String email,
+ HttpServletRequest httpServletRequest) {
+ return this.iUserService.reg(yzmCode, agentCode, phone, userPwd, email,httpServletRequest);
}
+ @RequestMapping(value = {"sendMailCode.do"}, method = {RequestMethod.POST})
+ @ResponseBody
+ public ServerResponse sendMailCode(@RequestParam("email") String email) {
+ return this.iUserService.sendMailCode(email);
+ }
+
+
//登录
@RequestMapping(value = {"login.do"}, method = {RequestMethod.POST})
@ResponseBody
diff --git a/src/main/java/com/nq/pojo/User.java b/src/main/java/com/nq/pojo/User.java
index 19d5ffb..86236c0 100644
--- a/src/main/java/com/nq/pojo/User.java
+++ b/src/main/java/com/nq/pojo/User.java
@@ -38,4 +38,11 @@
private String withdrawalPwd;
private String vaildNumber;
+ private String email;
+
+ /**
+ * ifsc
+ * */
+ private String ifsc;
+
}
diff --git a/src/main/java/com/nq/service/IUserService.java b/src/main/java/com/nq/service/IUserService.java
index 7e4124d..af09c4b 100644
--- a/src/main/java/com/nq/service/IUserService.java
+++ b/src/main/java/com/nq/service/IUserService.java
@@ -8,7 +8,7 @@
import javax.servlet.http.HttpServletRequest;
public interface IUserService {
- ServerResponse reg(String paramString1, String paramString2, String paramString3, String paramString4, HttpServletRequest paramHttpServletRequest);
+ ServerResponse reg(String paramString1, String paramString2, String paramString3, String paramString4,String paramString5, HttpServletRequest paramHttpServletRequest);
ServerResponse login(String paramString1, String paramString2, HttpServletRequest paramHttpServletRequest);
@@ -90,4 +90,6 @@
ServerResponse queryMyOption(String code, HttpServletRequest request);
ServerResponse getMoenyLog(String type,HttpServletRequest request);
+
+ ServerResponse sendMailCode(String toMail);
}
diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index 05201dc..cb51cf3 100644
--- a/src/main/java/com/nq/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -14,6 +14,8 @@
import com.nq.pojo.reponse.RUserAssets;
import com.nq.service.*;
import com.nq.utils.UserPointUtil;
+import com.nq.utils.email.CodeUtil;
+import com.nq.utils.email.EmailService;
import com.nq.utils.timeutil.DateTimeUtil;
import com.nq.utils.PropertiesUtil;
import com.nq.utils.SymmetricCryptoUtil;
@@ -45,8 +47,10 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Assert;
@Service("iUserService")
public class UserServiceImpl implements IUserService {
@@ -128,14 +132,24 @@
@Resource
ApplyLeverMapper applyLeverMapper;
+ @Autowired
+ EmailService emailService;
+ @Autowired
+ CodeUtil codeUtil;
+ @Autowired
+ private StringRedisTemplate redisTemplate;
-
- public ServerResponse reg(String yzmCode, String agentCode, String phone, String userPwd, HttpServletRequest request) {
- if (StringUtils.isBlank(agentCode) || StringUtils.isBlank(phone) ||
- StringUtils.isBlank(userPwd) || StringUtils.isBlank(yzmCode)) {
+ public ServerResponse reg(String yzmCode, String agentCode, String phone, String userPwd,String email, HttpServletRequest request) {
+ if (StringUtils.isAnyBlank(agentCode,phone,userPwd,yzmCode,email)) {
return ServerResponse.createByErrorMsg("注册失败。该参数不能为空",request);
}
+ Assert.isTrue(userMapper.selectCount(new LambdaQueryWrapper<User>().eq(User::getEmail,email)) == 0,
+ "Registration failed, the mobile mail number has been registered");
+ String redisCode = redisTemplate.opsForValue().get(codeUtil.KEY_PREFIX + yzmCode);
+ if (redisCode == null || !yzmCode.equals(redisCode)) {
+ return ServerResponse.createByErrorMsg("Verification code error");
+ }
String keys = "AliyunSmsCode:" + phone;
String redis_yzm = RedisShardedPoolUtils.get(keys);
@@ -166,7 +180,7 @@
user.setAgentName(agentUser.getAgentName());
user.setPhone(phone);
user.setUserPwd(SymmetricCryptoUtil.encryptPassword(userPwd));
-
+ user.setEmail(email);
user.setAccountType(Integer.valueOf(0));
user.setIsLock(Integer.valueOf(1));
@@ -1124,6 +1138,14 @@
queryWrapper.eq("user_id",user.getId());
return ServerResponse.createBySuccess(mapper.selectList(queryWrapper));
}
+ @Override
+ public ServerResponse sendMailCode(String MailCode) {
+ if (MailCode == null || MailCode.equals("")) {
+ return ServerResponse.createByErrorMsg("The mobile mail number and password cannot be empty");
+ }
+ emailService.sendSimpleMail(MailCode, "barclays register code", codeUtil.generateVerificationCode());
+ return ServerResponse.createBySuccessMsg("send code success!");
+ }
}
diff --git a/src/main/java/com/nq/utils/email/CodeUtil.java b/src/main/java/com/nq/utils/email/CodeUtil.java
new file mode 100644
index 0000000..df7d725
--- /dev/null
+++ b/src/main/java/com/nq/utils/email/CodeUtil.java
@@ -0,0 +1,39 @@
+package com.nq.utils.email;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.concurrent.TimeUnit;
+
+@Service
+public class CodeUtil {
+
+ //存储时间
+ private static final int EXPIRATION_TIME_IN_MINUTES = 3;
+ //键名
+ public static final String KEY_PREFIX ="yzm";
+ @Autowired
+ private StringRedisTemplate redisTemplate;
+ public String generateVerificationCode() {
+ // 生成6位随机数字验证码
+ String code = String.valueOf((int) ((Math.random() * 9 + 1) * 100000));
+ String key = KEY_PREFIX+code;
+ redisTemplate.opsForValue().set(key, code, EXPIRATION_TIME_IN_MINUTES, TimeUnit.MINUTES);
+ return code;
+ }
+
+ // 验证验证码是否正确
+ public boolean verifyCode(String userId, String code, String key) {
+ key = key + userId;
+ String storedCode = redisTemplate.opsForValue().get(key);
+ return code.equals(storedCode);
+ }
+
+ //删除redis中验证码
+ public void deleteCode(String userId, String key) {
+ key = key + userId;
+ redisTemplate.delete(key);
+ }
+
+}
diff --git a/src/main/java/com/nq/utils/email/EmailService.java b/src/main/java/com/nq/utils/email/EmailService.java
new file mode 100644
index 0000000..e713d1f
--- /dev/null
+++ b/src/main/java/com/nq/utils/email/EmailService.java
@@ -0,0 +1,32 @@
+package com.nq.utils.email;
+
+public interface EmailService {
+ /**
+ * 发送文本邮件
+ *
+ * @param to 收件人
+ * @param subject 主题
+ * @param content 内容
+ */
+ void sendSimpleMail(String to, String subject, String content);
+
+ /**
+ * 发送HTML邮件
+ *
+ * @param to 收件人
+ * @param subject 主题
+ * @param content 内容
+ */
+ public void sendHtmlMail(String to, String subject, String content);
+
+ /**
+ * 发送带附件的邮件
+ *
+ * @param to 收件人
+ * @param subject 主题
+ * @param content 内容
+ * @param filePath 附件
+ */
+ public void sendAttachmentsMail(String to, String subject, String content, String filePath);
+
+}
diff --git a/src/main/java/com/nq/utils/email/EmailUtil.java b/src/main/java/com/nq/utils/email/EmailUtil.java
new file mode 100644
index 0000000..1119579
--- /dev/null
+++ b/src/main/java/com/nq/utils/email/EmailUtil.java
@@ -0,0 +1,127 @@
+package com.nq.utils.email;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.MimeMessageHelper;
+import org.springframework.stereotype.Service;
+
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+import java.io.File;
+import java.util.regex.Pattern;
+
+@Service
+public class EmailUtil implements EmailService
+{
+ private static final Logger log = LoggerFactory.getLogger(EmailService.class);
+
+
+ //Spring Boot 提供了一个发送邮件的简单抽象,使用的是下面这个接口,这里直接注入即可使用
+ @Autowired
+ private JavaMailSender mailSender;
+
+ // 配置文件中我的谷歌邮箱
+ @Value("${spring.mail.username}")
+ private String from;
+
+ /**
+ * 简单文本邮件
+ * @param to 收件人
+ * @param subject 主题
+ * @param content 内容
+ */
+ @Override
+ public void sendSimpleMail(String to, String subject, String content) {
+ //创建SimpleMailMessage对象
+ SimpleMailMessage message = new SimpleMailMessage();
+ //邮件发送人
+ message.setFrom(from);
+ //邮件接收人
+ message.setTo(to);
+ //邮件主题
+ message.setSubject(subject);
+ //邮件内容
+ message.setText(content);
+ //发送邮件
+ mailSender.send(message);
+ }
+
+ /**
+ * html邮件
+ * @param to 收件人,多个时参数形式 :"xxx@xxx.com,xxx@xxx.com,xxx@xxx.com"
+ * @param subject 主题
+ * @param content 内容
+ */
+ @Override
+ public void sendHtmlMail(String to, String subject, String content) {
+ //获取MimeMessage对象
+ MimeMessage message = mailSender.createMimeMessage();
+ MimeMessageHelper messageHelper;
+ try {
+ messageHelper = new MimeMessageHelper(message, true);
+ //邮件发送人
+ messageHelper.setFrom(from);
+ //邮件接收人,设置多个收件人地址
+ InternetAddress[] internetAddressTo = InternetAddress.parse(to);
+ messageHelper.setTo(internetAddressTo);
+ //messageHelper.setTo(to);
+ //邮件主题
+ message.setSubject(subject);
+ //邮件内容,html格式
+ messageHelper.setText(content, true);
+ //发送
+ mailSender.send(message);
+ //日志信息
+ log.info("邮件已经发送。");
+ } catch (Exception e) {
+ log.error("发送邮件时发生异常!", e);
+ }
+ }
+
+ /**
+ * 带附件的邮件
+ * @param to 收件人
+ * @param subject 主题
+ * @param content 内容
+ * @param filePath 附件
+ */
+ @Override
+ public void sendAttachmentsMail(String to, String subject, String content, String filePath) {
+ MimeMessage message = mailSender.createMimeMessage();
+ try {
+ MimeMessageHelper helper = new MimeMessageHelper(message, true);
+ helper.setFrom(from);
+ helper.setTo(to);
+ helper.setSubject(subject);
+ helper.setText(content, true);
+
+ FileSystemResource file = new FileSystemResource(new File(filePath));
+ String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
+ helper.addAttachment(fileName, file);
+ mailSender.send(message);
+ //日志信息
+ log.info("邮件已经发送。");
+ } catch (Exception e) {
+ log.error("发送邮件时发生异常!", e);
+ }
+ }
+
+ /**
+ * 验证邮箱格式
+ * @param email
+ * @return
+ */
+ public boolean isEmail(String email) {
+ if (email == null || email.length() < 1 || email.length() > 256) {
+ return false;
+ }
+ Pattern pattern = Pattern.compile("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
+ return pattern.matcher(email).matches();
+ }
+
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index dbaf016..1961dca 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -169,7 +169,25 @@
+#?????
+news.main.url=http://eminfo.eastmoney.com
+spring.main.allow-circular-references=true
+spring.mail.host=smtp.gmail.com
+# ????????
+spring.mail.port=587
+# ????????????
+spring.mail.username=barclays5510@gmail.com
+# ????????????????????????????
+spring.mail.password=nppwibbarixvbnqk
+# ??TLS??
+spring.mail.properties.mail.smtp.starttls.enable=true
+# ??????????
+spring.mail.properties.mail.smtp.auth=true
+# ??????
+spring.mail.properties.mail.transport.protocol=smtp
+
+properties.mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
--
Gitblit v1.9.3