From 177188e74cbb15581132578b7b2857957b667a94 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 21 十月 2025 16:24:23 +0800
Subject: [PATCH] #
---
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