From 5ae9bbe3583384afab8eb95a134ccb74aee6487a Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期四, 25 十二月 2025 13:46:38 +0800
Subject: [PATCH] 曾加修改密码功能

---
 src/denglu/Denglu.java |  130 ++++++++++++++++++++++++++++++++++++-------
 1 files changed, 108 insertions(+), 22 deletions(-)

diff --git a/src/denglu/Denglu.java b/src/denglu/Denglu.java
index 9db2124..98117a5 100644
--- a/src/denglu/Denglu.java
+++ b/src/denglu/Denglu.java
@@ -3,6 +3,12 @@
 import homein.WenJianSuo;
 import ui.UIConfig;
 import zhuye.Shouye;
+import gecaoji.Device;
+import chuankou.SerialPortNativeLoader;
+import set.Setsys;
+import udpdell.UDPServer;
+import user.Usrdell;
+import Mqttmessage.Client;
 import javax.swing.*;
 import java.awt.*;
 import java.awt.event.*;
@@ -339,10 +345,7 @@
         // 蹇樿瀵嗙爜鐐瑰嚮浜嬩欢
         forgotPassword.addMouseListener(new MouseAdapter() {
             public void mouseClicked(MouseEvent e) {
-                JOptionPane.showMessageDialog(Denglu.this, 
-                    "璇疯仈绯荤鐞嗗憳閲嶇疆瀵嗙爜", 
-                    "蹇樿瀵嗙爜", 
-                    JOptionPane.INFORMATION_MESSAGE);
+                new user.ZhaohuiMima(Denglu.this).setVisible(true);
             }
         });
         
@@ -430,10 +433,17 @@
             usernameField.setText("");
         }
         
-        // 濡傛灉瀵嗙爜涓�-1锛屾竻绌哄瘑鐮佹
-        String savedPassword = UserChuShiHua.getProperty("password");
-        if (savedPassword != null && savedPassword.equals("-1")) {
-            passwordField.setText("");
+        // 鍔犺浇璁颁綇鎴戠姸鎬�
+        String rememberPwd = UserChuShiHua.getProperty("rememberPassword");
+        boolean isRemember = "1".equals(rememberPwd);
+        rememberMe.setSelected(isRemember);
+
+        // 濡傛灉璁颁綇鎴戣閫変腑锛屽~鍏呭瘑鐮�
+        if (isRemember) {
+             String savedPassword = UserChuShiHua.getProperty("password");
+             if (savedPassword != null && !savedPassword.equals("-1")) {
+                 passwordField.setText(savedPassword);
+             }
         }
     }
 
@@ -473,20 +483,18 @@
         
         // 楠岃瘉鐢ㄦ埛鍚嶅拰瀵嗙爜
         if (validateLogin(username, password)) {
-            JOptionPane.showMessageDialog(this, 
-                "鐧诲綍鎴愬姛锛�", 
-                "鎴愬姛", 
-                JOptionPane.INFORMATION_MESSAGE);
-            
             // 鏇存柊鏈�鍚庣櫥褰曟椂闂�
             UserChuShiHua.updateProperty("lastLoginTime", String.valueOf(System.currentTimeMillis()));
             
-            // 濡傛灉璁颁綇鎴戣閫変腑锛屼繚瀛樼敤鎴峰悕
+            // 淇濆瓨璁颁綇鎴戠姸鎬�
             if (rememberMe.isSelected()) {
+                UserChuShiHua.updateProperty("rememberPassword", "1");
                 UserChuShiHua.updateProperty("userName", username);
+            } else {
+                UserChuShiHua.updateProperty("rememberPassword", "0");
             }
             
-            // 杩欓噷鍙互娣诲姞璺宠浆鍒颁富鐣岄潰鐨勪唬鐮�
+            // 鍏抽棴鐧诲綍绐楀彛骞舵墦寮�棣栭〉
             openMainApplication();
             
         } else {
@@ -513,7 +521,12 @@
     }
 
     private void openMainApplication() {
-        System.out.println("鐧诲綍鎴愬姛锛屽噯澶囨墦寮�涓诲簲鐢ㄧ▼搴�...");
+        launchMainApp();
+        dispose();
+    }
+
+    public static void launchMainApp() {
+        System.out.println("鍑嗗鎵撳紑涓诲簲鐢ㄧ▼搴�...");
 
         SwingUtilities.invokeLater(() -> {
             JFrame mainFrame = new JFrame("鏅鸿兘鍓茶崏绯荤粺");
@@ -522,15 +535,20 @@
             Shouye homePanel = new Shouye();
             mainFrame.setContentPane(homePanel);
 
-            mainFrame.pack();
-            int targetWidth = Math.max(mainFrame.getWidth(), 480);
-            int targetHeight = Math.max(mainFrame.getHeight(), 800);
-            mainFrame.setSize(targetWidth, targetHeight);
+            // 璁剧疆涓庣櫥褰曢〉闈㈢浉鍚岀殑灏哄
+            mainFrame.setSize(UIConfig.DIALOG_WIDTH, UIConfig.DIALOG_HEIGHT);
+            mainFrame.setMinimumSize(new Dimension(UIConfig.DIALOG_WIDTH, UIConfig.DIALOG_HEIGHT));
+            mainFrame.setResizable(false);
             mainFrame.setLocationRelativeTo(null);
             mainFrame.setVisible(true);
 
-            dispose();
-            System.out.println("鐧诲綍绐楀彛宸插叧闂紝涓诲簲鐢ㄧ▼搴忓凡鍚姩");
+            System.out.println("涓诲簲鐢ㄧ▼搴忓凡鍚姩");
+            
+            // 鍚姩鍚庤繛鎺QTT
+            new Thread(() -> {
+                System.out.println("姝e湪杩炴帴MQTT鏈嶅姟鍣�...");
+                Client.lianjiemqqt();
+            }).start();
         });
     }
     
@@ -540,5 +558,73 @@
         RegistrationFrame registerFrame = new RegistrationFrame(this, currentLanguageCode);
         registerFrame.setVisible(true);
     }
+    
+    /**
+     * 绋嬪簭鍏ュ彛鐐�
+     * 闆嗘垚Homein绫荤殑鍒濆鍖栭�昏緫
+     */
+    public static void main(String[] args) {
+        // 妫�鏌ョ▼搴忔槸鍚﹀凡缁忚繍琛�
+        if (WenJianSuo.isAlreadyRunning()) {
+            JOptionPane.showMessageDialog(null, 
+                "绋嬪簭宸茬粡鍦ㄨ繍琛屼腑锛乗n涓嶈兘鍚屾椂鎵撳紑澶氫釜瀹炰緥銆�", 
+                "璀﹀憡", 
+                JOptionPane.WARNING_MESSAGE);
+            System.exit(0);
+            return;
+        }
+        
+        // 娣诲姞鍏抽棴閽╁瓙锛岀‘淇濈▼搴忛��鍑烘椂閲婃斁閿�
+        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
+            WenJianSuo.releaseLock();
+        }));
+
+        try {
+            SerialPortNativeLoader.ensureLibraryPresent();
+            // 鍒濆鍖栨暟鎹�
+            UserChuShiHua.initialize();
+            Usrdell.initialize(); // 鍒濆鍖栫敤鎴峰睘鎬�
+
+            Setsys setsys = new Setsys();
+            setsys.initializeFromProperties();
+            Device.initializeActiveDevice(setsys.getMowerId());
+
+            UDPServer.startAsync();//鍚姩鏁版嵁鎺ユ敹绾跨▼
+            
+            // 鏄剧ず鍒濆鏁版嵁
+            System.out.println("鍒濆鐢ㄦ埛鍚�: " + UserChuShiHua.getProperty("userName"));
+            System.out.println("鍒濆瀵嗙爜: " + UserChuShiHua.getProperty("password"));
+            
+            // 妫�鏌ユ槸鍚﹁浣忓瘑鐮侊紝濡傛灉鏄垯鐩存帴杩涘叆涓婚〉
+            String rememberPwd = UserChuShiHua.getProperty("rememberPassword");
+            if ("1".equals(rememberPwd)) {
+                String storedUser = UserChuShiHua.getProperty("userName");
+                if (storedUser != null && !storedUser.equals("-1")) {
+                    launchMainApp();
+                    return;
+                }
+            }
+            
+            // 鍚姩鐧诲綍鐣岄潰
+            EventQueue.invokeLater(() -> {
+                try {
+                    new Denglu().setVisible(true);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    JOptionPane.showMessageDialog(null, 
+                        "鐧诲綍鐣岄潰鍚姩澶辫触: " + e.getMessage(), 
+                        "閿欒", 
+                        JOptionPane.ERROR_MESSAGE);
+                }
+            });
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+            JOptionPane.showMessageDialog(null, 
+                "绋嬪簭鍚姩澶辫触: " + e.getMessage(), 
+                "閿欒", 
+                JOptionPane.ERROR_MESSAGE);
+        }
+    }
    
 }
\ No newline at end of file

--
Gitblit v1.10.0