| package com.zy.system.controller; | 
|   | 
| import com.core.common.Cools; | 
| import com.core.common.R; | 
| import com.zy.system.entity.license.*; | 
| import com.zy.system.timer.LicenseTimer; | 
| 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.RequestParam; | 
| import org.springframework.web.bind.annotation.RestController; | 
| import org.springframework.web.multipart.MultipartFile; | 
|   | 
| import java.io.File; | 
| import java.io.IOException; | 
|   | 
| /** | 
|  * 用于生成证书文件,不能放在给客户部署的代码里 | 
|  */ | 
| @RestController | 
| @RequestMapping("/license") | 
| public class LicenseCreatorController { | 
|   | 
|     @Value("${license.licensePath}") | 
|     private String licensePath; | 
|     @Autowired | 
|     private LicenseCheckListener licenseCheckListener; | 
|     @Autowired | 
|     private LicenseTimer licenseTimer; | 
|   | 
|     /** | 
|      * 获取服务器硬件信息 | 
|      * | 
|      * @param osName 操作系统类型,如果为空则自动判断 | 
|      */ | 
|     @RequestMapping(value = "/getServerInfos", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}) | 
|     public LicenseCheck getServerInfos(@RequestParam(value = "osName", required = false) String osName) { | 
|         //操作系统类型 | 
|         if (Cools.isEmpty(osName)) { | 
|             osName = System.getProperty("os.name"); | 
|         } | 
|         osName = osName.toLowerCase(); | 
|   | 
|         AbstractServerInfos abstractServerInfos = null; | 
|   | 
|         //根据不同操作系统类型选择不同的数据获取方法 | 
|         if (osName.startsWith("windows")) { | 
|             abstractServerInfos = new WindowsServerInfos(); | 
|         } else if (osName.startsWith("linux")) { | 
|             abstractServerInfos = new LinuxServerInfos(); | 
|         } else {//其他服务器类型 | 
|             abstractServerInfos = new WindowsServerInfos(); | 
|         } | 
|   | 
|         return abstractServerInfos.getServerInfos(); | 
|     } | 
|   | 
|     /** | 
|      * 获取许可证有效期天数 | 
|      */ | 
|     @RequestMapping(value = "/getLicenseDays") | 
|     public R getLicenseDays() { | 
|         return R.ok(licenseTimer.getLicenseDays()); | 
|     } | 
|   | 
|     @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(); | 
|             } | 
|         } | 
|   | 
|         try { | 
|             //创建文件 | 
|             serverFile.createNewFile(); | 
|             //将上传的文件写入到服务器端文件内 | 
|             file.transferTo(serverFile); | 
|         } catch (IOException e) { | 
|             e.printStackTrace(); | 
|         } | 
|   | 
|         //重新加载许可证 | 
|         boolean loadedLicense = licenseCheckListener.loadLicense(); | 
|         if (loadedLicense) { | 
|             return R.ok(); | 
|         } | 
|         return R.error("许可证更新失败"); | 
|     } | 
|   | 
|     @RequestMapping(value = "/activate") | 
|     public R activate() { | 
|         licenseTimer.timer(); | 
|         return R.ok(); | 
|     } | 
|   | 
| } |