From 686fe55892de7bf8d206cddbead77a5fbdb0e091 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期日, 08 三月 2026 19:59:29 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/system/timer/LicenseTimer.java |   82 +++++++++++++++++++++++++++++-----------
 1 files changed, 59 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/zy/system/timer/LicenseTimer.java b/src/main/java/com/zy/system/timer/LicenseTimer.java
index 758d92d..235a53c 100644
--- a/src/main/java/com/zy/system/timer/LicenseTimer.java
+++ b/src/main/java/com/zy/system/timer/LicenseTimer.java
@@ -52,6 +52,12 @@
     @Value("${license.publicKeysStorePath}")
     private String publicKeysStorePath;
 
+    /**
+     * 璁稿彲璇佹湇鍔$鍦板潃銆�
+     */
+    @Value("${license.remoteServerUrl:http://net.zoneyung.net:9999/license}")
+    private String remoteServerUrl;
+
     @Autowired
     private LicenseInfosService licenseInfosService;
 
@@ -73,24 +79,18 @@
 
     public void getRemoteLicense() {
         try {
+            String requestCode = LicenseUtils.buildRequestCode(subject);
             LicenseCheck serverInfos = LicenseUtils.getServerInfos();
-
-            HashMap<String, Object> map = new HashMap<>();
-            map.put("subject", subject);
-            map.put("licenseCheck", serverInfos);
-
-            String response = new HttpHandler.Builder()
-                    .setUri("http://net.zoneyung.net:9999/license")
-                    .setPath("/remoteQueryLicense")
-                    .setJson(JSON.toJSONString(map))
-                    .build()
-                    .doPost();
-            JSONObject jsonObject = JSON.parseObject(response);
-            if (jsonObject.getString("result").equals("ok")) {
+            JSONObject response = requestRemoteLicense(buildRequestCodePayload(requestCode));
+            if (!isSuccess(response)) {
+                response = requestRemoteLicense(buildLegacyPayload(serverInfos));
+            }
+            if (isSuccess(response)) {
                 LicenseInfos licenseInfos = new LicenseInfos();
-                licenseInfos.setLicense(jsonObject.getString("data"));
+                licenseInfos.setLicense(response.getString("data"));
                 licenseInfos.setCreateTime(new Date());
-                licenseInfos.setLicenseTime(jsonObject.getString("licenseTime"));
+                licenseInfos.setLicenseTime(response.getString("licenseTime"));
+                licenseInfos.setRequestCode(requestCode);
                 licenseInfosService.insert(licenseInfos);
             }
         } catch (Exception e) {
@@ -98,14 +98,42 @@
         }
     }
 
-    public void verify() {
-        LicenseInfos latestLicense = licenseInfosService.getLatestLicense();
-        if (latestLicense == null) {
-            setLicenseDays(0);
-            setSystemSupport(false);
-            return;
+    private JSONObject requestRemoteLicense(String json) {
+        try {
+            String response = new HttpHandler.Builder()
+                    .setUri(remoteServerUrl)
+                    .setPath("/remoteQueryLicense")
+                    .setJson(json)
+                    .build()
+                    .doPost();
+            if (response == null || response.trim().isEmpty()) {
+                return null;
+            }
+            return JSON.parseObject(response);
+        } catch (Exception e) {
+            return null;
         }
+    }
 
+    private String buildRequestCodePayload(String requestCode) {
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("subject", subject);
+        map.put("requestCode", requestCode);
+        return JSON.toJSONString(map);
+    }
+
+    private String buildLegacyPayload(LicenseCheck serverInfos) {
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("subject", subject);
+        map.put("licenseCheck", serverInfos);
+        return JSON.toJSONString(map);
+    }
+
+    private boolean isSuccess(JSONObject jsonObject) {
+        return jsonObject != null && "ok".equalsIgnoreCase(jsonObject.getString("result"));
+    }
+
+    public void verify() {
         LicenseVerifyParam param = new LicenseVerifyParam();
         param.setSubject(subject);
         param.setPublicAlias(publicAlias);
@@ -113,10 +141,18 @@
         param.setLicensePath(licensePath);
         param.setPublicKeysStorePath(publicKeysStorePath);
 
+        String requestCode = LicenseUtils.buildRequestCode(subject);
+        LicenseInfos latestLicense = licenseInfosService.getLatestLicenseByRequestCode(requestCode);
+
         // 楠岃瘉璁稿彲璇佹槸鍚︽湁鏁�
         LicenseVerify licenseVerify = new LicenseVerify();
-        // 瀹夎璇佷功
-        LicenseContent install = licenseVerify.install(param, latestLicense.getLicense());
+        LicenseContent install = null;
+        if (latestLicense != null) {
+            install = licenseVerify.install(param, latestLicense.getLicense());
+        }
+        if (install == null) {
+            install = licenseVerify.install(param);
+        }
 
         if (install != null) {
             Date start = new Date();

--
Gitblit v1.9.1