From 780ff45fdc167cadf4724c6c94530929b7445aab Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期一, 16 三月 2026 10:37:51 +0800
Subject: [PATCH] 完善许可证

---
 src/main/java/com/zy/system/entity/license/LicenseCheckListener.java |  110 +++++++++++++++++++++++++++----------------------------
 1 files changed, 54 insertions(+), 56 deletions(-)

diff --git a/src/main/java/com/zy/system/entity/license/LicenseCheckListener.java b/src/main/java/com/zy/system/entity/license/LicenseCheckListener.java
index 66234c2..653d493 100644
--- a/src/main/java/com/zy/system/entity/license/LicenseCheckListener.java
+++ b/src/main/java/com/zy/system/entity/license/LicenseCheckListener.java
@@ -1,6 +1,7 @@
 package com.zy.system.entity.license;
 
-import com.core.common.Cools;
+import com.zy.system.entity.LicenseInfos;
+import com.zy.system.service.LicenseInfosService;
 import com.zy.system.timer.LicenseTimer;
 import de.schlichtherle.license.LicenseContent;
 import org.apache.logging.log4j.LogManager;
@@ -12,7 +13,6 @@
 import org.springframework.context.event.ContextRefreshedEvent;
 import org.springframework.stereotype.Component;
 
-import java.io.File;
 import java.util.Date;
 
 /**
@@ -40,19 +40,12 @@
     @Value("${license.storePass}")
     private String storePass;
 
-    /**
-     * 璇佷功鐢熸垚璺緞
-     */
-    @Value("${license.licensePath}")
-    private String licensePath;
-
-    /**
-     * 瀵嗛挜搴撳瓨鍌ㄨ矾寰�
-     */
     @Value("${license.publicKeysStorePath}")
     private String publicKeysStorePath;
     @Autowired
     private LicenseTimer licenseTimer;
+    @Autowired
+    private LicenseInfosService licenseInfosService;
 
     @Override
     public void onApplicationEvent(ContextRefreshedEvent event) {
@@ -65,53 +58,58 @@
 
     //鍔犺浇璇佷功
     public boolean loadLicense() {
-        if(!Cools.isEmpty(licensePath)){
-            logger.info("++++++++ 寮�濮嬪姞杞借鍙瘉 ++++++++");
+        return loadLicense(true);
+    }
 
+    public boolean loadLicense(boolean fetchRemote) {
+        logger.info("++++++++ 寮�濮嬪姞杞借鍙瘉 ++++++++");
+
+        if (fetchRemote) {
             try {
-                String publicKeysStoreFileName = this.getClass().getClassLoader().getResource(publicKeysStorePath).getPath();
-                File publicKeysStoreFile = new File(publicKeysStoreFileName);
-
-                String licensePathFileName = this.getClass().getClassLoader().getResource(licensePath).getPath();
-                File licensePathFile = new File(licensePathFileName);
-
-                LicenseVerifyParam param = new LicenseVerifyParam();
-                param.setSubject(subject);
-                param.setPublicAlias(publicAlias);
-                param.setStorePass(storePass);
-                param.setLicensePath(licensePath);
-                param.setPublicKeysStorePath(publicKeysStorePath);
-
-                LicenseVerify licenseVerify = new LicenseVerify();
-                //瀹夎璇佷功
-                LicenseContent install = licenseVerify.install(param);
-
-                logger.info("++++++++ 璁稿彲璇佸姞杞界粨鏉� ++++++++");
-
-                logger.info("++++++++ 璁稿彲璇佸姞杞芥爣璁帮紝鎼滅储淇敼 ++++++++");
-                licenseTimer.setSystemSupport(true);
-//                licenseTimer.setLicenseDays(9999);
-//                return true;
-
-                licenseTimer.setSystemSupport(install!=null);
-
-                if (install != null) {
-                    Date start = new Date();
-                    Date end = install.getNotAfter();
-                    Long starTime = start.getTime();
-                    Long endTime = end.getTime();
-                    Long num = endTime - starTime;//鏃堕棿鎴崇浉宸殑姣鏁�
-                    int day = (int) (num / 24 / 60 / 60 / 1000);
-                    licenseTimer.setLicenseDays(day);
-                }
-
-
-                return install != null;
-            } catch (Exception e) {
-                return false;
+                licenseTimer.getRemoteLicense();
+            } catch (Exception ignored) {
             }
         }
-        licenseTimer.setSystemSupport(false);
-        return false;
+
+        try {
+            LicenseVerifyParam param = new LicenseVerifyParam();
+            param.setSubject(subject);
+            param.setPublicAlias(publicAlias);
+            param.setStorePass(storePass);
+            param.setPublicKeysStorePath(publicKeysStorePath);
+
+            LicenseVerify licenseVerify = new LicenseVerify();
+            String requestCode = LicenseUtils.buildRequestCode(subject);
+            LicenseInfos latestLicense = licenseInfosService.getLatestLicenseByRequestCode(requestCode);
+
+            LicenseContent install = null;
+            if (latestLicense != null && latestLicense.getLicense() != null && !latestLicense.getLicense().trim().isEmpty()) {
+                install = licenseVerify.install(param, latestLicense.getLicense().trim());
+            }
+            if (install == null) {
+                logger.info("璁稿彲璇佷笉瀛樺湪");
+                licenseTimer.setSystemSupport(false);
+                licenseTimer.setLicenseDays(0);
+                return false;
+            }
+
+            logger.info("++++++++ 璁稿彲璇佸姞杞界粨鏉� ++++++++");
+
+            licenseTimer.setSystemSupport(true);
+
+            Date start = new Date();
+            Date end = install.getNotAfter();
+            Long starTime = start.getTime();
+            Long endTime = end.getTime();
+            Long num = endTime - starTime;//鏃堕棿鎴崇浉宸殑姣鏁�
+            int day = (int) (num / 24 / 60 / 60 / 1000);
+            licenseTimer.setLicenseDays(day);
+            return true;
+        } catch (Exception e) {
+            logger.error("璁稿彲璇佸姞杞藉け璐�", e);
+            licenseTimer.setSystemSupport(false);
+            licenseTimer.setLicenseDays(0);
+            return false;
+        }
     }
-}
\ No newline at end of file
+}

--
Gitblit v1.9.1