From d655e19ad18eea30f3627fc1c499ae9fe4200d92 Mon Sep 17 00:00:00 2001
From: 826220679@qq.com <826220679@qq.com>
Date: 星期六, 27 十二月 2025 09:16:35 +0800
Subject: [PATCH] 删除了一个没用文件夹
---
src/user/ZhaohuiMima.java | 172 ++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 133 insertions(+), 39 deletions(-)
diff --git a/src/user/ZhaohuiMima.java b/src/user/ZhaohuiMima.java
index 421c39e..54ab6de 100644
--- a/src/user/ZhaohuiMima.java
+++ b/src/user/ZhaohuiMima.java
@@ -1,5 +1,7 @@
package user;
+import login.EmailCodeSender;
+import login.PasswordReset;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
@@ -20,7 +22,6 @@
private JLabel tipLabel;
private Timer timer;
private int countdown = 60;
- private String generatedCode; // 瀛樺偍鐢熸垚鐨勯獙璇佺爜
// 涓婚棰滆壊 (鍙傝�� Denglu.java)
private final Color THEME_COLOR = new Color(46, 139, 87);
@@ -170,6 +171,13 @@
});
}
+ // 閭楠岃瘉鏂规硶
+ private boolean isValidEmail(String email) {
+ // 绠�鍗曠殑閭鏍煎紡楠岃瘉
+ String emailRegex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
+ return email != null && email.matches(emailRegex);
+ }
+
private void setupEvents() {
getCodeButton.addActionListener(new ActionListener() {
@Override
@@ -177,15 +185,62 @@
String email = emailField.getText().trim();
if (email.isEmpty()) {
JOptionPane.showMessageDialog(ZhaohuiMima.this, "璇疯緭鍏ラ偖绠�", "鎻愮ず", JOptionPane.WARNING_MESSAGE);
+ emailField.requestFocus();
return;
}
- // 杩欓噷搴旇娣诲姞鍙戦�侀獙璇佺爜鐨勯�昏緫
- // 妯℃嫙鐢熸垚楠岃瘉鐮�
- generatedCode = String.valueOf((int)((Math.random() * 9 + 1) * 100000));
+ // 楠岃瘉閭鏍煎紡
+ if (!isValidEmail(email)) {
+ JOptionPane.showMessageDialog(ZhaohuiMima.this,
+ "璇疯緭鍏ユ湁鏁堢殑閭鍦板潃",
+ "杈撳叆閿欒",
+ JOptionPane.WARNING_MESSAGE);
+ emailField.requestFocus();
+ return;
+ }
- startCountdown();
- JOptionPane.showMessageDialog(ZhaohuiMima.this, "楠岃瘉鐮佸凡鍙戦��: " + generatedCode, "鎻愮ず", JOptionPane.INFORMATION_MESSAGE);
+ // 绂佺敤鎸夐挳锛岄槻姝㈤噸澶嶇偣鍑�
+ getCodeButton.setEnabled(false);
+
+ // 鍦ㄦ柊绾跨▼涓皟鐢ˋPI锛岄伩鍏嶉樆濉濽I
+ new Thread(() -> {
+ try {
+ // 璋冪敤閭欢楠岃瘉鐮佸彂閫丄PI
+ EmailCodeSender.EmailCodeResponse response = EmailCodeSender.sendEmailCode(email);
+
+ // 鍦‥DT绾跨▼涓洿鏂癠I
+ SwingUtilities.invokeLater(() -> {
+ if (response.isSuccess()) {
+ // 鍙戦�佹垚鍔燂紝鏄剧ず鎻愮ず骞跺紑濮嬪�掕鏃�
+ JOptionPane.showMessageDialog(ZhaohuiMima.this,
+ "楠岃瘉鐮佸凡鍙戦�佸埌鎮ㄧ殑閭",
+ "鎻愮ず",
+ JOptionPane.INFORMATION_MESSAGE);
+
+ // 寮�濮�60绉掑�掕鏃�
+ startCountdown();
+ } else {
+ // 鍙戦�佸け璐ワ紝鏄剧ず閿欒淇℃伅骞舵仮澶嶆寜閽�
+ getCodeButton.setEnabled(true);
+ String errorMessage = response.getMessage() != null ?
+ response.getMessage() : "楠岃瘉鐮佸彂閫佸け璐�";
+ JOptionPane.showMessageDialog(ZhaohuiMima.this,
+ errorMessage,
+ "閿欒",
+ JOptionPane.ERROR_MESSAGE);
+ }
+ });
+ } catch (Exception ex) {
+ // 寮傚父澶勭悊锛屾仮澶嶆寜閽苟鏄剧ず閿欒
+ SwingUtilities.invokeLater(() -> {
+ getCodeButton.setEnabled(true);
+ JOptionPane.showMessageDialog(ZhaohuiMima.this,
+ "鍙戦�侀獙璇佺爜鏃跺彂鐢熼敊璇�: " + ex.getMessage(),
+ "閿欒",
+ JOptionPane.ERROR_MESSAGE);
+ });
+ }
+ }).start();
}
});
@@ -280,58 +335,97 @@
private void savePassword() {
String email = emailField.getText().trim();
String code = codeField.getText().trim();
- String password = new String(passwordField.getPassword());
- String confirmPassword = new String(confirmPasswordField.getPassword());
+ String newPassword = new String(passwordField.getPassword()).trim();
+ String confirmPassword = new String(confirmPasswordField.getPassword()).trim();
+ // 杈撳叆楠岃瘉
if (email.isEmpty()) {
JOptionPane.showMessageDialog(this, "璇疯緭鍏ラ偖绠�", "閿欒", JOptionPane.ERROR_MESSAGE);
- return;
- }
- if (code.isEmpty()) {
- JOptionPane.showMessageDialog(this, "璇疯緭鍏ラ獙璇佺爜", "閿欒", JOptionPane.ERROR_MESSAGE);
+ emailField.requestFocus();
return;
}
- // 楠岃瘉楠岃瘉鐮�
- if (generatedCode == null || !generatedCode.equals(code)) {
- JOptionPane.showMessageDialog(this, "楠岃瘉鐮侀敊璇�", "閿欒", JOptionPane.ERROR_MESSAGE);
+ // 楠岃瘉閭鏍煎紡
+ if (!isValidEmail(email)) {
+ JOptionPane.showMessageDialog(this, "璇疯緭鍏ユ湁鏁堢殑閭鍦板潃", "閿欒", JOptionPane.ERROR_MESSAGE);
+ emailField.requestFocus();
+ return;
+ }
+
+ if (code.isEmpty()) {
+ JOptionPane.showMessageDialog(this, "璇疯緭鍏ラ獙璇佺爜", "閿欒", JOptionPane.ERROR_MESSAGE);
+ codeField.requestFocus();
return;
}
- if (password.length() < 6) {
+ if (newPassword.isEmpty()) {
+ JOptionPane.showMessageDialog(this, "璇疯緭鍏ユ柊瀵嗙爜", "閿欒", JOptionPane.ERROR_MESSAGE);
+ passwordField.requestFocus();
+ return;
+ }
+
+ if (newPassword.length() < 6) {
JOptionPane.showMessageDialog(this, "瀵嗙爜闀垮害涓嶈兘灏戜簬6涓瓧绗�", "閿欒", JOptionPane.ERROR_MESSAGE);
+ passwordField.requestFocus();
return;
}
- if (password.length() > 25) {
+ if (newPassword.length() > 25) {
JOptionPane.showMessageDialog(this, "瀵嗙爜闀垮害涓嶈兘瓒呰繃25涓瓧绗�", "閿欒", JOptionPane.ERROR_MESSAGE);
+ passwordField.requestFocus();
return;
}
- if (!password.equals(confirmPassword)) {
+
+ if (confirmPassword.isEmpty()) {
+ JOptionPane.showMessageDialog(this, "璇疯緭鍏ョ‘璁ゅ瘑鐮�", "閿欒", JOptionPane.ERROR_MESSAGE);
+ confirmPasswordField.requestFocus();
+ return;
+ }
+
+ if (!newPassword.equals(confirmPassword)) {
JOptionPane.showMessageDialog(this, "涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�", "閿欒", JOptionPane.ERROR_MESSAGE);
+ confirmPasswordField.requestFocus();
return;
}
- // 楠岃瘉閭鏄惁鍖归厤 (鍙�夛紝鏍规嵁闇�姹�)
- String savedEmail = Usrdell.getProperty("email");
- if (savedEmail != null && !savedEmail.equals(email)) {
- // 杩欓噷鍋囪蹇呴』鍖归厤宸插瓨閭锛屾垨鑰呰繖鏄竴涓柊鍔熻兘鍏佽浠绘剰閭鎵惧洖锛�
- // 閫氬父鎵惧洖瀵嗙爜闇�瑕佸尮閰嶈处鍙风粦瀹氱殑閭
- // 濡傛灉鏈湴娌℃湁瀛橀偖绠憋紝鎴栬�呰緭鍏ョ殑閭涓嶅
- // JOptionPane.showMessageDialog(this, "閭涓嶅尮閰�", "閿欒", JOptionPane.ERROR_MESSAGE);
- // return;
- }
-
- // 杩欓噷搴旇楠岃瘉楠岃瘉鐮佹槸鍚︽纭�
- // ...
-
- // 淇濆瓨瀵嗙爜
- try {
- Usrdell.updateProperty("password", password);
- JOptionPane.showMessageDialog(this, "瀵嗙爜淇敼鎴愬姛", "鎴愬姛", JOptionPane.INFORMATION_MESSAGE);
- dispose();
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(this, "淇濆瓨澶辫触: " + ex.getMessage(), "閿欒", JOptionPane.ERROR_MESSAGE);
- }
+ // 绂佺敤淇濆瓨鎸夐挳锛岄槻姝㈤噸澶嶆彁浜�
+ saveButton.setEnabled(false);
+
+ // 鍦ㄦ柊绾跨▼涓皟鐢ˋPI锛岄伩鍏嶉樆濉濽I
+ new Thread(() -> {
+ try {
+ // 璋冪敤瀵嗙爜閲嶇疆API
+ PasswordReset.ResetPasswordResponse response = PasswordReset.resetPassword(
+ email, code, newPassword, confirmPassword);
+
+ // 鍦‥DT绾跨▼涓洿鏂癠I
+ SwingUtilities.invokeLater(() -> {
+ saveButton.setEnabled(true);
+
+ // 鏄剧ず杩斿洖娑堟伅
+ String message = response.getMessage() != null ?
+ response.getMessage() : (response.isSuccess() ? "瀵嗙爜閲嶇疆鎴愬姛" : "瀵嗙爜閲嶇疆澶辫触");
+ int messageType = response.isSuccess() ?
+ JOptionPane.INFORMATION_MESSAGE : JOptionPane.ERROR_MESSAGE;
+ String title = response.isSuccess() ? "鎴愬姛" : "澶辫触";
+
+ JOptionPane.showMessageDialog(this, message, title, messageType);
+
+ // 濡傛灉鎴愬姛锛屽叧闂獥鍙�
+ if (response.isSuccess()) {
+ dispose();
+ }
+ });
+ } catch (Exception e) {
+ // 寮傚父澶勭悊锛屾仮澶嶆寜閽苟鏄剧ず閿欒
+ SwingUtilities.invokeLater(() -> {
+ saveButton.setEnabled(true);
+ JOptionPane.showMessageDialog(this,
+ "閲嶇疆瀵嗙爜鏃跺彂鐢熼敊璇�: " + e.getMessage(),
+ "閿欒",
+ JOptionPane.ERROR_MESSAGE);
+ });
+ }
+ }).start();
}
private JPanel createPasswordPanel() {
--
Gitblit v1.10.0