|  |  | 
 |  |  | package com.zy.system.entity.license; | 
 |  |  |  | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.zy.system.entity.LicenseInfos; | 
 |  |  | import com.zy.system.service.LicenseInfosService; | 
 |  |  | import com.zy.system.timer.LicenseTimer; | 
 |  |  | import de.schlichtherle.license.LicenseContent; | 
 |  |  | import org.apache.logging.log4j.LogManager; | 
 |  |  | import org.apache.logging.log4j.Logger; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.beans.factory.annotation.Value; | 
 |  |  | import org.springframework.context.ApplicationContext; | 
 |  |  | import org.springframework.context.ApplicationListener; | 
 |  |  | 
 |  |  | import org.springframework.stereotype.Component; | 
 |  |  |  | 
 |  |  | import java.io.File; | 
 |  |  | import java.util.Date; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 在项目启动时安装证书 | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     @Value("${license.publicKeysStorePath}") | 
 |  |  |     private String publicKeysStorePath; | 
 |  |  |     @Autowired | 
 |  |  |     private LicenseTimer licenseTimer; | 
 |  |  |     @Autowired | 
 |  |  |     private LicenseInfosService licenseInfosService; | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void onApplicationEvent(ContextRefreshedEvent event) { | 
 |  |  | 
 |  |  |             logger.info("++++++++ 开始加载许可证 ++++++++"); | 
 |  |  |  | 
 |  |  |             try { | 
 |  |  |                 String publicKeysStoreFileName = this.getClass().getClassLoader().getResource(publicKeysStorePath).getPath(); | 
 |  |  |                 File publicKeysStoreFile = new File(publicKeysStoreFileName); | 
 |  |  |                 licenseTimer.getRemoteLicense(); | 
 |  |  |             } catch (Exception e) { | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |                 String licensePathFileName = this.getClass().getClassLoader().getResource(licensePath).getPath(); | 
 |  |  |                 File licensePathFile = new File(licensePathFileName); | 
 |  |  |  | 
 |  |  |             try { | 
 |  |  |                 LicenseVerifyParam param = new LicenseVerifyParam(); | 
 |  |  |                 param.setSubject(subject); | 
 |  |  |                 param.setPublicAlias(publicAlias); | 
 |  |  |                 param.setStorePass(storePass); | 
 |  |  |                 param.setLicensePath(licensePathFile.getPath()); | 
 |  |  |                 param.setPublicKeysStorePath(publicKeysStoreFile.getPath()); | 
 |  |  |                 param.setLicensePath(licensePath); | 
 |  |  |                 param.setPublicKeysStorePath(publicKeysStorePath); | 
 |  |  |  | 
 |  |  |                 LicenseVerify licenseVerify = new LicenseVerify(); | 
 |  |  |  | 
 |  |  |                 LicenseInfos latestLicense = licenseInfosService.getLatestLicense(); | 
 |  |  |                 if (latestLicense == null) { | 
 |  |  |                     logger.info("许可证不存在"); | 
 |  |  |                     return false; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 //安装证书 | 
 |  |  |                 LicenseContent install = licenseVerify.install(param); | 
 |  |  |                 LicenseContent install = licenseVerify.install(param, latestLicense.getLicense()); | 
 |  |  |  | 
 |  |  |                 logger.info("++++++++ 许可证加载结束 ++++++++"); | 
 |  |  |  | 
 |  |  |                 licenseTimer.setSystemSupport(install!=null); | 
 |  |  |  | 
 |  |  |                 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); | 
 |  |  |                     licenseTimer.setLicenseDays(day); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |                 return install != null; | 
 |  |  |             } catch (Exception e) { | 
 |  |  |                 e.printStackTrace(); | 
 |  |  |                 return false; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         licenseTimer.setSystemSupport(false); | 
 |  |  |         return false; | 
 |  |  |     } | 
 |  |  | } |