{
- @Override
- public String genId(String table, String column) {
- return UuidUtils.getUUID();
- }
-}
diff --git a/web/src/main/java/com/simon/common/utils/UsernameUtil.java b/web/src/main/java/com/simon/common/utils/UsernameUtil.java
deleted file mode 100644
index 549e8f9b511d4a87122dd9aeb58777b11959b31f..0000000000000000000000000000000000000000
--- a/web/src/main/java/com/simon/common/utils/UsernameUtil.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.simon.common.utils;
-
-import org.apache.commons.lang3.RandomUtils;
-
-/**
- * 用户名工具
- *
- * @author simon
- * @date 2018-12-07
- **/
-
-public class UsernameUtil {
- public static String generateByPhone(String phone){
- return RandomUtils.nextInt(1000000, 9999999) + "" + phone.substring(phone.length() - 4);
- }
-
- public static String generateByEmail(String email){
- return RandomUtil.randomCharAndNum(11).toLowerCase();
- }
-}
diff --git a/web/src/main/java/com/simon/common/utils/UuidGenerator.java b/web/src/main/java/com/simon/common/utils/UuidGenerator.java
deleted file mode 100644
index 9eb8768470c6fba3940a66a5a9bf160dcaa4828e..0000000000000000000000000000000000000000
--- a/web/src/main/java/com/simon/common/utils/UuidGenerator.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.simon.common.utils;
-
-import org.hibernate.HibernateException;
-import org.hibernate.engine.spi.SessionImplementor;
-import org.hibernate.id.IdentifierGenerator;
-
-import java.io.Serializable;
-
-/**
- * uuid generator
- *
- * @author simon
- * @create 2018-08-06 11:31
- **/
-
-public class UuidGenerator implements IdentifierGenerator {
- @Override
- public Serializable generate(SessionImplementor sessionImplementor, Object o) throws HibernateException {
- return UuidUtils.getUUID();
- }
-}
diff --git a/web/src/main/java/com/simon/common/utils/UuidUtils.java b/web/src/main/java/com/simon/common/utils/UuidUtils.java
deleted file mode 100644
index ac4fd040cc7c44159fb0e6759a598a84189da8c8..0000000000000000000000000000000000000000
--- a/web/src/main/java/com/simon/common/utils/UuidUtils.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.simon.common.utils;
-
-import java.util.UUID;
-
-/**
- * UUID生成工具
- *
- * @author simon
- * @create 2018-08-02 17:18
- **/
-
-public class UuidUtils {
- public synchronized static String getUUID(){
- return UUID.randomUUID().toString().replace("-", "").toLowerCase();
- }
-}
diff --git a/web/src/main/java/com/simon/common/utils/snowflake/Sequence.java b/web/src/main/java/com/simon/common/utils/snowflake/Sequence.java
deleted file mode 100644
index 88d6f3799a555e90ad3b6794655c2fdfec7f9fae..0000000000000000000000000000000000000000
--- a/web/src/main/java/com/simon/common/utils/snowflake/Sequence.java
+++ /dev/null
@@ -1,160 +0,0 @@
-package com.simon.common.utils.snowflake;
-
-/**
- * 基于Twitter的Snowflake算法实现分布式高效有序ID生产黑科技(sequence)
- *
- *
- * SnowFlake的结构如下(每部分用-分开):
- *
- * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000
- *
- * 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0
- *
- * 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截)
- * 得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的(如下下面程序IdWorker类的startTime属性)。41位的时间截,可以使用69年,年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69
- *
- * 10位的数据机器位,可以部署在1024个节点,包括5位datacenterId和5位workerId
- *
- * 12位序列,毫秒内的计数,12位的计数顺序号支持每个节点每毫秒(同一机器,同一时间截)产生4096个ID序号
- *
- *
- * 加起来刚好64位,为一个Long型。
- * SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID左右。
- *
- * @author lry
- */
-public class Sequence {
-
- /** 起始时间戳,用于用当前时间戳减去这个时间戳,算出偏移量 **/
- private final long startTime = 1519740777809L;
-
- /** workerId占用的位数5(表示只允许workId的范围为:0-1023)**/
- private final long workerIdBits = 5L;
- /** dataCenterId占用的位数:5 **/
- private final long dataCenterIdBits = 5L;
- /** 序列号占用的位数:12(表示只允许workId的范围为:0-4095)**/
- private final long sequenceBits = 12L;
-
- /** workerId可以使用的最大数值:31 **/
- private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
- /** dataCenterId可以使用的最大数值:31 **/
- private final long maxDataCenterId = -1L ^ (-1L << dataCenterIdBits);
-
- private final long workerIdShift = sequenceBits;
- private final long dataCenterIdShift = sequenceBits + workerIdBits;
- private final long timestampLeftShift = sequenceBits + workerIdBits + dataCenterIdBits;
-
- /** 用mask防止溢出:位与运算保证计算的结果范围始终是 0-4095 **/
- private final long sequenceMask = -1L ^ (-1L << sequenceBits);
-
- private long workerId;
- private long dataCenterId;
- private long sequence = 0L;
- private long lastTimestamp = -1L;
- private boolean isClock = false;
-
- /**
- * 基于Snowflake创建分布式ID生成器
- *
- * 注:sequence
- *
- * @param workerId 工作机器ID,数据范围为0~31
- * @param dataCenterId 数据中心ID,数据范围为0~31
- */
- public Sequence(long workerId, long dataCenterId) {
- if (workerId > maxWorkerId || workerId < 0) {
- throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId));
- }
- if (dataCenterId > maxDataCenterId || dataCenterId < 0) {
- throw new IllegalArgumentException(String.format("dataCenter Id can't be greater than %d or less than 0", maxDataCenterId));
- }
-
- this.workerId = workerId;
- this.dataCenterId = dataCenterId;
- }
-
- public void setClock(boolean clock) {
- isClock = clock;
- }
-
- /**
- * 获取ID
- *
- * @return
- */
- public synchronized Long nextId() {
- long timestamp = this.timeGen();
-
- // 闰秒:如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
- if (timestamp < lastTimestamp) {
- long offset = lastTimestamp - timestamp;
- if (offset <= 5) {
- try {
- this.wait(offset << 1);
- timestamp = this.timeGen();
- if (timestamp < lastTimestamp) {
- throw new RuntimeException(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", offset));
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- } else {
- throw new RuntimeException(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", offset));
- }
- }
-
- // 解决跨毫秒生成ID序列号始终为偶数的缺陷:如果是同一时间生成的,则进行毫秒内序列
- if (lastTimestamp == timestamp) {
- // 通过位与运算保证计算的结果范围始终是 0-4095
- sequence = (sequence + 1) & sequenceMask;
- if (sequence == 0) {
- timestamp = this.tilNextMillis(lastTimestamp);
- }
- } else {
- // 时间戳改变,毫秒内序列重置
- sequence = 0L;
- }
-
- lastTimestamp = timestamp;
-
- /*
- * 1.左移运算是为了将数值移动到对应的段(41、5、5,12那段因为本来就在最右,因此不用左移)
- * 2.然后对每个左移后的值(la、lb、lc、sequence)做位或运算,是为了把各个短的数据合并起来,合并成一个二进制数
- * 3.最后转换成10进制,就是最终生成的id
- */
- return ((timestamp - startTime) << timestampLeftShift) |
- (dataCenterId << dataCenterIdShift) |
- (workerId << workerIdShift) |
- sequence;
- }
-
- /**
- * 保证返回的毫秒数在参数之后(阻塞到下一个毫秒,直到获得新的时间戳)
- *
- * @param lastTimestamp
- * @return
- */
- private long tilNextMillis(long lastTimestamp) {
- long timestamp = this.timeGen();
- while (timestamp <= lastTimestamp) {
- timestamp = this.timeGen();
- }
-
- return timestamp;
- }
-
- /**
- * 获得系统当前毫秒数
- *
- * @return timestamp
- */
- private long timeGen() {
- if (isClock) {
- // 解决高并发下获取时间戳的性能问题
- return SystemClock.now();
- } else {
- return System.currentTimeMillis();
- }
- }
-
-}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/common/utils/snowflake/SequenceId.java b/web/src/main/java/com/simon/common/utils/snowflake/SequenceId.java
deleted file mode 100644
index 493c13b97c34b0dc08b66905c80d14b788086320..0000000000000000000000000000000000000000
--- a/web/src/main/java/com/simon/common/utils/snowflake/SequenceId.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package com.simon.common.utils.snowflake;
-
-import org.hibernate.HibernateException;
-import org.hibernate.engine.spi.SessionImplementor;
-import org.hibernate.id.IdentifierGenerator;
-
-import java.io.Serializable;
-
-/**
- * @author simon
- * @create 2018-08-06 2:48
- **/
-
-public class SequenceId implements IdentifierGenerator {
- /** 起始时间戳,用于用当前时间戳减去这个时间戳,算出偏移量 **/
- private final long startTime = 1519740777809L;
-
- /** workerId占用的位数5(表示只允许workId的范围为:0-1023)**/
- private final long workerIdBits = 5L;
- /** dataCenterId占用的位数:5 **/
- private final long dataCenterIdBits = 5L;
- /** 序列号占用的位数:12(表示只允许workId的范围为:0-4095)**/
- private final long sequenceBits = 12L;
-
- /** workerId可以使用的最大数值:31 **/
- private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
- /** dataCenterId可以使用的最大数值:31 **/
- private final long maxDataCenterId = -1L ^ (-1L << dataCenterIdBits);
-
- private final long workerIdShift = sequenceBits;
- private final long dataCenterIdShift = sequenceBits + workerIdBits;
- private final long timestampLeftShift = sequenceBits + workerIdBits + dataCenterIdBits;
-
- /** 用mask防止溢出:位与运算保证计算的结果范围始终是 0-4095 **/
- private final long sequenceMask = -1L ^ (-1L << sequenceBits);
-
- private long workerId;
- private long dataCenterId;
- private long sequence = 0L;
- private long lastTimestamp = -1L;
- private boolean isClock = false;
-
- public SequenceId() {
- }
-
- /**
- * 基于Snowflake创建分布式ID生成器
- *
- * 注:sequence
- *
- * @param workerId 工作机器ID,数据范围为0~31
- * @param dataCenterId 数据中心ID,数据范围为0~31
- */
- public SequenceId(long workerId, long dataCenterId) {
- if (workerId > maxWorkerId || workerId < 0) {
- throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId));
- }
- if (dataCenterId > maxDataCenterId || dataCenterId < 0) {
- throw new IllegalArgumentException(String.format("dataCenter Id can't be greater than %d or less than 0", maxDataCenterId));
- }
-
- this.workerId = workerId;
- this.dataCenterId = dataCenterId;
- }
-
- public void setClock(boolean clock) {
- isClock = clock;
- }
-
- /**
- * 获取ID
- *
- * @return
- */
- public synchronized Long nextId() {
- long timestamp = this.timeGen();
-
- // 闰秒:如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
- if (timestamp < lastTimestamp) {
- long offset = lastTimestamp - timestamp;
- if (offset <= 5) {
- try {
- this.wait(offset << 1);
- timestamp = this.timeGen();
- if (timestamp < lastTimestamp) {
- throw new RuntimeException(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", offset));
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- } else {
- throw new RuntimeException(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", offset));
- }
- }
-
- // 解决跨毫秒生成ID序列号始终为偶数的缺陷:如果是同一时间生成的,则进行毫秒内序列
- if (lastTimestamp == timestamp) {
- // 通过位与运算保证计算的结果范围始终是 0-4095
- sequence = (sequence + 1) & sequenceMask;
- if (sequence == 0) {
- timestamp = this.tilNextMillis(lastTimestamp);
- }
- } else {
- // 时间戳改变,毫秒内序列重置
- sequence = 0L;
- }
-
- lastTimestamp = timestamp;
-
- /*
- * 1.左移运算是为了将数值移动到对应的段(41、5、5,12那段因为本来就在最右,因此不用左移)
- * 2.然后对每个左移后的值(la、lb、lc、sequence)做位或运算,是为了把各个短的数据合并起来,合并成一个二进制数
- * 3.最后转换成10进制,就是最终生成的id
- */
- return ((timestamp - startTime) << timestampLeftShift) |
- (dataCenterId << dataCenterIdShift) |
- (workerId << workerIdShift) |
- sequence;
- }
-
- /**
- * 保证返回的毫秒数在参数之后(阻塞到下一个毫秒,直到获得新的时间戳)
- *
- * @param lastTimestamp
- * @return
- */
- private long tilNextMillis(long lastTimestamp) {
- long timestamp = this.timeGen();
- while (timestamp <= lastTimestamp) {
- timestamp = this.timeGen();
- }
-
- return timestamp;
- }
-
- /**
- * 获得系统当前毫秒数
- *
- * @return timestamp
- */
- private long timeGen() {
- if (isClock) {
- // 解决高并发下获取时间戳的性能问题
- return SystemClock.now();
- } else {
- return System.currentTimeMillis();
- }
- }
-
- @Override
- public Serializable generate(SessionImplementor sessionImplementor, Object o) throws HibernateException {
- return nextId();
- }
-}
diff --git a/web/src/main/java/com/simon/common/utils/snowflake/SnowFlake.java b/web/src/main/java/com/simon/common/utils/snowflake/SnowFlake.java
deleted file mode 100644
index 10019e3179896167d4793a2ef49af8e7397cc8c0..0000000000000000000000000000000000000000
--- a/web/src/main/java/com/simon/common/utils/snowflake/SnowFlake.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package com.simon.common.utils.snowflake;
-
-/**
- * twitter的snowflake算法 -- java实现
- *
- * @author beyond
- * @date 2016/11/26
- */
-public class SnowFlake {
-
- /**
- * 起始的时间戳
- */
- private final static long START_STMP = 1533491178000L;
-
- /**
- * 每一部分占用的位数
- */
- 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;//上一次时间戳
-
- public SnowFlake(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;
- }
-
- /**
- * 产生下一个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 static void main(String[] args) {
- SnowFlake snowFlake = new SnowFlake(2, 3);
-
- for (int i = 0; i < (1 << 12); i++) {
- System.out.println(snowFlake.nextId());
- }
-
- }
-}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/common/utils/snowflake/SnowFlakeId.java b/web/src/main/java/com/simon/common/utils/snowflake/SnowFlakeId.java
deleted file mode 100644
index c0dfa2ebdd25d7adc3ad6de1358cf0016fac5386..0000000000000000000000000000000000000000
--- a/web/src/main/java/com/simon/common/utils/snowflake/SnowFlakeId.java
+++ /dev/null
@@ -1,185 +0,0 @@
-package com.simon.common.utils.snowflake;
-
-import org.hibernate.engine.spi.SessionImplementor;
-import org.hibernate.id.IdentifierGenerator;
-
-import java.io.Serializable;
-
-/**
- * Twitter_Snowflake
- * SnowFlake的结构如下(每部分用-分开):
- * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000
- * 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0
- * 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截)
- * 得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的(如下下面程序IdWorker类的startTime属性)。41位的时间截,可以使用69年,年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69
- * 10位的数据机器位,可以部署在1024个节点,包括5位datacenterId和5位workerId
- * 12位序列,毫秒内的计数,12位的计数顺序号支持每个节点每毫秒(同一机器,同一时间截)产生4096个ID序号
- * 加起来刚好64位,为一个Long型。
- * SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID左右。
- * @author : felixu
- * @createTime : 2017/11/28.
- */
-public class SnowFlakeId implements IdentifierGenerator{
-
- // ==============================Fields===========================================
- /**
- * 开始时间截 (2018-08-06)
- */
- private static final long TWEPOCH = 1533491178000L;
-
- /**
- * 机器id所占的位数
- */
- private static final long WORKER_ID_BITS = 5L;
-
- /**
- * 数据标识id所占的位数
- */
- private static final long DATA_CENTER_ID_BITS = 5L;
-
- /**
- * 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数)
- */
- private static final long MAX_WORKER_ID = -1L ^ (-1L << WORKER_ID_BITS);
-
- /**
- * 支持的最大数据标识id,结果是31
- */
- private static final long MAX_DATA_CENTER_ID = -1L ^ (-1L << DATA_CENTER_ID_BITS);
-
- /**
- * 序列在id中占的位数
- */
- private static final long SEQUENCE_BITS = 12L;
-
- /**
- * 机器ID向左移12位
- */
- private static final long WORKER_ID_SHIFT = SEQUENCE_BITS;
-
- /**
- * 数据标识id向左移17位(12+5)
- */
- private static final long DATA_CENTER_ID_SHIFT = SEQUENCE_BITS + WORKER_ID_BITS;
-
- /**
- * 时间截向左移22位(5+5+12)
- */
- private static final long TIMESTAMP_LEFT_SHIFT = SEQUENCE_BITS + WORKER_ID_BITS + DATA_CENTER_ID_BITS;
-
- /**
- * 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095)
- */
- private static final long SEQUENCE_MASK = -1L ^ (-1L << SEQUENCE_BITS);
-
- /**
- * 工作机器ID(0~31)
- */
- private static long workerId;
-
- /**
- * 数据中心ID(0~31)
- */
- private static long datacenterId;
-
- /**
- * 毫秒内序列(0~4095)
- */
- private static long sequence = 0L;
-
- /**
- * 上次生成ID的时间截
- */
- private static long lastTimestamp = -1L;
-
- //==============================Constructors=====================================
-
- public SnowFlakeId() {
- }
-
- /**
- * 构造函数
- *
- * @param workerId 工作ID (0~31)
- * @param datacenterId 数据中心ID (0~31)
- */
- private SnowFlakeId(long workerId, long datacenterId) {
- if (workerId > MAX_WORKER_ID || workerId < 0) {
- throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", MAX_WORKER_ID));
- }
- if (datacenterId > MAX_DATA_CENTER_ID || datacenterId < 0) {
- throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0", MAX_DATA_CENTER_ID));
- }
- SnowFlakeId.workerId = workerId;
- SnowFlakeId.datacenterId = datacenterId;
- }
-
- // ==============================Methods==========================================
-
- /**
- * 获得下一个ID (该方法是线程安全的)
- *
- * @return SnowFlakeId
- */
- public static synchronized long getId() {
- System.out.println(workerId + "," + datacenterId);
- long timestamp = timeGen();
-
- //如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
- if (timestamp < lastTimestamp) {
- throw new RuntimeException(
- String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
- }
-
- //如果是同一时间生成的,则进行毫秒内序列
- if (lastTimestamp == timestamp) {
- sequence = (sequence + 1) & SEQUENCE_MASK;
- //毫秒内序列溢出
- if (sequence == 0) {
- //阻塞到下一个毫秒,获得新的时间戳
- timestamp = tilNextMillis(lastTimestamp);
- }
- }
- //时间戳改变,毫秒内序列重置
- else {
- sequence = 0L;
- }
-
- //上次生成ID的时间截
- lastTimestamp = timestamp;
-
- //移位并通过或运算拼到一起组成64位的ID
- return ((timestamp - TWEPOCH) << TIMESTAMP_LEFT_SHIFT)
- | (datacenterId << DATA_CENTER_ID_SHIFT)
- | (workerId << WORKER_ID_SHIFT)
- | sequence;
- }
-
- /**
- * 阻塞到下一个毫秒,直到获得新的时间戳
- *
- * @param lastTimestamp 上次生成ID的时间截
- * @return 当前时间戳
- */
- protected static long tilNextMillis(long lastTimestamp) {
- long timestamp = timeGen();
- while (timestamp <= lastTimestamp) {
- timestamp = timeGen();
- }
- return timestamp;
- }
-
- /**
- * 返回以毫秒为单位的当前时间
- *
- * @return 当前时间(毫秒)
- */
- protected static long timeGen() {
- return System.currentTimeMillis();
- }
-
- @Override
- public Serializable generate(SessionImplementor s, Object obj) {
- return getId();
- }
-}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/common/utils/snowflake/SystemClock.java b/web/src/main/java/com/simon/common/utils/snowflake/SystemClock.java
deleted file mode 100644
index 609eaff9ad25c27ece40888cbdc66c545210a20c..0000000000000000000000000000000000000000
--- a/web/src/main/java/com/simon/common/utils/snowflake/SystemClock.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.simon.common.utils.snowflake;
-
-import java.sql.Timestamp;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicLong;
-
-/**
- * 高并发场景下System.currentTimeMillis()的性能问题的优化
- *
- * System.currentTimeMillis()的调用比new一个普通对象要耗时的多(具体耗时高出多少我还没测试过,有人说是100倍左右)
- * System.currentTimeMillis()之所以慢是因为去跟系统打了一次交道
- * 后台定时更新时钟,JVM退出时,线程自动回收
- * 10亿:43410,206,210.72815533980582%
- * 1亿:4699,29,162.0344827586207%
- * 1000万:480,12,40.0%
- * 100万:50,10,5.0%
- * @author lry
- */
-public class SystemClock {
-
- private final long period;
- private final AtomicLong now;
-
- private SystemClock(long period) {
- this.period = period;
- this.now = new AtomicLong(System.currentTimeMillis());
- scheduleClockUpdating();
- }
-
- private static class InstanceHolder {
- public static final SystemClock INSTANCE = new SystemClock(1);
- }
-
- private static SystemClock instance() {
- return InstanceHolder.INSTANCE;
- }
-
- private void scheduleClockUpdating() {
- ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
- public Thread newThread(Runnable runnable) {
- Thread thread = new Thread(runnable, "System Clock");
- thread.setDaemon(true);
- return thread;
- }
- });
- scheduler.scheduleAtFixedRate(new Runnable() {
- public void run() {
- now.set(System.currentTimeMillis());
- }
- }, period, period, TimeUnit.MILLISECONDS);
- }
-
- private long currentTimeMillis() {
- return now.get();
- }
-
- public static long now() {
- return instance().currentTimeMillis();
- }
-
- public static String nowDate() {
- return new Timestamp(instance().currentTimeMillis()).toString();
- }
-
-}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/common/wrapper/OrderByRequestWrapper.java b/web/src/main/java/com/simon/common/wrapper/OrderByRequestWrapper.java
deleted file mode 100644
index c70bf348f048fa321c7e0faf8231808b3683168b..0000000000000000000000000000000000000000
--- a/web/src/main/java/com/simon/common/wrapper/OrderByRequestWrapper.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.simon.common.wrapper;
-
-import com.google.common.base.CaseFormat;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-import java.util.Enumeration;
-
-/**
- * orderBy wrapper
- *
- * @author simon
- * @date 2018-11-23
- **/
-
-public class OrderByRequestWrapper extends HttpServletRequestWrapper {
- public OrderByRequestWrapper(HttpServletRequest request) {
- super(request);
- }
-
- @Override
- public Enumeration getParameterNames() {
- return super.getParameterNames();
- }
-
- @Override
- public String[] getParameterValues(String name) {
- if("orderBy".equals(name)){
- return new String[]{CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, getParameter("orderBy"))};
- }
- return super.getParameterValues(name);
- }
-}
diff --git a/web/src/main/java/com/simon/controller/FileUploadController.java b/web/src/main/java/com/simon/controller/FileUploadController.java
index 1865ed9eb57210e9db37ab08b4ebf8de4f87537a..19a2df035cae037b03571cf9bd87b7906f3bb17d 100644
--- a/web/src/main/java/com/simon/controller/FileUploadController.java
+++ b/web/src/main/java/com/simon/controller/FileUploadController.java
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.simon.common.config.AppConfig;
import com.simon.common.controller.BaseController;
import com.simon.common.domain.ResultMsg;
+import com.simon.common.exception.BusinessException;
import com.simon.common.plugins.qiniu.QiNiuUtil;
import com.simon.common.utils.FileUploadUtil;
import com.simon.dto.ueditor.FileInfo;
@@ -40,7 +41,9 @@ public class FileUploadController extends BaseController {
private final ResourceLoader resourceLoader;
private final String ROOT = AppConfig.FILE_UPLOAD_DIR;
- private final String fileUploadType = AppConfig.FILE_UPLOAD_TYPE;
+
+ @Value("${file.upload.type}")
+ private String fileUploadType;
@Value("${server.port}")
private String serverPort;
@@ -102,26 +105,30 @@ public class FileUploadController extends BaseController {
@RequestMapping(value = "/ueditor/upload/file")
public FileInfo uploadFile(HttpServletRequest request){
List files = ((MultipartHttpServletRequest) request).getFiles("file");
- QiNiuUtil.getInstance().setZoneType(QiNiuUtil.ZoneType.ZONE_PUBLIC).uploadCommonsMultipartFile(files.get(0), ROOT + "/" + files.get(0).getOriginalFilename(), true);
- FileInfo fileInfo = new FileInfo();
- fileInfo.setCode(200);
- fileInfo.setState("SUCCESS");
- fileInfo.setOriginal(files.get(0).getOriginalFilename());
- fileInfo.setUrl("http://pjiiukt1g.bkt.clouddn.com/" + ROOT + "/" + files.get(0).getOriginalFilename());
- fileInfo.setTitle(files.get(0).getOriginalFilename());
- return fileInfo;
+ if (null == files || files.size() <= 0){
+ throw new BusinessException("缺少文件");
+ }
+ if(AppConfig.FILE_UPLOAD_TYPE_QINIU.equals(fileUploadType)){
+ QiNiuUtil.getInstance().setZoneType(QiNiuUtil.ZoneType.ZONE_PUBLIC).uploadCommonsMultipartFile(files.get(0), ROOT + "/" + files.get(0).getOriginalFilename(), true);
+ FileInfo fileInfo = new FileInfo();
+ fileInfo.setCode(200);
+ fileInfo.setState("SUCCESS");
+ fileInfo.setOriginal(files.get(0).getOriginalFilename());
+ fileInfo.setUrl(QiNiuUtil.getInstance().setZoneType(QiNiuUtil.ZoneType.ZONE_PUBLIC).getDomainOfBucket() + "/" + ROOT + "/" + files.get(0).getOriginalFilename());
+ fileInfo.setTitle(files.get(0).getOriginalFilename());
+ return fileInfo;
+ }else{
+ String[] savedFiles = FileUploadUtil.saveFiles(files.toArray(new MultipartFile[files.size()]));
+ if(null == savedFiles || savedFiles.length <= 0){
+ throw new BusinessException("存储文件失败");
+ }
+ FileInfo fileInfo = new FileInfo();
+ fileInfo.setCode(200);
+ fileInfo.setState("SUCCESS");
+ fileInfo.setOriginal(files.get(0).getOriginalFilename());
+ fileInfo.setUrl("http://localhost:" + serverPort + savedFiles[0]);
+ fileInfo.setTitle(files.get(0).getOriginalFilename());
+ return fileInfo;
+ }
}
-
- /*@ApiOperation(value = "文件下载")
- @GetMapping("/fileUpload/{filename:.+}")
- public ResponseEntity getFile(@PathVariable String filename) {
- Resource file = resourceLoader.getResource("file:" + Paths.get(ROOT, filename));
- return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getFilename() + "\"").body(file);
- }*/
-
- /*@ApiOperation(value = "文件获取")
- @GetMapping("/fileUpload/{filename:.+}")
- public ResponseEntity getFile(@PathVariable String filename){
- return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, "application/octet-stream").body(resourceLoader.getResource("file:" + Paths.get(ROOT, filename).toString()));
- }*/
}
diff --git a/web/src/main/java/com/simon/controller/OauthUserController.java b/web/src/main/java/com/simon/controller/OauthUserController.java
index 0cfde06a2072e7c70578a7749318fd1c046aca22..4e97c29ec0ec29b028a9cfebde920cec0400b197 100644
--- a/web/src/main/java/com/simon/controller/OauthUserController.java
+++ b/web/src/main/java/com/simon/controller/OauthUserController.java
@@ -79,7 +79,6 @@ public class OauthUserController extends BaseController {
@PostMapping(value = "")
@ResponseBody
public ResultMsg add(@RequestBody OauthUser body){
- body.setPassword(passwordEncoder.encode(body.getPassword()));
oauthUserService.save(body);
return ResultMsg.success();
}
diff --git a/web/src/main/java/com/simon/controller/QuartzJobController.java b/web/src/main/java/com/simon/controller/QuartzJobController.java
new file mode 100644
index 0000000000000000000000000000000000000000..e684cc7989fcc11253d669a9b481c876f58c3abb
--- /dev/null
+++ b/web/src/main/java/com/simon/controller/QuartzJobController.java
@@ -0,0 +1,120 @@
+package com.simon.controller;
+
+import com.simon.common.controller.BaseController;
+import com.simon.common.domain.EasyUIDataGridResult;
+import com.simon.common.domain.ResultMsg;
+import com.simon.common.domain.UserEntity;
+import com.simon.common.plugins.quartz.QuartzManage;
+import com.simon.model.QuartzJob;
+import com.simon.service.QuartzJobService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.SchedulerException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.core.Authentication;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+* quartz任务
+*
+* @author SimonSun
+* @date 2018-12-22
+**/
+@Slf4j
+@Api(description = "quartz任务")
+@Controller
+@RequestMapping("/api/quartzJobs")
+public class QuartzJobController extends BaseController{
+
+ @Autowired
+ private QuartzJobService quartzJobService;
+
+ @Autowired
+ private QuartzManage quartzManage;
+
+ @ApiIgnore
+ @ApiOperation(value = "列表页面")
+ @GetMapping(params = "easyui-list")
+ public String getEasyUIList(){
+ return "easyui/quartz_job";
+ }
+
+ @ApiIgnore
+ @ApiOperation(value = "列表数据")
+ @GetMapping("easyui/list")
+ @ResponseBody
+ public EasyUIDataGridResult getEasyUIList(
+ @ApiParam(value = "类名") @RequestParam(required = false) String beanName,
+ @ApiParam(value = "job状态") @RequestParam(required = false) Integer jobStatus,
+ @ApiParam(value = "页码", defaultValue = "1", required = true) @RequestParam Integer pageNo,
+ @ApiParam(value = "每页条数", defaultValue = "10", required = true)@RequestParam Integer pageSize,
+ @ApiParam(value = "排序")@RequestParam(required = false, defaultValue = "") String orderBy){
+ Map params = new LinkedHashMap<>();
+ params.put("beanName", beanName);
+ params.put("jobStatus", jobStatus);
+ return new EasyUIDataGridResult<>(quartzJobService.getList(params, pageNo, pageSize, orderBy));
+ }
+
+ @ApiOperation(value = "新增")
+ @PostMapping
+ @ResponseBody
+ public ResultMsg add(@RequestBody QuartzJob body){
+ quartzJobService.insertSelective(body);
+ return ResultMsg.success();
+ }
+
+ @ApiOperation(value = "修改")
+ @PatchMapping
+ @ResponseBody
+ public ResultMsg update(@RequestBody QuartzJob body){
+ quartzJobService.updateByPrimaryKeySelective(body);
+ return ResultMsg.success();
+ }
+
+ @ApiOperation(value = "删除")
+ @DeleteMapping("/id/{ids}")
+ @ResponseBody
+ public ResultMsg delete(@PathVariable String ids){
+ quartzJobService.deleteByIds(ids);
+ return ResultMsg.success();
+ }
+
+ //@PreAuthorize("isAuthenticated()")
+ @PreAuthorize("hasRole('ADMIN') or hasRole('SU')")
+ @ApiOperation(value = "定时任务操作(启动,暂停)")
+ @PostMapping("/id/{id}/jobStatus/{jobStatus}")
+ @ResponseBody
+ public ResultMsg operation(
+ Authentication authentication,
+ @PathVariable Long id,
+ @ApiParam(value = "job状态[0:off, 1:on]", required = true)@PathVariable int jobStatus) throws ClassNotFoundException, InstantiationException, SchedulerException, IllegalAccessException {
+ Object principal = authentication.getPrincipal();
+ UserEntity userEntity = null;
+ if(principal instanceof UserEntity){
+ userEntity = (UserEntity)principal;
+ }
+
+ QuartzJob quartzJob = quartzJobService.findById(id);
+
+ if(0 == jobStatus){
+ quartzManage.pauseJob(quartzJob);
+ }else{
+ quartzManage.resumeJob(quartzJob);
+ }
+
+ quartzJob.setJobStatus(jobStatus);
+ quartzJob.setUpdateBy(userEntity.getId());
+ quartzJob.setUpdateDate(new Date());
+ quartzJobService.updateByPrimaryKeySelective(quartzJob);
+ return ResultMsg.success();
+ }
+}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/controller/TableController.java b/web/src/main/java/com/simon/controller/TableController.java
index 4ecdcf08b1e51d8c4927945ee27c4545b65db772..61f5ce26114340e32307f6fbb16e1ea33fd1a3f5 100644
--- a/web/src/main/java/com/simon/controller/TableController.java
+++ b/web/src/main/java/com/simon/controller/TableController.java
@@ -156,10 +156,9 @@ public class TableController extends BaseController {
@RequestParam String tableName,
@RequestParam String entityName,
@RequestParam String tableComment,
- @ApiParam(value = "表id列类型", required = false, example = "Long") @RequestParam(required = false, defaultValue = "Long") String idType,
- @RequestParam(required = false, defaultValue = "controllerAndPage") String genModules,
+ @RequestParam String idType,
+ @RequestParam String genModules,
@RequestParam String columns){
- log.info(columns);
List columnList = JSON.parseArray(columns, Column.class);
EntityDataModel entityDataModel = new EntityDataModel();
entityDataModel.setBasePackage(CodeGenerator.BASE_PACKAGE);
@@ -172,7 +171,6 @@ public class TableController extends BaseController {
entityDataModel.setModelNameUpperCamel(entityName);
entityDataModel.setModelNameLowerCamel(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, entityDataModel.getEntityName()));
CodeGenerator.genCodeByCustomModelName(tableName, entityName, idType, genModules, null, entityDataModel);
- log.info(JSON.toJSONString(columnList));
return ResultMsg.success();
}
}
diff --git a/web/src/main/java/com/simon/mapper/AccountBindMapper.java b/web/src/main/java/com/simon/mapper/AccountBindMapper.java
index bf62bf9a590b382a68bfe8371b51033aaa5a9fd5..02a9da616662e0677ee70b53fba858d280b34afe 100644
--- a/web/src/main/java/com/simon/mapper/AccountBindMapper.java
+++ b/web/src/main/java/com/simon/mapper/AccountBindMapper.java
@@ -2,6 +2,11 @@ package com.simon.mapper;
import com.simon.common.mapper.MyMapper;
import com.simon.model.AccountBind;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
public interface AccountBindMapper extends MyMapper {
+ List getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/mapper/AuthorityMapper.java b/web/src/main/java/com/simon/mapper/AuthorityMapper.java
index b830819924b087ce99b24701c4d0922c3c3d8b86..d48d485aab425f04431bae1a3e1aa97cf949d892 100644
--- a/web/src/main/java/com/simon/mapper/AuthorityMapper.java
+++ b/web/src/main/java/com/simon/mapper/AuthorityMapper.java
@@ -22,4 +22,6 @@ public interface AuthorityMapper extends MyMapper {
* @return 影响记录行数
*/
int deleteByUserIds(@Param("userIds") String userIds);
+
+ List getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/mapper/BillMapper.java b/web/src/main/java/com/simon/mapper/BillMapper.java
index b7de85ac53418fe42811bd117629d2317b7282e7..fba817d4cc98eececab99ac4d6d20e555fc1fd7c 100644
--- a/web/src/main/java/com/simon/mapper/BillMapper.java
+++ b/web/src/main/java/com/simon/mapper/BillMapper.java
@@ -11,4 +11,6 @@ public interface BillMapper extends MyMapper {
int updateBillStatusByOutTradeNo(String billStatus, String outTradeNo);
List getDtoList(@Param("map") Map params);
+
+ List getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/mapper/DictTypeGroupMapper.java b/web/src/main/java/com/simon/mapper/DictTypeGroupMapper.java
index 849b93d1e846704dcfa3672ae4cd3541fe24de8e..c203703a861753a1a8b8cbc3fbf0deb821fb0f9f 100644
--- a/web/src/main/java/com/simon/mapper/DictTypeGroupMapper.java
+++ b/web/src/main/java/com/simon/mapper/DictTypeGroupMapper.java
@@ -12,4 +12,6 @@ public interface DictTypeGroupMapper extends MyMapper {
List getAll();
List getTreeGridDtos(@Param("map") Map map);
+
+ List getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/mapper/DictTypeMapper.java b/web/src/main/java/com/simon/mapper/DictTypeMapper.java
index 614078db0ad713968a825ce28d954b66abc330d9..6f814c3192e3dbaccfc940b4ff1cda75070de40e 100644
--- a/web/src/main/java/com/simon/mapper/DictTypeMapper.java
+++ b/web/src/main/java/com/simon/mapper/DictTypeMapper.java
@@ -6,6 +6,7 @@ import com.simon.model.DictType;
import org.apache.ibatis.annotations.Param;
import java.util.List;
+import java.util.Map;
/**
* @author simon
@@ -19,4 +20,6 @@ public interface DictTypeMapper extends MyMapper {
List getByGroupCode(@Param("groupCode") String groupCode);
List getTreeGridDtos(@Param("groupCode") String groupCode);
+
+ List getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/mapper/LogLoginMapper.java b/web/src/main/java/com/simon/mapper/LogLoginMapper.java
index fbb075159ce0e024716993d93825d2366fd23e05..1aa73fb3ffaf1568c0096c0da05db0fcfd8db512 100644
--- a/web/src/main/java/com/simon/mapper/LogLoginMapper.java
+++ b/web/src/main/java/com/simon/mapper/LogLoginMapper.java
@@ -2,6 +2,11 @@ package com.simon.mapper;
import com.simon.common.mapper.MyMapper;
import com.simon.model.LogLogin;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
public interface LogLoginMapper extends MyMapper {
+ List getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/mapper/NewsTagMapper.java b/web/src/main/java/com/simon/mapper/NewsTagMapper.java
index 91d6b9faab67b305288b3072eacbd35ad8e6262b..4abc1bf22d924cbb913bcf4b0fc7a887a5d157ed 100644
--- a/web/src/main/java/com/simon/mapper/NewsTagMapper.java
+++ b/web/src/main/java/com/simon/mapper/NewsTagMapper.java
@@ -2,6 +2,11 @@ package com.simon.mapper;
import com.simon.common.mapper.MyMapper;
import com.simon.model.NewsTag;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
public interface NewsTagMapper extends MyMapper {
+ List getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/mapper/NoticeMsgMapper.java b/web/src/main/java/com/simon/mapper/NoticeMsgMapper.java
index 5ccbe766c591945f044bb5c715d25ac0581bbb40..5026761c73cba99b0d8df63a6fe552ec5d912e07 100644
--- a/web/src/main/java/com/simon/mapper/NoticeMsgMapper.java
+++ b/web/src/main/java/com/simon/mapper/NoticeMsgMapper.java
@@ -2,6 +2,11 @@ package com.simon.mapper;
import com.simon.common.mapper.MyMapper;
import com.simon.model.NoticeMsg;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
public interface NoticeMsgMapper extends MyMapper {
+ List getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/mapper/OauthUserMapper.java b/web/src/main/java/com/simon/mapper/OauthUserMapper.java
index edef51f1bef44883f05ca7b97e07d17bfcf0cb73..c0d1878b5f0456d85eb1396ddf96614b984328cb 100644
--- a/web/src/main/java/com/simon/mapper/OauthUserMapper.java
+++ b/web/src/main/java/com/simon/mapper/OauthUserMapper.java
@@ -14,4 +14,6 @@ public interface OauthUserMapper extends MyMapper {
List findByMap(@Param("map") Map map);
List sexRatio();
+
+ List getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/mapper/QrCodeMapper.java b/web/src/main/java/com/simon/mapper/QrCodeMapper.java
index ea4b8c53c4b509e14305b58086e6fdab9dc9e060..4d686eb9d3fb65f9faeeb732c47d7c326212dccf 100644
--- a/web/src/main/java/com/simon/mapper/QrCodeMapper.java
+++ b/web/src/main/java/com/simon/mapper/QrCodeMapper.java
@@ -2,6 +2,11 @@ package com.simon.mapper;
import com.simon.common.mapper.MyMapper;
import com.simon.model.QrCode;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
public interface QrCodeMapper extends MyMapper {
+ List getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/mapper/QuartzJobMapper.java b/web/src/main/java/com/simon/mapper/QuartzJobMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..6df27adea45bd647fba701d8946a47d8f2df7ee5
--- /dev/null
+++ b/web/src/main/java/com/simon/mapper/QuartzJobMapper.java
@@ -0,0 +1,24 @@
+package com.simon.mapper;
+
+import com.simon.common.mapper.MyMapper;
+import com.simon.model.QuartzJob;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* QuartzJob
+* @author SimonSun
+* @date 2018-12-22
+**/
+public interface QuartzJobMapper extends MyMapper {
+ /**
+ * 使用Map查询
+ * @param map map查询条件
+ * @return 查询结果
+ */
+ List getList(@Param("map") Map map);
+
+ int updateJobStatus(@Param("jobStatus") int jobStatus);
+}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/mapper/ResetPwdInfoMapper.java b/web/src/main/java/com/simon/mapper/ResetPwdInfoMapper.java
index 032dbb10260cd295f8880ffc32466708fee45f25..8ae8f0c812885c9234c60173a7c88ebbeb07c72f 100644
--- a/web/src/main/java/com/simon/mapper/ResetPwdInfoMapper.java
+++ b/web/src/main/java/com/simon/mapper/ResetPwdInfoMapper.java
@@ -2,6 +2,11 @@ package com.simon.mapper;
import com.simon.common.mapper.MyMapper;
import com.simon.model.ResetPwdInfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
public interface ResetPwdInfoMapper extends MyMapper {
+ List getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/mapper/SideMenuMapper.java b/web/src/main/java/com/simon/mapper/SideMenuMapper.java
index 79011948e4802e20b28edd2e0eb39f6d9d7df8f7..97618adc4288e164e899eebc3c6b2fe076ce2e1b 100644
--- a/web/src/main/java/com/simon/mapper/SideMenuMapper.java
+++ b/web/src/main/java/com/simon/mapper/SideMenuMapper.java
@@ -39,4 +39,6 @@ public interface SideMenuMapper extends MyMapper {
List selectTreeGrid();
List findAll();
+
+ List getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/mapper/VeriCodeMapper.java b/web/src/main/java/com/simon/mapper/VeriCodeMapper.java
index 2d8e14982e5ae8a40c8fcf2203a75d5ecabeccf3..bad1ec81e144f5fc8043774e3474fab7ff810571 100644
--- a/web/src/main/java/com/simon/mapper/VeriCodeMapper.java
+++ b/web/src/main/java/com/simon/mapper/VeriCodeMapper.java
@@ -2,6 +2,11 @@ package com.simon.mapper;
import com.simon.common.mapper.MyMapper;
import com.simon.model.VeriCode;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
public interface VeriCodeMapper extends MyMapper {
+ List getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/model/OauthUser.java b/web/src/main/java/com/simon/model/OauthUser.java
index a37114097268d6a91ee563d9c0dce39df99eeb7d..b64f62d4f89ce3e76f4dcf0295010fd2cf2d644a 100644
--- a/web/src/main/java/com/simon/model/OauthUser.java
+++ b/web/src/main/java/com/simon/model/OauthUser.java
@@ -114,4 +114,8 @@ public class OauthUser implements Serializable{
@ApiModelProperty(value = "登录时间")
@Column(name = "login_date")
private Date loginDate;
+
+ @ApiModelProperty(value = "角色")
+ @Transient
+ private String authorities;
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/model/QuartzJob.java b/web/src/main/java/com/simon/model/QuartzJob.java
new file mode 100644
index 0000000000000000000000000000000000000000..87f99b9678538ecfff7162f8a79f1f054b0e9421
--- /dev/null
+++ b/web/src/main/java/com/simon/model/QuartzJob.java
@@ -0,0 +1,98 @@
+package com.simon.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.simon.common.config.AppConfig;
+import com.simon.common.utils.SnowflakeGenId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.hibernate.annotations.GenericGenerator;
+import tk.mybatis.mapper.annotation.KeySql;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+* quartz任务
+* @author SimonSun
+* @date 2018-12-22
+**/
+@ApiModel(description = "quartz任务")
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Entity
+@Table(name="t_s_quartz_job")
+public class QuartzJob implements Serializable{
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @Column(name = "id")
+ @KeySql(genId = SnowflakeGenId.class)
+ @GeneratedValue(generator = "sequenceId")
+ @GenericGenerator(name = "sequenceId", strategy = "com.simon.common.utils.snowflake.SequenceId")
+ private Long id;
+
+ @ApiModelProperty(value = "创建人id")
+ @Column(name = "create_by")
+ private Long createBy;
+
+ @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = AppConfig.DATE_PATTERN_DATETIME, timezone = AppConfig.DATE_TIMEZONE)
+ @ApiModelProperty(value = "创建时间")
+ @Column(name = "create_date")
+ private Date createDate;
+
+ @ApiModelProperty(value = "更新人id")
+ @Column(name = "update_by")
+ private Long updateBy;
+
+ @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = AppConfig.DATE_PATTERN_DATETIME, timezone = AppConfig.DATE_TIMEZONE)
+ @ApiModelProperty(value = "更新时间")
+ @Column(name = "update_date")
+ private Date updateDate;
+
+ @ApiModelProperty(value = "cron表达式")
+ @Column(name = "cron_expression")
+ private String cronExpression;
+
+ @ApiModelProperty(value = "任务调用的方法名")
+ @Column(name = "method_name")
+ private String methodName;
+
+ @ApiModelProperty(value = "任务是否有状态")
+ @Column(name = "is_concurrent")
+ private Integer isConcurrent;
+
+ @ApiModelProperty(value = "描述")
+ @Column(name = "description")
+ private String description;
+
+ @ApiModelProperty(value = "任务执行时调用哪个类的方法 包名+类名,完全限定名")
+ @Column(name = "bean_name")
+ private String beanName;
+
+ @ApiModelProperty(value = "触发器名称")
+ @Column(name = "trigger_name")
+ private String triggerName;
+
+ @ApiModelProperty(value = "任务状态")
+ @Column(name = "job_status")
+ private Integer jobStatus;
+
+ @ApiModelProperty(value = "spring_bean")
+ @Column(name = "spring_bean")
+ private String springBean;
+
+ @ApiModelProperty(value = "任务名")
+ @Column(name = "job_name")
+ private String jobName;
+
+ @ApiModelProperty(value = "创建人名称")
+ @Transient
+ private String createUser;
+
+ @ApiModelProperty(value = "更新人名称")
+ @Transient
+ private String updateUser;
+}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/repository/QuartzJobRepository.java b/web/src/main/java/com/simon/repository/QuartzJobRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..995eacc338811b37d44aebc93e5d9f8d9f63bb6e
--- /dev/null
+++ b/web/src/main/java/com/simon/repository/QuartzJobRepository.java
@@ -0,0 +1,15 @@
+package com.simon.repository;
+
+import com.simon.model.QuartzJob;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+* @author SimonSun
+* @date 2018-12-21
+**/
+@Repository
+public interface QuartzJobRepository extends JpaRepository {
+}
diff --git a/web/src/main/java/com/simon/service/LoggingEventService.java b/web/src/main/java/com/simon/service/LoggingEventService.java
index 7df31841bbad33ca644f7e4955ff9f08229b4778..c2355cd6a562e00924431cd2f46a2d113f3150d5 100644
--- a/web/src/main/java/com/simon/service/LoggingEventService.java
+++ b/web/src/main/java/com/simon/service/LoggingEventService.java
@@ -1,16 +1,12 @@
package com.simon.service;
-import com.github.pagehelper.PageInfo;
import com.simon.common.service.BasicService;
import com.simon.model.LoggingEvent;
-import java.util.Map;
-
/**
* @author SimonSun
* @date 2018-11-09
**/
public interface LoggingEventService extends BasicService {
- PageInfo getList(Map params, Integer limit, Integer offset, String orderBy);
void deleteAll();
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/service/NewsInfoService.java b/web/src/main/java/com/simon/service/NewsInfoService.java
index f56f11d001971acddb40f4e4197d6c4c8a242fc7..b5fe6a3abd1bc20b0cb6a4000093f324cf004f8c 100644
--- a/web/src/main/java/com/simon/service/NewsInfoService.java
+++ b/web/src/main/java/com/simon/service/NewsInfoService.java
@@ -1,15 +1,12 @@
package com.simon.service;
-import com.github.pagehelper.PageInfo;
import com.simon.common.service.BasicService;
import com.simon.model.NewsInfo;
-import java.util.Map;
-
/**
* @author SimonSun
* @create 2018-08-05 18:00:13
**/
public interface NewsInfoService extends BasicService {
- PageInfo getList(Map params, Integer pageNo, Integer pageSize, String orderBy);
+
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/service/QuartzJobService.java b/web/src/main/java/com/simon/service/QuartzJobService.java
new file mode 100644
index 0000000000000000000000000000000000000000..be848caab31ea5b0c5c599dfaef7662565d06e21
--- /dev/null
+++ b/web/src/main/java/com/simon/service/QuartzJobService.java
@@ -0,0 +1,12 @@
+package com.simon.service;
+import com.simon.model.QuartzJob;
+import com.simon.common.service.BasicService;
+import org.quartz.SchedulerException;
+
+/**
+* @author SimonSun
+* @date 2018-12-21
+**/
+public interface QuartzJobService extends BasicService {
+ void runJobsOnStart() throws ClassNotFoundException, InstantiationException, SchedulerException, IllegalAccessException;
+}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/service/SideMenuService.java b/web/src/main/java/com/simon/service/SideMenuService.java
index fb3675e4f2c040268af8b81c74aa2934de46425e..8adba66337ec19645cd11c02e025d4def4eac45d 100644
--- a/web/src/main/java/com/simon/service/SideMenuService.java
+++ b/web/src/main/java/com/simon/service/SideMenuService.java
@@ -14,5 +14,4 @@ import java.util.Map;
public interface SideMenuService extends BasicService {
PageInfo getAll(Map params, Integer limit, Integer offset);
List getAll();
- PageInfo getList(Map params, Integer limit, Integer offset, String orderBy);
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/service/impl/AccountBindServiceImpl.java b/web/src/main/java/com/simon/service/impl/AccountBindServiceImpl.java
index 020d72b8a2889d4ba5d39a1896a69eae6ef81231..6aa54db46100503b2b9bf127dec826878526a150 100644
--- a/web/src/main/java/com/simon/service/impl/AccountBindServiceImpl.java
+++ b/web/src/main/java/com/simon/service/impl/AccountBindServiceImpl.java
@@ -1,22 +1,22 @@
package com.simon.service.impl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.simon.common.config.AppConfig;
import com.simon.mapper.AccountBindMapper;
import com.simon.model.AccountBind;
-import com.simon.service.AccountBindService;
import com.simon.repository.AccountBindRepository;
-import com.simon.common.config.AppConfig;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
+import com.simon.service.AccountBindService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.apache.commons.lang3.StringUtils;
-import javax.annotation.Resource;
import java.util.List;
+import java.util.Map;
/**
* @author SimonSun
@@ -110,4 +110,19 @@ public class AccountBindServiceImpl implements AccountBindService {
public int updateByPrimaryKeySelective(AccountBind accountBind){
return accountBindMapper.updateByPrimaryKeySelective(accountBind);
}
+
+ @Override
+ public PageInfo getList(Map params, Integer pageNo, Integer pageSize, String orderBy) {
+ if (null == pageSize){
+ pageSize = AppConfig.DEFAULT_PAGE_SIZE;
+ }
+ orderBy = orderBy.trim();
+ if (StringUtils.isEmpty(orderBy)){
+ PageHelper.startPage(pageNo, pageSize);
+ }else{
+ PageHelper.startPage(pageNo, pageSize, orderBy);
+ }
+ List list = accountBindMapper.getList(params);
+ return new PageInfo<>(list);
+ }
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/service/impl/AuthorityServiceImpl.java b/web/src/main/java/com/simon/service/impl/AuthorityServiceImpl.java
index 1a57abec4154cb058db675f4db23266b72a07d90..f5c401fddcaa80fc3c582e4a4ea784c76e091d8f 100644
--- a/web/src/main/java/com/simon/service/impl/AuthorityServiceImpl.java
+++ b/web/src/main/java/com/simon/service/impl/AuthorityServiceImpl.java
@@ -115,6 +115,21 @@ public class AuthorityServiceImpl implements AuthorityService {
return authorityMapper.updateByPrimaryKeySelective(authority);
}
+ @Override
+ public PageInfo getList(Map params, Integer pageNo, Integer pageSize, String orderBy) {
+ if (null == pageSize){
+ pageSize = AppConfig.DEFAULT_PAGE_SIZE;
+ }
+ orderBy = orderBy.trim();
+ if (StringUtils.isEmpty(orderBy)){
+ PageHelper.startPage(pageNo, pageSize);
+ }else{
+ PageHelper.startPage(pageNo, pageSize, orderBy);
+ }
+ List list = authorityMapper.getList(params);
+ return new PageInfo<>(list);
+ }
+
@Override
public PageInfo getDtoList(Map params, Integer pageNo, Integer pageSize, String orderBy) {
if (null == pageSize){
diff --git a/web/src/main/java/com/simon/service/impl/BillServiceImpl.java b/web/src/main/java/com/simon/service/impl/BillServiceImpl.java
index b8ba2460739af895c0233093a42c3e5733526913..67ca9f4be707a036d792491fe7a2e55e2cfd1b42 100644
--- a/web/src/main/java/com/simon/service/impl/BillServiceImpl.java
+++ b/web/src/main/java/com/simon/service/impl/BillServiceImpl.java
@@ -117,6 +117,21 @@ public class BillServiceImpl implements BillService {
return billMapper.updateByPrimaryKeySelective(bill);
}
+ @Override
+ public PageInfo getList(Map params, Integer pageNo, Integer pageSize, String orderBy) {
+ if (null == pageSize){
+ pageSize = AppConfig.DEFAULT_PAGE_SIZE;
+ }
+ orderBy = orderBy.trim();
+ if (StringUtils.isEmpty(orderBy)){
+ PageHelper.startPage(pageNo, pageSize);
+ }else{
+ PageHelper.startPage(pageNo, pageSize, orderBy);
+ }
+ List list = billMapper.getList(params);
+ return new PageInfo<>(list);
+ }
+
@Override
public Bill createBill(BillRequest billRequest) {
Bill bill = new Bill();
diff --git a/web/src/main/java/com/simon/service/impl/DictTypeGroupServiceImpl.java b/web/src/main/java/com/simon/service/impl/DictTypeGroupServiceImpl.java
index 4b24b382e91806796f91f3708e7c54f736afccf0..66373265a72a425d28736152ab20321bba03f86c 100644
--- a/web/src/main/java/com/simon/service/impl/DictTypeGroupServiceImpl.java
+++ b/web/src/main/java/com/simon/service/impl/DictTypeGroupServiceImpl.java
@@ -118,6 +118,21 @@ public class DictTypeGroupServiceImpl implements DictTypeGroupService {
return dictTypeGroupMapper.updateByPrimaryKeySelective(dictTypeGroup);
}
+ @Override
+ public PageInfo getList(Map params, Integer pageNo, Integer pageSize, String orderBy) {
+ if (null == pageSize){
+ pageSize = AppConfig.DEFAULT_PAGE_SIZE;
+ }
+ orderBy = orderBy.trim();
+ if (StringUtils.isEmpty(orderBy)){
+ PageHelper.startPage(pageNo, pageSize);
+ }else{
+ PageHelper.startPage(pageNo, pageSize, orderBy);
+ }
+ var list = dictTypeGroupMapper.getList(params);
+ return new PageInfo<>(list);
+ }
+
@Override
public List getDtos(Integer limit, Integer offset) {
List dtoList = new ArrayList<>();
diff --git a/web/src/main/java/com/simon/service/impl/DictTypeServiceImpl.java b/web/src/main/java/com/simon/service/impl/DictTypeServiceImpl.java
index 5dd0809076db0f86ecd39f9f6fe53503bc931221..641b6f53c0f24cbb0ad5cf88646947bb71a9718c 100644
--- a/web/src/main/java/com/simon/service/impl/DictTypeServiceImpl.java
+++ b/web/src/main/java/com/simon/service/impl/DictTypeServiceImpl.java
@@ -11,6 +11,7 @@ import com.simon.model.DictTypeGroup;
import com.simon.repository.DictTypeGroupRepository;
import com.simon.repository.DictTypeRepository;
import com.simon.service.DictTypeService;
+import lombok.var;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
@@ -20,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
+import java.util.Map;
/**
* @author SimonSun
@@ -117,6 +119,21 @@ public class DictTypeServiceImpl implements DictTypeService {
return dictTypeMapper.updateByPrimaryKeySelective(dictType);
}
+ @Override
+ public PageInfo getList(Map params, Integer pageNo, Integer pageSize, String orderBy) {
+ if (null == pageSize){
+ pageSize = AppConfig.DEFAULT_PAGE_SIZE;
+ }
+ orderBy = orderBy.trim();
+ if (StringUtils.isEmpty(orderBy)){
+ PageHelper.startPage(pageNo, pageSize);
+ }else{
+ PageHelper.startPage(pageNo, pageSize, orderBy);
+ }
+ var list = dictTypeMapper.getList(params);
+ return new PageInfo<>(list);
+ }
+
@Override
public List getTypeByGroupCode(String groupCode) {
return dictTypeMapper.getByGroupCode(groupCode);
diff --git a/web/src/main/java/com/simon/service/impl/NewsTagServiceImpl.java b/web/src/main/java/com/simon/service/impl/NewsTagServiceImpl.java
index 24d732d47e233433903cfb3ae86543136e6c2558..386f93c2550279bcf238f26e7344228ef1a26a02 100644
--- a/web/src/main/java/com/simon/service/impl/NewsTagServiceImpl.java
+++ b/web/src/main/java/com/simon/service/impl/NewsTagServiceImpl.java
@@ -8,6 +8,7 @@ import com.simon.mapper.NewsTagMapper;
import com.simon.model.NewsTag;
import com.simon.repository.NewsTagRepository;
import com.simon.service.NewsTagService;
+import lombok.var;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
@@ -16,6 +17,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
+import java.util.Map;
/**
* @author SimonSun
@@ -109,4 +111,19 @@ public class NewsTagServiceImpl implements NewsTagService {
public int updateByPrimaryKeySelective(NewsTag newsTag) {
return newsTagMapper.updateByPrimaryKeySelective(newsTag);
}
+
+ @Override
+ public PageInfo getList(Map params, Integer pageNo, Integer pageSize, String orderBy) {
+ if (null == pageSize){
+ pageSize = AppConfig.DEFAULT_PAGE_SIZE;
+ }
+ orderBy = orderBy.trim();
+ if (StringUtils.isEmpty(orderBy)){
+ PageHelper.startPage(pageNo, pageSize);
+ }else{
+ PageHelper.startPage(pageNo, pageSize, orderBy);
+ }
+ var list = newsTagMapper.getList(params);
+ return new PageInfo<>(list);
+ }
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/service/impl/NoticeMsgServiceImpl.java b/web/src/main/java/com/simon/service/impl/NoticeMsgServiceImpl.java
index 3a920de869c09fe7042939762bfee1d6c9d3f359..b7a83823dd581a35b5a89f9c26ba69a7cf0ea11a 100644
--- a/web/src/main/java/com/simon/service/impl/NoticeMsgServiceImpl.java
+++ b/web/src/main/java/com/simon/service/impl/NoticeMsgServiceImpl.java
@@ -8,6 +8,7 @@ import com.simon.repository.NoticeMsgRepository;
import com.simon.common.config.AppConfig;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
+import lombok.var;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
@@ -17,6 +18,7 @@ import org.apache.commons.lang3.StringUtils;
import javax.annotation.Resource;
import java.util.List;
+import java.util.Map;
/**
* @author SimonSun
@@ -110,4 +112,19 @@ public class NoticeMsgServiceImpl implements NoticeMsgService {
public int updateByPrimaryKeySelective(NoticeMsg noticeMsg){
return noticeMsgMapper.updateByPrimaryKeySelective(noticeMsg);
}
+
+ @Override
+ public PageInfo getList(Map params, Integer pageNo, Integer pageSize, String orderBy) {
+ if (null == pageSize){
+ pageSize = AppConfig.DEFAULT_PAGE_SIZE;
+ }
+ orderBy = orderBy.trim();
+ if (StringUtils.isEmpty(orderBy)){
+ PageHelper.startPage(pageNo, pageSize);
+ }else{
+ PageHelper.startPage(pageNo, pageSize, orderBy);
+ }
+ var list = noticeMsgMapper.getList(params);
+ return new PageInfo<>(list);
+ }
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/service/impl/OauthUserServiceImpl.java b/web/src/main/java/com/simon/service/impl/OauthUserServiceImpl.java
index 6b0051f26ff3189cb933909133b9c0c4d20ff44a..7e1dc9142fdd92b8838746fca5923184ba4d9b30 100644
--- a/web/src/main/java/com/simon/service/impl/OauthUserServiceImpl.java
+++ b/web/src/main/java/com/simon/service/impl/OauthUserServiceImpl.java
@@ -8,11 +8,11 @@ import com.simon.common.exception.CodeInvalidException;
import com.simon.common.exception.PhoneRegisteredException;
import com.simon.common.exception.UserExistsException;
import com.simon.common.exception.UserNotValidException;
-import com.simon.common.utils.AccountValidatorUtil;
+import com.simon.common.utils.ValidUtil;
import com.simon.common.utils.BeanUtils;
-import com.simon.common.utils.RandomUtil;
import com.simon.common.utils.UsernameUtil;
import com.simon.dto.StatisticDto;
+import com.simon.mapper.AuthorityMapper;
import com.simon.mapper.OauthUserMapper;
import com.simon.model.Authority;
import com.simon.model.OauthUser;
@@ -22,7 +22,6 @@ import com.simon.repository.VeriCodeRepository;
import com.simon.service.OauthUserService;
import lombok.extern.slf4j.Slf4j;
import lombok.var;
-import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
@@ -34,6 +33,7 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -59,6 +59,9 @@ public class OauthUserServiceImpl implements OauthUserService {
@Autowired
private AuthorityRepository authorityRepository;
+ @Autowired
+ private AuthorityMapper authorityMapper;
+
@Autowired
private CacheManager cacheManager;
@@ -137,7 +140,27 @@ public class OauthUserServiceImpl implements OauthUserService {
@Override
public OauthUser save(OauthUser oauthUser) {
- return oauthUserRepository.save(oauthUser);
+ oauthUser.setPassword(passwordEncoder.encode(oauthUser.getPassword()));
+ oauthUserMapper.insertSelective(oauthUser);
+
+ if(StringUtils.isEmpty(oauthUser.getAuthorities())){
+ Authority authority = new Authority();
+ authority.setUserId(oauthUser.getId());
+ authority.setAuthority(AppConfig.ROLE_USER);
+ authorityMapper.insertSelective(authority);
+ }else{
+ String[] authorities = oauthUser.getAuthorities().split(",");
+ List authorityList = new ArrayList<>();
+ for(int i = 0; i < authorities.length; i++){
+ Authority authority = new Authority();
+ authority.setUserId(oauthUser.getId());
+ authority.setAuthority(authorities[i]);
+ authorityList.add(authority);
+ }
+ authorityMapper.insertList(authorityList);
+ }
+
+ return oauthUser;
}
@Override
@@ -201,13 +224,32 @@ public class OauthUserServiceImpl implements OauthUserService {
}
@Override
- public int insert(OauthUser model) {
- return oauthUserMapper.insert(model);
+ public int insert(OauthUser oauthUser) {
+ return insertSelective(oauthUser);
}
@Override
- public int insertSelective(OauthUser model) {
- return oauthUserMapper.insertSelective(model);
+ public int insertSelective(OauthUser oauthUser) {
+ oauthUser.setPassword(passwordEncoder.encode(oauthUser.getPassword()));
+ int result = oauthUserMapper.insertSelective(oauthUser);
+
+ if(StringUtils.isEmpty(oauthUser.getAuthorities())){
+ Authority authority = new Authority();
+ authority.setUserId(oauthUser.getId());
+ authority.setAuthority(AppConfig.ROLE_USER);
+ authorityMapper.insertSelective(authority);
+ }else{
+ String[] authorities = oauthUser.getAuthorities().split(",");
+ List authorityList = new ArrayList<>();
+ for(int i = 0; i < authorities.length; i++){
+ Authority authority = new Authority();
+ authority.setUserId(oauthUser.getId());
+ authority.setAuthority(authorities[i]);
+ authorityList.add(authority);
+ }
+ authorityMapper.insertList(authorityList);
+ }
+ return result;
}
//@CachePut(key="#model.username", cacheNames = {"oauthUserCache"})
@@ -313,10 +355,10 @@ public class OauthUserServiceImpl implements OauthUserService {
@Override
public OauthUser registerByAccountAndPwd(String account, String password) {
- if(AccountValidatorUtil.isMobile(account)){
+ if(ValidUtil.isMobile(account)){
//account是手机号
- }else if(AccountValidatorUtil.isEmail(account)){
+ }else if(ValidUtil.isEmail(account)){
//account是邮箱
}else{
diff --git a/web/src/main/java/com/simon/service/impl/QuartzJobServiceImpl.java b/web/src/main/java/com/simon/service/impl/QuartzJobServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..3b377e42cb725a55f1397e9e43a60048851fde5c
--- /dev/null
+++ b/web/src/main/java/com/simon/service/impl/QuartzJobServiceImpl.java
@@ -0,0 +1,145 @@
+
+package com.simon.service.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.simon.common.config.AppConfig;
+import com.simon.common.plugins.quartz.QuartzManage;
+import com.simon.mapper.QuartzJobMapper;
+import com.simon.model.QuartzJob;
+import com.simon.repository.QuartzJobRepository;
+import com.simon.service.QuartzJobService;
+import lombok.extern.slf4j.Slf4j;
+import lombok.var;
+import org.apache.commons.lang3.StringUtils;
+import org.quartz.SchedulerException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* @author SimonSun
+* @date 2018-12-21
+**/
+@Slf4j
+@Service
+@Transactional(rollbackFor = {Exception.class})
+public class QuartzJobServiceImpl implements QuartzJobService {
+ @Autowired
+ private QuartzJobMapper quartzJobMapper;
+
+ @Autowired
+ private QuartzJobRepository quartzJobRepository;
+
+ @Autowired
+ private QuartzManage quartzManage;
+
+ @Override
+ public long count() {
+ return quartzJobRepository.count();
+ }
+
+ @Override
+ public QuartzJob save(QuartzJob quartzJob){
+ return quartzJobRepository.save(quartzJob);
+ }
+
+ @Override
+ public List save(List quartzJobList) {
+ return quartzJobRepository.save(quartzJobList);
+ }
+
+ @Override
+ public PageInfo findAll(Integer pageNo, Integer pageSize, String orderBy){
+ if (null == pageSize){
+ pageSize = AppConfig.DEFAULT_PAGE_SIZE;
+ }
+ orderBy = orderBy.trim();
+ if (StringUtils.isEmpty(orderBy)){
+ PageHelper.startPage(pageNo, pageSize);
+ }else{
+ PageHelper.startPage(pageNo, pageSize, orderBy);
+ }
+ List list = quartzJobMapper.selectAll();
+ return new PageInfo<>(list);
+ }
+
+ @Override
+ public Page findAll(Pageable pageable){
+ return quartzJobRepository.findAll(pageable);
+ }
+
+ @Override
+ public List findAll(){
+ return quartzJobRepository.findAll();
+ }
+
+ @Override
+ public void delete(Long id){
+ quartzJobRepository.delete(id);
+ }
+
+ @Override
+ public int deleteByIds(String ids){
+ return quartzJobMapper.deleteByIds(ids);
+ }
+
+ @Override
+ public QuartzJob findById(Long id){
+ return quartzJobRepository.findOne(id);
+ }
+
+ @Override
+ public int insertList(List list){
+ return quartzJobMapper.insertList(list);
+ }
+
+ @Override
+ public int insert(QuartzJob quartzJob){
+ return quartzJobMapper.insert(quartzJob);
+ }
+
+ @Override
+ public int insertSelective(QuartzJob quartzJob){
+ return quartzJobMapper.insertSelective(quartzJob);
+ }
+
+ @Override
+ public int updateByPrimaryKey(QuartzJob quartzJob){
+ return quartzJobMapper.updateByPrimaryKey(quartzJob);
+ }
+
+ @Override
+ public int updateByPrimaryKeySelective(QuartzJob quartzJob){
+ return quartzJobMapper.updateByPrimaryKeySelective(quartzJob);
+ }
+
+ @Override
+ public PageInfo getList(Map params, Integer pageNo, Integer pageSize, String orderBy) {
+ if (null == pageSize){
+ pageSize = AppConfig.DEFAULT_PAGE_SIZE;
+ }
+ orderBy = orderBy.trim();
+ if (StringUtils.isEmpty(orderBy)){
+ PageHelper.startPage(pageNo, pageSize);
+ }else{
+ PageHelper.startPage(pageNo, pageSize, orderBy);
+ }
+ var list = quartzJobMapper.getList(params);
+ return new PageInfo<>(list);
+ }
+
+ @Override
+ public void runJobsOnStart() throws ClassNotFoundException, InstantiationException, SchedulerException, IllegalAccessException {
+ List quartzJobs = quartzJobMapper.selectAll();
+ for(QuartzJob quartzJob : quartzJobs){
+ quartzManage.addJob(quartzJob);
+ }
+ quartzJobMapper.updateJobStatus(1);
+ }
+}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/service/impl/ResetPwdInfoServiceImpl.java b/web/src/main/java/com/simon/service/impl/ResetPwdInfoServiceImpl.java
index 8f65023838b0f381ac4c5b66d845c9c579032608..32d27bc78ecaf8542827a20569495bd78354ca99 100644
--- a/web/src/main/java/com/simon/service/impl/ResetPwdInfoServiceImpl.java
+++ b/web/src/main/java/com/simon/service/impl/ResetPwdInfoServiceImpl.java
@@ -8,6 +8,7 @@ import com.simon.mapper.ResetPwdInfoMapper;
import com.simon.model.ResetPwdInfo;
import com.simon.repository.ResetPwdInfoRepository;
import com.simon.service.ResetPwdInfoService;
+import lombok.var;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
@@ -16,6 +17,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
+import java.util.Map;
/**
* @author SimonSun
@@ -109,4 +111,19 @@ public class ResetPwdInfoServiceImpl implements ResetPwdInfoService {
public int updateByPrimaryKeySelective(ResetPwdInfo resetPwdInfo) {
return resetPwdInfoMapper.updateByPrimaryKeySelective(resetPwdInfo);
}
+
+ @Override
+ public PageInfo getList(Map params, Integer pageNo, Integer pageSize, String orderBy) {
+ if (null == pageSize){
+ pageSize = AppConfig.DEFAULT_PAGE_SIZE;
+ }
+ orderBy = orderBy.trim();
+ if (StringUtils.isEmpty(orderBy)){
+ PageHelper.startPage(pageNo, pageSize);
+ }else{
+ PageHelper.startPage(pageNo, pageSize, orderBy);
+ }
+ var list = resetPwdInfoMapper.getList(params);
+ return new PageInfo<>(list);
+ }
}
\ No newline at end of file
diff --git a/web/src/main/java/com/simon/service/impl/SmsServiceImpl.java b/web/src/main/java/com/simon/service/impl/SmsServiceImpl.java
index 0e85755a1175357779dbdc0dbe0efa6bbd075bf0..ff0f38eace6258ce7a0a4cf03d518ad7c5bdf8f3 100644
--- a/web/src/main/java/com/simon/service/impl/SmsServiceImpl.java
+++ b/web/src/main/java/com/simon/service/impl/SmsServiceImpl.java
@@ -2,6 +2,7 @@ package com.simon.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import com.simon.common.config.AppConfig;
import com.simon.common.utils.SmsUtil;
import com.simon.service.SmsService;
import lombok.extern.slf4j.Slf4j;
@@ -33,8 +34,8 @@ public class SmsServiceImpl implements SmsService {
@Value("${sms.password}")
private String password;
- @Value("${sms.identity-code-msg-template}")
- private String identityCodeMsgTemplate;
+ //@Value("${sms.identity-code-msg-template}")
+ private String identityCodeMsgTemplate = AppConfig.SMS_TEMPLATE;
@Autowired
private org.springframework.cache.CacheManager cacheManager;
@@ -85,6 +86,9 @@ public class SmsServiceImpl implements SmsService {
}
}
+ //删除缓存
+ cache.evict(mobile);
+
return result;
}
}
diff --git a/web/src/main/java/com/simon/service/impl/VeriCodeServiceImpl.java b/web/src/main/java/com/simon/service/impl/VeriCodeServiceImpl.java
index 41e71c727bd977d00c7700e150ab820e54184e7d..16a87d3b4df7dd402d6661ed1335c3665c957bc2 100644
--- a/web/src/main/java/com/simon/service/impl/VeriCodeServiceImpl.java
+++ b/web/src/main/java/com/simon/service/impl/VeriCodeServiceImpl.java
@@ -8,6 +8,7 @@ import com.simon.model.VeriCode;
import com.simon.repository.VeriCodeRepository;
import com.simon.service.VeriCodeService;
import lombok.extern.slf4j.Slf4j;
+import lombok.var;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
@@ -15,6 +16,7 @@ import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.List;
+import java.util.Map;
/**
* 验证码
@@ -112,6 +114,21 @@ public class VeriCodeServiceImpl implements VeriCodeService {
return veriCodeMapper.updateByPrimaryKeySelective(veriCode);
}
+ @Override
+ public PageInfo getList(Map params, Integer pageNo, Integer pageSize, String orderBy) {
+ if (null == pageSize){
+ pageSize = AppConfig.DEFAULT_PAGE_SIZE;
+ }
+ orderBy = orderBy.trim();
+ if (StringUtils.isEmpty(orderBy)){
+ PageHelper.startPage(pageNo, pageSize);
+ }else{
+ PageHelper.startPage(pageNo, pageSize, orderBy);
+ }
+ var list = veriCodeMapper.getList(params);
+ return new PageInfo<>(list);
+ }
+
@Override
public VeriCode findByPhone(String phone) {
return veriCodeRepository.findByPhone(phone);
diff --git a/web/src/main/java/com/simon/task/SampleTask.java b/web/src/main/java/com/simon/task/SampleTask.java
new file mode 100644
index 0000000000000000000000000000000000000000..5f6015710c830ee0c44d39ca62d11ea824c1abf3
--- /dev/null
+++ b/web/src/main/java/com/simon/task/SampleTask.java
@@ -0,0 +1,23 @@
+package com.simon.task;
+
+import com.simon.common.utils.DateUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+import java.util.Date;
+
+/**
+ * 任务示例
+ *
+ * @author simon
+ * @date 2018-12-21
+ **/
+@Slf4j
+public class SampleTask implements Job {
+ @Override
+ public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+ log.info(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
+ }
+}
diff --git a/web/src/main/resources/ehcache.xml b/web/src/main/resources/ehcache.xml
index cad5d1a1abf76d8b52ffa1b2030844a2e30d659a..7b97cd4d955e36c09dbd6b1147240766e19cdf58 100644
--- a/web/src/main/resources/ehcache.xml
+++ b/web/src/main/resources/ehcache.xml
@@ -2,6 +2,24 @@
+
+
+
+
@@ -23,10 +41,12 @@
overflowToDisk="true"
memoryStoreEvictionPolicy="LRU" />
-
+
diff --git a/web/src/main/resources/mapping/QuartzJobMapper.xml b/web/src/main/resources/mapping/QuartzJobMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4b92400d1b48f400be4873442fd4a8a91212390c
--- /dev/null
+++ b/web/src/main/resources/mapping/QuartzJobMapper.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update t_s_quartz_job set job_status=#{jobStatus}
+
+
\ No newline at end of file
diff --git a/web/src/main/resources/static/css/easyui/common.css b/web/src/main/resources/static/css/easyui/common.css
index ed47db891a47b17cd654d5639613a162ad4eafaf..0df2d83cb29361281c4792369323b5c1fb5b1412 100644
--- a/web/src/main/resources/static/css/easyui/common.css
+++ b/web/src/main/resources/static/css/easyui/common.css
@@ -15,4 +15,8 @@ form>div{
*/
.button-group i.fa{
font-size:12px;
+}
+
+.c-primary,.c-secondary,.c-success,.c-info,.c-warning,.c-danger,.c-dark,.c-light,.c-basic{
+
}
\ No newline at end of file
diff --git a/web/src/main/resources/static/css/login/coverr.css b/web/src/main/resources/static/css/login/coverr.css
new file mode 100644
index 0000000000000000000000000000000000000000..c4643ad8e39a6e636bcc630c19c495e5d3fc4cf9
--- /dev/null
+++ b/web/src/main/resources/static/css/login/coverr.css
@@ -0,0 +1,51 @@
+/**
+*
+* User: simon
+* Date: 2018/06/09
+* Time: 3:14
+**/
+/**
+*
+* User: simon
+* Date: 2018/06/09
+* Time: 3:14
+**/
+.homepage-hero-module {
+ border-right: none;
+ border-left: none;
+ position: relative;
+}
+.no-video .video-container video,
+.touch .video-container video {
+ display: none;
+}
+.no-video .video-container .poster,
+.touch .video-container .poster {
+ display: block !important;
+}
+.video-container {
+ position: relative;
+ bottom: 0%;
+ left: 0%;
+ height: 100%;
+ width: 100%;
+ overflow: hidden;
+}
+.video-container .poster img {
+ width: 100%;
+ bottom: 0;
+ position: absolute;
+}
+.video-container .filter {
+ z-index: 100;
+ position: absolute;
+ width: 100%;
+}
+.video-container video {
+ position: absolute;
+ z-index: 0;
+ bottom: 0;
+}
+.video-container video.fillWidth {
+ width: 100%;
+}
\ No newline at end of file
diff --git a/web/src/main/resources/static/css/login/login.css b/web/src/main/resources/static/css/login/login.css
new file mode 100644
index 0000000000000000000000000000000000000000..aa0e69525820c2f842ab81f6995a443c36e03f51
--- /dev/null
+++ b/web/src/main/resources/static/css/login/login.css
@@ -0,0 +1,59 @@
+/**
+*
+* User: simon
+* Date: 2018/12/26
+* Time: 12:30
+**/
+body {
+ width: 100%;
+ height:100%;
+ overflow:scroll;
+ overflow-x:hidden;
+ overflow-y:hidden;
+}
+
+#code,#codeimg{
+ width:100%;
+ font-size:16px;
+ font-style:italic;
+ color:green;
+ border:0;
+ letter-spacing:3px;
+ font-weight:bolder;
+}
+
+#qrcode {
+ width:200px;
+ height:200px;
+ text-align:center;
+ margin:0 auto;
+}
+
+#refreshQrCode{
+ visibility: hidden;
+ text-align:center;
+}
+
+#jumpHint{
+ display: none;
+ margin:0 auto 6px auto;//上右下左
+}
+
+.hint{
+ color:white;
+ text-align:center;
+ margin: 0 auto;
+ border:1px solid #a1a1a1;
+ padding:6px 6px;
+ width:200px;
+ border-radius:25px;
+ -moz-border-radius:25px; /* 老的 Firefox */
+}
+
+.success{
+ background-color: mediumseagreen;
+}
+
+.warn{
+ background-color: red;
+}
\ No newline at end of file
diff --git a/web/src/main/resources/static/img/Concrete_Jungle.jpg b/web/src/main/resources/static/img/Concrete_Jungle.jpg
deleted file mode 100644
index dfce8a1e9274c6acbcec87d03aebe043180fa32f..0000000000000000000000000000000000000000
Binary files a/web/src/main/resources/static/img/Concrete_Jungle.jpg and /dev/null differ
diff --git a/web/src/main/resources/static/img/bg_login.jpg b/web/src/main/resources/static/img/bg_login.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..019c09522e6650607683b8c74f00e26c65cf01f2
Binary files /dev/null and b/web/src/main/resources/static/img/bg_login.jpg differ
diff --git a/web/src/main/resources/static/js/easyui/common.js b/web/src/main/resources/static/js/easyui/common.js
index bd8184d583462b3164cabc488b747e5161499f80..1291fd9df1ac206b1879816907e126cbb815cbfc 100644
--- a/web/src/main/resources/static/js/easyui/common.js
+++ b/web/src/main/resources/static/js/easyui/common.js
@@ -18,8 +18,8 @@ $(function(){
setTokenInHeader();
//只用一种初始化方法来声明easyUI组件以避免重复的提交请求,即删除html中的class声明(class="easyui-datagrid")
- $('#tt').treegrid({
- onBeforeLoad: function (row, param) {
+ $('#tt').datagrid({
+ onBeforeLoad: function (param) {
let pageNo = param.page;
delete param.page;
param.pageNo = pageNo;
@@ -41,6 +41,29 @@ $(function(){
}
});
+ $('#table_tg').treegrid({
+ onBeforeLoad: function (row, param) {
+ let pageNo = param.page;
+ delete param.page;
+ param.pageNo = pageNo;
+ let pageSize = param.rows;
+ delete param.rows;
+ param.pageSize = pageSize;
+ let sort = param.sort;
+ delete param.sort;
+ let order = param.order;
+ delete param.order;
+ let orderBy = ((!sort) ? "" : sort) + " " + ((!order) ? "" : order);
+ orderBy = orderBy.trim();
+ param.orderBy = orderBy;
+ },
+ onLoadSuccess: function (row, data) {
+ //重新渲染
+ $(".easyui-linkbutton").linkbutton();
+ $(".easyui-numberbox").numberbox();
+ }
+ });
+
$('body').on('click', 'img.image-thumb',function (event) {
$('#dlg').html('
');
$('#dlg').dialog('open');
@@ -174,6 +197,37 @@ function formatDate(val, row){
return new Date(parseInt(val)).format('yyyy-MM-dd hh:mm:ss');
}
+function commonRequest(options) {
+ $.ajax({
+ url: options.url,
+ type: options.type,
+ data: JSON.stringify(options.extraData),
+ contentType: "application/json;charset=UTF-8",
+ beforeSend: function(){
+ $.messager.progress({
+ title: '提示信息',
+ msg: '请稍候......'
+ });
+ },
+ complete: function(){
+ $.messager.progress('close');
+ },
+ success:function (data) {
+ console.log(data);
+ if(data.code == 200){
+ $('#tt').datagrid('reload');
+ $('#table_tg').treegrid('reload');
+ $.messager.show({
+ title:'提示信息',
+ msg:'操作成功!',
+ timeout:3000,
+ showType:'slide'
+ });
+ }
+ }
+ });
+}
+
function doRequest(options) {
if($(options.formId).form('validate')){
let requestData = $(options.formId).serializeArray();
@@ -213,7 +267,8 @@ function doRequest(options) {
$('#addModal').window('close');
$('#editModal').window('close');
- $('#tt').treegrid('reload');
+ $('#tt').datagrid('reload');
+ $('#table_tg').treegrid('reload');
$.messager.show({
title:'提示信息',
msg:'操作成功!',
@@ -250,7 +305,8 @@ function emptyRequest(url) {
if(data.code == 200){
$('#addModal').window('close');
$('#editModal').window('close');
- $('#tt').treegrid('reload');
+ $('#tt').datagrid('reload');
+ $('#table_tg').treegrid('reload');
$.messager.show({
title:'提示信息',
msg:'操作成功!',
@@ -295,6 +351,7 @@ function deleteRequest(urlPrefix){
$('#addModal').window('close');
$('#editModal').window('close');
$('#tt').treegrid('reload');
+ $('#table_tg').treegrid('reload');
$.messager.show({
title:'提示信息',
msg:'操作成功!',
@@ -342,6 +399,7 @@ function deleteRequestByUserId(urlPrefix){
$('#addModal').window('close');
$('#editModal').window('close');
$('#tt').treegrid('reload');
+ $('#table_tg').treegrid('reload');
$.messager.show({
title:'提示信息',
msg:'操作成功!',
@@ -464,7 +522,7 @@ $.extend($.fn.validatebox.defaults.rules, {
//select即选择框的验证
selectValid:{
validator:function(value,param){
- console.log('selectValid' + value + '-' + param[0]);
+ //console.log('selectValid' + value + '-' + param[0]);
if(value == param[0]){
return false;
}else{
diff --git a/web/src/main/resources/static/js/login/coverr.js b/web/src/main/resources/static/js/login/coverr.js
new file mode 100644
index 0000000000000000000000000000000000000000..4536ca007199b9104a7ad6eb41dd1e37a54c0b49
--- /dev/null
+++ b/web/src/main/resources/static/js/login/coverr.js
@@ -0,0 +1,63 @@
+//jQuery is required to run this code
+$( document ).ready(function() {
+
+ scaleVideoContainer();
+
+ initBannerVideoSize('.video-container .poster img');
+ initBannerVideoSize('.video-container .filter');
+ initBannerVideoSize('.video-container video');
+
+ $(window).on('resize', function() {
+ scaleVideoContainer();
+ scaleBannerVideoSize('.video-container .poster img');
+ scaleBannerVideoSize('.video-container .filter');
+ scaleBannerVideoSize('.video-container video');
+ });
+
+});
+
+function scaleVideoContainer() {
+
+ var height = $(window).height() + 5;
+ var unitHeight = parseInt(height) + 'px';
+ $('.homepage-hero-module').css('height',unitHeight);
+
+}
+
+function initBannerVideoSize(element){
+
+ $(element).each(function(){
+ $(this).data('height', $(this).height());
+ $(this).data('width', $(this).width());
+ });
+
+ scaleBannerVideoSize(element);
+
+}
+
+function scaleBannerVideoSize(element){
+
+ var windowWidth = $(window).width(),
+ windowHeight = $(window).height() + 5,
+ videoWidth,
+ videoHeight;
+
+ // console.log(windowHeight);
+
+ $(element).each(function(){
+ var videoAspectRatio = $(this).data('height')/$(this).data('width');
+
+ $(this).width(windowWidth);
+
+ if(windowWidth < 1000){
+ videoHeight = windowHeight;
+ videoWidth = videoHeight / videoAspectRatio;
+ $(this).css({'margin-top' : 0, 'margin-left' : -(videoWidth - windowWidth) / 2 + 'px'});
+
+ $(this).width(videoWidth).height(videoHeight);
+ }
+
+ $('.homepage-hero-module .video-container video').addClass('fadeIn animated');
+
+ });
+}
\ No newline at end of file
diff --git a/web/src/main/resources/static/js/login/login-form.js b/web/src/main/resources/static/js/login/login-form.js
new file mode 100644
index 0000000000000000000000000000000000000000..2a0b42bfae9235cdba4ab3c6062cf54b7caa71d3
--- /dev/null
+++ b/web/src/main/resources/static/js/login/login-form.js
@@ -0,0 +1,36 @@
+//账号密码登录
+$().ready(function() {
+ //createCode();
+
+ jQuery.validator.addMethod("password", function (value, element, param) {
+ var rex = /^(?![A-Z]+$)(?![a-z]+$)(?!\d+$)(?![\W_]+$)\S{6,16}$/;
+ return this.optional(element) || (rex.test(value));
+ }, "必须包含数字、字母或特殊字符");
+
+ jQuery.validator.addMethod("vericode", function (value, element, param) {
+ return validate(value);
+ }, "验证码错误");
+
+ $("#loginForm").validate({
+ rules:{
+ username: {
+ required: true,
+ minlength: 1
+ },
+ password: {
+ required: true,
+ rangelength: [6,20],
+ password: true
+ },
+ input_vericode: {
+ required: true,
+ minlength: 4,
+ vericode: true
+ }
+ },
+ errorPlacement: function(error, element) {
+ error.appendTo(element.parent());
+ },
+ errorElement: "span"
+ });
+});
\ No newline at end of file
diff --git a/web/src/main/resources/static/js/login/login-qrcode.js b/web/src/main/resources/static/js/login/login-qrcode.js
new file mode 100644
index 0000000000000000000000000000000000000000..38dae7ef53b67c97d89998a75cd007e1cc548a9d
--- /dev/null
+++ b/web/src/main/resources/static/js/login/login-qrcode.js
@@ -0,0 +1,76 @@
+//扫码登录
+
+var qrCode = new QRCode(document.getElementById("qrcode"), {
+ width : 200,
+ height : 200
+});
+
+var loopVar;
+
+function initQrCode(){
+ console.log("initQrCode");
+
+ setTokenInHeader();
+
+ var qrCodeData = $.cookie('qrCodeData');
+ //console.log(qrCodeData);
+ if(!qrCodeData || "null" == qrCodeData){
+ refreshQrCode();
+ }else{
+ qrCode.makeCode(qrCodeData);
+ loop();
+ }
+}
+
+function refreshQrCode() {
+ $.getJSON("users/uuid", function (data) {
+ //存cookie
+ var expiresDate= new Date();
+ expiresDate.setTime(expiresDate.getTime() + (2 * 60 * 1000));//2分钟过期
+ $.cookie('qrCodeData', JSON.stringify(data),{
+ expires: expiresDate
+ });
+
+ qrCode.makeCode(JSON.stringify(data));
+ loop();
+ });
+}
+
+//循环检查是否被扫码
+function loop() {
+ clearInterval(loopVar);//先清除上次的定时任务(防止用户反复在账号登录和二维码登录的图片间切换造成的多次循环检查问题。)
+ loopVar = setInterval(function () {
+ //获取qrCodeData
+ var qrCodeData = $.cookie('qrCodeData');
+ //检查qrCodeData是否失效
+ if(!qrCodeData){
+ console.log("二维码已失效");
+ clearInterval(loop);
+ $("#refreshQrCode").css("visibility","visible");
+ }else{
+ var cookieQrCode = JSON.parse(qrCodeData);
+ var sid = cookieQrCode.sid;
+
+ $.getJSON("users/loopCheck/" + sid, function(data){
+ //console.log(data);
+ if(data['code'] == 200){
+ clearInterval(loop);
+ $.cookie('qrCodeData', null);//赋值"null"字符串
+ $("#refreshQrCode").css("display", "none");
+ $("#jumpHint").css("display", "block");
+ setTimeout(function(){
+ window.location.href = "/index";
+ },2000);
+ }else if(data['code'] == 500){
+ clearInterval(loopVar);
+ //console.log(data['message']);
+ }
+ });
+ }
+ }, 1000);
+}
+
+$("#refreshQrCode > a").click(function () {
+ $("#refreshQrCode").css("visibility","hidden");
+ initQrCode();
+});
\ No newline at end of file
diff --git a/web/src/main/resources/static/js/login/login.js b/web/src/main/resources/static/js/login/login.js
new file mode 100644
index 0000000000000000000000000000000000000000..a7a964da6eca7485383823d0e85c669acbc34672
--- /dev/null
+++ b/web/src/main/resources/static/js/login/login.js
@@ -0,0 +1,27 @@
+$(function(){
+ $(".switchMode").on({
+ click:function(e){
+ if($(this).attr("src").indexOf('qrcode-40x40.png') != -1){
+ //$(this).attr("src", "img/pc-40x40.png");
+ //window.location.href = "login?qrcode=true";
+ var qrcode = $.cookie('qrcode');
+ console.log("qrcode=" + qrcode);
+ if(qrcode == 'false' || !qrcode){
+ console.log("准备执行initQrCode");
+ $.cookie('qrcode', true);
+ initQrCode();
+ }
+ $('#form-qrcode').css('display', 'inline');
+ $('#form-normal').css('display', 'none');
+ }else {
+ //$(this).attr("src", "img/qrcode-40x40.png");
+ //window.location.href = "login";
+ if(qrcode == true || !qrcode){
+ $.cookie('qrcode', false);
+ }
+ $('#form-qrcode').css('display', 'none');
+ $('#form-normal').css('display', 'inline');
+ }
+ }
+ });
+});
\ No newline at end of file
diff --git a/web/src/main/resources/static/js/login/vcode.js b/web/src/main/resources/static/js/login/vcode.js
new file mode 100644
index 0000000000000000000000000000000000000000..c2611c7ad552ec1105fa566cbff96946dbd71007
--- /dev/null
+++ b/web/src/main/resources/static/js/login/vcode.js
@@ -0,0 +1,81 @@
+var code = "";
+$().ready(function() {
+ //将函数返回值赋给code
+ code = createCode();
+
+ //点击canvas图片更换验证码
+ $("#codeimg").click(function () {
+ code = createCode();
+ });
+
+ /*随机字符函数*/
+ function rand(){
+ //去掉i,I,l,o,O等易混淆字母
+ var str="abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789";
+ //将字符串分隔为数组
+ var arr=str.split("");
+ //随机字符在[0,56]之间
+ var ranNum=Math.floor(Math.random()*57);
+ var captcha=arr[ranNum];
+ return captcha;
+ }
+
+ /*随机干扰线条函数*/
+ function drawline(canvas, context) {
+ //若省略beginPath,则每点击一次验证码会累积干扰线的条数
+ context.beginPath();
+ //起点与终点在canvas宽高内随机
+ context.moveTo(Math.floor(Math.random() * canvas.width), Math.floor(Math.random() * canvas.height));
+ context.lineTo(Math.floor(Math.random() * canvas.width), Math.floor(Math.random() * canvas.height));
+ context.lineWidth = 1;
+ context.strokeStyle = '#275DB3';
+ context.stroke();
+ }
+
+ /*生成验证码*/
+ function createCode(){
+ //每次生成code先将其清空防止叠加
+ code = "";
+ var canvas = document.getElementById("codeimg");
+ if(!canvas){
+ return null;
+ }
+ var context = canvas.getContext("2d");
+
+ //清空画布
+ context.clearRect(0, 0, canvas.width, canvas.height);
+
+ context.strokeStyle = "#FFF";
+ context.strokeRect(0, 0, canvas.width, canvas.height);
+
+ //生成干扰线,数量随意
+ for (var i = 0; i < 10; i++) {
+ drawline(canvas, context);
+ }
+
+ //循环生成4位验证码
+ for (var k = 0; k < 4; k++) {
+ context.font='76px Arial';
+ //将初始状态保存
+ context.save();
+ //获得-1到1的随机数
+ var rA = 1-Math.random()*2;
+ //获取随机倾斜角
+ var angle = rA / 8 ;
+ var ranNum = rand();
+ //旋转生成的随机字符
+ context.rotate(angle);
+ //把rand()生成的随机数文本依次填充到canvas中,注意x坐标
+ context.fillText(ranNum,20+45*k,100);
+ //恢复初始状态,以便下一次循环
+ context.restore();
+ code += ranNum;
+ }
+ //返回生成的验证码字符串
+ return code;
+ }
+});
+
+function validate(value) {
+ return value.toUpperCase() === code.toUpperCase();
+}
\ No newline at end of file
diff --git a/web/src/main/resources/static/video/Concrete_Jungle.mp4 b/web/src/main/resources/static/video/Concrete_Jungle.mp4
deleted file mode 100644
index 704334d716d28227d3817a0f0b11df25d392bb23..0000000000000000000000000000000000000000
Binary files a/web/src/main/resources/static/video/Concrete_Jungle.mp4 and /dev/null differ
diff --git a/web/src/main/resources/static/video/Concrete_Jungle.webm b/web/src/main/resources/static/video/Concrete_Jungle.webm
deleted file mode 100644
index df7af39f330b0f10748f1550637983726e5ba56e..0000000000000000000000000000000000000000
Binary files a/web/src/main/resources/static/video/Concrete_Jungle.webm and /dev/null differ
diff --git a/web/src/main/resources/templates/code/controllerWithPage.ftl b/web/src/main/resources/templates/code/controllerWithPage.ftl
index dee9ce810c21bd77855f33cce851bd70b33d3eae..f116c3354b6a8cc7d128cea1c27b0c1a03085b23 100644
--- a/web/src/main/resources/templates/code/controllerWithPage.ftl
+++ b/web/src/main/resources/templates/code/controllerWithPage.ftl
@@ -71,7 +71,7 @@ public class ${entityName}Controller extends BaseController{
@PostMapping
@ResponseBody
public ResultMsg add(@RequestBody ${entityName} body){
- ${entityName?uncap_first}Service.save(body);
+ ${entityName?uncap_first}Service.insertSelective(body);
return ResultMsg.success();
}
diff --git a/web/src/main/resources/templates/code/list.ftl b/web/src/main/resources/templates/code/list.ftl
index d5053d9d217a70a2ca62edd726660935e7f0f5d6..c60ba0af5e605d1767d6846b5de218902c8771c7 100644
--- a/web/src/main/resources/templates/code/list.ftl
+++ b/web/src/main/resources/templates/code/list.ftl
@@ -18,15 +18,13 @@
#switch>
#if>
#list>
-
-
+
+
-
@@ -105,7 +103,7 @@
});
function doSearch() {
- $('#tt').treegrid('load', {
+ $('#tt').datagrid('load', {
<#list columns as column>
<#if column.allowSearch>
<#switch column.easyuiType>
diff --git a/web/src/main/resources/templates/code/mapper.ftl b/web/src/main/resources/templates/code/mapper.ftl
index 3c345d3555c625fa506e46e00c653350f1cc1dad..39b615d9cfd799bb61b5e07b31e619af4a9a8262 100644
--- a/web/src/main/resources/templates/code/mapper.ftl
+++ b/web/src/main/resources/templates/code/mapper.ftl
@@ -1,15 +1,22 @@
package ${basePackage}.mapper;
import ${basePackage}.common.mapper.MyMapper;
-import ${basePackage}.model.DictTypeGroup;
+import ${basePackage}.model.${modelNameUpperCamel};
+import org.apache.ibatis.annotations.Param;
import java.util.List;
+import java.util.Map;
/**
* ${modelNameUpperCamel}
* @author ${AUTHOR}
* @date ${CREATE}
**/
-public interface DictTypeGroupMapper extends MyMapper<${modelNameUpperCamel}> {
-
+public interface ${modelNameUpperCamel}Mapper extends MyMapper<${modelNameUpperCamel}> {
+ /**
+ * 使用Map查询
+ * @param map map查询条件
+ * @return 查询结果
+ */
+ List<${modelNameUpperCamel}> getList(@Param("map") Map map);
}
\ No newline at end of file
diff --git a/web/src/main/resources/templates/code/service-impl.ftl b/web/src/main/resources/templates/code/service-impl.ftl
index 3659930066fd49cae7ae46f45ef1fef8b0610ada..8452993b64fb098d7835b1b18d3262ecfbd01f06 100644
--- a/web/src/main/resources/templates/code/service-impl.ftl
+++ b/web/src/main/resources/templates/code/service-impl.ftl
@@ -19,6 +19,7 @@ import org.apache.commons.lang3.StringUtils;
import javax.annotation.Resource;
import java.util.List;
+import java.util.Map;
/**
* @author ${AUTHOR}
@@ -113,4 +114,19 @@ public class ${modelNameUpperCamel}ServiceImpl implements ${modelNameUpperCamel}
public int updateByPrimaryKeySelective(${modelNameUpperCamel} ${modelNameLowerCamel}){
return ${modelNameLowerCamel}Mapper.updateByPrimaryKeySelective(${modelNameLowerCamel});
}
+
+ @Override
+ public PageInfo<${modelNameUpperCamel}> getList(Map params, Integer pageNo, Integer pageSize, String orderBy) {
+ if (null == pageSize){
+ pageSize = AppConfig.DEFAULT_PAGE_SIZE;
+ }
+ orderBy = orderBy.trim();
+ if (StringUtils.isEmpty(orderBy)){
+ PageHelper.startPage(pageNo, pageSize);
+ }else{
+ PageHelper.startPage(pageNo, pageSize, orderBy);
+ }
+ List<${modelNameUpperCamel}> list = ${modelNameLowerCamel}Mapper.getList(params);
+ return new PageInfo<>(list);
+ }
}
\ No newline at end of file
diff --git a/web/src/main/resources/templates/components/easyui/easyui-list.html b/web/src/main/resources/templates/components/easyui/easyui-list.html
index 20a1350dc1cb2f4c394007bf59e58bdbcdfc4dfc..ea4cf2e0c04f1ea6ce2b20510367c1cdf3260e9e 100644
--- a/web/src/main/resources/templates/components/easyui/easyui-list.html
+++ b/web/src/main/resources/templates/components/easyui/easyui-list.html
@@ -9,8 +9,10 @@
-
-
+
+
+
+
@@ -35,10 +37,9 @@
-
-
-
-
+
+
+
diff --git a/web/src/main/resources/templates/components/easyui/easyui-module.html b/web/src/main/resources/templates/components/easyui/easyui-module.html
new file mode 100644
index 0000000000000000000000000000000000000000..d851f6da3f6494f44f84672738e2ac97d6eecfaf
--- /dev/null
+++ b/web/src/main/resources/templates/components/easyui/easyui-module.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
EasyUI Module
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/main/resources/templates/easyui/authority.html b/web/src/main/resources/templates/easyui/authority.html
index b819af890356468d624ee397f735ae6da03af7bd..0e896578fd9417b2abb795ca3794a5d22c61d882 100644
--- a/web/src/main/resources/templates/easyui/authority.html
+++ b/web/src/main/resources/templates/easyui/authority.html
@@ -8,16 +8,13 @@
用户id:
用户名:
权限:
-
-
-
+
+
-
@@ -39,8 +36,8 @@
@@ -54,15 +51,15 @@
+
+