From a4f07b2a0ddb6c210e05afbbb491feeb466203e7 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 09 三月 2026 19:15:50 +0800
Subject: [PATCH] #V3重大更新,升级JDK17,升级SpirngBoot3.5.1

---
 src/main/java/com/zy/system/controller/LicenseCreatorController.java |   98 ++++++++++++++++++++++++++++++++++---------------
 1 files changed, 68 insertions(+), 30 deletions(-)

diff --git a/src/main/java/com/zy/system/controller/LicenseCreatorController.java b/src/main/java/com/zy/system/controller/LicenseCreatorController.java
index f40ee5a..4ecd3b0 100644
--- a/src/main/java/com/zy/system/controller/LicenseCreatorController.java
+++ b/src/main/java/com/zy/system/controller/LicenseCreatorController.java
@@ -1,18 +1,21 @@
 package com.zy.system.controller;
 
 import com.core.common.R;
+import com.zy.system.entity.LicenseInfos;
 import com.zy.system.entity.license.*;
+import com.zy.system.service.LicenseInfosService;
 import com.zy.system.timer.LicenseTimer;
+import de.schlichtherle.license.LicenseContent;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
 
-import java.io.File;
-import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 
 /**
  *
@@ -24,12 +27,20 @@
 
     @Value("${license.subject}")
     private String licenseSubject;
+    @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 LicenseCheckListener licenseCheckListener;
     @Autowired
     private LicenseTimer licenseTimer;
+    @Autowired
+    private LicenseInfosService licenseInfosService;
     /**
      * 鑾峰彇鏈嶅姟鍣ㄧ‖浠朵俊鎭�
      * @param osName 鎿嶄綔绯荤粺绫诲瀷锛屽鏋滀负绌哄垯鑷姩鍒ゆ柇
@@ -37,6 +48,14 @@
     @RequestMapping(value = "/getServerInfos",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
     public LicenseCheck getServerInfos(@RequestParam(value = "osName",required = false) String osName) {
         return LicenseUtils.getServerInfos();
+    }
+
+    /**
+     * 鑾峰彇璇锋眰鐮併��
+     */
+    @RequestMapping(value = "/getRequestCode")
+    public R getRequestCode() {
+        return R.ok(LicenseUtils.buildRequestCode(licenseSubject));
     }
 
     /**
@@ -51,42 +70,46 @@
         return R.ok().add(licenseDays);
     }
 
-    @RequestMapping(value = "/updateLicense")
-    public R updateLicense(@RequestParam("file") MultipartFile[] files){
-        MultipartFile file = files[0];
-
-        String licensePathFileName = this.getClass().getClassLoader().getResource(licensePath).getPath();
-        File licensePathFile = new File(licensePathFileName);
-        //鏈嶅姟鍣ㄧ淇濆瓨鐨勬枃浠跺璞�
-        File serverFile = new File(licensePathFile.getPath());
-        if (serverFile.exists()) {
-            try {
-                serverFile.delete();//瀛樺湪鏂囦欢锛屽垹闄�
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
+    @RequestMapping(value = "/updateLicense", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
+    public R updateLicense(@RequestBody LicenseUploadParam param){
+        if (param == null || param.getLicense() == null || param.getLicense().trim().isEmpty()) {
+            return R.error("璁稿彲璇佸唴瀹逛笉鑳戒负绌�");
         }
 
-        try {
-            //鍒涘缓鏂囦欢
-            serverFile.createNewFile();
-            //灏嗕笂浼犵殑鏂囦欢鍐欏叆鍒版湇鍔″櫒绔枃浠跺唴
-            file.transferTo(serverFile);
-        } catch (IOException e) {
-            e.printStackTrace();
+        String licenseBase64 = param.getLicense().trim();
+        LicenseVerifyParam verifyParam = buildVerifyParam();
+        LicenseVerify licenseVerify = new LicenseVerify();
+        LicenseContent install = licenseVerify.install(verifyParam, licenseBase64);
+        if (install == null) {
+            return R.error("璁稿彲璇佸唴瀹规棤鏁�");
         }
 
-        //閲嶆柊鍔犺浇璁稿彲璇�
-        boolean loadedLicense = licenseCheckListener.loadLicense();
-        if (loadedLicense) {
-            return R.ok();
+        LicenseInfos licenseInfos = new LicenseInfos();
+        licenseInfos.setLicense(licenseBase64);
+        licenseInfos.setLicenseTime(formatLicenseTime(install));
+        licenseInfos.setRequestCode(LicenseUtils.buildRequestCode(licenseSubject));
+        licenseInfos.setCreateTime(new Date());
+        if (!licenseInfosService.save(licenseInfos)) {
+            return R.error("璁稿彲璇佷繚瀛樺け璐�");
         }
-        return R.error("璁稿彲璇佹洿鏂板け璐�");
+
+        boolean loadedLicense = licenseCheckListener.loadLicense(false);
+        if (!loadedLicense) {
+            return R.error("璁稿彲璇佹縺娲诲け璐�");
+        }
+        licenseTimer.verify();
+        if (!licenseTimer.getSystemSupport()) {
+            return R.error("璁稿彲璇佹牎楠屽け璐�");
+        }
+        return R.ok();
     }
 
     @RequestMapping(value = "/activate")
     public R activate() {
         licenseTimer.timer();
+        if (!licenseTimer.getSystemSupport()) {
+            return R.error("璁稿彲璇佹縺娲诲け璐�");
+        }
         return R.ok();
     }
 
@@ -95,4 +118,19 @@
         return R.ok(licenseSubject);
     }
 
-}
\ No newline at end of file
+    private LicenseVerifyParam buildVerifyParam() {
+        LicenseVerifyParam param = new LicenseVerifyParam();
+        param.setSubject(licenseSubject);
+        param.setPublicAlias(publicAlias);
+        param.setStorePass(storePass);
+        param.setLicensePath(licensePath);
+        param.setPublicKeysStorePath(publicKeysStorePath);
+        return param;
+    }
+
+    private String formatLicenseTime(LicenseContent install) {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        return format.format(install.getNotBefore()) + "  -  " + format.format(install.getNotAfter());
+    }
+
+}

--
Gitblit v1.9.1