From d174064c9c48a409d8ee6cdc1d65a5ffe1b2ed0f Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期二, 05 八月 2025 10:32:04 +0800
Subject: [PATCH] #许可证2.0

---
 src/main/java/com/zy/system/timer/LicenseTimer.java |  131 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 127 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/zy/system/timer/LicenseTimer.java b/src/main/java/com/zy/system/timer/LicenseTimer.java
index a56a24c..985ace4 100644
--- a/src/main/java/com/zy/system/timer/LicenseTimer.java
+++ b/src/main/java/com/zy/system/timer/LicenseTimer.java
@@ -1,8 +1,20 @@
 package com.zy.system.timer;
 
-import com.zy.system.entity.license.LicenseVerify;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.core.common.Cools;
+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 {
@@ -11,14 +23,125 @@
 
     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() {
-//        System.out.println(SYSTEM_SUPPORT);
+        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();
-        boolean verify = licenseVerify.verify();
-        setSystemSupport(verify);//鏇存柊绯荤粺婵�娲荤姸鎬�
+        //瀹夎璇佷功
+        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() {

--
Gitblit v1.9.1