From 48c1de18235020edff108339ed1d12bade8a2b90 Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期一, 08 十二月 2025 16:37:02 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/system/entity/license/LicenseCheckListener.java |  123 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 123 insertions(+), 0 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
new file mode 100644
index 0000000..643ce23
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/license/LicenseCheckListener.java
@@ -0,0 +1,123 @@
+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;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+import java.util.Date;
+
+/**
+ * 鍦ㄩ」鐩惎鍔ㄦ椂瀹夎璇佷功
+ */
+@Component
+public class LicenseCheckListener implements ApplicationListener<ContextRefreshedEvent> {
+    private static Logger logger = LogManager.getLogger(LicenseCheckListener.class);
+
+    /**
+     * 璇佷功subject
+     */
+    @Value("${license.subject}")
+    private String subject;
+
+    /**
+     * 鍏挜鍒О
+     */
+    @Value("${license.publicAlias}")
+    private String publicAlias;
+
+    /**
+     * 璁块棶鍏挜搴撶殑瀵嗙爜
+     */
+    @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) {
+        //root application context 娌℃湁parent
+        ApplicationContext context = event.getApplicationContext().getParent();
+        if(context == null){
+            loadLicense();
+        }
+    }
+
+    //鍔犺浇璇佷功
+    public boolean loadLicense() {
+        if(!Cools.isEmpty(licensePath)){
+            logger.info("++++++++ 寮�濮嬪姞杞借鍙瘉 ++++++++");
+
+            try {
+                licenseTimer.getRemoteLicense();
+            } catch (Exception e) {
+            }
+
+            try {
+                LicenseVerifyParam param = new LicenseVerifyParam();
+                param.setSubject(subject);
+                param.setPublicAlias(publicAlias);
+                param.setStorePass(storePass);
+                param.setLicensePath(licensePath);
+                param.setPublicKeysStorePath(publicKeysStorePath);
+
+                LicenseVerify licenseVerify = new LicenseVerify();
+
+                LicenseInfos latestLicense = licenseInfosService.getLatestLicense();
+                if (latestLicense == null) {
+                    logger.info("璁稿彲璇佷笉瀛樺湪");
+                    return false;
+                }
+
+                //瀹夎璇佷功
+                LicenseContent install = licenseVerify.install(param, latestLicense.getLicense());
+
+                logger.info("++++++++ 璁稿彲璇佸姞杞界粨鏉� ++++++++");
+
+                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) {
+                e.printStackTrace();
+                return false;
+            }
+        }
+        licenseTimer.setSystemSupport(false);
+        return false;
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.1