From b96db810f84f9812e6d7f67b814bfd9822d78bdf Mon Sep 17 00:00:00 2001 From: MaxKey Date: Sat, 17 Apr 2021 17:02:38 +0800 Subject: [PATCH] SnowFlakeId Generator --- .../java/org/maxkey/util/IdGenerator.java | 69 +++++++ .../java/org/maxkey/util/SnowFlakeId.java | 191 ++++++++++++++++++ .../java/org/maxkey/util/SonwFlakeIdTest.java | 32 +++ .../org/maxkey/util/UUIDGeneratorTest.java | 1 + .../ApplicationAutoConfiguration.java | 20 ++ .../main/java/org/maxkey/domain/Accounts.java | 2 +- .../java/org/maxkey/domain/GroupMember.java | 2 +- .../org/maxkey/domain/GroupPrivileges.java | 2 +- .../main/java/org/maxkey/domain/Groups.java | 2 +- .../java/org/maxkey/domain/HistoryLogin.java | 2 +- .../org/maxkey/domain/HistoryLoginApps.java | 2 +- .../java/org/maxkey/domain/HistoryLogs.java | 2 +- .../main/java/org/maxkey/domain/Notices.java | 2 +- .../java/org/maxkey/domain/Organizations.java | 2 +- .../java/org/maxkey/domain/Resources.java | 2 +- .../java/org/maxkey/domain/RoleMember.java | 2 +- .../org/maxkey/domain/RolePermissions.java | 5 +- .../main/java/org/maxkey/domain/Roles.java | 2 +- .../main/java/org/maxkey/domain/UserInfo.java | 2 +- .../org/maxkey/domain/UserInfoAdjoint.java | 2 +- .../persistence/db/LoginHistoryService.java | 4 +- .../maxkey/persistence/db/LoginService.java | 26 +-- .../db/PasswordPolicyValidator.java | 10 +- .../main/java/org/maxkey/web/WebContext.java | 9 +- maxkey-lib/mybatis-jpa-extra-2.2.jar | Bin 73147 -> 0 bytes maxkey-lib/mybatis-jpa-extra-2.3.jar | Bin 0 -> 75557 bytes ...atis-jpa-extra-spring-boot-starter-2.2.jar | Bin 21389 -> 0 bytes ...atis-jpa-extra-spring-boot-starter-2.3.jar | Bin 0 -> 21888 bytes .../maxkey/persistence/mapper/AppsMapper.java | 2 +- .../persistence/mapper/UserInfoMapper.java | 2 +- .../web/contorller/GroupMemberController.java | 2 +- .../contorller/GroupPrivilegesController.java | 2 +- .../web/contorller/RoleMemberController.java | 2 +- .../web/contorller/UserInfoController.java | 2 +- .../src/main/resources/application.properties | 2 + .../interceptor/HistoryLoginAppAdapter.java | 1 - .../resources/application-http.properties | 2 + .../resources/application-https.properties | 2 + 38 files changed, 369 insertions(+), 45 deletions(-) create mode 100644 maxkey-common/src/main/java/org/maxkey/util/IdGenerator.java create mode 100644 maxkey-common/src/main/java/org/maxkey/util/SnowFlakeId.java create mode 100644 maxkey-common/src/test/java/org/maxkey/util/SonwFlakeIdTest.java delete mode 100644 maxkey-lib/mybatis-jpa-extra-2.2.jar create mode 100644 maxkey-lib/mybatis-jpa-extra-2.3.jar delete mode 100644 maxkey-lib/mybatis-jpa-extra-spring-boot-starter-2.2.jar create mode 100644 maxkey-lib/mybatis-jpa-extra-spring-boot-starter-2.3.jar diff --git a/maxkey-common/src/main/java/org/maxkey/util/IdGenerator.java b/maxkey-common/src/main/java/org/maxkey/util/IdGenerator.java new file mode 100644 index 000000000..1c04f7cbb --- /dev/null +++ b/maxkey-common/src/main/java/org/maxkey/util/IdGenerator.java @@ -0,0 +1,69 @@ +package org.maxkey.util; + +public class IdGenerator { + + String strategy = "uuid"; + + int datacenterId; + + int machineId; + + SnowFlakeId snowFlakeId = new SnowFlakeId(0,0); + + StringGenerator stringGenerator = new StringGenerator(); + + + public String generate(){ + if(strategy.equalsIgnoreCase("uuid")) { + return stringGenerator.uuidGenerate(); + }else if(strategy.equalsIgnoreCase("SnowFlake")) { + return snowFlakeId.nextId()+""; + }else { + return stringGenerator.randomGenerate(); + } + } + + + public IdGenerator() { + super(); + } + + public IdGenerator(String strategy) { + super(); + this.strategy = strategy; + } + + + public int getDatacenterId() { + return datacenterId; + } + + public void setDatacenterId(int datacenterId) { + this.datacenterId = datacenterId; + } + + public int getMachineId() { + return machineId; + } + + public void setMachineId(int machineId) { + this.machineId = machineId; + } + + public SnowFlakeId getSnowFlakeId() { + return snowFlakeId; + } + + public void setSnowFlakeId(SnowFlakeId snowFlakeId) { + this.snowFlakeId = snowFlakeId; + } + + public StringGenerator getStringGenerator() { + return stringGenerator; + } + + public void setStringGenerator(StringGenerator stringGenerator) { + this.stringGenerator = stringGenerator; + } + +} diff --git a/maxkey-common/src/main/java/org/maxkey/util/SnowFlakeId.java b/maxkey-common/src/main/java/org/maxkey/util/SnowFlakeId.java new file mode 100644 index 000000000..16aa7d643 --- /dev/null +++ b/maxkey-common/src/main/java/org/maxkey/util/SnowFlakeId.java @@ -0,0 +1,191 @@ +package org.maxkey.util; + +import java.util.Calendar; +import java.util.Date; + +/** + * 描述: Twitter的分布式自增ID雪花算法snowflake (Java版) + * + * @author Crystal.Sea + * @create 2021-04-17 + **/ +public class SnowFlakeId { + + /** + * 起始的时间戳 + */ + private final static long START_STMP = 1480166465631L; + + /** + * 每一部分占用的位数 + */ + private final static long SEQUENCE_BIT = 12; //序列号占用的位数 + private final static long MACHINE_BIT = 5; //机器标识占用的位数 + private final static long DATACENTER_BIT = 5;//数据中心占用的位数 + + /** + * 每一部分的最大值 + */ + private final static long MAX_DATACENTER_NUM = -1L ^ (-1L << DATACENTER_BIT); + private final static long MAX_MACHINE_NUM = -1L ^ (-1L << MACHINE_BIT); + private final static long MAX_SEQUENCE = -1L ^ (-1L << SEQUENCE_BIT); + + /** + * 每一部分向左的位移 + */ + private final static long MACHINE_LEFT = SEQUENCE_BIT; + private final static long DATACENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT; + private final static long TIMESTMP_LEFT = DATACENTER_LEFT + DATACENTER_BIT; + + private long datacenterId; //数据中心 + private long machineId; //机器标识 + private long sequence = 0L; //序列号 + private long lastStmp = -1L;//上一次时间戳 + private String dateTime; + + public SnowFlakeId(long datacenterId, long machineId) { + if (datacenterId > MAX_DATACENTER_NUM || datacenterId < 0) { + throw new IllegalArgumentException("datacenterId can't be greater than MAX_DATACENTER_NUM or less than 0"); + } + if (machineId > MAX_MACHINE_NUM || machineId < 0) { + throw new IllegalArgumentException("machineId can't be greater than MAX_MACHINE_NUM or less than 0"); + } + this.datacenterId = datacenterId; + this.machineId = machineId; + } + + public SnowFlakeId(long datacenterId, long machineId, long sequence, long lastStmp) { + super(); + this.datacenterId = datacenterId; + this.machineId = machineId; + this.sequence = sequence; + this.lastStmp = lastStmp; + dateTime =DateUtils.toUtc( fromatTime(lastStmp)); + } + + /** + * 产生下一个ID + * + * @return + */ + public synchronized long nextId() { + long currStmp = getNewstmp(); + if (currStmp < lastStmp) { + throw new RuntimeException("Clock moved backwards. Refusing to generate id"); + } + + if (currStmp == lastStmp) { + //相同毫秒内,序列号自增 + sequence = (sequence + 1) & MAX_SEQUENCE; + //同一毫秒的序列数已经达到最大 + if (sequence == 0L) { + currStmp = getNextMill(); + } + } else { + //不同毫秒内,序列号置为0 + sequence = 0L; + } + + lastStmp = currStmp; + + return (currStmp - START_STMP) << TIMESTMP_LEFT //时间戳部分 + | datacenterId << DATACENTER_LEFT //数据中心部分 + | machineId << MACHINE_LEFT //机器标识部分 + | sequence; //序列号部分 + } + + private long getNextMill() { + long mill = getNewstmp(); + while (mill <= lastStmp) { + mill = getNewstmp(); + } + return mill; + } + + private long getNewstmp() { + return System.currentTimeMillis(); + } + + public SnowFlakeId parse(long id) { + String sonwFlakeId = Long.toBinaryString(id); + System.out.println(sonwFlakeId); + int len = sonwFlakeId.length(); + int sequenceStart = (int) (len < MACHINE_LEFT ? 0 : len - MACHINE_LEFT); + int workerStart = (int) (len < DATACENTER_LEFT ? 0 : len - DATACENTER_LEFT); + int timeStart = (int) (len < TIMESTMP_LEFT ? 0 : len - TIMESTMP_LEFT); + String sequence = sonwFlakeId.substring(sequenceStart, len); + String workerId = sequenceStart == 0 ? "0" : sonwFlakeId.substring(workerStart, sequenceStart); + String dataCenterId = workerStart == 0 ? "0" : sonwFlakeId.substring(timeStart, workerStart); + String time = timeStart == 0 ? "0" : sonwFlakeId.substring(0, timeStart); + int sequenceInt = Integer.valueOf(sequence, 2); + int workerIdInt = Integer.valueOf(workerId, 2); + int dataCenterIdInt = Integer.valueOf(dataCenterId, 2); + long diffTime = Long.parseLong(time, 2); + long timeLong = diffTime + START_STMP; + + SnowFlakeId snowFlakeIdParse =new SnowFlakeId(dataCenterIdInt,workerIdInt,sequenceInt,timeLong); + + return snowFlakeIdParse; + } + + private static Date fromatTime(long date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(date); + return calendar.getTime(); + } + + + + public long getDatacenterId() { + return datacenterId; + } + + public void setDatacenterId(long datacenterId) { + this.datacenterId = datacenterId; + } + + public long getMachineId() { + return machineId; + } + + public void setMachineId(long machineId) { + this.machineId = machineId; + } + + public long getSequence() { + return sequence; + } + + public void setSequence(long sequence) { + this.sequence = sequence; + } + + public long getLastStmp() { + return lastStmp; + } + + public void setLastStmp(long lastStmp) { + this.lastStmp = lastStmp; + } + + public String getDateTime() { + return dateTime; + } + + public void setDateTime(String dateTime) { + this.dateTime = dateTime; + } + + public static void main(String[] args) { + SnowFlakeId snowFlake = new SnowFlakeId(20, 30); + + long start = System.currentTimeMillis(); + for (int i = 0; i < 1000000; i++) { + System.out.println(snowFlake.nextId()); + } + + System.out.println(System.currentTimeMillis() - start); + + + } +} \ No newline at end of file diff --git a/maxkey-common/src/test/java/org/maxkey/util/SonwFlakeIdTest.java b/maxkey-common/src/test/java/org/maxkey/util/SonwFlakeIdTest.java new file mode 100644 index 000000000..26a445408 --- /dev/null +++ b/maxkey-common/src/test/java/org/maxkey/util/SonwFlakeIdTest.java @@ -0,0 +1,32 @@ +/* + * Copyright [2020] [MaxKey of copyright http://www.maxkey.top] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +package org.maxkey.util; + +import org.junit.Test; + +public class SonwFlakeIdTest { + + + @Test + public void UidGenerator() { + SnowFlakeId snowFlake = new SnowFlakeId(2, 3); + long seq = snowFlake.nextId(); + System.out.println(seq); + System.out.println(snowFlake.parse(seq)); + } +} diff --git a/maxkey-common/src/test/java/org/maxkey/util/UUIDGeneratorTest.java b/maxkey-common/src/test/java/org/maxkey/util/UUIDGeneratorTest.java index 366fa4aea..cf01ee6b9 100644 --- a/maxkey-common/src/test/java/org/maxkey/util/UUIDGeneratorTest.java +++ b/maxkey-common/src/test/java/org/maxkey/util/UUIDGeneratorTest.java @@ -56,4 +56,5 @@ public class UUIDGeneratorTest { } + } diff --git a/maxkey-core/src/main/java/org/maxkey/autoconfigure/ApplicationAutoConfiguration.java b/maxkey-core/src/main/java/org/maxkey/autoconfigure/ApplicationAutoConfiguration.java index 712b3e760..13666f4e3 100644 --- a/maxkey-core/src/main/java/org/maxkey/autoconfigure/ApplicationAutoConfiguration.java +++ b/maxkey-core/src/main/java/org/maxkey/autoconfigure/ApplicationAutoConfiguration.java @@ -32,6 +32,9 @@ import org.maxkey.crypto.password.MessageDigestPasswordEncoder; import org.maxkey.crypto.password.PasswordReciprocal; import org.maxkey.crypto.password.SM3PasswordEncoder; import org.maxkey.crypto.password.StandardPasswordEncoder; +import org.maxkey.util.IdGenerator; +import org.maxkey.util.SnowFlakeId; +import org.maxkey.web.WebContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; @@ -183,6 +186,23 @@ public class ApplicationAutoConfiguration implements InitializingBean { @Value("${maxkey.saml.v20.sp.issuing.entity.id}") String spIssuingEntityName) { return spIssuingEntityName; } + + + /** + * spKeyStoreLoader . + * @return + */ + @Bean(name = "idGenerator") + public IdGenerator idGenerator( + @Value("${maxkey.id.strategy:SnowFlake}") String strategy, + @Value("${maxkey.id.datacenterId:0}") int datacenterId, + @Value("${maxkey.id.machineId:0}") int machineId) { + IdGenerator idGenerator = new IdGenerator(strategy); + SnowFlakeId SnowFlakeId = new SnowFlakeId(datacenterId,machineId); + idGenerator.setSnowFlakeId(SnowFlakeId); + WebContext.idGenerator = idGenerator; + return idGenerator; + } @Override diff --git a/maxkey-core/src/main/java/org/maxkey/domain/Accounts.java b/maxkey-core/src/main/java/org/maxkey/domain/Accounts.java index d11cea1ff..12441940d 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/Accounts.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/Accounts.java @@ -42,7 +42,7 @@ public class Accounts extends JpaBaseDomain implements Serializable { private static final long serialVersionUID = 6829592256223630307L; @Id @Column - @GeneratedValue(strategy = GenerationType.AUTO, generator = "uuid") + @GeneratedValue(strategy = GenerationType.AUTO, generator = "snowflakeid") private String id; @Column private String uid; diff --git a/maxkey-core/src/main/java/org/maxkey/domain/GroupMember.java b/maxkey-core/src/main/java/org/maxkey/domain/GroupMember.java index 123388df6..096d1d297 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/GroupMember.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/GroupMember.java @@ -43,7 +43,7 @@ public class GroupMember extends UserInfo implements Serializable{ private static final long serialVersionUID = -8059639972590554760L; @Id @Column - @GeneratedValue(strategy=GenerationType.AUTO,generator="uuid") + @GeneratedValue(strategy=GenerationType.AUTO,generator="snowflakeid") String id; @Column private String groupId; diff --git a/maxkey-core/src/main/java/org/maxkey/domain/GroupPrivileges.java b/maxkey-core/src/main/java/org/maxkey/domain/GroupPrivileges.java index 159594910..4d52b667f 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/GroupPrivileges.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/GroupPrivileges.java @@ -45,7 +45,7 @@ public class GroupPrivileges extends Apps implements Serializable{ private static final long serialVersionUID = 8634166407201007340L; @Id @Column - @GeneratedValue(strategy=GenerationType.AUTO,generator="uuid") + @GeneratedValue(strategy=GenerationType.AUTO,generator="snowflakeid") String id; @Column private String groupId; diff --git a/maxkey-core/src/main/java/org/maxkey/domain/Groups.java b/maxkey-core/src/main/java/org/maxkey/domain/Groups.java index 772059fb9..a69789d72 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/Groups.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/Groups.java @@ -33,7 +33,7 @@ public class Groups extends JpaBaseDomain implements Serializable { private static final long serialVersionUID = 4660258495864814777L; @Id @Column - @GeneratedValue(strategy = GenerationType.AUTO, generator = "uuid") + @GeneratedValue(strategy = GenerationType.AUTO, generator = "snowflakeid") String id; @Length(max = 60) diff --git a/maxkey-core/src/main/java/org/maxkey/domain/HistoryLogin.java b/maxkey-core/src/main/java/org/maxkey/domain/HistoryLogin.java index aa497bdd3..6779749f9 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/HistoryLogin.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/HistoryLogin.java @@ -43,7 +43,7 @@ public class HistoryLogin extends JpaBaseDomain implements Serializable{ private static final long serialVersionUID = -1321470643357719383L; @Id @Column - @GeneratedValue(strategy=GenerationType.AUTO,generator="uuid") + @GeneratedValue(strategy=GenerationType.AUTO,generator="snowflakeid") String id; @Column String sessionId; diff --git a/maxkey-core/src/main/java/org/maxkey/domain/HistoryLoginApps.java b/maxkey-core/src/main/java/org/maxkey/domain/HistoryLoginApps.java index d089c468e..fc35e6df8 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/HistoryLoginApps.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/HistoryLoginApps.java @@ -37,7 +37,7 @@ public class HistoryLoginApps extends JpaBaseDomain { private static final long serialVersionUID = 5085201575292304749L; @Id @Column - @GeneratedValue(strategy=GenerationType.AUTO,generator="uuid") + @GeneratedValue(strategy=GenerationType.AUTO,generator="snowflakeid") String id; @Column private String sessionId; diff --git a/maxkey-core/src/main/java/org/maxkey/domain/HistoryLogs.java b/maxkey-core/src/main/java/org/maxkey/domain/HistoryLogs.java index 946b1b434..3c9feb7c9 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/HistoryLogs.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/HistoryLogs.java @@ -37,7 +37,7 @@ public class HistoryLogs extends JpaBaseDomain implements Serializable { private static final long serialVersionUID = 6560201093784960493L; @Id @Column - @GeneratedValue(strategy = GenerationType.AUTO, generator = "uuid") + @GeneratedValue(strategy = GenerationType.AUTO, generator = "snowflakeid") String id; @Column String serviceName; diff --git a/maxkey-core/src/main/java/org/maxkey/domain/Notices.java b/maxkey-core/src/main/java/org/maxkey/domain/Notices.java index 42f1a8beb..637d6dc7d 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/Notices.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/Notices.java @@ -22,7 +22,7 @@ public class Notices extends JpaBaseDomain implements Serializable { @Id @Column - @GeneratedValue(strategy = GenerationType.AUTO, generator = "uuid") + @GeneratedValue(strategy = GenerationType.AUTO, generator = "snowflakeid") protected String id; /** * diff --git a/maxkey-core/src/main/java/org/maxkey/domain/Organizations.java b/maxkey-core/src/main/java/org/maxkey/domain/Organizations.java index 2354023a7..007e0d2c9 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/Organizations.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/Organizations.java @@ -33,7 +33,7 @@ public class Organizations extends JpaBaseDomain implements Serializable { @Id @Column - @GeneratedValue(strategy = GenerationType.AUTO, generator = "uuid") + @GeneratedValue(strategy = GenerationType.AUTO, generator = "snowflakeid") private String id; @Column private String code; diff --git a/maxkey-core/src/main/java/org/maxkey/domain/Resources.java b/maxkey-core/src/main/java/org/maxkey/domain/Resources.java index 5d62eefe0..137eb6487 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/Resources.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/Resources.java @@ -32,7 +32,7 @@ public class Resources extends JpaBaseDomain implements Serializable { private static final long serialVersionUID = 2567171742999638608L; @Id @Column - @GeneratedValue(strategy = GenerationType.AUTO,generator = "uuid") + @GeneratedValue(strategy = GenerationType.AUTO,generator = "snowflakeid") String id; @Column String name; diff --git a/maxkey-core/src/main/java/org/maxkey/domain/RoleMember.java b/maxkey-core/src/main/java/org/maxkey/domain/RoleMember.java index 00f2de08b..6bf236075 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/RoleMember.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/RoleMember.java @@ -37,7 +37,7 @@ public class RoleMember extends UserInfo implements Serializable { private static final long serialVersionUID = -8059639972590554760L; @Id @Column - @GeneratedValue(strategy = GenerationType.AUTO, generator = "uuid") + @GeneratedValue(strategy = GenerationType.AUTO, generator = "snowflakeid") String id; @Column private String roleId; diff --git a/maxkey-core/src/main/java/org/maxkey/domain/RolePermissions.java b/maxkey-core/src/main/java/org/maxkey/domain/RolePermissions.java index 0068550a8..095b5ce87 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/RolePermissions.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/RolePermissions.java @@ -26,6 +26,7 @@ import javax.persistence.Id; import javax.persistence.Table; import org.apache.mybatis.jpa.persistence.JpaBaseDomain; import org.maxkey.constants.ConstantsStatus; +import org.maxkey.web.WebContext; @Entity @Table(name = "MXK_ROLE_PERMISSIONS") @@ -34,7 +35,7 @@ public class RolePermissions extends JpaBaseDomain implements Serializable { @Id @Column - @GeneratedValue(strategy = GenerationType.AUTO, generator = "uuid") + @GeneratedValue(strategy = GenerationType.AUTO, generator = "snowflakeid") String id; @Column String appId; @@ -60,7 +61,7 @@ public class RolePermissions extends JpaBaseDomain implements Serializable { * @param resourceId String */ public RolePermissions(String appId, String roleId, String resourceId) { - this.id = this.generateId(); + this.id = WebContext.genId(); this.appId = appId; this.roleId = roleId; this.resourceId = resourceId; diff --git a/maxkey-core/src/main/java/org/maxkey/domain/Roles.java b/maxkey-core/src/main/java/org/maxkey/domain/Roles.java index d21a438af..4bbaa0895 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/Roles.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/Roles.java @@ -33,7 +33,7 @@ public class Roles extends JpaBaseDomain implements Serializable { @Id @Column - @GeneratedValue(strategy = GenerationType.AUTO,generator = "uuid") + @GeneratedValue(strategy = GenerationType.AUTO,generator = "snowflakeid") private String id; @Column private String name; diff --git a/maxkey-core/src/main/java/org/maxkey/domain/UserInfo.java b/maxkey-core/src/main/java/org/maxkey/domain/UserInfo.java index 1f392fe44..d28dde144 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/UserInfo.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/UserInfo.java @@ -43,7 +43,7 @@ public class UserInfo extends JpaBaseDomain { // @Id @Column - @GeneratedValue(strategy = GenerationType.AUTO, generator = "uuid") + @GeneratedValue(strategy = GenerationType.AUTO, generator = "snowflakeid") String id; @Column protected String username; diff --git a/maxkey-core/src/main/java/org/maxkey/domain/UserInfoAdjoint.java b/maxkey-core/src/main/java/org/maxkey/domain/UserInfoAdjoint.java index e926e6f6b..6dadd607b 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/UserInfoAdjoint.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/UserInfoAdjoint.java @@ -37,7 +37,7 @@ public class UserInfoAdjoint extends JpaBaseDomain { @Id @Column - @GeneratedValue(strategy = GenerationType.AUTO, generator = "uuid") + @GeneratedValue(strategy = GenerationType.AUTO, generator = "snowflakeid") String id; protected String displayName; diff --git a/maxkey-core/src/main/java/org/maxkey/persistence/db/LoginHistoryService.java b/maxkey-core/src/main/java/org/maxkey/persistence/db/LoginHistoryService.java index caf31d2b7..f1c3a8e81 100644 --- a/maxkey-core/src/main/java/org/maxkey/persistence/db/LoginHistoryService.java +++ b/maxkey-core/src/main/java/org/maxkey/persistence/db/LoginHistoryService.java @@ -28,9 +28,9 @@ import org.springframework.jdbc.core.JdbcTemplate; public class LoginHistoryService { private static Logger _logger = LoggerFactory.getLogger(LoginHistoryService.class); - private static final String HISTORY_LOGIN_INSERT_STATEMENT = "INSERT INTO MXK_HISTORY_LOGIN (ID , SESSIONID , UID , USERNAME , DISPLAYNAME , LOGINTYPE , MESSAGE , CODE , PROVIDER , SOURCEIP , BROWSER , PLATFORM , APPLICATION , LOGINURL )VALUES( ? , ? , ? , ? , ?, ? , ? , ?, ? , ? , ?, ? , ? , ?)"; + private static final String HISTORY_LOGIN_INSERT_STATEMENT = "insert into mxk_history_login (id , sessionid , uid , username , displayname , logintype , message , code , provider , sourceip , browser , platform , application , loginurl )values( ? , ? , ? , ? , ?, ? , ? , ?, ? , ? , ?, ? , ? , ?)"; - private static final String HISTORY_LOGOUT_UPDATE_STATEMENT = "UPDATE MXK_HISTORY_LOGIN SET LOGOUTTIME = ? WHERE SESSIONID = ?"; + private static final String HISTORY_LOGOUT_UPDATE_STATEMENT = "update mxk_history_login set logouttime = ? where sessionid = ?"; protected JdbcTemplate jdbcTemplate; diff --git a/maxkey-core/src/main/java/org/maxkey/persistence/db/LoginService.java b/maxkey-core/src/main/java/org/maxkey/persistence/db/LoginService.java index 40c329d87..19f3a0bb4 100644 --- a/maxkey-core/src/main/java/org/maxkey/persistence/db/LoginService.java +++ b/maxkey-core/src/main/java/org/maxkey/persistence/db/LoginService.java @@ -38,29 +38,29 @@ import org.springframework.security.core.authority.SimpleGrantedAuthority; public class LoginService { private static Logger _logger = LoggerFactory.getLogger(LoginService.class); - private static final String LOCK_USER_UPDATE_STATEMENT = "UPDATE MXK_USERINFO SET ISLOCKED = ? , UNLOCKTIME = ? WHERE ID = ?"; + private static final String LOCK_USER_UPDATE_STATEMENT = "update mxk_userinfo set islocked = ? , unlocktime = ? where id = ?"; - private static final String UNLOCK_USER_UPDATE_STATEMENT = "UPDATE MXK_USERINFO SET ISLOCKED = ? , UNLOCKTIME = ? WHERE ID = ?"; + private static final String UNLOCK_USER_UPDATE_STATEMENT = "update mxk_userinfo set islocked = ? , unlocktime = ? where id = ?"; - private static final String BADPASSWORDCOUNT_UPDATE_STATEMENT = "UPDATE MXK_USERINFO SET BADPASSWORDCOUNT = ? , BADPASSWORDTIME = ? WHERE ID = ?"; + private static final String BADPASSWORDCOUNT_UPDATE_STATEMENT = "update mxk_userinfo set badpasswordcount = ? , badpasswordtime = ? where id = ?"; - private static final String BADPASSWORDCOUNT_RESET_UPDATE_STATEMENT = "UPDATE MXK_USERINFO SET BADPASSWORDCOUNT = ? , ISLOCKED = ? ,UNLOCKTIME = ? WHERE ID = ?"; + private static final String BADPASSWORDCOUNT_RESET_UPDATE_STATEMENT = "update mxk_userinfo set badpasswordcount = ? , islocked = ? ,unlocktime = ? where id = ?"; - private static final String LOGIN_USERINFO_UPDATE_STATEMENT = "UPDATE MXK_USERINFO SET LASTLOGINTIME = ? , LASTLOGINIP = ? , LOGINCOUNT = ?, ONLINE = " - + UserInfo.ONLINE.ONLINE + " WHERE ID = ?"; + private static final String LOGIN_USERINFO_UPDATE_STATEMENT = "update mxk_userinfo set lastlogintime = ? , lastloginip = ? , logincount = ?, online = " + + UserInfo.ONLINE.ONLINE + " where id = ?"; - private static final String LOGOUT_USERINFO_UPDATE_STATEMENT = "UPDATE MXK_USERINFO SET LASTLOGOFFTIME = ? , ONLINE = " - + UserInfo.ONLINE.OFFLINE + " WHERE ID = ?"; + private static final String LOGOUT_USERINFO_UPDATE_STATEMENT = "update mxk_userinfo set lastlogofftime = ? , online = " + + UserInfo.ONLINE.OFFLINE + " where id = ?"; - private static final String GROUPS_SELECT_STATEMENT = "SELECT DISTINCT G.ID,G.NAME FROM MXK_USERINFO U,`MXK_GROUPS` G,MXK_GROUP_MEMBER GM WHERE U.ID = ? AND U.ID=GM.MEMBERID AND GM.GROUPID=G.ID "; + private static final String GROUPS_SELECT_STATEMENT = "select distinct g.id,g.name from mxk_userinfo u,`mxk_groups` g,mxk_group_member gm where u.id = ? and u.id=gm.memberid and gm.groupid=g.id "; - private static final String DEFAULT_USERINFO_SELECT_STATEMENT = "SELECT * FROM MXK_USERINFO WHERE USERNAME = ?"; + private static final String DEFAULT_USERINFO_SELECT_STATEMENT = "select * from mxk_userinfo where username = ?"; - private static final String DEFAULT_USERINFO_SELECT_STATEMENT_USERNAME_MOBILE = "SELECT * FROM MXK_USERINFO WHERE USERNAME = ? OR MOBILE = ? "; + private static final String DEFAULT_USERINFO_SELECT_STATEMENT_USERNAME_MOBILE = "select * from mxk_userinfo where username = ? or mobile = ? "; - private static final String DEFAULT_USERINFO_SELECT_STATEMENT_USERNAME_MOBILE_EMAIL = "SELECT * FROM MXK_USERINFO WHERE USERNAME = ? OR MOBILE = ? OR EMAIL = ? "; + private static final String DEFAULT_USERINFO_SELECT_STATEMENT_USERNAME_MOBILE_EMAIL = "select * from mxk_userinfo where username = ? or mobile = ? or email = ? "; - private static final String DEFAULT_MYAPPS_SELECT_STATEMENT = "SELECT DISTINCT APP.ID,APP.NAME FROM MXK_APPS APP,MXK_GROUP_PRIVILEGES GP,MXK_GROUPS G WHERE APP.ID=GP.APPID AND GP.GROUPID=G.ID AND G.ID IN(%s)"; + private static final String DEFAULT_MYAPPS_SELECT_STATEMENT = "select distinct app.id,app.name from mxk_apps app,mxk_group_privileges gp,mxk_groups g where app.id=gp.appid and gp.groupid=g.id and g.id in(%s)"; protected JdbcTemplate jdbcTemplate; diff --git a/maxkey-core/src/main/java/org/maxkey/persistence/db/PasswordPolicyValidator.java b/maxkey-core/src/main/java/org/maxkey/persistence/db/PasswordPolicyValidator.java index 17eaae882..af9b711d2 100644 --- a/maxkey-core/src/main/java/org/maxkey/persistence/db/PasswordPolicyValidator.java +++ b/maxkey-core/src/main/java/org/maxkey/persistence/db/PasswordPolicyValidator.java @@ -92,15 +92,15 @@ public class PasswordPolicyValidator { private static final String PASSWORD_POLICY_KEY = "PASSWORD_POLICY_KEY"; - private static final String LOCK_USER_UPDATE_STATEMENT = "UPDATE MXK_USERINFO SET ISLOCKED = ? , UNLOCKTIME = ? WHERE ID = ?"; + private static final String LOCK_USER_UPDATE_STATEMENT = "update mxk_userinfo set islocked = ? , unlocktime = ? where id = ?"; - private static final String PASSWORD_POLICY_SELECT_STATEMENT = "SELECT * FROM MXK_PASSWORD_POLICY "; + private static final String PASSWORD_POLICY_SELECT_STATEMENT = "select * from mxk_password_policy "; - private static final String UNLOCK_USER_UPDATE_STATEMENT = "UPDATE MXK_USERINFO SET ISLOCKED = ? , UNLOCKTIME = ? WHERE ID = ?"; + private static final String UNLOCK_USER_UPDATE_STATEMENT = "update mxk_userinfo set islocked = ? , unlocktime = ? where id = ?"; - private static final String BADPASSWORDCOUNT_UPDATE_STATEMENT = "UPDATE MXK_USERINFO SET BADPASSWORDCOUNT = ? , BADPASSWORDTIME = ? WHERE ID = ?"; + private static final String BADPASSWORDCOUNT_UPDATE_STATEMENT = "update mxk_userinfo set badpasswordcount = ? , badpasswordtime = ? where id = ?"; - private static final String BADPASSWORDCOUNT_RESET_UPDATE_STATEMENT = "UPDATE MXK_USERINFO SET BADPASSWORDCOUNT = ? , ISLOCKED = ? ,UNLOCKTIME = ? WHERE ID = ?"; + private static final String BADPASSWORDCOUNT_RESET_UPDATE_STATEMENT = "update mxk_userinfo set badpasswordcount = ? , islocked = ? ,unlocktime = ? where id = ?"; public PasswordPolicyValidator() { } diff --git a/maxkey-core/src/main/java/org/maxkey/web/WebContext.java b/maxkey-core/src/main/java/org/maxkey/web/WebContext.java index 30865c64e..df717b535 100644 --- a/maxkey-core/src/main/java/org/maxkey/web/WebContext.java +++ b/maxkey-core/src/main/java/org/maxkey/web/WebContext.java @@ -32,7 +32,7 @@ import org.apache.commons.logging.LogFactory; import org.maxkey.configuration.ApplicationConfig; import org.maxkey.domain.UserInfo; import org.maxkey.util.DateUtils; -import org.maxkey.util.StringGenerator; +import org.maxkey.util.IdGenerator; import org.maxkey.web.message.Message; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -63,6 +63,8 @@ public final class WebContext { public static ArrayList sessionAttributeNameList = new ArrayList(); + public static IdGenerator idGenerator; + static { sessionAttributeNameList.add(WebConstants.CURRENT_LOGIN_USER_PASSWORD_SET_TYPE); sessionAttributeNameList.add(WebConstants.FIRST_SAVED_REQUEST_PARAMETER); @@ -518,7 +520,10 @@ public final class WebContext { * @return String */ public static String genId() { - return (new StringGenerator()).uuidGenerate(); + if(idGenerator == null) { + idGenerator = new IdGenerator(); + } + return idGenerator.generate(); } public static ModelAndView redirect(String redirectUrl) { diff --git a/maxkey-lib/mybatis-jpa-extra-2.2.jar b/maxkey-lib/mybatis-jpa-extra-2.2.jar deleted file mode 100644 index f6d3cb220323a3c936294c3195b382269ae4158b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73147 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 diff --git a/maxkey-lib/mybatis-jpa-extra-2.3.jar b/maxkey-lib/mybatis-jpa-extra-2.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..3601745e3be06d18532d39c30729ebb335fabb70 GIT binary patch literal 75557 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∈+Uq_j@()o(GG zYn3h^>54UDc~S*(K)Ua&EIIPP8VH5r8TQqP^wIEuCJeaJ__D#P*Km5XL09z227ya9OeER!#)2jbn6*kJ^fTG3g=gNGMR&O zCP|F~la*b}x~lAzF6^d0j~lUtrmr6N*CZRrjc6mtx_`wiNf(bza%`;KGS6YJDl6BU zD)3Ecozm#;r52d?7xa?pgdO%7b_=H(_w9RA4T;!gh+E3SB53x*T{C1 znQRi~n5jFTzx5G@ISD@_GorN*MuThkY-S0o|7~fiVkNY!7xspcY!>`;J>pE8#Ke5F$P1xqX8Wfm;?h9o05V zD39TKi;Z8n%GROCUdKW9to;YV(oya<5{`{I5|3_UBnGqd25%g}J zidav)$qy|^@AM!D>dr_ChS>Lk=F-pc7P!slrMZJWzoDNHDyV$hA*td!-6WqEN~fN_ zL08}&{#}7f->yre=^K>Q^g33A!=Ouj4XIy%Pp_t4yjr7tHfqZ-D5LvQvn@BI~5ZH}T^6a2R9^zz&ngSHi zKR+aorY8i&(T` literal 0 HcmV?d00001 diff --git a/maxkey-lib/mybatis-jpa-extra-spring-boot-starter-2.2.jar b/maxkey-lib/mybatis-jpa-extra-spring-boot-starter-2.2.jar deleted file mode 100644 index aa39b1ced1e6a0beff90c4bde8c68fd62485b79f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21389 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 literal 0 HcmV?d00001 diff --git a/maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/AppsMapper.java b/maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/AppsMapper.java index f88ba732b..3475f1f25 100644 --- a/maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/AppsMapper.java +++ b/maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/AppsMapper.java @@ -37,7 +37,7 @@ public interface AppsMapper extends IJpaBaseMapper { public int updateApp(Apps app); - @Update("UPDATE MXK_APPS SET ISEXTENDATTR=#{isExtendAttr}, EXTENDATTR=#{extendAttr} WHERE id = #{id}") + @Update("update mxk_apps set isextendattr=#{isExtendAttr}, extendattr=#{extendAttr} where id = #{id}") public int updateExtendAttr(Apps app); diff --git a/maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/UserInfoMapper.java b/maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/UserInfoMapper.java index 93f360f61..f04effb26 100644 --- a/maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/UserInfoMapper.java +++ b/maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/UserInfoMapper.java @@ -60,7 +60,7 @@ public interface UserInfoMapper extends IJpaBaseMapper{ public int updateProfile(UserInfo userInfo); - @Select("SELECT * FROM MXK_USERINFO WHERE EMAIL = #{value} OR MOBILE= #{value}") + @Select("select * from mxk_userinfo where email = #{value} or mobile= #{value}") public UserInfo queryUserInfoByEmailMobile(String emailMobile); } diff --git a/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/GroupMemberController.java b/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/GroupMemberController.java index fba994a73..60d3891dd 100644 --- a/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/GroupMemberController.java +++ b/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/GroupMemberController.java @@ -128,7 +128,7 @@ public class GroupMemberController { for (int i = 0; i < arrMemberIds.length; i++) { GroupMember newGroupMember = new GroupMember(groupId,groupMember.getGroupName(), arrMemberIds[i], arrMemberNames[i],"USER"); - newGroupMember.setId(newGroupMember.generateId()); + newGroupMember.setId(WebContext.genId()); result = groupMemberService.insert(newGroupMember); } if(!result) { diff --git a/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/GroupPrivilegesController.java b/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/GroupPrivilegesController.java index 16827e318..04315078d 100644 --- a/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/GroupPrivilegesController.java +++ b/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/GroupPrivilegesController.java @@ -110,7 +110,7 @@ public class GroupPrivilegesController { for (int i = 0; i < arrAppIds.length; i++) { GroupPrivileges newGroupApp = new GroupPrivileges(groupId, arrAppIds[i]); - newGroupApp.setId(newGroupApp.generateId()); + newGroupApp.setId(WebContext.genId()); result = groupPrivilegesService.insert(newGroupApp); } if(!result) { diff --git a/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/RoleMemberController.java b/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/RoleMemberController.java index 0333e4778..cc8eea840 100644 --- a/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/RoleMemberController.java +++ b/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/RoleMemberController.java @@ -114,7 +114,7 @@ public class RoleMemberController { for (int i = 0; i < arrMemberIds.length; i++) { RoleMember newRoleMember = new RoleMember(groupId,roleMember.getRoleName(), arrMemberIds[i], arrMemberNames[i],"USER"); - newRoleMember.setId(newRoleMember.generateId()); + newRoleMember.setId(WebContext.genId()); result = roleMemberService.insert(newRoleMember); } if(!result) { diff --git a/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/UserInfoController.java b/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/UserInfoController.java index c56011476..e4e9c8870 100644 --- a/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/UserInfoController.java +++ b/maxkey-web-manage/src/main/java/org/maxkey/web/contorller/UserInfoController.java @@ -116,7 +116,7 @@ public class UserInfoController { // new Message(WebContext.getValidErrorText(),result); } - userInfo.setId(userInfo.generateId()); + userInfo.setId(WebContext.genId()); //userInfo.setNameZHShortSpell(StringUtils.hanYu2Pinyin(userInfo.getDisplayName(), true)); //userInfo.setNameZHSpell(StringUtils.hanYu2Pinyin(userInfo.getDisplayName(), false)); if( userInfoService.insert(userInfo)) { diff --git a/maxkey-web-manage/src/main/resources/application.properties b/maxkey-web-manage/src/main/resources/application.properties index 6765f293d..ecfc1fa2e 100644 --- a/maxkey-web-manage/src/main/resources/application.properties +++ b/maxkey-web-manage/src/main/resources/application.properties @@ -44,6 +44,8 @@ spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #mybatis mybatis.type-aliases-package=org.maxkey.domain,org.maxkey.domain.apps, mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/mysql/*.xml +mybatis.table-column-snowflake-datacenter-id=1 +mybatis.table-column-snowflake-machine-id=1 mybatis.table-column-escape=true ############################################################################ diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLoginAppAdapter.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLoginAppAdapter.java index 0f9578c0a..b96b72fce 100644 --- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLoginAppAdapter.java +++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLoginAppAdapter.java @@ -88,7 +88,6 @@ public class HistoryLoginAppAdapter implements AsyncHandlerInterceptor { final UserInfo userInfo = WebContext.getUserInfo(); _logger.debug("sessionId : " + sessionId + " ,appId : " + app.getId()); HistoryLoginApps historyLoginApps = new HistoryLoginApps(); - historyLoginApps.setId(historyLoginApps.generateId()); historyLoginApps.setAppId(app.getId()); historyLoginApps.setSessionId(sessionId); historyLoginApps.setAppName(app.getName()); diff --git a/maxkey-web-maxkey/src/main/resources/application-http.properties b/maxkey-web-maxkey/src/main/resources/application-http.properties index 1e47d1f23..fcdbbe030 100644 --- a/maxkey-web-maxkey/src/main/resources/application-http.properties +++ b/maxkey-web-maxkey/src/main/resources/application-http.properties @@ -49,6 +49,8 @@ spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #mybatis mybatis.type-aliases-package=org.maxkey.domain,org.maxkey.domain.apps, mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/mysql/*.xml +mybatis.table-column-snowflake-datacenter-id=1 +mybatis.table-column-snowflake-machine-id=1 mybatis.table-column-escape=true ############################################################################ diff --git a/maxkey-web-maxkey/src/main/resources/application-https.properties b/maxkey-web-maxkey/src/main/resources/application-https.properties index ff39ac419..83b07c71b 100644 --- a/maxkey-web-maxkey/src/main/resources/application-https.properties +++ b/maxkey-web-maxkey/src/main/resources/application-https.properties @@ -49,6 +49,8 @@ spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #mybatis mybatis.type-aliases-package=org.maxkey.domain,org.maxkey.domain.apps, mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/mysql/*.xml +mybatis.table-column-snowflake-datacenter-id=1 +mybatis.table-column-snowflake-machine-id=1 mybatis.table-column-escape=true ############################################################################