From b3ac00069f9594f6ec0077cbb91516e26e13c3b6 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 01 八月 2020 15:23:26 +0800
Subject: [PATCH] #当前本版十分完美、冻结
---
version/lib/framework-1.1.1.jar | 0
src/main/java/com/zy/common/web/AuthController.java | 51 ++++++
src/main/java/com/zy/common/properties/SystemProperties.java | 69 +++++++++
src/main/java/com/zy/common/task/ActivateScheduler.java | 43 ++++++
version/lib/cool-framework-install.txt | 2
src/main/java/com/zy/common/config/AdminInterceptor.java | 7 +
src/main/webapp/views/index.html | 6
src/main/java/com/zy/common/model/enums/SysOsType.java | 49 +++++++
src/main/java/com/zy/common/properties/OSinfo.java | 136 +++++++++++++++++++
src/main/webapp/static/layuiadmin/lib/admin.js | 28 +++-
pom.xml | 4
11 files changed, 376 insertions(+), 19 deletions(-)
diff --git a/pom.xml b/pom.xml
index e497317..d242810 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,12 +10,12 @@
</parent>
<groupId>com.zy</groupId>
<artifactId>asrs</artifactId>
- <version>1.0.0</version>
+ <version>1.1.1</version>
<packaging>war</packaging>
<properties>
<java.version>1.8</java.version>
- <cool.version>1.0.0</cool.version>
+ <cool.version>1.1.1</cool.version>
<mysql-driver.version>5.1.47</mysql-driver.version>
<mybatis-plus.version>2.3.2</mybatis-plus.version>
<fastjson.version>1.2.58</fastjson.version>
diff --git a/src/main/java/com/zy/common/config/AdminInterceptor.java b/src/main/java/com/zy/common/config/AdminInterceptor.java
index 37a863d..80e61c5 100644
--- a/src/main/java/com/zy/common/config/AdminInterceptor.java
+++ b/src/main/java/com/zy/common/config/AdminInterceptor.java
@@ -5,6 +5,7 @@
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
+import com.zy.common.properties.SystemProperties;
import com.zy.common.utils.Http;
import com.zy.system.entity.*;
import com.zy.system.service.*;
@@ -114,6 +115,12 @@
userLoginService.updateById(userLogin);
// 鎿嶄綔鏃ュ織
if (!Cools.isEmpty(memo)) {
+ // 杩涜婵�娲诲垽鏂�
+ if (!SystemProperties.SYSTEM_ACTIVATION) {
+ Http.response(response, BaseRes.NO_ACTIVATION);
+ return false;
+ }
+ // 璁板綍鎿嶄綔鏃ュ織
OperateLog operateLog = new OperateLog();
operateLog.setAction(Cools.isEmpty(memo)?request.getRequestURI():memo);
operateLog.setIp(request.getRemoteAddr());
diff --git a/src/main/java/com/zy/common/model/enums/SysOsType.java b/src/main/java/com/zy/common/model/enums/SysOsType.java
new file mode 100644
index 0000000..26f1051
--- /dev/null
+++ b/src/main/java/com/zy/common/model/enums/SysOsType.java
@@ -0,0 +1,49 @@
+package com.zy.common.model.enums;
+
+public enum SysOsType {
+
+ Any("any", null),
+ Linux("Linux", null),
+ Mac_OS("Mac OS", null),
+ Mac_OS_X("Mac OS X", null),
+ Windows("Windows", "D:\\婵�娲荤爜.txt"),
+ OS2("OS/2", null),
+ Solaris("Solaris", null),
+ SunOS("SunOS", null),
+ MPEiX("MPE/iX", null),
+ HP_UX("HP-UX", null),
+ AIX("AIX", null),
+ OS390("OS/390", null),
+ FreeBSD("FreeBSD", null),
+ Irix("Irix", null),
+ Digital_Unix("Digital Unix", null),
+ NetWare_411("NetWare", null),
+ OSF1("OSF1", null),
+ OpenVMS("OpenVMS", null),
+ Others("Others", null);
+
+ private String description;
+ private String activationCodePath;
+
+ SysOsType(String desc, String activationCodePath) {
+ this.description = desc;
+ this.activationCodePath = activationCodePath;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getActivationCodePath() {
+ return activationCodePath;
+ }
+
+ public void setActivationCodePath(String activationCodePath) {
+ this.activationCodePath = activationCodePath;
+ }
+
+}
diff --git a/src/main/java/com/zy/common/properties/OSinfo.java b/src/main/java/com/zy/common/properties/OSinfo.java
new file mode 100644
index 0000000..c66b5cd
--- /dev/null
+++ b/src/main/java/com/zy/common/properties/OSinfo.java
@@ -0,0 +1,136 @@
+package com.zy.common.properties;
+
+import com.zy.common.model.enums.SysOsType;
+
+/**
+ * Created by vincent on 2020/8/1
+ */
+public class OSinfo {
+
+ private static final String OS = System.getProperty("os.name").toLowerCase();
+
+ private static final OSinfo _instance = new OSinfo();
+
+ private SysOsType sysOsType;
+
+ private OSinfo(){}
+
+ public static boolean isLinux(){
+ return OS.contains("linux");
+ }
+
+ public static boolean isMacOS(){
+ return OS.contains("mac") &&OS.indexOf("os")>0&& !OS.contains("x");
+ }
+
+ public static boolean isMacOSX(){
+ return OS.contains("mac") &&OS.indexOf("os")>0&&OS.indexOf("x")>0;
+ }
+
+ public static boolean isWindows(){
+ return OS.contains("windows");
+ }
+
+ public static boolean isOS2(){
+ return OS.contains("os/2");
+ }
+
+ public static boolean isSolaris(){
+ return OS.contains("solaris");
+ }
+
+ public static boolean isSunOS(){
+ return OS.contains("sunos");
+ }
+
+ public static boolean isMPEiX(){
+ return OS.contains("mpe/ix");
+ }
+
+ public static boolean isHPUX(){
+ return OS.contains("hp-ux");
+ }
+
+ public static boolean isAix(){
+ return OS.contains("aix");
+ }
+
+ public static boolean isOS390(){
+ return OS.contains("os/390");
+ }
+
+ public static boolean isFreeBSD(){
+ return OS.contains("freebsd");
+ }
+
+ public static boolean isIrix(){
+ return OS.contains("irix");
+ }
+
+ public static boolean isDigitalUnix(){
+ return OS.contains("digital") &&OS.indexOf("unix")>0;
+ }
+
+ public static boolean isNetWare(){
+ return OS.contains("netware");
+ }
+
+ public static boolean isOSF1(){
+ return OS.contains("osf1");
+ }
+
+ public static boolean isOpenVMS(){
+ return OS.contains("openvms");
+ }
+
+ /**
+ * 鑾峰彇鎿嶄綔绯荤粺鍚嶅瓧
+ * @return 鎿嶄綔绯荤粺鍚�
+ */
+ public static SysOsType getOSname(){
+ if(isAix()){
+ _instance.sysOsType = SysOsType.AIX;
+ }else if (isDigitalUnix()) {
+ _instance.sysOsType = SysOsType.Digital_Unix;
+ }else if (isFreeBSD()) {
+ _instance.sysOsType = SysOsType.FreeBSD;
+ }else if (isHPUX()) {
+ _instance.sysOsType = SysOsType.HP_UX;
+ }else if (isIrix()) {
+ _instance.sysOsType = SysOsType.Irix;
+ }else if (isLinux()) {
+ _instance.sysOsType = SysOsType.Linux;
+ }else if (isMacOS()) {
+ _instance.sysOsType = SysOsType.Mac_OS;
+ }else if (isMacOSX()) {
+ _instance.sysOsType = SysOsType.Mac_OS_X;
+ }else if (isMPEiX()) {
+ _instance.sysOsType = SysOsType.MPEiX;
+ }else if (isNetWare()) {
+ _instance.sysOsType = SysOsType.NetWare_411;
+ }else if (isOpenVMS()) {
+ _instance.sysOsType = SysOsType.OpenVMS;
+ }else if (isOS2()) {
+ _instance.sysOsType = SysOsType.OS2;
+ }else if (isOS390()) {
+ _instance.sysOsType = SysOsType.OS390;
+ }else if (isOSF1()) {
+ _instance.sysOsType = SysOsType.OSF1;
+ }else if (isSolaris()) {
+ _instance.sysOsType = SysOsType.Solaris;
+ }else if (isSunOS()) {
+ _instance.sysOsType = SysOsType.SunOS;
+ }else if (isWindows()) {
+ _instance.sysOsType = SysOsType.Windows;
+ }else{
+ _instance.sysOsType = SysOsType.Others;
+ }
+ return _instance.sysOsType;
+ }
+
+ public static void main(String[] args) {
+ System.out.println(OSinfo.getOSname());// 鑾峰彇绯荤粺绫诲瀷
+ System.out.println(OSinfo.isWindows());// 鍒ゆ柇鏄惁涓簑indows绯荤粺
+ }
+
+}
diff --git a/src/main/java/com/zy/common/properties/SystemProperties.java b/src/main/java/com/zy/common/properties/SystemProperties.java
new file mode 100644
index 0000000..37d8e1c
--- /dev/null
+++ b/src/main/java/com/zy/common/properties/SystemProperties.java
@@ -0,0 +1,69 @@
+package com.zy.common.properties;
+
+import com.core.common.AesUtils;
+
+import java.io.*;
+
+/**
+ * Created by vincent on 2020/8/1
+ */
+public class SystemProperties {
+
+ // 婵�娲荤爜鍔犲瘑鐩� -- 16浣�
+ public static final String SALT = "123456789qwertyu";
+
+ // 绯荤粺婵�娲荤姸鎬� (榛樿鏈縺娲�)
+ public static boolean SYSTEM_ACTIVATION = Boolean.FALSE;
+
+ public static String getActivationCode(String fileName){
+ StringBuilder activationCode = new StringBuilder();
+ try {
+ FileReader f = new FileReader(fileName);
+ BufferedReader buf = new BufferedReader(f);
+ String s;
+ while ((s = buf.readLine()) != null) {
+ activationCode.append(s);
+ }
+ f.close();
+ buf.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ throw new RuntimeException("璇诲彇WMS绯荤粺婵�娲荤爜澶辫触锛侊紒锛乗n璇诲彇璺緞 " + fileName);
+ }
+ return activationCode.toString();
+ }
+
+ public static boolean saveActivationCode(String filePath, String code){
+ try {
+ // 闃叉鏂囦欢寤虹珛鎴栬鍙栧け璐ワ紝鐢╟atch鎹曟崏閿欒骞舵墦鍗帮紝涔熷彲浠hrow
+ File file = new File(filePath);// 鐩稿璺緞锛屽鏋滄病鏈夊垯瑕佸缓绔嬩竴涓柊鐨刼utput銆倀xt鏂囦欢
+ if (file.exists()) {
+ file.delete();
+ }
+ boolean newFile = file.createNewFile();// 鍒涘缓鏂版枃浠�
+ if (newFile) {
+ BufferedWriter out = new BufferedWriter(new FileWriter(file, true));
+ out.write(code); // \r\n鍗充负鎹㈣
+ out.flush(); // 鎶婄紦瀛樺尯鍐呭鍘嬪叆鏂囦欢
+ out.close(); // 鏈�鍚庤寰楀叧闂枃浠�
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("鍐欏叆WMS绯荤粺婵�娲荤爜澶辫触锛侊紒锛乗n璺緞 " + filePath);
+ }
+ return true;
+ }
+
+
+ // 鐢熸垚婵�娲荤爜
+ public static void main(String[] args) {
+ String code = AesUtils.encrypt("20200801152500", SystemProperties.SALT);
+ System.out.println(code);
+// saveActivationCode(SysOsType.Windows.getActivationCodePath(), code);
+// String activationCode = getActivationCode(OSinfo.getOSname().getActivationCodePath());
+// String decrypt = AesUtils.decrypt(activationCode, "123456789qwertyu");
+// Date convert = DateUtils.convert(decrypt, DateUtils.yyyyMMddHHmmss);
+// System.out.println(DateUtils.convert(convert));
+ }
+
+}
diff --git a/src/main/java/com/zy/common/task/ActivateScheduler.java b/src/main/java/com/zy/common/task/ActivateScheduler.java
new file mode 100644
index 0000000..cf742f4
--- /dev/null
+++ b/src/main/java/com/zy/common/task/ActivateScheduler.java
@@ -0,0 +1,43 @@
+package com.zy.common.task;
+
+import com.core.common.AesUtils;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.zy.common.properties.OSinfo;
+import com.zy.common.properties.SystemProperties;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.Date;
+
+/**
+ * 绯荤粺婵�娲讳换鍔�
+ */
+@Component
+public class ActivateScheduler {
+
+ @Scheduled(cron = "0/1 * 8 * * ? ")
+ @PostConstruct
+ private void execute(){
+ // 鑾峰彇婵�娲荤爜
+ String activationCode = SystemProperties.getActivationCode(OSinfo.getOSname().getActivationCodePath());
+ if (!Cools.isEmpty(activationCode)) {
+ // 鑾峰彇鏈夋晥鏈�
+ String timeStr = AesUtils.decrypt(activationCode, SystemProperties.SALT);
+ if (null == timeStr) {
+ SystemProperties.SYSTEM_ACTIVATION = Boolean.FALSE;
+ return;
+ }
+ Date exprTime = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss);
+ if (new Date().getTime() < exprTime.getTime()) {
+ SystemProperties.SYSTEM_ACTIVATION = Boolean.TRUE;
+ } else {
+ SystemProperties.SYSTEM_ACTIVATION = Boolean.FALSE;
+ }
+ } else {
+ SystemProperties.SYSTEM_ACTIVATION = Boolean.FALSE;
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/common/web/AuthController.java b/src/main/java/com/zy/common/web/AuthController.java
index 31232e4..fd37885 100644
--- a/src/main/java/com/zy/common/web/AuthController.java
+++ b/src/main/java/com/zy/common/web/AuthController.java
@@ -3,17 +3,18 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.core.annotations.ManagerAuth;
+import com.core.common.*;
+import com.core.exception.CoolException;
import com.zy.common.CodeRes;
import com.zy.common.entity.Parameter;
import com.zy.common.model.PowerDto;
import com.zy.common.model.enums.HtmlNavIconType;
+import com.zy.common.properties.OSinfo;
+import com.zy.common.properties.SystemProperties;
import com.zy.common.utils.RandomValidateCodeUtil;
import com.zy.system.entity.*;
import com.zy.system.service.*;
-import com.core.annotations.ManagerAuth;
-import com.core.common.Cools;
-import com.core.common.R;
-import com.core.exception.CoolException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
@@ -324,10 +325,48 @@
return R.ok(resources);
}
+ @GetMapping(value = "/system/activation/auth")
+ public R activation() {
+ if (SystemProperties.SYSTEM_ACTIVATION) {
+ String activationCode = SystemProperties.getActivationCode(OSinfo.getOSname().getActivationCodePath());
+ String timeStr = AesUtils.decrypt(activationCode, SystemProperties.SALT);
+ if (null == timeStr) {
+ SystemProperties.SYSTEM_ACTIVATION = Boolean.FALSE;
+ return R.error();
+ }
+ Date exprTime = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss);
+ if (new Date().getTime() < exprTime.getTime()) {
+ return R.ok().add(DateUtils.convert(exprTime));
+ } else {
+ SystemProperties.SYSTEM_ACTIVATION = Boolean.FALSE;
+ return R.error();
+ }
+ } else {
+ return R.error();
+ }
+ }
+
@PostMapping(value = "/system/secret/auth")
- @ManagerAuth(memo = "鏇存柊绉橀挜")
+ @ManagerAuth
public R systemSecret(@RequestParam(value = "secret") String secret) {
- return R.ok(secret);
+ if (Cools.isEmpty(secret)) {
+ return R.error("璇疯緭鍏ユ縺娲荤爜");
+ }
+ // 楠岃瘉婵�娲荤爜
+ String timeStr = AesUtils.decrypt(secret, SystemProperties.SALT);
+ if (null == timeStr) {
+ return R.error("婵�娲荤爜閿欒");
+ }
+ Date exprTime = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss);
+ if (new Date().getTime() >= exprTime.getTime()) {
+ return R.error("婵�娲荤爜宸插け鏁�");
+ }
+ boolean result = SystemProperties.saveActivationCode(OSinfo.getOSname().getActivationCodePath(), secret);
+ if (!result) {
+ return R.error("婵�娲诲け璐�");
+ }
+ SystemProperties.SYSTEM_ACTIVATION = Boolean.TRUE;
+ return R.ok("婵�娲绘垚鍔燂紝鏈夋晥鏈熻嚦"+DateUtils.convert(exprTime));
}
}
diff --git a/src/main/webapp/static/layuiadmin/lib/admin.js b/src/main/webapp/static/layuiadmin/lib/admin.js
index 6f6f1f6..1f8af78 100644
--- a/src/main/webapp/static/layuiadmin/lib/admin.js
+++ b/src/main/webapp/static/layuiadmin/lib/admin.js
@@ -381,9 +381,24 @@
,note: function(othis){
var mobile = admin.screen() < 2
,note = layui.data(setter.tableName).note;
-
+ // 鑾峰彇婵�娲荤姸鎬�
+ var activation = false;
+ var exprTime;
+ $.ajax({
+ url: baseUrl+"/system/activation/auth",
+ dataType:'json',
+ method: 'GET',
+ async: false,
+ success: function (res) {
+ if (res.code === 200) {
+ activation = true;
+ exprTime = res.data;
+ }
+ }
+ });
+
events.note.index = admin.popup({
- title: 'WMS 绉橀挜'
+ title: (activation?"宸叉縺娲伙紙鏈夋晥鏈熻嚦"+exprTime+"锛�":"Activation Code(鏈縺娲�)")
// title: 'license'
,shade: 0
,offset: [
@@ -395,7 +410,7 @@
,skin: 'layadmin-note layui-anim layui-anim-upbit'
,content: '<textarea placeholder="鍐呭"></textarea>'
,resize: false
- ,btn: ['娣诲姞', '鍙栨秷']
+ ,btn: [(activation?"鏇存柊":"绔嬪嵆婵�娲�"), '鍙栨秷']
,success: function(layero, index){
var textarea = layero.find('textarea')
,value = note === undefined ? '' : note;
@@ -411,13 +426,13 @@
$.ajax({
url: baseUrl+"/system/secret/auth",
headers: {'token': localStorage.getItem('token')},
- data: "secret="+note,
+ data: "secret="+$("#LAY_adminNote").children("textarea").val(),
dataType:'json',
method: 'POST',
success: function (res) {
- console.log(note)
if (res.code === 200) {
- layer.msg(res.msg)
+ layer.msg(res.msg);
+ layer.close(index);
} else if (res.code === 403) {
top.location.href = baseUrl+"/login";
} else {
@@ -425,7 +440,6 @@
}
}
});
- layer.close(index);
}
,btn2: function(index, layero){
layer.close(index);
diff --git a/src/main/webapp/views/index.html b/src/main/webapp/views/index.html
index c6864cd..6e76ec1 100644
--- a/src/main/webapp/views/index.html
+++ b/src/main/webapp/views/index.html
@@ -9,6 +9,9 @@
<link rel="icon" type="image/x-icon" href="../static/image/log.png" />
<link rel="stylesheet" href="../static/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="../static/layuiadmin/style/admin.css" media="all">
+ <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
+ <script type="text/javascript" src="../static/js/common.js"></script>
+ <script type="text/javascript" src="../static/layuiadmin/layui/layui.js"></script>
<style>
.layui-layout-admin .layui-footer {
box-sizing: border-box;
@@ -151,9 +154,6 @@
</div>
</div>
- <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
- <script type="text/javascript" src="../static/js/common.js"></script>
- <script src="../static/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: '../static/layuiadmin/' //闈欐�佽祫婧愭墍鍦ㄨ矾寰�
diff --git a/version/lib/cool-framework-install.txt b/version/lib/cool-framework-install.txt
index a81cb6d..d00ea19 100644
--- a/version/lib/cool-framework-install.txt
+++ b/version/lib/cool-framework-install.txt
@@ -1 +1 @@
-mvn install:install-file -Dfile=framework-1.0.0.jar -DgroupId=cn.cool -DartifactId=framework -Dversion=1.0.0 -Dpackaging=jar -DgeneratePom=true
\ No newline at end of file
+mvn install:install-file -Dfile=framework-1.1.1.jar -DgroupId=cn.cool -DartifactId=framework -Dversion=1.1.1 -Dpackaging=jar -DgeneratePom=true
\ No newline at end of file
diff --git a/version/lib/framework-1.0.0.jar b/version/lib/framework-1.1.1.jar
similarity index 86%
rename from version/lib/framework-1.0.0.jar
rename to version/lib/framework-1.1.1.jar
index 3e26206..c3f7f9f 100644
--- a/version/lib/framework-1.0.0.jar
+++ b/version/lib/framework-1.1.1.jar
Binary files differ
--
Gitblit v1.9.1