Commit 8f02eae0 authored by 李德才's avatar 李德才

校验是否存在合法的SN码并给出提示

parent 3bb6b36c
......@@ -43,6 +43,12 @@
</repositories>
<dependencies>
<!-- SN序列号-->
<dependency>
<groupId>com.registration.util</groupId>
<artifactId>SnUtil</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
......
......@@ -8,6 +8,7 @@ import com.archser.aserver.controller.MediumController;
import com.archser.aserver.controller.MenuController;
import com.archser.aserver.controller.MessageController;
import com.archser.aserver.controller.SettingController;
import com.archser.aserver.controller.SnController;
import com.archser.aserver.controller.SystemController;
import com.archser.aserver.controller.UserController;
import com.archser.aserver.interceptor.JwtInterceptor;
......@@ -89,6 +90,7 @@ public class MainConfig extends JFinalConfig {
me.add("/key", KeyController.class);
me.add("/system", SystemController.class);
me.add("/bug", BugController.class);
me.add("/sn", SnController.class);
me.add("/medium",MediumController.class);
}
......@@ -123,6 +125,7 @@ public class MainConfig extends JFinalConfig {
arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));
arp.setDialect(new OracleDialect());
arp.addSqlTemplate("oracle.sql");
arp.addSqlTemplate("sn.sql");
/******** 在此添加数据库 表-Model 映射 *********/
// 如果使用了JFinal Model 生成器 生成了BaseModel 把下面注释解开即可
_MappingKit.mapping(arp);
......
package com.archser.aserver.controller;
import com.archser.aserver.model.SnValue;
import com.archser.aserver.service.SnService;
import com.jfinal.aop.Clear;
import com.jfinal.aop.Inject;
import com.jfinal.core.Controller;
import com.jfinal.core.paragetter.Para;
import com.jfinal.kit.Ret;
import com.registration.util.SnUtil;
import java.util.Map;
public class SnController extends Controller {
@Inject
SnService snService;
public void registered(@Para("") SnValue snValue) {
// 校验SN码是否合格
Map<String, String> stringStringMap = null;
String snCode = snService.getSn();
try {
stringStringMap = SnUtil.verifyValid(snValue.getOrganName(), snValue.getUniqueCode(), snCode);
} catch (Exception e) {
e.printStackTrace();
renderJson(Ret.fail("msg","请填写正确的注册码"));
return;
}
// SN码不符合要求,返回验证提示信息
if (!Boolean.parseBoolean(stringStringMap.get("success"))) {
renderJson(stringStringMap);
return;
}
// SN码符合要求,保存到数据库
boolean success = snService.saveSn(snValue.setSnCode(snCode));
if (success) {
renderJson(Ret.ok("msg", "保存成功"));
} else {
renderJson(Ret.fail("msg", "保存失败"));
}
}
/**
* 校验服务器是否有合法的SN号和对应的加密Key
*/
@Clear
public void snVerify() {
try {
Map<String, String> stringStringMap = snService.snVerify();
renderJson(stringStringMap);
} catch (Exception e) {
e.printStackTrace();
renderJson(Ret.fail("msg", e.getMessage()));
}
}
}
......@@ -31,6 +31,8 @@ public class MyMetaBuilder extends MetaBuilder {
return false;
case "AS_MESSAGE":
return false;
case "AS_SN_VALUE":
return false;
default:
return true;
}
......
......@@ -6,6 +6,7 @@ import com.archser.aserver.model.User;
import com.archser.aserver.util.redis.InfoOrgan;
import com.archser.aserver.util.redis.InfoSystem;
import com.archser.aserver.util.redis.InfoUser;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.cron4j.ITask;
......@@ -21,14 +22,17 @@ public class GoodSync implements ITask {
@Override
public void run() {
// 同步用户数据
java.lang.System.err.println("同步用户信息");
User.dao.findAll().forEach(InfoUser::saveUser);
if (PropKit.getBoolean("updateRedis")) {
// 同步用户数据
java.lang.System.err.println("同步用户信息");
User.dao.findAll().forEach(InfoUser::saveUser);
// 同步系统数据
java.lang.System.err.println("同步系统数据");
System.dao.findAll().forEach(InfoSystem::saveSystem);
java.lang.System.err.println("同步系统数据");
System.dao.findAll().forEach(InfoSystem::saveSystem);
// 同步机构数据
java.lang.System.err.println("同步机构数据");
Organ.dao.findAll().forEach(InfoOrgan::saveOrgan);
java.lang.System.err.println("同步机构数据");
Organ.dao.findAll().forEach(InfoOrgan::saveOrgan);
}
}
}
package com.archser.aserver.model;
import com.archser.aserver.model.base.BaseSnValue;
/**
* Generated by JFinal.
*/
@SuppressWarnings("serial")
public class SnValue extends BaseSnValue<SnValue> {
public static final SnValue dao = new SnValue().dao();
}
......@@ -6,10 +6,6 @@ Table: AS_CONFIG
NAME | VARCHAR2(255) | YES | | |
VAL | VARCHAR2(255) | YES | | |
DESCRIPTION | VARCHAR2(255) | YES | | |
ID | NUMBER(9) | NO | PRI | |
NAME | VARCHAR2(255) | YES | | |
VAL | VARCHAR2(255) | YES | | |
DESCRIPTION | VARCHAR2(255) | YES | | |
-------------+---------------+------+-----+---------+---------
Table: AS_LOG
......@@ -28,18 +24,6 @@ Table: AS_LOG
CODE | VARCHAR2(255) | YES | | |
TOKEN | VARCHAR2(255) | YES | | |
URL | VARCHAR2(1000) | YES | | |
ID | NUMBER(9) | NO | PRI | | Log主键
TYPE | VARCHAR2(150) | YES | | | 日志类型,login、access、error、operate之一
USER_ID | NUMBER(9) | YES | | | 用户名,关联AS_USER表的USERNAME
CONTENT | VARCHAR2(3000) | YES | | | 日志内容
CREATE_TIME | TIMESTAMP(36,6) | YES | | | 日志产生时间
EXTENDING | VARCHAR2(200) | YES | | |
扩展文件,日志内容过长时保存到文件的路径
SYSTEM_TYPE | VARCHAR2(50) | YES | | | 系统类型名称
IP | VARCHAR2(50) | YES | | |
CODE | VARCHAR2(255) | YES | | |
TOKEN | VARCHAR2(255) | YES | | |
URL | VARCHAR2(1000) | YES | | |
-------------+-----------------+------+-----+---------+---------
Table: AS_MENU
......@@ -57,17 +41,7 @@ Table: AS_MENU
HIDDEN | NUMBER(9) | YES | | |
FIRST_LEVEL_NAME | VARCHAR2(255) | YES | | |
SECOND_LEVEL_NAME | VARCHAR2(255) | YES | | |
GROUP_ORDER | INTEGER(10) | YES | | |
TITLE | VARCHAR2(50) | YES | | |
ICON | VARCHAR2(50) | YES | | |
DESCRIPTION | VARCHAR2(255) | YES | | |
PATH | VARCHAR2(255) | YES | | |
TARGET | VARCHAR2(30) | YES | | |
SYSTEM_ID | NUMBER(9) | YES | | |
HIDDEN | NUMBER(9) | YES | | |
GROUPNAME | VARCHAR2(50) | YES | | |
GROUPORDER | NUMBER(9) | YES | | 0 |
ID | NUMBER(9) | YES | PRI | |
GROUP_ORDER | INTEGER(10) | YES | | 0 |
-------------------+---------------+------+-----+---------+---------
Table: AS_MENU_STAR
......@@ -77,9 +51,6 @@ Table: AS_MENU_STAR
ID | NUMBER(9) | NO | PRI | |
MENU_ID | NUMBER(9) | YES | | |
USER_ID | NUMBER(9) | YES | | |
ID | NUMBER(9) | NO | PRI | |
MENU_ID | NUMBER(9) | YES | | |
USER_ID | NUMBER(9) | YES | | |
---------+-----------+------+-----+---------+---------
Table: AS_MESSAGE
......@@ -97,90 +68,30 @@ Table: AS_MESSAGE
OPERATE | VARCHAR2(40) | YES | | |
READ | VARCHAR2(1) | YES | | |
SEND_TIME | TIMESTAMP(36,6) | YES | | |
ID | NUMBER(9) | NO | PRI | |
SENDER_ID | NUMBER(9) | YES | | |
SEND_TO_ID | NUMBER(9) | YES | | |
TITLE | VARCHAR2(200) | YES | | |
CONTENT | VARCHAR2(1000) | YES | | |
SYSTEM_ID | NUMBER(9) | YES | | |
PATH | VARCHAR2(255) | YES | | |
PARAMS | VARCHAR2(1000) | YES | | |
OPERATE | VARCHAR2(40) | YES | | |
READ | VARCHAR2(1) | YES | | |
SEND_TIME | TIMESTAMP(36,6) | YES | | |
------------+-----------------+------+-----+---------+---------
Table: AS_ORGAN
------------------+----------------+------+-----+---------+---------
Field | Type | Null | Key | Default | Remarks
------------------+----------------+------+-----+---------+---------
ID | NUMBER(9) | NO | PRI | |
NAME | VARCHAR2(50) | YES | | |
PID | NUMBER(9) | YES | | |
ISUNIT | VARCHAR2(1) | YES | | 'N' |
IDSEQ | VARCHAR2(500) | YES | | '' | 机构立档单位路径
IDPATH | VARCHAR2(1000) | YES | | |
RANKING | NUMBER(4) | YES | | |
ID | NUMBER(9) | NO | PRI | |
NAME | VARCHAR2(50) | YES | | |
PID | NUMBER(9) | YES | | |
ISUNIT | VARCHAR2(1) | YES | | 'N' |
IDSEQ | VARCHAR2(500) | YES | | '' |
DC_ORGUUID | VARCHAR2(500) | YES | | | 用于接收kafka机构的ID
DC_PARENTORGUUID | VARCHAR2(500) | YES | | | 用于接收kafka机构的父ID
DC_DELFLAG | VARCHAR2(50) | YES | | | 机构的锁定
DC_ORGLEVEL | VARCHAR2(255) | YES | | | 部门级别
DC_SERIALINDEX | VARCHAR2(255) | YES | | | 排序
DC_ORGCODE | VARCHAR2(255) | YES | | NULL |
DC_ENNAME | VARCHAR2(255) | YES | | NULL |
DC_ORGTYPE | VARCHAR2(255) | YES | | NULL |
DC_ORGSORT | VARCHAR2(255) | YES | | NULL |
DC_ORGLEVELCODE | VARCHAR2(255) | YES | | NULL |
DC_STATUS | VARCHAR2(255) | YES | | NULL |
------------------+----------------+------+-----+---------+---------
---------+----------------+------+-----+---------+---------
Field | Type | Null | Key | Default | Remarks
---------+----------------+------+-----+---------+---------
ID | NUMBER(9) | NO | PRI | |
NAME | VARCHAR2(50) | YES | | |
PID | NUMBER(9) | YES | | |
ISUNIT | VARCHAR2(1) | YES | | 'N' |
IDSEQ | VARCHAR2(500) | YES | | '' | 机构立档单位路径
IDPATH | VARCHAR2(1000) | YES | | |
RANKING | NUMBER(4) | YES | | |
---------+----------------+------+-----+---------+---------
Table: AS_ROLE
-------------+---------------+------+-----+---------+---------
Field | Type | Null | Key | Default | Remarks
-------------+---------------+------+-----+---------+---------
ID | NUMBER(9) | NO | PRI | |
NAME | VARCHAR2(50) | YES | | |
DESCRIPTION | VARCHAR2(255) | YES | | |
LOCKED | VARCHAR2(1) | YES | | |
CREATETIME | TIMESTAMP(29) | YES | | |
IDSEQ | VARCHAR2(500) | YES | | '' |
ISINCLUDE | VARCHAR2(5) | YES | | |
ID | NUMBER(9) | NO | PRI | |
NAME | VARCHAR2(50) | YES | | |
DESCRIPTION | VARCHAR2(255) | YES | | |
LOCKED | VARCHAR2(1) | YES | | |
CREATETIME | TIMESTAMP(29) | YES | | |
IDSEQ | VARCHAR2(500) | YES | | '' |
-------------+---------------+------+-----+---------+---------
Table: AS_ROLE_MENU
---------+-----------+------+-----+---------+---------
Field | Type | Null | Key | Default | Remarks
---------+-----------+------+-----+---------+---------
ID | NUMBER(9) | NO | PRI | |
ROLE_ID | NUMBER(9) | YES | | |
MENU_ID | NUMBER(9) | YES | | |
ID | NUMBER(9) | NO | PRI | |
ROLE_ID | NUMBER(9) | YES | | |
MENU_ID | NUMBER(9) | YES | | |
---------+-----------+------+-----+---------+---------
Table: AS_ROLE_USER
---------+-----------+------+-----+---------+---------
Field | Type | Null | Key | Default | Remarks
---------+-----------+------+-----+---------+---------
ID | NUMBER(9) | NO | PRI | |
USER_ID | NUMBER(9) | YES | | |
ROLE_ID | NUMBER(9) | YES | | |
ID | NUMBER(9) | NO | PRI | |
USER_ID | NUMBER(9) | YES | | |
ROLE_ID | NUMBER(9) | YES | | |
---------+-----------+------+-----+---------+---------
Table: AS_SN_VALUE Remarks: SN唯一码校验表
-------------+--------------+------+-----+---------+---------
Field | Type | Null | Key | Default | Remarks
-------------+--------------+------+-----+---------+---------
ID | INTEGER(10) | NO | PRI | |
UNIQUE_CODE | VARCHAR2(50) | NO | | | 服务器CPU唯一标识
SN_CODE | VARCHAR2(50) | NO | | | SN校验码
ORGAN_NAME | VARCHAR2(50) | YES | | | 机构名称
-------------+--------------+------+-----+---------+---------
Table: AS_SYSTEM
-------------+----------------+------+-----+---------+---------
......@@ -196,16 +107,6 @@ Table: AS_SYSTEM
PRIVATEKEY | VARCHAR2(2000) | YES | | |
PUBLICKEY | VARCHAR2(500) | YES | | |
DESCRIPTION | VARCHAR2(255) | YES | | |
ID | NUMBER(9) | NO | PRI | |
NAME | VARCHAR2(50) | YES | | |
TITLE | VARCHAR2(50) | YES | | |
TYPE | VARCHAR2(50) | YES | | |
URL | VARCHAR2(255) | YES | | |
SERVICE | VARCHAR2(255) | YES | | |
KEYID | VARCHAR2(50) | YES | | |
PRIVATEKEY | VARCHAR2(2000) | YES | | |
PUBLICKEY | VARCHAR2(500) | YES | | |
DESCRIPTION | VARCHAR2(255) | YES | | |
-------------+----------------+------+-----+---------+---------
Table: AS_USER
......@@ -229,29 +130,5 @@ Table: AS_USER
ERRORCOUNT | NUMBER(9) | YES | | |
LAST_LOGIN_TIME | TIMESTAMP(29) | YES | | |
LAST_CHOICE_LIBRARY | VARCHAR2(1000) | YES | | | 该用户最后一次选择的档案门类
ID | NUMBER(9) | NO | PRI | |
USERNAME | VARCHAR2(40) | YES | | |
PASSWORD | VARCHAR2(64) | YES | | |
LOCKED | VARCHAR2(1) | YES | | |
NAME | VARCHAR2(40) | YES | | |
EMAIL | VARCHAR2(50) | YES | | |
ORGAN_ID | NUMBER(9) | YES | | |
OFFICE_PHONE | VARCHAR2(20) | YES | | |
MOBILE_PHONE | VARCHAR2(20) | YES | | |
HOME_PHONE | VARCHAR2(20) | YES | | |
ADDRESS | VARCHAR2(500) | YES | | |
POSTCODE | VARCHAR2(10) | YES | | |
DESCRIPTION | VARCHAR2(500) | YES | | |
IMAGE | BLOB(2147483647) | YES | | |
UUID | VARCHAR2(500) | YES | | | kafka中用户ID
ERRORCOUNT | NUMBER(9) | YES | | |
LAST_LOGIN_TIME | TIMESTAMP(29) | YES | | |
DC_PERSONCODE | VARCHAR2(500) | YES | | |
DC_USERID | VARCHAR2(255) | YES | | NULL |
DC_IDNUM | VARCHAR2(50) | YES | | NULL |
DC_CARDTYPE | VARCHAR2(50) | YES | | NULL |
DC_LAWCARD | VARCHAR2(64) | YES | | NULL |
DC_SEQUENCENO | VARCHAR2(11) | YES | | NULL |
DC_DELFLAG | VARCHAR2(255) | YES | | NULL |
---------------------+------------------+------+-----+---------+---------
......@@ -22,6 +22,7 @@ public class _MappingKit {
arp.addMapping("AS_MENU_STAR", "ID", MenuStar.class);
arp.addMapping("AS_MESSAGE", "ID", Message.class);
arp.addMapping("AS_ORGAN", "ID", Organ.class);
arp.addMapping("AS_SN_VALUE", "ID", SnValue.class);
arp.addMapping("AS_SYSTEM", "ID", System.class);
arp.addMapping("AS_USER", "ID", User.class);
}
......
......@@ -45,11 +45,17 @@ public abstract class BaseOrgan<M extends BaseOrgan<M>> extends Model<M> impleme
return getStr("ISUNIT");
}
/**
* 机构立档单位路径
*/
public M setIdseq(java.lang.String idseq) {
set("IDSEQ", idseq);
return (M)this;
}
/**
* 机构立档单位路径
*/
public java.lang.String getIdseq() {
return getStr("IDSEQ");
}
......
package com.archser.aserver.model.base;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.IBean;
/**
* Generated by JFinal, do not modify this file.
*/
@SuppressWarnings({"serial", "unchecked"})
public abstract class BaseSnValue<M extends BaseSnValue<M>> extends Model<M> implements IBean {
public M setId(java.lang.Integer id) {
set("ID", id);
return (M)this;
}
public java.lang.Integer getId() {
return getInt("ID");
}
/**
* 服务器CPU唯一标识
*/
public M setUniqueCode(java.lang.String uniqueCode) {
set("UNIQUE_CODE", uniqueCode);
return (M)this;
}
/**
* 服务器CPU唯一标识
*/
public java.lang.String getUniqueCode() {
return getStr("UNIQUE_CODE");
}
/**
* SN校验码
*/
public M setSnCode(java.lang.String snCode) {
set("SN_CODE", snCode);
return (M)this;
}
/**
* SN校验码
*/
public java.lang.String getSnCode() {
return getStr("SN_CODE");
}
/**
* 机构名称
*/
public M setOrganName(java.lang.String organName) {
set("ORGAN_NAME", organName);
return (M)this;
}
/**
* 机构名称
*/
public java.lang.String getOrganName() {
return getStr("ORGAN_NAME");
}
}
package com.archser.aserver.service;
import com.archser.aserver.model.SnValue;
import com.jfinal.kit.Kv;
import com.jfinal.plugin.activerecord.Db;
import com.registration.util.GetCupSerial;
import com.registration.util.SnUtil;
import java.io.IOException;
import java.util.Map;
public class SnService {
public boolean saveSn(SnValue snValue) {
return snValue.save();
}
public boolean updateSn(SnValue snValue) {
return snValue.update();
}
/**
* 校验服务器是否有合法的SN号和对应的加密Key
*
* @return
*/
public Map<String, String> snVerify() throws Exception {
String sn = getSn();
if (sn == null) {
return null;
}
Map<String, String> stringStringMap = checkSnValue(getSnValueList(sn));
stringStringMap.put("SN", sn);
return stringStringMap;
}
/**
* 校验注册码是否有效
*
* @param snValue
* @return
* @throws Exception
*/
public Map<String, String> checkSnValue(SnValue snValue) throws Exception {
if (snValue == null || snValue.getSnCode() == null || snValue.getOrganName() == null
|| snValue.getUniqueCode() == null) {
return Kv.by("success", "false").set("msg", "请先复制SN码并联系软件作者获取软件注册码");
}
return SnUtil.verifyValid(snValue.getOrganName(), snValue.getUniqueCode(), snValue.getSnCode());
}
/**
* 根据SN 获取所有对应的数据
*
* @param sn
* @return
*/
public SnValue getSnValueList(String sn) {
return SnValue.dao.findFirst(Db.getSql("getValueBySn"), sn);
}
/**
* 获取本机SN码
*
* @return
*/
public String getSn() {
try {
return GetCupSerial.getCupSerial();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
......@@ -9,6 +9,10 @@ basic.url=http://39.104.174.12:11028
devMode =true
engineDevMode=true
## 是否同步Redis中的数据
updateRedis=false
authUrl=http://125.77.26.133:7001/auth/token
userInfoUrl=http://125.77.26.133:7001/api/info/user_info
redirect_uri=http://192.168.31.17:8080/
......
### 查询SN码对应的value
#sql("getValueBySn")
select * from AS_SN_VALUE where SN_CODE = ?
#end
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment