From 1bbfdfcecf243ba36512b59da80e41602ad50263 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 19 一月 2026 13:46:10 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/system/enums/EmailType.java | 18 ++++++
zy-acs-flow/src/page/settings/SecuritySettings.jsx | 8 +-
zy-acs-manager/src/main/java/com/zy/acs/manager/common/service/EmailService.java | 74 ++++++++++++++++++++++++
zy-acs-common/src/main/java/com/zy/acs/common/utils/Utils.java | 35 ++++++++++-
zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/AuthController.java | 14 +++-
zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/param/UpdatePasswordParam.java | 2
6 files changed, 137 insertions(+), 14 deletions(-)
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/utils/Utils.java b/zy-acs-common/src/main/java/com/zy/acs/common/utils/Utils.java
index c50cb92..a484c83 100644
--- a/zy-acs-common/src/main/java/com/zy/acs/common/utils/Utils.java
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/utils/Utils.java
@@ -2,10 +2,8 @@
import com.zy.acs.framework.common.Cools;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
+import java.util.concurrent.ThreadLocalRandom;
import java.util.function.BiConsumer;
import java.util.function.Function;
@@ -292,4 +290,33 @@
return snakeCaseField + (order.isEmpty() ? "" : " " + order);
}
+ public static String processTemplate(String template, Map<String, Object> params) {
+ if (template == null || params == null) {
+ return template;
+ }
+ String processed = template;
+ for (Map.Entry<String, Object> entry : params.entrySet()) {
+ processed = processed.replace("${" + entry.getKey() + "}", entry.getValue().toString());
+ }
+ return processed;
+ }
+
+ public static String randomNumbers(int length) {
+ String baseString = "0123456789";
+
+ if (length < 1) {
+ length = 1;
+ }
+
+ StringBuilder sb = new StringBuilder(length);
+ int baseLength = baseString.length();
+
+ for(int i = 0; i < length; ++i) {
+ int number = ThreadLocalRandom.current().nextInt(baseLength);
+ sb.append(baseString.charAt(number));
+ }
+
+ return sb.toString();
+ }
+
}
diff --git a/zy-acs-flow/src/page/settings/SecuritySettings.jsx b/zy-acs-flow/src/page/settings/SecuritySettings.jsx
index 42aeaad..c8ad8d0 100644
--- a/zy-acs-flow/src/page/settings/SecuritySettings.jsx
+++ b/zy-acs-flow/src/page/settings/SecuritySettings.jsx
@@ -114,10 +114,10 @@
defaultValue=""
rules={{
required: translate('ra.validation.required'),
- pattern: {
- value: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d\.]{6,13}$/,
- message: translate('page.settings.resetPwd.tip.pwdInputLimit'),
- },
+ // pattern: {
+ // value: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d\.]{6,13}$/,
+ // message: translate('page.settings.resetPwd.tip.pwdInputLimit'),
+ // },
validate: (value) => {
if (value === oldPasswordVal) {
return translate('page.settings.resetPwd.tip.pwdNotSameAsOld');
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/service/EmailService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/service/EmailService.java
new file mode 100644
index 0000000..f7a6162
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/service/EmailService.java
@@ -0,0 +1,74 @@
+package com.zy.acs.manager.common.service;
+
+import com.alibaba.fastjson.JSON;
+import com.zy.acs.common.utils.Utils;
+import com.zy.acs.framework.common.Cools;
+import com.zy.acs.manager.system.enums.EmailType;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@Slf4j
+@Service
+public class EmailService {
+
+ private static final String EMAIL_REGEX = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
+
+// @Value("${spring.mail.username}")
+ private String from;
+
+// @Autowired
+// @SuppressWarnings("all")
+// private JavaMailSender mailSender;
+
+ public boolean sendEmail(String to, EmailType emailType, Map<String, Object> param) {
+
+ String subject = emailType.subject;
+ String content = emailType.content;
+ if (!Cools.isEmpty(param) && !param.isEmpty()) {
+ content = Utils.processTemplate(content, param);
+ }
+
+ boolean sendRes = this.send(this.from, to, subject, content);
+ if (sendRes) {
+ log.info("Email sent successfully. To: {}, Subject: {}, Parameter: {}"
+ , to
+ , subject
+ , JSON.toJSONString(param));
+ }
+ return sendRes;
+ }
+
+ public boolean send(String from, String to, String subject, String content) {
+// try {
+// MimeMessage message = mailSender.createMimeMessage();
+// message.setFrom(from);
+//
+// MimeMessageHelper helper = new MimeMessageHelper(message, true);
+// helper.setTo(to);
+// helper.setSubject(subject);
+// helper.setText(content);
+//
+// mailSender.send(message);
+// return true;
+// } catch (MailException | MessagingException e) {
+// log.error(this.getClass().getSimpleName(), e);
+// return false;
+// }
+
+ return true;
+ }
+
+ public boolean isValid(String email) {
+ if (Cools.isEmpty(email)) {
+ return false;
+ }
+ Pattern pattern = Pattern.compile(EMAIL_REGEX);
+ Matcher matcher = pattern.matcher(email);
+ return matcher.matches();
+ }
+
+}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/AuthController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/AuthController.java
index c2a021c..5338bf9 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/AuthController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/AuthController.java
@@ -1,12 +1,14 @@
package com.zy.acs.manager.system.controller;
import com.zy.acs.common.utils.Utils;
+import com.zy.acs.framework.common.BaseRes;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.framework.common.R;
import com.zy.acs.manager.common.annotation.OperationLog;
import com.zy.acs.manager.common.config.ConfigProperties;
import com.zy.acs.manager.common.domain.BusinessRes;
import com.zy.acs.manager.common.security.JwtSubject;
+import com.zy.acs.manager.common.service.EmailService;
import com.zy.acs.manager.common.utils.JwtUtil;
import com.zy.acs.manager.manager.enums.StatusType;
import com.zy.acs.manager.system.controller.param.LoginParam;
@@ -21,7 +23,7 @@
import com.zy.acs.manager.system.service.TenantService;
import com.zy.acs.manager.system.service.UserLoginService;
import com.zy.acs.manager.system.service.UserService;
-import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -48,6 +50,8 @@
private RoleMenuService roleMenuService;
@Resource
private TenantService tenantService;
+ @Autowired
+ private EmailService emailService;
@GetMapping("/system/info")
public R systemInfo() {
@@ -106,10 +110,10 @@
if (!emailService.isValid(user.getEmail())) {
return R.parse(BusinessRes.INVALID_EMAIL);
}
- User one = userService.getByEmail(user.getEmail(), null);
- if (null != one && !one.getId().equals(user.getId())) {
- return R.parse(BusinessRes.EMAIL_EXIT);
- }
+// User one = userService.getByEmail(user.getEmail(), null);
+// if (null != one && !one.getId().equals(user.getId())) {
+// return R.parse(BusinessRes.EMAIL_EXIT);
+// }
}
if (userService.updateById(user)) {
return R.ok("Save Success").add(userService.getById(user.getId()));
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/param/UpdatePasswordParam.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/param/UpdatePasswordParam.java
index 17b15a6..f6c6819 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/param/UpdatePasswordParam.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/param/UpdatePasswordParam.java
@@ -11,6 +11,6 @@
private String oldPassword;
- private String password;
+ private String newPassword;
}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/enums/EmailType.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/enums/EmailType.java
new file mode 100644
index 0000000..7891865
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/enums/EmailType.java
@@ -0,0 +1,18 @@
+package com.zy.acs.manager.system.enums;
+
+public enum EmailType {
+
+ LOGIN_VERIFY("Email Verification Code", "Your verification code is: ${code}."),
+ REGISTER_VERIFY("Email Verification Code", "Your verification code is: ${code}."),
+ FORGET_PASSWORD("Email Verification Code", "Your verification code is: ${code}."),
+ ;
+
+ public final String subject;
+ public final String content;
+
+ EmailType(String subject, String content) {
+ this.subject = subject;
+ this.content = content;
+ }
+
+}
--
Gitblit v1.9.1