diff --git a/jing-common/jing-common-core/src/main/java/com/jing/common/core/exception/auth/NotRoleException.java b/jing-common/jing-common-core/src/main/java/com/jing/common/core/exception/auth/NotRoleException.java
new file mode 100644
index 0000000..24c3fb4
--- /dev/null
+++ b/jing-common/jing-common-core/src/main/java/com/jing/common/core/exception/auth/NotRoleException.java
@@ -0,0 +1,23 @@
+package com.jing.common.core.exception.auth;
+
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * 未能通过的角色认证异常
+ *
+ * @author ruoyi
+ */
+public class NotRoleException extends RuntimeException
+{
+ private static final long serialVersionUID = 1L;
+
+ public NotRoleException(String role)
+ {
+ super(role);
+ }
+
+ public NotRoleException(String[] roles)
+ {
+ super(StringUtils.join(roles, ","));
+ }
+}
diff --git a/jing-common/jing-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/jing-common/jing-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..c3d8e8c
--- /dev/null
+++ b/jing-common/jing-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.jing.common.core.utils.SpringUtils
diff --git a/jing-common/jing-common-log/src/main/java/com/jing/common/log/enums/OperatorType.java b/jing-common/jing-common-log/src/main/java/com/jing/common/log/enums/OperatorType.java
new file mode 100644
index 0000000..4321db8
--- /dev/null
+++ b/jing-common/jing-common-log/src/main/java/com/jing/common/log/enums/OperatorType.java
@@ -0,0 +1,24 @@
+package com.jing.common.log.enums;
+
+/**
+ * 操作人类别
+ *
+ * @author ruoyi
+ */
+public enum OperatorType
+{
+ /**
+ * 其它
+ */
+ OTHER,
+
+ /**
+ * 后台用户
+ */
+ MANAGE,
+
+ /**
+ * 手机端用户
+ */
+ MOBILE
+}
diff --git a/jing-common/jing-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/jing-common/jing-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..8deec6d
--- /dev/null
+++ b/jing-common/jing-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1,2 @@
+com.jing.common.log.service.AsyncLogService
+com.jing.common.log.aspect.LogAspect
diff --git a/jing-common/jing-common-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/jing-common/jing-common-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..7ba2947
--- /dev/null
+++ b/jing-common/jing-common-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1,2 @@
+com.jing.common.redis.configure.RedisConfig
+com.jing.common.redis.service.RedisService
diff --git a/jing-common/jing-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/jing-common/jing-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..70e3ad6
--- /dev/null
+++ b/jing-common/jing-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1,5 @@
+com.jing.common.security.config.WebMvcConfig
+com.jing.common.security.service.TokenService
+com.jing.common.security.aspect.PreAuthorizeAspect
+com.jing.common.security.aspect.InnerAuthAspect
+com.jing.common.security.handler.GlobalExceptionHandler
diff --git a/jing-ui/src/api/monitor/online.js b/jing-ui/src/api/monitor/online.js
new file mode 100644
index 0000000..d53df58
--- /dev/null
+++ b/jing-ui/src/api/monitor/online.js
@@ -0,0 +1,18 @@
+import request from '@/utils/request'
+
+// 查询在线用户列表
+export function list(query) {
+ return request({
+ url: '/system/online/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 强退用户
+export function forceLogout(tokenId) {
+ return request({
+ url: '/system/online/' + tokenId,
+ method: 'delete'
+ })
+}
diff --git a/jing-ui/src/api/system/operlog.js b/jing-ui/src/api/system/operlog.js
new file mode 100644
index 0000000..51a4cc3
--- /dev/null
+++ b/jing-ui/src/api/system/operlog.js
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 查询操作日志列表
+export function list(query) {
+ return request({
+ url: '/system/operlog/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 删除操作日志
+export function delOperlog(operId) {
+ return request({
+ url: '/system/operlog/' + operId,
+ method: 'delete'
+ })
+}
+
+// 清空操作日志
+export function cleanOperlog() {
+ return request({
+ url: '/system/operlog/clean',
+ method: 'delete'
+ })
+}
diff --git a/jing-ui/src/assets/icons/svg/number.svg b/jing-ui/src/assets/icons/svg/number.svg
new file mode 100644
index 0000000..ad5ce9a
--- /dev/null
+++ b/jing-ui/src/assets/icons/svg/number.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/jing-ui/src/assets/icons/svg/online.svg b/jing-ui/src/assets/icons/svg/online.svg
new file mode 100644
index 0000000..330a202
--- /dev/null
+++ b/jing-ui/src/assets/icons/svg/online.svg
@@ -0,0 +1 @@
+
\ No newline at end of file