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/timer/LicenseTimer.java |  162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 162 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/system/timer/LicenseTimer.java b/src/main/java/com/zy/system/timer/LicenseTimer.java
new file mode 100644
index 0000000..dc49eb7
--- /dev/null
+++ b/src/main/java/com/zy/system/timer/LicenseTimer.java
@@ -0,0 +1,162 @@
+package com.zy.system.timer;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.zy.common.utils.HttpHandler;
+import com.zy.system.entity.LicenseInfos;
+import com.zy.system.entity.license.*;
+import com.zy.system.service.LicenseInfosService;
+import de.schlichtherle.license.LicenseContent;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.HashMap;
+
+@Component
+public class LicenseTimer {
+
+    private static boolean SYSTEM_SUPPORT = false;//绯荤粺婵�娲荤姸鎬侊紝榛樿鍏抽棴
+
+    private static int LICENSE_DAYS = 0;//璁稿彲璇佸ぉ鏁�
+
+    /**
+     * 璇佷功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 LicenseInfosService licenseInfosService;
+
+    //姣忓ぉ鏅氫笂11鐐规洿鏂扮郴缁熸縺娲荤姸鎬�
+    @Scheduled(cron = "0 0 23 * * ? ")
+    public void timer() {
+        try {
+            getRemoteLicense();
+        } catch (Exception e) {
+
+        }
+
+        try {
+            verify();
+        } catch (Exception e) {
+
+        }
+    }
+
+    public void getRemoteLicense() {
+        try {
+            AbstractServerInfos abstractServerInfos = null;
+            String osName = System.getProperty("os.name");
+            //鏍规嵁涓嶅悓鎿嶄綔绯荤粺绫诲瀷閫夋嫨涓嶅悓鐨勬暟鎹幏鍙栨柟娉�
+            if (osName.startsWith("windows")) {
+                abstractServerInfos = new WindowsServerInfos();
+            } else if (osName.startsWith("linux")) {
+                abstractServerInfos = new LinuxServerInfos();
+            }else{//鍏朵粬鏈嶅姟鍣ㄧ被鍨�
+                abstractServerInfos = new WindowsServerInfos();
+            }
+            LicenseCheck serverInfos = abstractServerInfos.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")) {
+                LicenseInfos licenseInfos = new LicenseInfos();
+                licenseInfos.setLicense(jsonObject.getString("data"));
+                licenseInfos.setCreateTime(new Date());
+                licenseInfos.setLicenseTime(jsonObject.getString("licenseTime"));
+                licenseInfosService.insert(licenseInfos);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void verify() {
+        LicenseInfos latestLicense = licenseInfosService.getLatestLicense();
+        if (latestLicense == null) {
+            setLicenseDays(0);
+            setSystemSupport(false);
+            return;
+        }
+
+        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, latestLicense.getLicense());
+
+        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);
+            setLicenseDays(day);
+            setSystemSupport(true);
+        }else {
+            setLicenseDays(0);
+            setSystemSupport(false);
+        }
+    }
+
+    public boolean getSystemSupport() {
+        return SYSTEM_SUPPORT;
+    }
+
+    public void setSystemSupport(boolean systemSupport) {
+        SYSTEM_SUPPORT = systemSupport;
+    }
+
+    public int getLicenseDays() {
+        return LICENSE_DAYS;
+    }
+
+    public void setLicenseDays(int licenseDays) {
+        LICENSE_DAYS = licenseDays;
+    }
+
+}

--
Gitblit v1.9.1