package com.zy.system.controller;
|
|
import com.core.annotations.ManagerAuth;
|
import com.core.common.Cools;
|
import com.core.common.R;
|
import com.zy.system.entity.license.*;
|
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.util.ClassUtils;
|
import org.springframework.web.bind.annotation.RequestBody;
|
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;
|
import java.text.SimpleDateFormat;
|
import java.time.temporal.ChronoUnit;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.prefs.Preferences;
|
|
/**
|
*
|
* 用于生成证书文件,不能放在给客户部署的代码里
|
*/
|
@RestController
|
@RequestMapping("/license")
|
public class LicenseCreatorController {
|
|
@Value("${license.licensePath}")
|
private String licensePath;
|
|
@Autowired
|
private LicenseCheckListener licenseCheckListener;
|
|
/**
|
* 获取服务器硬件信息
|
* @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() {
|
LicenseVerify licenseVerify = new LicenseVerify();
|
LicenseContent verifyInfo = licenseVerify.getVerifyInfo();
|
if (verifyInfo == null) {
|
return R.error();
|
}
|
|
Date start = new Date();
|
Date end = verifyInfo.getNotAfter();
|
Long starTime = start.getTime();
|
Long endTime = end.getTime();
|
Long num = endTime - starTime;//时间戳相差的毫秒数
|
int day = (int) (num / 24 / 60 / 60 / 1000);
|
return R.ok().add(day);
|
}
|
|
@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("许可证更新失败");
|
}
|
|
}
|