lxk1994827 1 سال پیش
والد
کامیت
c34e3c400d
100فایلهای تغییر یافته به همراه6453 افزوده شده و 0 حذف شده
  1. 47 0
      .gitignore
  2. 21 0
      LICENSE
  3. BIN
      WARST.dmp
  4. 12 0
      bin/clean.bat
  5. 12 0
      bin/package.bat
  6. 14 0
      bin/run-auth.bat
  7. 14 0
      bin/run-gateway.bat
  8. 14 0
      bin/run-modules-file.bat
  9. 14 0
      bin/run-modules-gen.bat
  10. 14 0
      bin/run-modules-job.bat
  11. 14 0
      bin/run-modules-system.bat
  12. 14 0
      bin/run-monitor.bat
  13. 41 0
      docker/copy.sh
  14. 67 0
      docker/deploy.sh
  15. 140 0
      docker/docker-compose.yml
  16. 1 0
      docker/mysql/db/readme.txt
  17. 7 0
      docker/mysql/dockerfile
  18. 32 0
      docker/nacos/conf/application.properties
  19. 7 0
      docker/nacos/dockerfile
  20. 36 0
      docker/nginx/conf/nginx.conf
  21. 15 0
      docker/nginx/dockerfile
  22. 1 0
      docker/redis/conf/redis.conf
  23. 13 0
      docker/redis/dockerfile
  24. 15 0
      docker/ruoyi/auth/dockerfile
  25. 1 0
      docker/ruoyi/auth/jar/readme.txt
  26. 15 0
      docker/ruoyi/gateway/dockerfile
  27. 1 0
      docker/ruoyi/gateway/jar/readme.txt
  28. 15 0
      docker/ruoyi/modules/file/dockerfile
  29. 1 0
      docker/ruoyi/modules/file/jar/readme.txt
  30. 15 0
      docker/ruoyi/modules/gen/dockerfile
  31. 1 0
      docker/ruoyi/modules/gen/jar/readme.txt
  32. 15 0
      docker/ruoyi/modules/job/dockerfile
  33. 1 0
      docker/ruoyi/modules/job/jar/readme.txt
  34. 15 0
      docker/ruoyi/modules/system/dockerfile
  35. 1 0
      docker/ruoyi/modules/system/jar/readme.txt
  36. 15 0
      docker/ruoyi/visual/monitor/dockerfile
  37. 1 0
      docker/ruoyi/visual/monitor/jar/readme.txt
  38. BIN
      lib/jakarta.json-api-2.0.1.jar
  39. 3 0
      package-lock.json
  40. 370 0
      pom.xml
  41. 174 0
      sql/quartz.sql
  42. 695 0
      sql/ry_20230223.sql
  43. 219 0
      sql/ry_config_20220929.sql
  44. 80 0
      sql/ry_seata_20210128.sql
  45. 23 0
      warst-api/pom.xml
  46. 39 0
      warst-api/warst-api-manage/pom.xml
  47. 129 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckAddr.java
  48. 90 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckArrange.java
  49. 58 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckArrangeTime.java
  50. 67 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckConfig.java
  51. 71 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckGroup.java
  52. 150 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckNum.java
  53. 114 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckResult.java
  54. 81 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/ExamineApplyInfo.java
  55. 63 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/company/Company.java
  56. 127 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/member/Member.java
  57. 111 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckAddrDTO.java
  58. 102 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckArrangeDTO.java
  59. 26 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckArrangeEditDTO.java
  60. 66 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckConfigDTO.java
  61. 16 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckDTO.java
  62. 70 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckGroupDTO.java
  63. 160 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckNumDTO.java
  64. 48 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/query/CheckArrangeQueryDTO.java
  65. 28 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/query/CheckResultMothQueryDTO.java
  66. 55 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/query/CheckResultQueryDTO.java
  67. 37 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/query/CheckStatisticsQueryDTO.java
  68. 34 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/examine/ApplyExamineDTO.java
  69. 124 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckAddrVO.java
  70. 68 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckArrangeTimeVO.java
  71. 86 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckArrangeVO.java
  72. 29 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckConfigReasonsVO.java
  73. 66 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckConfigVO.java
  74. 52 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckCountVO.java
  75. 22 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckGroupAndNumVO.java
  76. 63 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckGroupVO.java
  77. 32 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckMonthDetailVO.java
  78. 74 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckNumVO.java
  79. 33 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckResultMonthVO.java
  80. 176 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckResultVO.java
  81. 66 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckStatisticsPageVO.java
  82. 28 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckStatisticsVO.java
  83. 33 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/excel/CheckGroupExcelVO.java
  84. 28 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/common/BranchVO.java
  85. 26 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/common/MemberComVO.java
  86. 57 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/company/CompanyVO.java
  87. 35 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/examine/ExamineCountVO.java
  88. 56 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/examine/TableGroupVO.java
  89. 49 0
      warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/member/MemberNameVO.java
  90. 33 0
      warst-api/warst-api-system/pom.xml
  91. 29 0
      warst-api/warst-api-system/src/main/java/com/warst/system/api/RemoteFileService.java
  92. 41 0
      warst-api/warst-api-system/src/main/java/com/warst/system/api/RemoteLogService.java
  93. 43 0
      warst-api/warst-api-system/src/main/java/com/warst/system/api/RemoteUserService.java
  94. 213 0
      warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysDept.java
  95. 179 0
      warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysDictData.java
  96. 96 0
      warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysDictType.java
  97. 50 0
      warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysFile.java
  98. 102 0
      warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysLogininfor.java
  99. 255 0
      warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysOperLog.java
  100. 241 0
      warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysRole.java

+ 47 - 0
.gitignore

@@ -0,0 +1,47 @@
+######################################################################
+# Build Tools
+
+.gradle
+/build/
+!gradle/wrapper/gradle-wrapper.jar
+
+target/
+!.mvn/wrapper/maven-wrapper.jar
+
+######################################################################
+# IDE
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### JRebel ###
+rebel.xml
+### NetBeans ###
+nbproject/private/
+build/*
+nbbuild/
+dist/
+nbdist/
+.nb-gradle/
+
+######################################################################
+# Others
+*.log
+*.xml.versionsBackup
+*.swp
+
+!*/build/*.java
+!*/build/*.html
+!*/build/*.xml
+/warst-h5/unpackage/

+ 21 - 0
LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 若依
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

BIN
WARST.dmp


+ 12 - 0
bin/clean.bat

@@ -0,0 +1,12 @@
+@echo off
+echo.
+echo [信息] 清理工程target生成路径。
+echo.
+
+%~d0
+cd %~dp0
+
+cd ..
+call mvn clean
+
+pause

+ 12 - 0
bin/package.bat

@@ -0,0 +1,12 @@
+@echo off
+echo.
+echo [信息] 打包Web工程,生成war/jar包文件。
+echo.
+
+%~d0
+cd %~dp0
+
+cd ..
+call mvn clean package -Dmaven.test.skip=true
+
+pause

+ 14 - 0
bin/run-auth.bat

@@ -0,0 +1,14 @@
+@echo off
+echo.
+echo [信息] 使用Jar命令运行Auth工程。
+echo.
+
+cd %~dp0
+cd ../warst-auth/target
+
+set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
+
+java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar warst-auth.jar
+
+cd bin
+pause

+ 14 - 0
bin/run-gateway.bat

@@ -0,0 +1,14 @@
+@echo off
+echo.
+echo [信息] 使用Jar命令运行Gateway工程。
+echo.
+
+cd %~dp0
+cd ../warst-gateway/target
+
+set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
+
+java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar warst-gateway.jar
+
+cd bin
+pause

+ 14 - 0
bin/run-modules-file.bat

@@ -0,0 +1,14 @@
+@echo off
+echo.
+echo [信息] 使用Jar命令运行Modules-File工程。
+echo.
+
+cd %~dp0
+cd ../warst-modules/warst-file/target
+
+set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
+
+java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar warst-modules-file.jar
+
+cd bin
+pause

+ 14 - 0
bin/run-modules-gen.bat

@@ -0,0 +1,14 @@
+@echo off
+echo.
+echo [信息] 使用Jar命令运行Modules-Gen工程。
+echo.
+
+cd %~dp0
+cd ../warst-modules/warst-gen/target
+
+set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
+
+java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar warst-modules-gen.jar
+
+cd bin
+pause

+ 14 - 0
bin/run-modules-job.bat

@@ -0,0 +1,14 @@
+@echo off
+echo.
+echo [信息] 使用Jar命令运行Modules-Job工程。
+echo.
+
+cd %~dp0
+cd ../warst-modules/warst-job/target
+
+set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
+
+java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar warst-modules-job.jar
+
+cd bin
+pause

+ 14 - 0
bin/run-modules-system.bat

@@ -0,0 +1,14 @@
+@echo off
+echo.
+echo [信息] 使用Jar命令运行Modules-System工程。
+echo.
+
+cd %~dp0
+cd ../warst-modules/warst-system/target
+
+set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
+
+java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar warst-modules-system.jar
+
+cd bin
+pause

+ 14 - 0
bin/run-monitor.bat

@@ -0,0 +1,14 @@
+@echo off
+echo.
+echo [信息] 使用Jar命令运行Monitor工程。
+echo.
+
+cd %~dp0
+cd ../warst-visual/warst-monitor/target
+
+set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
+
+java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar warst-visual-monitor.jar
+
+cd bin
+pause

+ 41 - 0
docker/copy.sh

@@ -0,0 +1,41 @@
+#!/bin/sh
+
+# 复制项目的文件到对应docker路径,便于一键生成镜像。
+usage() {
+	echo "Usage: sh copy.sh"
+	exit 1
+}
+
+
+# copy sql
+echo "begin copy sql "
+cp ../sql/ry_20220814.sql ./mysql/db
+cp ../sql/ry_config_20220510.sql ./mysql/db
+
+# copy html
+echo "begin copy html "
+cp -r ../warst-ui/dist/** ./nginx/html/dist
+
+
+# copy jar
+echo "begin copy warst-gateway "
+cp ../warst-gateway/target/warst-gateway.jar ./ruoyi/gateway/jar
+
+echo "begin copy warst-auth "
+cp ../warst-auth/target/warst-auth.jar ./ruoyi/auth/jar
+
+echo "begin copy warst-visual "
+cp ../warst-visual/warst-monitor/target/warst-visual-monitor.jar  ./ruoyi/visual/monitor/jar
+
+echo "begin copy warst-modules-system "
+cp ../warst-modules/warst-system/target/warst-modules-system.jar ./ruoyi/modules/system/jar
+
+echo "begin copy warst-modules-file "
+cp ../warst-modules/warst-file/target/warst-modules-file.jar ./ruoyi/modules/file/jar
+
+echo "begin copy warst-modules-job "
+cp ../warst-modules/warst-job/target/warst-modules-job.jar ./ruoyi/modules/job/jar
+
+echo "begin copy warst-modules-gen "
+cp ../warst-modules/warst-gen/target/warst-modules-gen.jar ./ruoyi/modules/gen/jar
+

+ 67 - 0
docker/deploy.sh

@@ -0,0 +1,67 @@
+#!/bin/sh
+
+# 使用说明,用来提示输入参数
+usage() {
+	echo "Usage: sh 执行脚本.sh [port|base|modules|stop|rm]"
+	exit 1
+}
+
+# 开启所需端口
+port(){
+	firewall-cmd --add-port=80/tcp --permanent
+	firewall-cmd --add-port=8080/tcp --permanent
+	firewall-cmd --add-port=8848/tcp --permanent
+	firewall-cmd --add-port=9848/tcp --permanent
+	firewall-cmd --add-port=9849/tcp --permanent
+	firewall-cmd --add-port=6379/tcp --permanent
+	firewall-cmd --add-port=3306/tcp --permanent
+	firewall-cmd --add-port=9100/tcp --permanent
+	firewall-cmd --add-port=9200/tcp --permanent
+	firewall-cmd --add-port=9201/tcp --permanent
+	firewall-cmd --add-port=9202/tcp --permanent
+	firewall-cmd --add-port=9203/tcp --permanent
+	firewall-cmd --add-port=9300/tcp --permanent
+	service firewalld restart
+}
+
+# 启动基础环境(必须)
+base(){
+	docker-compose up -d warst-mysql warst-redis warst-nacos
+}
+
+# 启动程序模块(必须)
+modules(){
+	docker-compose up -d warst-nginx warst-gateway warst-auth warst-modules-system
+}
+
+# 关闭所有环境/模块
+stop(){
+	docker-compose stop
+}
+
+# 删除所有环境/模块
+rm(){
+	docker-compose rm
+}
+
+# 根据输入参数,选择执行对应方法,不输入则执行使用说明
+case "$1" in
+"port")
+	port
+;;
+"base")
+	base
+;;
+"modules")
+	modules
+;;
+"stop")
+	stop
+;;
+"rm")
+	rm
+;;
+*)
+	usage
+;;
+esac

+ 140 - 0
docker/docker-compose.yml

@@ -0,0 +1,140 @@
+version : '3.8'
+services:
+  warst-nacos:
+    container_name: warst-nacos
+    image: nacos/nacos-server
+    build:
+      context: ./nacos
+    environment:
+      - MODE=standalone
+    volumes:
+      - ./nacos/logs/:/home/nacos/logs
+      - ./nacos/conf/application.properties:/home/nacos/conf/application.properties
+    ports:
+      - "8848:8848"
+      - "9848:9848"
+      - "9849:9849"
+    depends_on:
+      - warst-mysql
+  warst-mysql:
+    container_name: warst-mysql
+    image: mysql:5.7
+    build:
+      context: ./mysql
+    ports:
+      - "3306:3306"
+    volumes:
+      - ./mysql/conf:/etc/mysql/conf.d
+      - ./mysql/logs:/logs
+      - ./mysql/data:/var/lib/mysql
+    command: [
+          'mysqld',
+          '--innodb-buffer-pool-size=80M',
+          '--character-set-server=utf8mb4',
+          '--collation-server=utf8mb4_unicode_ci',
+          '--default-time-zone=+8:00',
+          '--lower-case-table-names=1'
+        ]
+    environment:
+      MYSQL_DATABASE: 'ry-cloud'
+      MYSQL_ROOT_PASSWORD: password
+  warst-redis:
+    container_name: warst-redis
+    image: redis
+    build:
+      context: ./redis
+    ports:
+      - "6379:6379"
+    volumes:
+      - ./redis/conf/redis.conf:/home/warst/redis/redis.conf
+      - ./redis/data:/data
+    command: redis-server /home/warst/redis/redis.conf
+  warst-nginx:
+    container_name: warst-nginx
+    image: nginx
+    build:
+      context: ./nginx
+    ports:
+      - "80:80"
+    volumes:
+      - ./nginx/html/dist:/home/warst/projects/warst-ui
+      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
+      - ./nginx/logs:/var/log/nginx
+      - ./nginx/conf.d:/etc/nginx/conf.d
+    depends_on:
+      - warst-gateway
+    links:
+      - warst-gateway
+  warst-gateway:
+    container_name: warst-gateway
+    build:
+      context: ./warst/gateway
+      dockerfile: dockerfile
+    ports:
+      - "8080:8080"
+    depends_on:
+      - warst-redis
+    links:
+      - warst-redis
+  warst-auth:
+    container_name: warst-auth
+    build:
+      context: ./warst/auth
+      dockerfile: dockerfile
+    ports:
+      - "9200:9200"
+    depends_on:
+      - warst-redis
+    links:
+      - warst-redis
+  warst-modules-system:
+    container_name: warst-modules-system
+    build:
+      context: ./warst/modules/system
+      dockerfile: dockerfile
+    ports:
+      - "9201:9201"
+    depends_on:
+      - warst-redis
+      - warst-mysql
+    links:
+      - warst-redis
+      - warst-mysql
+  warst-modules-gen:
+    container_name: warst-modules-gen
+    build:
+      context: ./warst/modules/gen
+      dockerfile: dockerfile
+    ports:
+      - "9202:9202"
+    depends_on:
+      - warst-mysql
+    links:
+      - warst-mysql
+  warst-modules-job:
+    container_name: warst-modules-job
+    build:
+      context: ./warst/modules/job
+      dockerfile: dockerfile
+    ports:
+      - "9203:9203"
+    depends_on:
+      - warst-mysql
+    links:
+      - warst-mysql
+  warst-modules-file:
+    container_name: warst-modules-file
+    build:
+      context: ./warst/modules/file
+      dockerfile: dockerfile
+    ports:
+      - "9300:9300"
+    volumes:
+    - ./warst/uploadPath:/home/warst/uploadPath
+  warst-visual-monitor:
+    container_name: warst-visual-monitor
+    build:
+      context: ./warst/visual/monitor
+      dockerfile: dockerfile
+    ports:
+      - "9100:9100"

+ 1 - 0
docker/mysql/db/readme.txt

@@ -0,0 +1 @@
+存放sql目录下的所有脚本,用于docker自动执行。

+ 7 - 0
docker/mysql/dockerfile

@@ -0,0 +1,7 @@
+# 基础镜像
+FROM mysql:5.7
+# author
+MAINTAINER ruoyi
+
+# 执行sql脚本
+ADD ./db/*.sql /docker-entrypoint-initdb.d/

+ 32 - 0
docker/nacos/conf/application.properties

@@ -0,0 +1,32 @@
+spring.datasource.platform=mysql
+db.num=1
+db.url.0=jdbc:mysql://ruoyi-mysql:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
+db.user=root
+db.password=password
+
+nacos.naming.empty-service.auto-clean=true
+nacos.naming.empty-service.clean.initial-delay-ms=50000
+nacos.naming.empty-service.clean.period-time-ms=30000
+
+management.endpoints.web.exposure.include=*
+
+management.metrics.export.elastic.enabled=false
+management.metrics.export.influx.enabled=false
+
+server.tomcat.accesslog.enabled=true
+server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
+
+server.tomcat.basedir=/home/ruoyi/nacos/tomcat/logs
+
+nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
+
+nacos.core.auth.system.type=nacos
+nacos.core.auth.enabled=false
+nacos.core.auth.default.token.expire.seconds=18000
+nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
+nacos.core.auth.caching.enabled=true
+nacos.core.auth.enable.userAgentAuthWhite=false
+nacos.core.auth.server.identity.key=serverIdentity
+nacos.core.auth.server.identity.value=security
+
+nacos.istio.mcp.server.enabled=false

+ 7 - 0
docker/nacos/dockerfile

@@ -0,0 +1,7 @@
+# 基础镜像
+FROM nacos/nacos-server
+# author
+MAINTAINER ruoyi
+
+# 复制conf文件到路径
+COPY ./conf/application.properties /home/nacos/conf/application.properties

+ 36 - 0
docker/nginx/conf/nginx.conf

@@ -0,0 +1,36 @@
+worker_processes  1;
+
+events {
+    worker_connections  1024;
+}
+
+http {
+    include       mime.types;
+    default_type  application/octet-stream;
+    sendfile        on;
+    keepalive_timeout  65;
+
+    server {
+        listen       80;
+        server_name  localhost;
+
+		location / {
+            root   /home/ruoyi/projects/ruoyi-ui;
+			try_files $uri $uri/ /index.html;
+            index  index.html index.htm;
+        }
+		
+		location /prod-api/{
+			proxy_set_header Host $http_host;
+			proxy_set_header X-Real-IP $remote_addr;
+			proxy_set_header REMOTE-HOST $remote_addr;
+			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+			proxy_pass http://ruoyi-gateway:8080/;
+		}
+
+        error_page   500 502 503 504  /50x.html;
+        location = /50x.html {
+            root   html;
+        }
+    }
+}# requirepass 123456

+ 15 - 0
docker/nginx/dockerfile

@@ -0,0 +1,15 @@
+# 基础镜像
+FROM nginx
+# author
+MAINTAINER ruoyi
+
+# 挂载目录
+VOLUME /home/ruoyi/projects/warst-ui
+# 创建目录
+RUN mkdir -p /home/ruoyi/projects/warst-ui
+# 指定路径
+WORKDIR /home/ruoyi/projects/warst-ui
+# 复制conf文件到路径
+COPY ./conf/nginx.conf /etc/nginx/nginx.conf
+# 复制html文件到路径
+COPY ./html/dist /home/ruoyi/projects/warst-ui

+ 1 - 0
docker/redis/conf/redis.conf

@@ -0,0 +1 @@
+# requirepass 123456

+ 13 - 0
docker/redis/dockerfile

@@ -0,0 +1,13 @@
+# 基础镜像
+FROM redis
+# author
+MAINTAINER ruoyi
+
+# 挂载目录
+VOLUME /home/ruoyi/redis
+# 创建目录
+RUN mkdir -p /home/ruoyi/redis
+# 指定路径
+WORKDIR /home/ruoyi/redis
+# 复制conf文件到路径
+COPY ./conf/redis.conf /home/ruoyi/redis/redis.conf

+ 15 - 0
docker/ruoyi/auth/dockerfile

@@ -0,0 +1,15 @@
+# 基础镜像
+FROM  openjdk:8-jre
+# author
+MAINTAINER ruoyi
+
+# 挂载目录
+VOLUME /home/ruoyi
+# 创建目录
+RUN mkdir -p /home/ruoyi
+# 指定路径
+WORKDIR /home/ruoyi
+# 复制jar文件到路径
+COPY ./jar/warst-auth.jar /home/ruoyi/warst-auth.jar
+# 启动认证服务
+ENTRYPOINT ["java","-jar","warst-auth.jar"]

+ 1 - 0
docker/ruoyi/auth/jar/readme.txt

@@ -0,0 +1 @@
+存放认证中心打包好的jar文件,用于docker启动应用。

+ 15 - 0
docker/ruoyi/gateway/dockerfile

@@ -0,0 +1,15 @@
+# 基础镜像
+FROM  openjdk:8-jre
+# author
+MAINTAINER ruoyi
+
+# 挂载目录
+VOLUME /home/ruoyi
+# 创建目录
+RUN mkdir -p /home/ruoyi
+# 指定路径
+WORKDIR /home/ruoyi
+# 复制jar文件到路径
+COPY ./jar/warst-gateway.jar /home/ruoyi/warst-gateway.jar
+# 启动网关服务
+ENTRYPOINT ["java","-jar","warst-gateway.jar"]

+ 1 - 0
docker/ruoyi/gateway/jar/readme.txt

@@ -0,0 +1 @@
+存放网关模块打包好的jar文件,用于docker启动应用。

+ 15 - 0
docker/ruoyi/modules/file/dockerfile

@@ -0,0 +1,15 @@
+# 基础镜像
+FROM  openjdk:8-jre
+# author
+MAINTAINER ruoyi
+
+# 挂载目录
+VOLUME /home/ruoyi
+# 创建目录
+RUN mkdir -p /home/ruoyi
+# 指定路径
+WORKDIR /home/ruoyi
+# 复制jar文件到路径
+COPY ./jar/warst-modules-file.jar /home/ruoyi/warst-modules-file.jar
+# 启动文件服务
+ENTRYPOINT ["java","-jar","warst-modules-file.jar"]

+ 1 - 0
docker/ruoyi/modules/file/jar/readme.txt

@@ -0,0 +1 @@
+存放文件服务打包好的jar文件,用于docker启动应用。

+ 15 - 0
docker/ruoyi/modules/gen/dockerfile

@@ -0,0 +1,15 @@
+# 基础镜像
+FROM  openjdk:8-jre
+# author
+MAINTAINER ruoyi
+
+# 挂载目录
+VOLUME /home/ruoyi
+# 创建目录
+RUN mkdir -p /home/ruoyi
+# 指定路径
+WORKDIR /home/ruoyi
+# 复制jar文件到路径
+COPY ./jar/warst-modules-gen.jar /home/ruoyi/warst-modules-gen.jar
+# 启动代码生成服务
+ENTRYPOINT ["java","-jar","warst-modules-gen.jar"]

+ 1 - 0
docker/ruoyi/modules/gen/jar/readme.txt

@@ -0,0 +1 @@
+存放代码生成打包好的jar文件,用于docker启动应用。

+ 15 - 0
docker/ruoyi/modules/job/dockerfile

@@ -0,0 +1,15 @@
+# 基础镜像
+FROM  openjdk:8-jre
+# author
+MAINTAINER ruoyi
+
+# 挂载目录
+VOLUME /home/ruoyi
+# 创建目录
+RUN mkdir -p /home/ruoyi
+# 指定路径
+WORKDIR /home/ruoyi
+# 复制jar文件到路径
+COPY ./jar/warst-modules-job.jar /home/ruoyi/warst-modules-job.jar
+# 启动定时任务服务
+ENTRYPOINT ["java","-jar","warst-modules-job.jar"]

+ 1 - 0
docker/ruoyi/modules/job/jar/readme.txt

@@ -0,0 +1 @@
+存放定时任务打包好的jar文件,用于docker启动应用。

+ 15 - 0
docker/ruoyi/modules/system/dockerfile

@@ -0,0 +1,15 @@
+# 基础镜像
+FROM  openjdk:8-jre
+# author
+MAINTAINER ruoyi
+
+# 挂载目录
+VOLUME /home/ruoyi
+# 创建目录
+RUN mkdir -p /home/ruoyi
+# 指定路径
+WORKDIR /home/ruoyi
+# 复制jar文件到路径
+COPY ./jar/warst-modules-system.jar /home/ruoyi/warst-modules-system.jar
+# 启动系统服务
+ENTRYPOINT ["java","-jar","warst-modules-system.jar"]

+ 1 - 0
docker/ruoyi/modules/system/jar/readme.txt

@@ -0,0 +1 @@
+存放系统模块打包好的jar文件,用于docker启动应用。

+ 15 - 0
docker/ruoyi/visual/monitor/dockerfile

@@ -0,0 +1,15 @@
+# 基础镜像
+FROM  openjdk:8-jre
+# author
+MAINTAINER ruoyi
+
+# 挂载目录
+VOLUME /home/ruoyi
+# 创建目录
+RUN mkdir -p /home/ruoyi
+# 指定路径
+WORKDIR /home/ruoyi
+# 复制jar文件到路径
+COPY ./jar/warst-visual-monitor.jar /home/ruoyi/warst-visual-monitor.jar
+# 启动系统服务
+ENTRYPOINT ["java","-jar","warst-visual-monitor.jar"]

+ 1 - 0
docker/ruoyi/visual/monitor/jar/readme.txt

@@ -0,0 +1 @@
+存放监控中心打包好的jar文件,用于docker启动应用。

BIN
lib/jakarta.json-api-2.0.1.jar


+ 3 - 0
package-lock.json

@@ -0,0 +1,3 @@
+{
+  "lockfileVersion": 1
+}

+ 370 - 0
pom.xml

@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.warst</groupId>
+    <artifactId>warst</artifactId>
+    <version>3.6.2</version>
+
+    <name>warst</name>
+    <url>http://www.warst.vip</url>
+    <description>战情保障系统</description>
+
+    <properties>
+        <warst.version>3.6.2</warst.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <java.version>1.8</java.version>
+        <spring-boot.version>2.7.7</spring-boot.version>
+        <spring-cloud.version>2021.0.5</spring-cloud.version>
+        <spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
+        <spring-boot-admin.version>2.7.10</spring-boot-admin.version>
+        <swagger.fox.version>3.0.0</swagger.fox.version>
+        <swagger.core.version>1.6.2</swagger.core.version>
+        <tobato.version>1.27.2</tobato.version>
+        <kaptcha.version>2.3.3</kaptcha.version>
+        <jakartajson.version>2.0.1</jakartajson.version>
+        <pagehelper.boot.version>1.4.6</pagehelper.boot.version>
+        <druid.version>1.2.16</druid.version>
+        <dynamic-ds.version>3.5.2</dynamic-ds.version>
+        <commons.io.version>2.11.0</commons.io.version>
+        <velocity.version>2.3</velocity.version>
+        <fastjson.version>2.0.23</fastjson.version>
+        <jjwt.version>0.9.1</jjwt.version>
+        <minio.version>8.2.2</minio.version>
+        <poi.version>4.1.2</poi.version>
+        <easyexcel.version>3.1.5</easyexcel.version>
+        <hutool.version>5.7.12</hutool.version>
+        <mybatis-plus.version>3.4.2</mybatis-plus.version>
+        <transmittable-thread-local.version>2.14.2</transmittable-thread-local.version>
+    </properties>
+
+    <profiles>
+        <profile>
+            <!-- 本地环境 -->
+            <id>dev</id>
+            <properties>
+                <spring.profile>dev</spring.profile>
+                <nacos.server.username>nacos</nacos.server.username>
+                <nacos.server.password>mxkj123..</nacos.server.password>
+                <nacos.server.address>113.204.105.114:8848</nacos.server.address>
+                <nacos.server.namespace>2d477541-1d1c-4cbe-a5ad-f1b18be7872d</nacos.server.namespace>
+                <nacos.server.group>warst</nacos.server.group>
+            </properties>
+            <activation>
+                <!-- 是否默认激活 -->
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <!-- 线上环境 -->
+            <id>prod</id>
+            <properties>
+                <spring.profile>prod</spring.profile>
+                <nacos.server.username>nacos</nacos.server.username>
+                <nacos.server.password>mxkj123..</nacos.server.password>
+                <nacos.server.address>172.17.0.1:8848</nacos.server.address>
+                <nacos.server.namespace>5cc6e8e0-8299-4c13-9f0a-4fcb1f5ed5f4</nacos.server.namespace>
+                <nacos.server.group>warst</nacos.server.group>
+            </properties>
+            <activation>
+                <!-- 是否默认激活 -->
+                <activeByDefault>false</activeByDefault>
+            </activation>
+        </profile>
+    </profiles>
+
+    <!-- 依赖声明 -->
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>jakarta.json</groupId>
+                <artifactId>jakarta.json-api</artifactId>
+                <version>${jakartajson.version}</version>
+            </dependency>
+            <!-- SpringCloud 微服务 -->
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <version>${spring-cloud.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- SpringCloud Alibaba 微服务 -->
+            <dependency>
+                <groupId>com.alibaba.cloud</groupId>
+                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
+                <version>${spring-cloud-alibaba.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- SpringBoot 依赖配置 -->
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- FastDFS 分布式文件系统 -->
+            <dependency>
+                <groupId>com.github.tobato</groupId>
+                <artifactId>fastdfs-client</artifactId>
+                <version>${tobato.version}</version>
+            </dependency>
+
+            <!-- Swagger 依赖配置 -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-models</artifactId>
+                <version>${swagger.core.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.core.version}</version>
+            </dependency>
+            <!-- Swagger UI -->
+
+            <!-- 验证码 -->
+            <dependency>
+                <groupId>pro.fessional</groupId>
+                <artifactId>kaptcha</artifactId>
+                <version>${kaptcha.version}</version>
+            </dependency>
+
+            <!-- pagehelper 分页插件 -->
+            <dependency>
+                <groupId>com.github.pagehelper</groupId>
+                <artifactId>pagehelper-spring-boot-starter</artifactId>
+                <version>${pagehelper.boot.version}</version>
+            </dependency>
+
+            <!-- io常用工具类 -->
+            <dependency>
+                <groupId>commons-io</groupId>
+                <artifactId>commons-io</artifactId>
+                <version>${commons.io.version}</version>
+            </dependency>
+
+            <!-- excel工具 -->
+            <dependency>
+                <groupId>org.apache.poi</groupId>
+                <artifactId>poi-ooxml</artifactId>
+                <version>${poi.version}</version>
+            </dependency>
+
+            <!-- 代码生成使用模板 -->
+            <dependency>
+                <groupId>org.apache.velocity</groupId>
+                <artifactId>velocity-engine-core</artifactId>
+                <version>${velocity.version}</version>
+            </dependency>
+
+            <!-- JSON 解析器和生成器 -->
+            <dependency>
+                <groupId>com.alibaba.fastjson2</groupId>
+                <artifactId>fastjson2</artifactId>
+                <version>${fastjson.version}</version>
+            </dependency>
+            <!--  hutool工具类    -->
+            <dependency>
+                <groupId>cn.hutool</groupId>
+                <artifactId>hutool-all</artifactId>
+                <version>${hutool.version}</version>
+            </dependency>
+
+            <!-- JWT -->
+            <dependency>
+                <groupId>io.jsonwebtoken</groupId>
+                <artifactId>jjwt</artifactId>
+                <version>${jjwt.version}</version>
+            </dependency>
+
+            <!-- 线程传递值 -->
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>transmittable-thread-local</artifactId>
+                <version>${transmittable-thread-local.version}</version>
+            </dependency>
+
+            <!-- 核心模块 -->
+            <dependency>
+                <groupId>com.warst</groupId>
+                <artifactId>warst-common-core</artifactId>
+                <version>${warst.version}</version>
+            </dependency>
+
+            <!-- 接口模块 -->
+            <dependency>
+                <groupId>com.warst</groupId>
+                <artifactId>warst-common-swagger</artifactId>
+                <version>${warst.version}</version>
+            </dependency>
+
+            <!-- 安全模块 -->
+            <dependency>
+                <groupId>com.warst</groupId>
+                <artifactId>warst-common-security</artifactId>
+                <version>${warst.version}</version>
+            </dependency>
+
+            <!-- 用户模块 -->
+            <dependency>
+                <groupId>com.warst</groupId>
+                <artifactId>warst-common-users</artifactId>
+                <version>${warst.version}</version>
+            </dependency>
+            <!-- 权限范围 -->
+            <dependency>
+                <groupId>com.warst</groupId>
+                <artifactId>warst-common-datascope</artifactId>
+                <version>${warst.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>mybatis-plus-boot-starter</artifactId>
+                <version>${mybatis-plus.version}</version>
+            </dependency>
+
+            <!--  easy poi  -->
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>easyexcel</artifactId>
+                <version>${easyexcel.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.apache.poi</groupId>
+                        <artifactId>poi-ooxml-schemas</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+
+            <!-- 多数据源 -->
+            <dependency>
+                <groupId>com.warst</groupId>
+                <artifactId>warst-common-datasource</artifactId>
+                <version>${warst.version}</version>
+            </dependency>
+
+            <!-- 日志记录 -->
+            <dependency>
+                <groupId>com.warst</groupId>
+                <artifactId>warst-common-log</artifactId>
+                <version>${warst.version}</version>
+            </dependency>
+
+            <!-- 缓存服务 -->
+            <dependency>
+                <groupId>com.warst</groupId>
+                <artifactId>warst-common-redis</artifactId>
+                <version>${warst.version}</version>
+            </dependency>
+
+            <!-- 系统接口 -->
+            <dependency>
+                <groupId>com.warst</groupId>
+                <artifactId>warst-api-system</artifactId>
+                <version>${warst.version}</version>
+            </dependency>
+
+        </dependencies>
+    </dependencyManagement>
+
+    <modules>
+        <module>warst-auth</module>
+        <module>warst-gateway</module>
+        <module>warst-modules</module>
+        <module>warst-api</module>
+        <module>warst-common</module>
+    </modules>
+    <packaging>pom</packaging>
+
+    <dependencies>
+        <!-- bootstrap 启动器 -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+        </dependency>
+    </dependencies>
+
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                </configuration>
+                <version>2.3.2</version>
+            </plugin>
+            <!-- yml 兼容@ 配置-->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+                <configuration>
+                    <delimiters>@</delimiters>
+                    <useDefaultDelimiters>false</useDefaultDelimiters>
+                </configuration>
+            </plugin>
+        </plugins>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>repackage</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>https://maven.aliyun.com/repository/public</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+    </repositories>
+
+    <pluginRepositories>
+        <pluginRepository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>https://maven.aliyun.com/repository/public</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+
+</project>

+ 174 - 0
sql/quartz.sql

@@ -0,0 +1,174 @@
+DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;
+DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;
+DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;
+DROP TABLE IF EXISTS QRTZ_LOCKS;
+DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
+DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS;
+DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;
+DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;
+DROP TABLE IF EXISTS QRTZ_TRIGGERS;
+DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;
+DROP TABLE IF EXISTS QRTZ_CALENDARS;
+
+-- ----------------------------
+-- 1、存储每一个已配置的 jobDetail 的详细信息
+-- ----------------------------
+create table QRTZ_JOB_DETAILS (
+    sched_name           varchar(120)    not null            comment '调度名称',
+    job_name             varchar(200)    not null            comment '任务名称',
+    job_group            varchar(200)    not null            comment '任务组名',
+    description          varchar(250)    null                comment '相关介绍',
+    job_class_name       varchar(250)    not null            comment '执行任务类名称',
+    is_durable           varchar(1)      not null            comment '是否持久化',
+    is_nonconcurrent     varchar(1)      not null            comment '是否并发',
+    is_update_data       varchar(1)      not null            comment '是否更新数据',
+    requests_recovery    varchar(1)      not null            comment '是否接受恢复执行',
+    job_data             blob            null                comment '存放持久化job对象',
+    primary key (sched_name, job_name, job_group)
+) engine=innodb comment = '任务详细信息表';
+
+-- ----------------------------
+-- 2、 存储已配置的 Trigger 的信息
+-- ----------------------------
+create table QRTZ_TRIGGERS (
+    sched_name           varchar(120)    not null            comment '调度名称',
+    trigger_name         varchar(200)    not null            comment '触发器的名字',
+    trigger_group        varchar(200)    not null            comment '触发器所属组的名字',
+    job_name             varchar(200)    not null            comment 'qrtz_job_details表job_name的外键',
+    job_group            varchar(200)    not null            comment 'qrtz_job_details表job_group的外键',
+    description          varchar(250)    null                comment '相关介绍',
+    next_fire_time       bigint(13)      null                comment '上一次触发时间(毫秒)',
+    prev_fire_time       bigint(13)      null                comment '下一次触发时间(默认为-1表示不触发)',
+    priority             integer         null                comment '优先级',
+    trigger_state        varchar(16)     not null            comment '触发器状态',
+    trigger_type         varchar(8)      not null            comment '触发器的类型',
+    start_time           bigint(13)      not null            comment '开始时间',
+    end_time             bigint(13)      null                comment '结束时间',
+    calendar_name        varchar(200)    null                comment '日程表名称',
+    misfire_instr        smallint(2)     null                comment '补偿执行的策略',
+    job_data             blob            null                comment '存放持久化job对象',
+    primary key (sched_name, trigger_name, trigger_group),
+    foreign key (sched_name, job_name, job_group) references QRTZ_JOB_DETAILS(sched_name, job_name, job_group)
+) engine=innodb comment = '触发器详细信息表';
+
+-- ----------------------------
+-- 3、 存储简单的 Trigger,包括重复次数,间隔,以及已触发的次数
+-- ----------------------------
+create table QRTZ_SIMPLE_TRIGGERS (
+    sched_name           varchar(120)    not null            comment '调度名称',
+    trigger_name         varchar(200)    not null            comment 'qrtz_triggers表trigger_name的外键',
+    trigger_group        varchar(200)    not null            comment 'qrtz_triggers表trigger_group的外键',
+    repeat_count         bigint(7)       not null            comment '重复的次数统计',
+    repeat_interval      bigint(12)      not null            comment '重复的间隔时间',
+    times_triggered      bigint(10)      not null            comment '已经触发的次数',
+    primary key (sched_name, trigger_name, trigger_group),
+    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group)
+) engine=innodb comment = '简单触发器的信息表';
+
+-- ----------------------------
+-- 4、 存储 Cron Trigger,包括 Cron 表达式和时区信息
+-- ---------------------------- 
+create table QRTZ_CRON_TRIGGERS (
+    sched_name           varchar(120)    not null            comment '调度名称',
+    trigger_name         varchar(200)    not null            comment 'qrtz_triggers表trigger_name的外键',
+    trigger_group        varchar(200)    not null            comment 'qrtz_triggers表trigger_group的外键',
+    cron_expression      varchar(200)    not null            comment 'cron表达式',
+    time_zone_id         varchar(80)                         comment '时区',
+    primary key (sched_name, trigger_name, trigger_group),
+    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group)
+) engine=innodb comment = 'Cron类型的触发器表';
+
+-- ----------------------------
+-- 5、 Trigger 作为 Blob 类型存储(用于 Quartz 用户用 JDBC 创建他们自己定制的 Trigger 类型,JobStore 并不知道如何存储实例的时候)
+-- ---------------------------- 
+create table QRTZ_BLOB_TRIGGERS (
+    sched_name           varchar(120)    not null            comment '调度名称',
+    trigger_name         varchar(200)    not null            comment 'qrtz_triggers表trigger_name的外键',
+    trigger_group        varchar(200)    not null            comment 'qrtz_triggers表trigger_group的外键',
+    blob_data            blob            null                comment '存放持久化Trigger对象',
+    primary key (sched_name, trigger_name, trigger_group),
+    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group)
+) engine=innodb comment = 'Blob类型的触发器表';
+
+-- ----------------------------
+-- 6、 以 Blob 类型存储存放日历信息, quartz可配置一个日历来指定一个时间范围
+-- ---------------------------- 
+create table QRTZ_CALENDARS (
+    sched_name           varchar(120)    not null            comment '调度名称',
+    calendar_name        varchar(200)    not null            comment '日历名称',
+    calendar             blob            not null            comment '存放持久化calendar对象',
+    primary key (sched_name, calendar_name)
+) engine=innodb comment = '日历信息表';
+
+-- ----------------------------
+-- 7、 存储已暂停的 Trigger 组的信息
+-- ---------------------------- 
+create table QRTZ_PAUSED_TRIGGER_GRPS (
+    sched_name           varchar(120)    not null            comment '调度名称',
+    trigger_group        varchar(200)    not null            comment 'qrtz_triggers表trigger_group的外键',
+    primary key (sched_name, trigger_group)
+) engine=innodb comment = '暂停的触发器表';
+
+-- ----------------------------
+-- 8、 存储与已触发的 Trigger 相关的状态信息,以及相联 Job 的执行信息
+-- ---------------------------- 
+create table QRTZ_FIRED_TRIGGERS (
+    sched_name           varchar(120)    not null            comment '调度名称',
+    entry_id             varchar(95)     not null            comment '调度器实例id',
+    trigger_name         varchar(200)    not null            comment 'qrtz_triggers表trigger_name的外键',
+    trigger_group        varchar(200)    not null            comment 'qrtz_triggers表trigger_group的外键',
+    instance_name        varchar(200)    not null            comment '调度器实例名',
+    fired_time           bigint(13)      not null            comment '触发的时间',
+    sched_time           bigint(13)      not null            comment '定时器制定的时间',
+    priority             integer         not null            comment '优先级',
+    state                varchar(16)     not null            comment '状态',
+    job_name             varchar(200)    null                comment '任务名称',
+    job_group            varchar(200)    null                comment '任务组名',
+    is_nonconcurrent     varchar(1)      null                comment '是否并发',
+    requests_recovery    varchar(1)      null                comment '是否接受恢复执行',
+    primary key (sched_name, entry_id)
+) engine=innodb comment = '已触发的触发器表';
+
+-- ----------------------------
+-- 9、 存储少量的有关 Scheduler 的状态信息,假如是用于集群中,可以看到其他的 Scheduler 实例
+-- ---------------------------- 
+create table QRTZ_SCHEDULER_STATE (
+    sched_name           varchar(120)    not null            comment '调度名称',
+    instance_name        varchar(200)    not null            comment '实例名称',
+    last_checkin_time    bigint(13)      not null            comment '上次检查时间',
+    checkin_interval     bigint(13)      not null            comment '检查间隔时间',
+    primary key (sched_name, instance_name)
+) engine=innodb comment = '调度器状态表';
+
+-- ----------------------------
+-- 10、 存储程序的悲观锁的信息(假如使用了悲观锁)
+-- ---------------------------- 
+create table QRTZ_LOCKS (
+    sched_name           varchar(120)    not null            comment '调度名称',
+    lock_name            varchar(40)     not null            comment '悲观锁名称',
+    primary key (sched_name, lock_name)
+) engine=innodb comment = '存储的悲观锁信息表';
+
+-- ----------------------------
+-- 11、 Quartz集群实现同步机制的行锁表
+-- ---------------------------- 
+create table QRTZ_SIMPROP_TRIGGERS (
+    sched_name           varchar(120)    not null            comment '调度名称',
+    trigger_name         varchar(200)    not null            comment 'qrtz_triggers表trigger_name的外键',
+    trigger_group        varchar(200)    not null            comment 'qrtz_triggers表trigger_group的外键',
+    str_prop_1           varchar(512)    null                comment 'String类型的trigger的第一个参数',
+    str_prop_2           varchar(512)    null                comment 'String类型的trigger的第二个参数',
+    str_prop_3           varchar(512)    null                comment 'String类型的trigger的第三个参数',
+    int_prop_1           int             null                comment 'int类型的trigger的第一个参数',
+    int_prop_2           int             null                comment 'int类型的trigger的第二个参数',
+    long_prop_1          bigint          null                comment 'long类型的trigger的第一个参数',
+    long_prop_2          bigint          null                comment 'long类型的trigger的第二个参数',
+    dec_prop_1           numeric(13,4)   null                comment 'decimal类型的trigger的第一个参数',
+    dec_prop_2           numeric(13,4)   null                comment 'decimal类型的trigger的第二个参数',
+    bool_prop_1          varchar(1)      null                comment 'Boolean类型的trigger的第一个参数',
+    bool_prop_2          varchar(1)      null                comment 'Boolean类型的trigger的第二个参数',
+    primary key (sched_name, trigger_name, trigger_group),
+    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group)
+) engine=innodb comment = '同步机制的行锁表';
+
+commit;

+ 695 - 0
sql/ry_20230223.sql

@@ -0,0 +1,695 @@
+SET NAMES utf8mb4;
+
+-- ----------------------------
+-- 1、部门表
+-- ----------------------------
+drop table if exists sys_dept;
+create table sys_dept (
+  dept_id           bigint(20)      not null auto_increment    comment '部门id',
+  parent_id         bigint(20)      default 0                  comment '父部门id',
+  ancestors         varchar(50)     default ''                 comment '祖级列表',
+  dept_name         varchar(30)     default ''                 comment '部门名称',
+  order_num         int(4)          default 0                  comment '显示顺序',
+  leader            varchar(20)     default null               comment '负责人',
+  phone             varchar(11)     default null               comment '联系电话',
+  email             varchar(50)     default null               comment '邮箱',
+  status            char(1)         default '0'                comment '部门状态(0正常 1停用)',
+  del_flag          char(1)         default '0'                comment '删除标志(0代表存在 2代表删除)',
+  create_by         varchar(64)     default ''                 comment '创建者',
+  create_time 	    datetime                                   comment '创建时间',
+  update_by         varchar(64)     default ''                 comment '更新者',
+  update_time       datetime                                   comment '更新时间',
+  primary key (dept_id)
+) engine=innodb auto_increment=200 comment = '部门表';
+
+-- ----------------------------
+-- 初始化-部门表数据
+-- ----------------------------
+insert into sys_dept values(100,  0,   '0',          '若依科技',   0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
+insert into sys_dept values(101,  100, '0,100',      '深圳总公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
+insert into sys_dept values(102,  100, '0,100',      '长沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
+insert into sys_dept values(103,  101, '0,100,101',  '研发部门',   1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
+insert into sys_dept values(104,  101, '0,100,101',  '市场部门',   2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
+insert into sys_dept values(105,  101, '0,100,101',  '测试部门',   3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
+insert into sys_dept values(106,  101, '0,100,101',  '财务部门',   4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
+insert into sys_dept values(107,  101, '0,100,101',  '运维部门',   5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
+insert into sys_dept values(108,  102, '0,100,102',  '市场部门',   1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
+insert into sys_dept values(109,  102, '0,100,102',  '财务部门',   2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
+
+
+-- ----------------------------
+-- 2、用户信息表
+-- ----------------------------
+drop table if exists sys_user;
+create table sys_user (
+  user_id           bigint(20)      not null auto_increment    comment '用户ID',
+  dept_id           bigint(20)      default null               comment '部门ID',
+  user_name         varchar(30)     not null                   comment '用户账号',
+  nick_name         varchar(30)     not null                   comment '用户昵称',
+  user_type         varchar(2)      default '00'               comment '用户类型(00系统用户)',
+  email             varchar(50)     default ''                 comment '用户邮箱',
+  phonenumber       varchar(11)     default ''                 comment '手机号码',
+  sex               char(1)         default '0'                comment '用户性别(0男 1女 2未知)',
+  avatar            varchar(100)    default ''                 comment '头像地址',
+  password          varchar(100)    default ''                 comment '密码',
+  status            char(1)         default '0'                comment '帐号状态(0正常 1停用)',
+  del_flag          char(1)         default '0'                comment '删除标志(0代表存在 2代表删除)',
+  login_ip          varchar(128)    default ''                 comment '最后登录IP',
+  login_date        datetime                                   comment '最后登录时间',
+  create_by         varchar(64)     default ''                 comment '创建者',
+  create_time       datetime                                   comment '创建时间',
+  update_by         varchar(64)     default ''                 comment '更新者',
+  update_time       datetime                                   comment '更新时间',
+  remark            varchar(500)    default null               comment '备注',
+  primary key (user_id)
+) engine=innodb auto_increment=100 comment = '用户信息表';
+
+-- ----------------------------
+-- 初始化-用户信息表数据
+-- ----------------------------
+insert into sys_user values(1,  103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 'admin', sysdate(), '', null, '管理员');
+insert into sys_user values(2,  105, 'ry',    '若依', '00', 'ry@qq.com',  '15666666666', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 'admin', sysdate(), '', null, '测试员');
+
+
+-- ----------------------------
+-- 3、岗位信息表
+-- ----------------------------
+drop table if exists sys_post;
+create table sys_post
+(
+  post_id       bigint(20)      not null auto_increment    comment '岗位ID',
+  post_code     varchar(64)     not null                   comment '岗位编码',
+  post_name     varchar(50)     not null                   comment '岗位名称',
+  post_sort     int(4)          not null                   comment '显示顺序',
+  status        char(1)         not null                   comment '状态(0正常 1停用)',
+  create_by     varchar(64)     default ''                 comment '创建者',
+  create_time   datetime                                   comment '创建时间',
+  update_by     varchar(64)     default ''			       comment '更新者',
+  update_time   datetime                                   comment '更新时间',
+  remark        varchar(500)    default null               comment '备注',
+  primary key (post_id)
+) engine=innodb comment = '岗位信息表';
+
+-- ----------------------------
+-- 初始化-岗位信息表数据
+-- ----------------------------
+insert into sys_post values(1, 'ceo',  '董事长',    1, '0', 'admin', sysdate(), '', null, '');
+insert into sys_post values(2, 'se',   '项目经理',  2, '0', 'admin', sysdate(), '', null, '');
+insert into sys_post values(3, 'hr',   '人力资源',  3, '0', 'admin', sysdate(), '', null, '');
+insert into sys_post values(4, 'user', '普通员工',  4, '0', 'admin', sysdate(), '', null, '');
+
+
+-- ----------------------------
+-- 4、角色信息表
+-- ----------------------------
+drop table if exists sys_role;
+create table sys_role (
+  role_id              bigint(20)      not null auto_increment    comment '角色ID',
+  role_name            varchar(30)     not null                   comment '角色名称',
+  role_key             varchar(100)    not null                   comment '角色权限字符串',
+  role_sort            int(4)          not null                   comment '显示顺序',
+  data_scope           char(1)         default '1'                comment '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)',
+  menu_check_strictly  tinyint(1)      default 1                  comment '菜单树选择项是否关联显示',
+  dept_check_strictly  tinyint(1)      default 1                  comment '部门树选择项是否关联显示',
+  status               char(1)         not null                   comment '角色状态(0正常 1停用)',
+  del_flag             char(1)         default '0'                comment '删除标志(0代表存在 2代表删除)',
+  create_by            varchar(64)     default ''                 comment '创建者',
+  create_time          datetime                                   comment '创建时间',
+  update_by            varchar(64)     default ''                 comment '更新者',
+  update_time          datetime                                   comment '更新时间',
+  remark               varchar(500)    default null               comment '备注',
+  primary key (role_id)
+) engine=innodb auto_increment=100 comment = '角色信息表';
+
+-- ----------------------------
+-- 初始化-角色信息表数据
+-- ----------------------------
+insert into sys_role values('1', '超级管理员',  'admin',  1, 1, 1, 1, '0', '0', 'admin', sysdate(), '', null, '超级管理员');
+insert into sys_role values('2', '普通角色',    'common', 2, 2, 1, 1, '0', '0', 'admin', sysdate(), '', null, '普通角色');
+
+
+-- ----------------------------
+-- 5、菜单权限表
+-- ----------------------------
+drop table if exists sys_menu;
+create table sys_menu (
+  menu_id           bigint(20)      not null auto_increment    comment '菜单ID',
+  menu_name         varchar(50)     not null                   comment '菜单名称',
+  parent_id         bigint(20)      default 0                  comment '父菜单ID',
+  order_num         int(4)          default 0                  comment '显示顺序',
+  path              varchar(200)    default ''                 comment '路由地址',
+  component         varchar(255)    default null               comment '组件路径',
+  query             varchar(255)    default null               comment '路由参数',
+  is_frame          int(1)          default 1                  comment '是否为外链(0是 1否)',
+  is_cache          int(1)          default 0                  comment '是否缓存(0缓存 1不缓存)',
+  menu_type         char(1)         default ''                 comment '菜单类型(M目录 C菜单 F按钮)',
+  visible           char(1)         default 0                  comment '菜单状态(0显示 1隐藏)',
+  status            char(1)         default 0                  comment '菜单状态(0正常 1停用)',
+  perms             varchar(100)    default null               comment '权限标识',
+  icon              varchar(100)    default '#'                comment '菜单图标',
+  create_by         varchar(64)     default ''                 comment '创建者',
+  create_time       datetime                                   comment '创建时间',
+  update_by         varchar(64)     default ''                 comment '更新者',
+  update_time       datetime                                   comment '更新时间',
+  remark            varchar(500)    default ''                 comment '备注',
+  primary key (menu_id)
+) engine=innodb auto_increment=2000 comment = '菜单权限表';
+
+-- ----------------------------
+-- 初始化-菜单信息表数据
+-- ----------------------------
+-- 一级菜单
+insert into sys_menu values('1', '系统管理', '0', '1', 'system',           null, '', 1, 0, 'M', '0', '0', '', 'system',   'admin', sysdate(), '', null, '系统管理目录');
+insert into sys_menu values('2', '系统监控', '0', '2', 'monitor',          null, '', 1, 0, 'M', '0', '0', '', 'monitor',  'admin', sysdate(), '', null, '系统监控目录');
+insert into sys_menu values('3', '系统工具', '0', '3', 'tool',             null, '', 1, 0, 'M', '0', '0', '', 'tool',     'admin', sysdate(), '', null, '系统工具目录');
+insert into sys_menu values('4', '若依官网', '0', '4', 'http://ruoyi.vip', null, '', 0, 0, 'M', '0', '0', '', 'guide',    'admin', sysdate(), '', null, '若依官网地址');
+-- 二级菜单
+insert into sys_menu values('100',  '用户管理',       '1',   '1', 'user',       'system/user/index',                 '', 1, 0, 'C', '0', '0', 'system:user:list',        'user',          'admin', sysdate(), '', null, '用户管理菜单');
+insert into sys_menu values('101',  '角色管理',       '1',   '2', 'role',       'system/role/index',                 '', 1, 0, 'C', '0', '0', 'system:role:list',        'peoples',       'admin', sysdate(), '', null, '角色管理菜单');
+insert into sys_menu values('102',  '菜单管理',       '1',   '3', 'menu',       'system/menu/index',                 '', 1, 0, 'C', '0', '0', 'system:menu:list',        'tree-table',    'admin', sysdate(), '', null, '菜单管理菜单');
+insert into sys_menu values('103',  '部门管理',       '1',   '4', 'dept',       'system/dept/index',                 '', 1, 0, 'C', '0', '0', 'system:dept:list',        'tree',          'admin', sysdate(), '', null, '部门管理菜单');
+insert into sys_menu values('104',  '岗位管理',       '1',   '5', 'post',       'system/post/index',                 '', 1, 0, 'C', '0', '0', 'system:post:list',        'post',          'admin', sysdate(), '', null, '岗位管理菜单');
+insert into sys_menu values('105',  '字典管理',       '1',   '6', 'dict',       'system/dict/index',                 '', 1, 0, 'C', '0', '0', 'system:dict:list',        'dict',          'admin', sysdate(), '', null, '字典管理菜单');
+insert into sys_menu values('106',  '参数设置',       '1',   '7', 'config',     'system/config/index',               '', 1, 0, 'C', '0', '0', 'system:config:list',      'edit',          'admin', sysdate(), '', null, '参数设置菜单');
+insert into sys_menu values('107',  '通知公告',       '1',   '8', 'notice',     'system/notice/index',               '', 1, 0, 'C', '0', '0', 'system:notice:list',      'message',       'admin', sysdate(), '', null, '通知公告菜单');
+insert into sys_menu values('108',  '日志管理',       '1',   '9', 'log',        '',                                  '', 1, 0, 'M', '0', '0', '',                        'log',           'admin', sysdate(), '', null, '日志管理菜单');
+insert into sys_menu values('109',  '在线用户',       '2',   '1', 'online',     'monitor/online/index',              '', 1, 0, 'C', '0', '0', 'monitor:online:list',     'online',        'admin', sysdate(), '', null, '在线用户菜单');
+insert into sys_menu values('110',  '定时任务',       '2',   '2', 'job',        'monitor/job/index',                 '', 1, 0, 'C', '0', '0', 'monitor:job:list',        'job',           'admin', sysdate(), '', null, '定时任务菜单');
+insert into sys_menu values('111',  'Sentinel控制台', '2',   '3', 'http://localhost:8718',        '',                '', 0, 0, 'C', '0', '0', 'monitor:sentinel:list',   'sentinel',      'admin', sysdate(), '', null, '流量控制菜单');
+insert into sys_menu values('112',  'Nacos控制台',    '2',   '4', 'http://localhost:8848/nacos',  '',                '', 0, 0, 'C', '0', '0', 'monitor:nacos:list',      'nacos',         'admin', sysdate(), '', null, '服务治理菜单');
+insert into sys_menu values('113',  'Admin控制台',    '2',   '5', 'http://localhost:9100/login',  '',                '', 0, 0, 'C', '0', '0', 'monitor:server:list',     'server',        'admin', sysdate(), '', null, '服务监控菜单');
+insert into sys_menu values('114',  '表单构建',       '3',   '1', 'build',      'tool/build/index',                  '', 1, 0, 'C', '0', '0', 'tool:build:list',         'build',         'admin', sysdate(), '', null, '表单构建菜单');
+insert into sys_menu values('115',  '代码生成',       '3',   '2', 'gen',        'tool/gen/index',                    '', 1, 0, 'C', '0', '0', 'tool:gen:list',           'code',          'admin', sysdate(), '', null, '代码生成菜单');
+insert into sys_menu values('116',  '系统接口',       '3',   '3', 'http://localhost:8080/swagger-ui/index.html', '', '', 0, 0, 'C', '0', '0', 'tool:swagger:list',       'swagger',       'admin', sysdate(), '', null, '系统接口菜单');
+-- 三级菜单
+insert into sys_menu values('500',  '操作日志', '108', '1', 'operlog',    'system/operlog/index',    '', 1, 0, 'C', '0', '0', 'system:operlog:list',    'form',          'admin', sysdate(), '', null, '操作日志菜单');
+insert into sys_menu values('501',  '登录日志', '108', '2', 'logininfor', 'system/logininfor/index', '', 1, 0, 'C', '0', '0', 'system:logininfor:list', 'logininfor',    'admin', sysdate(), '', null, '登录日志菜单');
+-- 用户管理按钮
+insert into sys_menu values('1000', '用户查询', '100', '1',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:query',          '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1001', '用户新增', '100', '2',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:add',            '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1002', '用户修改', '100', '3',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:edit',           '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1003', '用户删除', '100', '4',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:remove',         '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1004', '用户导出', '100', '5',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:export',         '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1005', '用户导入', '100', '6',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:import',         '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1006', '重置密码', '100', '7',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:resetPwd',       '#', 'admin', sysdate(), '', null, '');
+-- 角色管理按钮
+insert into sys_menu values('1007', '角色查询', '101', '1',  '', '', '', 1, 0, 'F', '0', '0', 'system:role:query',          '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1008', '角色新增', '101', '2',  '', '', '', 1, 0, 'F', '0', '0', 'system:role:add',            '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1009', '角色修改', '101', '3',  '', '', '', 1, 0, 'F', '0', '0', 'system:role:edit',           '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1010', '角色删除', '101', '4',  '', '', '', 1, 0, 'F', '0', '0', 'system:role:remove',         '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1011', '角色导出', '101', '5',  '', '', '', 1, 0, 'F', '0', '0', 'system:role:export',         '#', 'admin', sysdate(), '', null, '');
+-- 菜单管理按钮
+insert into sys_menu values('1012', '菜单查询', '102', '1',  '', '', '', 1, 0, 'F', '0', '0', 'system:menu:query',          '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1013', '菜单新增', '102', '2',  '', '', '', 1, 0, 'F', '0', '0', 'system:menu:add',            '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1014', '菜单修改', '102', '3',  '', '', '', 1, 0, 'F', '0', '0', 'system:menu:edit',           '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1015', '菜单删除', '102', '4',  '', '', '', 1, 0, 'F', '0', '0', 'system:menu:remove',         '#', 'admin', sysdate(), '', null, '');
+-- 部门管理按钮
+insert into sys_menu values('1016', '部门查询', '103', '1',  '', '', '', 1, 0, 'F', '0', '0', 'system:dept:query',          '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1017', '部门新增', '103', '2',  '', '', '', 1, 0, 'F', '0', '0', 'system:dept:add',            '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1018', '部门修改', '103', '3',  '', '', '', 1, 0, 'F', '0', '0', 'system:dept:edit',           '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1019', '部门删除', '103', '4',  '', '', '', 1, 0, 'F', '0', '0', 'system:dept:remove',         '#', 'admin', sysdate(), '', null, '');
+-- 岗位管理按钮
+insert into sys_menu values('1020', '岗位查询', '104', '1',  '', '', '', 1, 0, 'F', '0', '0', 'system:post:query',          '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1021', '岗位新增', '104', '2',  '', '', '', 1, 0, 'F', '0', '0', 'system:post:add',            '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1022', '岗位修改', '104', '3',  '', '', '', 1, 0, 'F', '0', '0', 'system:post:edit',           '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1023', '岗位删除', '104', '4',  '', '', '', 1, 0, 'F', '0', '0', 'system:post:remove',         '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1024', '岗位导出', '104', '5',  '', '', '', 1, 0, 'F', '0', '0', 'system:post:export',         '#', 'admin', sysdate(), '', null, '');
+-- 字典管理按钮
+insert into sys_menu values('1025', '字典查询', '105', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:query',          '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1026', '字典新增', '105', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:add',            '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1027', '字典修改', '105', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:edit',           '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1028', '字典删除', '105', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:remove',         '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1029', '字典导出', '105', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:export',         '#', 'admin', sysdate(), '', null, '');
+-- 参数设置按钮
+insert into sys_menu values('1030', '参数查询', '106', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:query',        '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1031', '参数新增', '106', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:add',          '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1032', '参数修改', '106', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:edit',         '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1033', '参数删除', '106', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:remove',       '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1034', '参数导出', '106', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:export',       '#', 'admin', sysdate(), '', null, '');
+-- 通知公告按钮
+insert into sys_menu values('1035', '公告查询', '107', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:query',        '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1036', '公告新增', '107', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:add',          '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1037', '公告修改', '107', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:edit',         '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1038', '公告删除', '107', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:remove',       '#', 'admin', sysdate(), '', null, '');
+-- 操作日志按钮
+insert into sys_menu values('1039', '操作查询', '500', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:operlog:query',       '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1040', '操作删除', '500', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:operlog:remove',      '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1041', '日志导出', '500', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:operlog:export',      '#', 'admin', sysdate(), '', null, '');
+-- 登录日志按钮
+insert into sys_menu values('1042', '登录查询', '501', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:query',    '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1043', '登录删除', '501', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:remove',   '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1044', '日志导出', '501', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:export',   '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1045', '账户解锁', '501', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:unlock',   '#', 'admin', sysdate(), '', null, '');
+-- 在线用户按钮
+insert into sys_menu values('1046', '在线查询', '109', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:query',       '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1047', '批量强退', '109', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1048', '单条强退', '109', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:forceLogout', '#', 'admin', sysdate(), '', null, '');
+-- 定时任务按钮
+insert into sys_menu values('1049', '任务查询', '110', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:query',          '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1050', '任务新增', '110', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:add',            '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1051', '任务修改', '110', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:edit',           '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1052', '任务删除', '110', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:remove',         '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1053', '状态修改', '110', '5', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:changeStatus',   '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1054', '任务导出', '110', '6', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:export',         '#', 'admin', sysdate(), '', null, '');
+-- 代码生成按钮
+insert into sys_menu values('1055', '生成查询', '115', '1', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:query',             '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1056', '生成修改', '115', '2', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:edit',              '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1057', '生成删除', '115', '3', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:remove',            '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1058', '导入代码', '115', '2', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:import',            '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1059', '预览代码', '115', '4', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:preview',           '#', 'admin', sysdate(), '', null, '');
+insert into sys_menu values('1060', '生成代码', '115', '5', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:code',              '#', 'admin', sysdate(), '', null, '');
+
+
+-- ----------------------------
+-- 6、用户和角色关联表  用户N-1角色
+-- ----------------------------
+drop table if exists sys_user_role;
+create table sys_user_role (
+  user_id   bigint(20) not null comment '用户ID',
+  role_id   bigint(20) not null comment '角色ID',
+  primary key(user_id, role_id)
+) engine=innodb comment = '用户和角色关联表';
+
+-- ----------------------------
+-- 初始化-用户和角色关联表数据
+-- ----------------------------
+insert into sys_user_role values ('1', '1');
+insert into sys_user_role values ('2', '2');
+
+
+-- ----------------------------
+-- 7、角色和菜单关联表  角色1-N菜单
+-- ----------------------------
+drop table if exists sys_role_menu;
+create table sys_role_menu (
+  role_id   bigint(20) not null comment '角色ID',
+  menu_id   bigint(20) not null comment '菜单ID',
+  primary key(role_id, menu_id)
+) engine=innodb comment = '角色和菜单关联表';
+
+-- ----------------------------
+-- 初始化-角色和菜单关联表数据
+-- ----------------------------
+insert into sys_role_menu values ('2', '1');
+insert into sys_role_menu values ('2', '2');
+insert into sys_role_menu values ('2', '3');
+insert into sys_role_menu values ('2', '4');
+insert into sys_role_menu values ('2', '100');
+insert into sys_role_menu values ('2', '101');
+insert into sys_role_menu values ('2', '102');
+insert into sys_role_menu values ('2', '103');
+insert into sys_role_menu values ('2', '104');
+insert into sys_role_menu values ('2', '105');
+insert into sys_role_menu values ('2', '106');
+insert into sys_role_menu values ('2', '107');
+insert into sys_role_menu values ('2', '108');
+insert into sys_role_menu values ('2', '109');
+insert into sys_role_menu values ('2', '110');
+insert into sys_role_menu values ('2', '111');
+insert into sys_role_menu values ('2', '112');
+insert into sys_role_menu values ('2', '113');
+insert into sys_role_menu values ('2', '114');
+insert into sys_role_menu values ('2', '115');
+insert into sys_role_menu values ('2', '116');
+insert into sys_role_menu values ('2', '500');
+insert into sys_role_menu values ('2', '501');
+insert into sys_role_menu values ('2', '1000');
+insert into sys_role_menu values ('2', '1001');
+insert into sys_role_menu values ('2', '1002');
+insert into sys_role_menu values ('2', '1003');
+insert into sys_role_menu values ('2', '1004');
+insert into sys_role_menu values ('2', '1005');
+insert into sys_role_menu values ('2', '1006');
+insert into sys_role_menu values ('2', '1007');
+insert into sys_role_menu values ('2', '1008');
+insert into sys_role_menu values ('2', '1009');
+insert into sys_role_menu values ('2', '1010');
+insert into sys_role_menu values ('2', '1011');
+insert into sys_role_menu values ('2', '1012');
+insert into sys_role_menu values ('2', '1013');
+insert into sys_role_menu values ('2', '1014');
+insert into sys_role_menu values ('2', '1015');
+insert into sys_role_menu values ('2', '1016');
+insert into sys_role_menu values ('2', '1017');
+insert into sys_role_menu values ('2', '1018');
+insert into sys_role_menu values ('2', '1019');
+insert into sys_role_menu values ('2', '1020');
+insert into sys_role_menu values ('2', '1021');
+insert into sys_role_menu values ('2', '1022');
+insert into sys_role_menu values ('2', '1023');
+insert into sys_role_menu values ('2', '1024');
+insert into sys_role_menu values ('2', '1025');
+insert into sys_role_menu values ('2', '1026');
+insert into sys_role_menu values ('2', '1027');
+insert into sys_role_menu values ('2', '1028');
+insert into sys_role_menu values ('2', '1029');
+insert into sys_role_menu values ('2', '1030');
+insert into sys_role_menu values ('2', '1031');
+insert into sys_role_menu values ('2', '1032');
+insert into sys_role_menu values ('2', '1033');
+insert into sys_role_menu values ('2', '1034');
+insert into sys_role_menu values ('2', '1035');
+insert into sys_role_menu values ('2', '1036');
+insert into sys_role_menu values ('2', '1037');
+insert into sys_role_menu values ('2', '1038');
+insert into sys_role_menu values ('2', '1039');
+insert into sys_role_menu values ('2', '1040');
+insert into sys_role_menu values ('2', '1041');
+insert into sys_role_menu values ('2', '1042');
+insert into sys_role_menu values ('2', '1043');
+insert into sys_role_menu values ('2', '1044');
+insert into sys_role_menu values ('2', '1045');
+insert into sys_role_menu values ('2', '1046');
+insert into sys_role_menu values ('2', '1047');
+insert into sys_role_menu values ('2', '1048');
+insert into sys_role_menu values ('2', '1049');
+insert into sys_role_menu values ('2', '1050');
+insert into sys_role_menu values ('2', '1051');
+insert into sys_role_menu values ('2', '1052');
+insert into sys_role_menu values ('2', '1053');
+insert into sys_role_menu values ('2', '1054');
+insert into sys_role_menu values ('2', '1055');
+insert into sys_role_menu values ('2', '1056');
+insert into sys_role_menu values ('2', '1057');
+insert into sys_role_menu values ('2', '1058');
+insert into sys_role_menu values ('2', '1059');
+insert into sys_role_menu values ('2', '1060');
+
+-- ----------------------------
+-- 8、角色和部门关联表  角色1-N部门
+-- ----------------------------
+drop table if exists sys_role_dept;
+create table sys_role_dept (
+  role_id   bigint(20) not null comment '角色ID',
+  dept_id   bigint(20) not null comment '部门ID',
+  primary key(role_id, dept_id)
+) engine=innodb comment = '角色和部门关联表';
+
+-- ----------------------------
+-- 初始化-角色和部门关联表数据
+-- ----------------------------
+insert into sys_role_dept values ('2', '100');
+insert into sys_role_dept values ('2', '101');
+insert into sys_role_dept values ('2', '105');
+
+
+-- ----------------------------
+-- 9、用户与岗位关联表  用户1-N岗位
+-- ----------------------------
+drop table if exists sys_user_post;
+create table sys_user_post
+(
+  user_id   bigint(20) not null comment '用户ID',
+  post_id   bigint(20) not null comment '岗位ID',
+  primary key (user_id, post_id)
+) engine=innodb comment = '用户与岗位关联表';
+
+-- ----------------------------
+-- 初始化-用户与岗位关联表数据
+-- ----------------------------
+insert into sys_user_post values ('1', '1');
+insert into sys_user_post values ('2', '2');
+
+
+-- ----------------------------
+-- 10、操作日志记录
+-- ----------------------------
+drop table if exists sys_oper_log;
+create table sys_oper_log (
+  oper_id           bigint(20)      not null auto_increment    comment '日志主键',
+  title             varchar(50)     default ''                 comment '模块标题',
+  business_type     int(2)          default 0                  comment '业务类型(0其它 1新增 2修改 3删除)',
+  method            varchar(100)    default ''                 comment '方法名称',
+  request_method    varchar(10)     default ''                 comment '请求方式',
+  operator_type     int(1)          default 0                  comment '操作类别(0其它 1后台用户 2手机端用户)',
+  oper_name         varchar(50)     default ''                 comment '操作人员',
+  dept_name         varchar(50)     default ''                 comment '部门名称',
+  oper_url          varchar(255)    default ''                 comment '请求URL',
+  oper_ip           varchar(128)    default ''                 comment '主机地址',
+  oper_location     varchar(255)    default ''                 comment '操作地点',
+  oper_param        varchar(2000)   default ''                 comment '请求参数',
+  json_result       varchar(2000)   default ''                 comment '返回参数',
+  status            int(1)          default 0                  comment '操作状态(0正常 1异常)',
+  error_msg         varchar(2000)   default ''                 comment '错误消息',
+  oper_time         datetime                                   comment '操作时间',
+  cost_time         bigint(20)      default 0                  comment '消耗时间',
+  primary key (oper_id),
+  key idx_sys_oper_log_bt (business_type),
+  key idx_sys_oper_log_s  (status),
+  key idx_sys_oper_log_ot (oper_time)
+) engine=innodb auto_increment=100 comment = '操作日志记录';
+
+
+-- ----------------------------
+-- 11、字典类型表
+-- ----------------------------
+drop table if exists sys_dict_type;
+create table sys_dict_type
+(
+  dict_id          bigint(20)      not null auto_increment    comment '字典主键',
+  dict_name        varchar(100)    default ''                 comment '字典名称',
+  dict_type        varchar(100)    default ''                 comment '字典类型',
+  status           char(1)         default '0'                comment '状态(0正常 1停用)',
+  create_by        varchar(64)     default ''                 comment '创建者',
+  create_time      datetime                                   comment '创建时间',
+  update_by        varchar(64)     default ''                 comment '更新者',
+  update_time      datetime                                   comment '更新时间',
+  remark           varchar(500)    default null               comment '备注',
+  primary key (dict_id),
+  unique (dict_type)
+) engine=innodb auto_increment=100 comment = '字典类型表';
+
+insert into sys_dict_type values(1,  '用户性别', 'sys_user_sex',        '0', 'admin', sysdate(), '', null, '用户性别列表');
+insert into sys_dict_type values(2,  '菜单状态', 'sys_show_hide',       '0', 'admin', sysdate(), '', null, '菜单状态列表');
+insert into sys_dict_type values(3,  '系统开关', 'sys_normal_disable',  '0', 'admin', sysdate(), '', null, '系统开关列表');
+insert into sys_dict_type values(4,  '任务状态', 'sys_job_status',      '0', 'admin', sysdate(), '', null, '任务状态列表');
+insert into sys_dict_type values(5,  '任务分组', 'sys_job_group',       '0', 'admin', sysdate(), '', null, '任务分组列表');
+insert into sys_dict_type values(6,  '系统是否', 'sys_yes_no',          '0', 'admin', sysdate(), '', null, '系统是否列表');
+insert into sys_dict_type values(7,  '通知类型', 'sys_notice_type',     '0', 'admin', sysdate(), '', null, '通知类型列表');
+insert into sys_dict_type values(8,  '通知状态', 'sys_notice_status',   '0', 'admin', sysdate(), '', null, '通知状态列表');
+insert into sys_dict_type values(9,  '操作类型', 'sys_oper_type',       '0', 'admin', sysdate(), '', null, '操作类型列表');
+insert into sys_dict_type values(10, '系统状态', 'sys_common_status',   '0', 'admin', sysdate(), '', null, '登录状态列表');
+
+
+-- ----------------------------
+-- 12、字典数据表
+-- ----------------------------
+drop table if exists sys_dict_data;
+create table sys_dict_data
+(
+  dict_code        bigint(20)      not null auto_increment    comment '字典编码',
+  dict_sort        int(4)          default 0                  comment '字典排序',
+  dict_label       varchar(100)    default ''                 comment '字典标签',
+  dict_value       varchar(100)    default ''                 comment '字典键值',
+  dict_type        varchar(100)    default ''                 comment '字典类型',
+  css_class        varchar(100)    default null               comment '样式属性(其他样式扩展)',
+  list_class       varchar(100)    default null               comment '表格回显样式',
+  is_default       char(1)         default 'N'                comment '是否默认(Y是 N否)',
+  status           char(1)         default '0'                comment '状态(0正常 1停用)',
+  create_by        varchar(64)     default ''                 comment '创建者',
+  create_time      datetime                                   comment '创建时间',
+  update_by        varchar(64)     default ''                 comment '更新者',
+  update_time      datetime                                   comment '更新时间',
+  remark           varchar(500)    default null               comment '备注',
+  primary key (dict_code)
+) engine=innodb auto_increment=100 comment = '字典数据表';
+
+insert into sys_dict_data values(1,  1,  '男',       '0',       'sys_user_sex',        '',   '',        'Y', '0', 'admin', sysdate(), '', null, '性别男');
+insert into sys_dict_data values(2,  2,  '女',       '1',       'sys_user_sex',        '',   '',        'N', '0', 'admin', sysdate(), '', null, '性别女');
+insert into sys_dict_data values(3,  3,  '未知',     '2',       'sys_user_sex',        '',   '',        'N', '0', 'admin', sysdate(), '', null, '性别未知');
+insert into sys_dict_data values(4,  1,  '显示',     '0',       'sys_show_hide',       '',   'primary', 'Y', '0', 'admin', sysdate(), '', null, '显示菜单');
+insert into sys_dict_data values(5,  2,  '隐藏',     '1',       'sys_show_hide',       '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '隐藏菜单');
+insert into sys_dict_data values(6,  1,  '正常',     '0',       'sys_normal_disable',  '',   'primary', 'Y', '0', 'admin', sysdate(), '', null, '正常状态');
+insert into sys_dict_data values(7,  2,  '停用',     '1',       'sys_normal_disable',  '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '停用状态');
+insert into sys_dict_data values(8,  1,  '正常',     '0',       'sys_job_status',      '',   'primary', 'Y', '0', 'admin', sysdate(), '', null, '正常状态');
+insert into sys_dict_data values(9,  2,  '暂停',     '1',       'sys_job_status',      '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '停用状态');
+insert into sys_dict_data values(10, 1,  '默认',     'DEFAULT', 'sys_job_group',       '',   '',        'Y', '0', 'admin', sysdate(), '', null, '默认分组');
+insert into sys_dict_data values(11, 2,  '系统',     'SYSTEM',  'sys_job_group',       '',   '',        'N', '0', 'admin', sysdate(), '', null, '系统分组');
+insert into sys_dict_data values(12, 1,  '是',       'Y',       'sys_yes_no',          '',   'primary', 'Y', '0', 'admin', sysdate(), '', null, '系统默认是');
+insert into sys_dict_data values(13, 2,  '否',       'N',       'sys_yes_no',          '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '系统默认否');
+insert into sys_dict_data values(14, 1,  '通知',     '1',       'sys_notice_type',     '',   'warning', 'Y', '0', 'admin', sysdate(), '', null, '通知');
+insert into sys_dict_data values(15, 2,  '公告',     '2',       'sys_notice_type',     '',   'success', 'N', '0', 'admin', sysdate(), '', null, '公告');
+insert into sys_dict_data values(16, 1,  '正常',     '0',       'sys_notice_status',   '',   'primary', 'Y', '0', 'admin', sysdate(), '', null, '正常状态');
+insert into sys_dict_data values(17, 2,  '关闭',     '1',       'sys_notice_status',   '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '关闭状态');
+insert into sys_dict_data values(18, 99, '其他',     '0',       'sys_oper_type',       '',   'info',    'N', '0', 'admin', sysdate(), '', null, '其他操作');
+insert into sys_dict_data values(19, 1,  '新增',     '1',       'sys_oper_type',       '',   'info',    'N', '0', 'admin', sysdate(), '', null, '新增操作');
+insert into sys_dict_data values(20, 2,  '修改',     '2',       'sys_oper_type',       '',   'info',    'N', '0', 'admin', sysdate(), '', null, '修改操作');
+insert into sys_dict_data values(21, 3,  '删除',     '3',       'sys_oper_type',       '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '删除操作');
+insert into sys_dict_data values(22, 4,  '授权',     '4',       'sys_oper_type',       '',   'primary', 'N', '0', 'admin', sysdate(), '', null, '授权操作');
+insert into sys_dict_data values(23, 5,  '导出',     '5',       'sys_oper_type',       '',   'warning', 'N', '0', 'admin', sysdate(), '', null, '导出操作');
+insert into sys_dict_data values(24, 6,  '导入',     '6',       'sys_oper_type',       '',   'warning', 'N', '0', 'admin', sysdate(), '', null, '导入操作');
+insert into sys_dict_data values(25, 7,  '强退',     '7',       'sys_oper_type',       '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '强退操作');
+insert into sys_dict_data values(26, 8,  '生成代码', '8',       'sys_oper_type',       '',   'warning', 'N', '0', 'admin', sysdate(), '', null, '生成操作');
+insert into sys_dict_data values(27, 9,  '清空数据', '9',       'sys_oper_type',       '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '清空操作');
+insert into sys_dict_data values(28, 1,  '成功',     '0',       'sys_common_status',   '',   'primary', 'N', '0', 'admin', sysdate(), '', null, '正常状态');
+insert into sys_dict_data values(29, 2,  '失败',     '1',       'sys_common_status',   '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '停用状态');
+
+
+-- ----------------------------
+-- 13、参数配置表
+-- ----------------------------
+drop table if exists sys_config;
+create table sys_config (
+  config_id         int(5)          not null auto_increment    comment '参数主键',
+  config_name       varchar(100)    default ''                 comment '参数名称',
+  config_key        varchar(100)    default ''                 comment '参数键名',
+  config_value      varchar(500)    default ''                 comment '参数键值',
+  config_type       char(1)         default 'N'                comment '系统内置(Y是 N否)',
+  create_by         varchar(64)     default ''                 comment '创建者',
+  create_time       datetime                                   comment '创建时间',
+  update_by         varchar(64)     default ''                 comment '更新者',
+  update_time       datetime                                   comment '更新时间',
+  remark            varchar(500)    default null               comment '备注',
+  primary key (config_id)
+) engine=innodb auto_increment=100 comment = '参数配置表';
+
+insert into sys_config values(1, '主框架页-默认皮肤样式名称',     'sys.index.skinName',       'skin-blue',     'Y', 'admin', sysdate(), '', null, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow' );
+insert into sys_config values(2, '用户管理-账号初始密码',         'sys.user.initPassword',    '123456',        'Y', 'admin', sysdate(), '', null, '初始化密码 123456' );
+insert into sys_config values(3, '主框架页-侧边栏主题',           'sys.index.sideTheme',      'theme-dark',    'Y', 'admin', sysdate(), '', null, '深色主题theme-dark,浅色主题theme-light' );
+insert into sys_config values(4, '账号自助-是否开启用户注册功能', 'sys.account.registerUser', 'false',         'Y', 'admin', sysdate(), '', null, '是否开启注册用户功能(true开启,false关闭)');
+insert into sys_config values(5, '用户登录-黑名单列表',           'sys.login.blackIPList',    '',              'Y', 'admin', sysdate(), '', null, '设置登录IP黑名单限制,多个匹配项以;分隔,支持匹配(*通配、网段)');
+
+
+-- ----------------------------
+-- 14、系统访问记录
+-- ----------------------------
+drop table if exists sys_logininfor;
+create table sys_logininfor (
+  info_id        bigint(20)     not null auto_increment   comment '访问ID',
+  user_name      varchar(50)    default ''                comment '用户账号',
+  ipaddr         varchar(128)   default ''                comment '登录IP地址',
+  status         char(1)        default '0'               comment '登录状态(0成功 1失败)',
+  msg            varchar(255)   default ''                comment '提示信息',
+  access_time    datetime                                 comment '访问时间',
+  primary key (info_id),
+  key idx_sys_logininfor_s  (status),
+  key idx_sys_logininfor_lt (access_time)
+) engine=innodb auto_increment=100 comment = '系统访问记录';
+
+
+-- ----------------------------
+-- 15、定时任务调度表
+-- ----------------------------
+drop table if exists sys_job;
+create table sys_job (
+  job_id              bigint(20)    not null auto_increment    comment '任务ID',
+  job_name            varchar(64)   default ''                 comment '任务名称',
+  job_group           varchar(64)   default 'DEFAULT'          comment '任务组名',
+  invoke_target       varchar(500)  not null                   comment '调用目标字符串',
+  cron_expression     varchar(255)  default ''                 comment 'cron执行表达式',
+  misfire_policy      varchar(20)   default '3'                comment '计划执行错误策略(1立即执行 2执行一次 3放弃执行)',
+  concurrent          char(1)       default '1'                comment '是否并发执行(0允许 1禁止)',
+  status              char(1)       default '0'                comment '状态(0正常 1暂停)',
+  create_by           varchar(64)   default ''                 comment '创建者',
+  create_time         datetime                                 comment '创建时间',
+  update_by           varchar(64)   default ''                 comment '更新者',
+  update_time         datetime                                 comment '更新时间',
+  remark              varchar(500)  default ''                 comment '备注信息',
+  primary key (job_id, job_name, job_group)
+) engine=innodb auto_increment=100 comment = '定时任务调度表';
+
+insert into sys_job values(1, '系统默认(无参)', 'DEFAULT', 'ryTask.ryNoParams',        '0/10 * * * * ?', '3', '1', '1', 'admin', sysdate(), '', null, '');
+insert into sys_job values(2, '系统默认(有参)', 'DEFAULT', 'ryTask.ryParams(\'ry\')',  '0/15 * * * * ?', '3', '1', '1', 'admin', sysdate(), '', null, '');
+insert into sys_job values(3, '系统默认(多参)', 'DEFAULT', 'ryTask.ryMultipleParams(\'ry\', true, 2000L, 316.50D, 100)',  '0/20 * * * * ?', '3', '1', '1', 'admin', sysdate(), '', null, '');
+
+
+-- ----------------------------
+-- 16、定时任务调度日志表
+-- ----------------------------
+drop table if exists sys_job_log;
+create table sys_job_log (
+  job_log_id          bigint(20)     not null auto_increment    comment '任务日志ID',
+  job_name            varchar(64)    not null                   comment '任务名称',
+  job_group           varchar(64)    not null                   comment '任务组名',
+  invoke_target       varchar(500)   not null                   comment '调用目标字符串',
+  job_message         varchar(500)                              comment '日志信息',
+  status              char(1)        default '0'                comment '执行状态(0正常 1失败)',
+  exception_info      varchar(2000)  default ''                 comment '异常信息',
+  create_time         datetime                                  comment '创建时间',
+  primary key (job_log_id)
+) engine=innodb comment = '定时任务调度日志表';
+
+
+-- ----------------------------
+-- 17、通知公告表
+-- ----------------------------
+drop table if exists sys_notice;
+create table sys_notice (
+  notice_id         int(4)          not null auto_increment    comment '公告ID',
+  notice_title      varchar(50)     not null                   comment '公告标题',
+  notice_type       char(1)         not null                   comment '公告类型(1通知 2公告)',
+  notice_content    longblob        default null               comment '公告内容',
+  status            char(1)         default '0'                comment '公告状态(0正常 1关闭)',
+  create_by         varchar(64)     default ''                 comment '创建者',
+  create_time       datetime                                   comment '创建时间',
+  update_by         varchar(64)     default ''                 comment '更新者',
+  update_time       datetime                                   comment '更新时间',
+  remark            varchar(255)    default null               comment '备注',
+  primary key (notice_id)
+) engine=innodb auto_increment=10 comment = '通知公告表';
+
+-- ----------------------------
+-- 初始化-公告信息表数据
+-- ----------------------------
+insert into sys_notice values('1', '温馨提醒:2018-07-01 若依新版本发布啦', '2', '新版本内容', '0', 'admin', sysdate(), '', null, '管理员');
+insert into sys_notice values('2', '维护通知:2018-07-01 若依系统凌晨维护', '1', '维护内容',   '0', 'admin', sysdate(), '', null, '管理员');
+
+
+-- ----------------------------
+-- 18、代码生成业务表
+-- ----------------------------
+drop table if exists gen_table;
+create table gen_table (
+  table_id          bigint(20)      not null auto_increment    comment '编号',
+  table_name        varchar(200)    default ''                 comment '表名称',
+  table_comment     varchar(500)    default ''                 comment '表描述',
+  sub_table_name    varchar(64)     default null               comment '关联子表的表名',
+  sub_table_fk_name varchar(64)     default null               comment '子表关联的外键名',
+  class_name        varchar(100)    default ''                 comment '实体类名称',
+  tpl_category      varchar(200)    default 'crud'             comment '使用的模板(crud单表操作 tree树表操作)',
+  package_name      varchar(100)                               comment '生成包路径',
+  module_name       varchar(30)                                comment '生成模块名',
+  business_name     varchar(30)                                comment '生成业务名',
+  function_name     varchar(50)                                comment '生成功能名',
+  function_author   varchar(50)                                comment '生成功能作者',
+  gen_type          char(1)         default '0'                comment '生成代码方式(0zip压缩包 1自定义路径)',
+  gen_path          varchar(200)    default '/'                comment '生成路径(不填默认项目路径)',
+  options           varchar(1000)                              comment '其它生成选项',
+  create_by         varchar(64)     default ''                 comment '创建者',
+  create_time 	    datetime                                   comment '创建时间',
+  update_by         varchar(64)     default ''                 comment '更新者',
+  update_time       datetime                                   comment '更新时间',
+  remark            varchar(500)    default null               comment '备注',
+  primary key (table_id)
+) engine=innodb auto_increment=1 comment = '代码生成业务表';
+
+
+-- ----------------------------
+-- 19、代码生成业务表字段
+-- ----------------------------
+drop table if exists gen_table_column;
+create table gen_table_column (
+  column_id         bigint(20)      not null auto_increment    comment '编号',
+  table_id          varchar(64)                                comment '归属表编号',
+  column_name       varchar(200)                               comment '列名称',
+  column_comment    varchar(500)                               comment '列描述',
+  column_type       varchar(100)                               comment '列类型',
+  java_type         varchar(500)                               comment 'JAVA类型',
+  java_field        varchar(200)                               comment 'JAVA字段名',
+  is_pk             char(1)                                    comment '是否主键(1是)',
+  is_increment      char(1)                                    comment '是否自增(1是)',
+  is_required       char(1)                                    comment '是否必填(1是)',
+  is_insert         char(1)                                    comment '是否为插入字段(1是)',
+  is_edit           char(1)                                    comment '是否编辑字段(1是)',
+  is_list           char(1)                                    comment '是否列表字段(1是)',
+  is_query          char(1)                                    comment '是否查询字段(1是)',
+  query_type        varchar(200)    default 'EQ'               comment '查询方式(等于、不等于、大于、小于、范围)',
+  html_type         varchar(200)                               comment '显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)',
+  dict_type         varchar(200)    default ''                 comment '字典类型',
+  sort              int                                        comment '排序',
+  create_by         varchar(64)     default ''                 comment '创建者',
+  create_time 	    datetime                                   comment '创建时间',
+  update_by         varchar(64)     default ''                 comment '更新者',
+  update_time       datetime                                   comment '更新时间',
+  primary key (column_id)
+) engine=innodb auto_increment=1 comment = '代码生成业务表字段';

+ 219 - 0
sql/ry_config_20220929.sql

@@ -0,0 +1,219 @@
+DROP DATABASE IF EXISTS `ry-config`;
+
+CREATE DATABASE  `ry-config` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+USE `ry-config`;
+
+/******************************************/
+/*   表名称 = config_info   */
+/******************************************/
+CREATE TABLE `config_info` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
+  `group_id` varchar(255) DEFAULT NULL,
+  `content` longtext NOT NULL COMMENT 'content',
+  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
+  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  `src_user` text COMMENT 'source user',
+  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
+  `app_name` varchar(128) DEFAULT NULL,
+  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
+  `c_desc` varchar(256) DEFAULT NULL,
+  `c_use` varchar(64) DEFAULT NULL,
+  `effect` varchar(64) DEFAULT NULL,
+  `type` varchar(64) DEFAULT NULL,
+  `c_schema` text,
+  `encrypted_data_key` text COMMENT '秘钥',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
+
+insert into config_info(id, data_id, group_id, content, md5, gmt_create, gmt_modified, src_user, src_ip, app_name, tenant_id, c_desc, c_use, effect, type, c_schema, encrypted_data_key) values 
+(1,'application-dev.yml','DEFAULT_GROUP','spring:\n  autoconfigure:\n    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure\n  mvc:\n    pathmatch:\n      matching-strategy: ant_path_matcher\n\n# feign 配置\nfeign:\n  sentinel:\n    enabled: true\n  okhttp:\n    enabled: true\n  httpclient:\n    enabled: false\n  client:\n    config:\n      default:\n        connectTimeout: 10000\n        readTimeout: 10000\n  compression:\n    request:\n      enabled: true\n    response:\n      enabled: true\n\n# 暴露监控端点\nmanagement:\n  endpoints:\n    web:\n      exposure:\n        include: \'*\'\n','aaa73b809cfd4d0058893aa13da57806','2020-05-20 12:00:00','2022-04-24 10:26:34','nacos','0:0:0:0:0:0:0:1','','','通用配置','null','null','yaml',NULL,''),
+(2,'warst-gateway-dev.yml','DEFAULT_GROUP','spring:\n  redis:\n    host: localhost\n    port: 6379\n    password:\n  cloud:\n    gateway:\n      discovery:\n        locator:\n          lowerCaseServiceId: true\n          enabled: true\n      routes:\n        # 认证中心\n        - id: warst-auth\n          uri: lb://warst-auth\n          predicates:\n            - Path=/auth/**\n          filters:\n            # 验证码处理\n            - CacheRequestFilter\n            - ValidateCodeFilter\n            - StripPrefix=1\n        # 代码生成\n        - id: warst-gen\n          uri: lb://warst-gen\n          predicates:\n            - Path=/code/**\n          filters:\n            - StripPrefix=1\n        # 定时任务\n        - id: warst-job\n          uri: lb://warst-job\n          predicates:\n            - Path=/schedule/**\n          filters:\n            - StripPrefix=1\n        # 系统模块\n        - id: warst-system\n          uri: lb://warst-system\n          predicates:\n            - Path=/system/**\n          filters:\n            - StripPrefix=1\n        # 文件服务\n        - id: warst-file\n          uri: lb://warst-file\n          predicates:\n            - Path=/file/**\n          filters:\n            - StripPrefix=1\n\n# 安全配置\nsecurity:\n  # 验证码\n  captcha:\n    enabled: true\n    type: math\n  # 防止XSS攻击\n  xss:\n    enabled: true\n    excludeUrls:\n      - /system/notice\n  # 不校验白名单\n  ignore:\n    whites:\n      - /auth/logout\n      - /auth/login\n      - /auth/register\n      - /*/v2/api-docs\n      - /csrf\n','57cec5abd0e0a6b77d853750344a9dc0','2020-05-14 14:17:55','2022-09-29 02:48:32','nacos','0:0:0:0:0:0:0:1','','','网关模块','null','null','yaml','',''),
+(3,'warst-auth-dev.yml','DEFAULT_GROUP','spring:\n  redis:\n    host: localhost\n    port: 6379\n    password:\n','8bd9dada9a94822feeab40de55efced6','2020-11-20 00:00:00','2022-09-29 02:48:42','nacos','0:0:0:0:0:0:0:1','','','认证中心','null','null','yaml','',''),
+(4,'warst-monitor-dev.yml','DEFAULT_GROUP','# spring\nspring:\n  security:\n    user:\n      name: ruoyi\n      password: 123456\n  boot:\n    admin:\n      ui:\n        title: 若依服务状态监控\n','6f122fd2bfb8d45f858e7d6529a9cd44','2020-11-20 00:00:00','2022-09-29 02:48:54','nacos','0:0:0:0:0:0:0:1','','','监控中心','null','null','yaml','',''),
+(5,'warst-system-dev.yml','DEFAULT_GROUP','# spring配置\nspring:\n  redis:\n    host: localhost\n    port: 6379\n    password:\n  datasource:\n    druid:\n      stat-view-servlet:\n        enabled: true\n        loginUsername: admin\n        loginPassword: 123456\n    dynamic:\n      druid:\n        initial-size: 5\n        min-idle: 5\n        maxActive: 20\n        maxWait: 60000\n        timeBetweenEvictionRunsMillis: 60000\n        minEvictableIdleTimeMillis: 300000\n        validationQuery: SELECT 1 FROM DUAL\n        testWhileIdle: true\n        testOnBorrow: false\n        testOnReturn: false\n        poolPreparedStatements: true\n        maxPoolPreparedStatementPerConnectionSize: 20\n        filters: stat,slf4j\n        connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n      datasource:\n          # 主库数据源\n          master:\n            driver-class-name: com.mysql.cj.jdbc.Driver\n            url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n            username: root\n            password: password\n          # 从库数据源\n          # slave:\n            # username: \n            # password: \n            # url: \n            # driver-class-name: \n\n# mybatis配置\nmybatis:\n    # 搜索指定包别名\n    typeAliasesPackage: com.warst.system\n    # 配置mapper的扫描,找到所有的mapper.xml映射文件\n    mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n  title: 系统模块接口文档\n  license: Powered By ruoyi\n  licenseUrl: https://ruoyi.vip','48e0ed4a040c402bdc2444213a82c910','2020-11-20 00:00:00','2022-09-29 02:49:09','nacos','0:0:0:0:0:0:0:1','','','系统模块','null','null','yaml','',''),
+(6,'warst-gen-dev.yml','DEFAULT_GROUP','# spring配置\nspring:\n  redis:\n    host: localhost\n    port: 6379\n    password:\n  datasource:\n    driver-class-name: com.mysql.cj.jdbc.Driver\n    url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n    username: root\n    password: password\n\n# mybatis配置\nmybatis:\n    # 搜索指定包别名\n    typeAliasesPackage: com.warst.gen.domain\n    # 配置mapper的扫描,找到所有的mapper.xml映射文件\n    mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n  title: 代码生成接口文档\n  license: Powered By ruoyi\n  licenseUrl: https://ruoyi.vip\n\n# 代码生成\ngen:\n  # 作者\n  author: ruoyi\n  # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool\n  packageName: com.warst.system\n  # 自动去除表前缀,默认是false\n  autoRemovePre: false\n  # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)\n  tablePrefix: sys_\n','eb592420b3fceae1402881887b8a6a0d','2020-11-20 00:00:00','2022-09-29 02:49:42','nacos','0:0:0:0:0:0:0:1','','','代码生成','null','null','yaml','',''),
+(7,'warst-job-dev.yml','DEFAULT_GROUP','# spring配置\nspring:\n  redis:\n    host: localhost\n    port: 6379\n    password: \n  datasource:\n    driver-class-name: com.mysql.cj.jdbc.Driver\n    url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n    username: root\n    password: password\n\n# mybatis配置\nmybatis:\n    # 搜索指定包别名\n    typeAliasesPackage: com.warst.job.domain\n    # 配置mapper的扫描,找到所有的mapper.xml映射文件\n    mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n  title: 定时任务接口文档\n  license: Powered By ruoyi\n  licenseUrl: https://ruoyi.vip\n','edcf0e3fe13fea07b4ec08b1088f30b3','2020-11-20 00:00:00','2022-09-29 02:50:50','nacos','0:0:0:0:0:0:0:1','','','定时任务','null','null','yaml','',''),
+(8,'warst-file-dev.yml','DEFAULT_GROUP','# 本地文件上传    \r\nfile:\r\n    domain: http://127.0.0.1:9300\r\n    path: D:/ruoyi/uploadPath\r\n    prefix: /statics\r\n\r\n# FastDFS配置\r\nfdfs:\r\n  domain: http://8.129.231.12\r\n  soTimeout: 3000\r\n  connectTimeout: 2000\r\n  trackerList: 8.129.231.12:22122\r\n\r\n# Minio配置\r\nminio:\r\n  url: http://8.129.231.12:9000\r\n  accessKey: minioadmin\r\n  secretKey: minioadmin\r\n  bucketName: test','5382b93f3d8059d6068c0501fdd41195','2020-11-20 00:00:00','2020-12-21 21:01:59',NULL,'0:0:0:0:0:0:0:1','','','文件服务','null','null','yaml',NULL,''),
+(9,'sentinel-warst-gateway','DEFAULT_GROUP','[\r\n    {\r\n        \"resource\": \"warst-auth\",\r\n        \"count\": 500,\r\n        \"grade\": 1,\r\n        \"limitApp\": \"default\",\r\n        \"strategy\": 0,\r\n        \"controlBehavior\": 0\r\n    },\r\n	{\r\n        \"resource\": \"warst-system\",\r\n        \"count\": 1000,\r\n        \"grade\": 1,\r\n        \"limitApp\": \"default\",\r\n        \"strategy\": 0,\r\n        \"controlBehavior\": 0\r\n    },\r\n	{\r\n        \"resource\": \"warst-gen\",\r\n        \"count\": 200,\r\n        \"grade\": 1,\r\n        \"limitApp\": \"default\",\r\n        \"strategy\": 0,\r\n        \"controlBehavior\": 0\r\n    },\r\n	{\r\n        \"resource\": \"warst-job\",\r\n        \"count\": 300,\r\n        \"grade\": 1,\r\n        \"limitApp\": \"default\",\r\n        \"strategy\": 0,\r\n        \"controlBehavior\": 0\r\n    }\r\n]','9f3a3069261598f74220bc47958ec252','2020-11-20 00:00:00','2020-11-20 00:00:00',NULL,'0:0:0:0:0:0:0:1','','','限流策略','null','null','json',NULL,'');
+
+
+/******************************************/
+/*   表名称 = config_info_aggr   */
+/******************************************/
+CREATE TABLE `config_info_aggr` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
+  `group_id` varchar(255) NOT NULL COMMENT 'group_id',
+  `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
+  `content` longtext NOT NULL COMMENT '内容',
+  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
+  `app_name` varchar(128) DEFAULT NULL,
+  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';
+
+
+/******************************************/
+/*   表名称 = config_info_beta   */
+/******************************************/
+CREATE TABLE `config_info_beta` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
+  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
+  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
+  `content` longtext NOT NULL COMMENT 'content',
+  `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
+  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
+  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  `src_user` text COMMENT 'source user',
+  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
+  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
+  `encrypted_data_key` text COMMENT '秘钥',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
+
+/******************************************/
+/*   表名称 = config_info_tag   */
+/******************************************/
+CREATE TABLE `config_info_tag` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
+  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
+  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
+  `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
+  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
+  `content` longtext NOT NULL COMMENT 'content',
+  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
+  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  `src_user` text COMMENT 'source user',
+  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
+
+/******************************************/
+/*   表名称 = config_tags_relation   */
+/******************************************/
+CREATE TABLE `config_tags_relation` (
+  `id` bigint(20) NOT NULL COMMENT 'id',
+  `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
+  `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
+  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
+  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
+  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
+  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
+  PRIMARY KEY (`nid`),
+  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
+  KEY `idx_tenant_id` (`tenant_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
+
+/******************************************/
+/*   表名称 = group_capacity   */
+/******************************************/
+CREATE TABLE `group_capacity` (
+  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
+  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
+  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
+  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
+  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
+  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
+  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
+  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
+  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `uk_group_id` (`group_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
+
+/******************************************/
+/*   表名称 = his_config_info   */
+/******************************************/
+CREATE TABLE `his_config_info` (
+  `id` bigint(64) unsigned NOT NULL,
+  `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `data_id` varchar(255) NOT NULL,
+  `group_id` varchar(128) NOT NULL,
+  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
+  `content` longtext NOT NULL,
+  `md5` varchar(32) DEFAULT NULL,
+  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `src_user` text,
+  `src_ip` varchar(50) DEFAULT NULL,
+  `op_type` char(10) DEFAULT NULL,
+  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
+  `encrypted_data_key` text COMMENT '秘钥',
+  PRIMARY KEY (`nid`),
+  KEY `idx_gmt_create` (`gmt_create`),
+  KEY `idx_gmt_modified` (`gmt_modified`),
+  KEY `idx_did` (`data_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
+
+
+/******************************************/
+/*   数据库全名 = nacos_config   */
+/*   表名称 = tenant_capacity   */
+/******************************************/
+CREATE TABLE `tenant_capacity` (
+  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
+  `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
+  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
+  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
+  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
+  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
+  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
+  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
+  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
+
+
+CREATE TABLE `tenant_info` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `kp` varchar(128) NOT NULL COMMENT 'kp',
+  `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
+  `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
+  `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
+  `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
+  `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
+  `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
+  KEY `idx_tenant_id` (`tenant_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
+
+CREATE TABLE `users` (
+	`username` varchar(50) NOT NULL PRIMARY KEY,
+	`password` varchar(500) NOT NULL,
+	`enabled` boolean NOT NULL
+);
+
+CREATE TABLE `roles` (
+	`username` varchar(50) NOT NULL,
+	`role` varchar(50) NOT NULL,
+	UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
+);
+
+CREATE TABLE `permissions` (
+    `role` varchar(50) NOT NULL,
+    `resource` varchar(255) NOT NULL,
+    `action` varchar(8) NOT NULL,
+    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
+);
+
+INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
+
+INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

+ 80 - 0
sql/ry_seata_20210128.sql

@@ -0,0 +1,80 @@
+DROP DATABASE IF EXISTS `ry-seata`;
+
+CREATE DATABASE  `ry-seata` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+USE `ry-seata`;
+
+-- -------------------------------- The script used when storeMode is 'db' --------------------------------
+-- the table to store GlobalSession data
+CREATE TABLE IF NOT EXISTS `global_table`
+(
+    `xid`                       VARCHAR(128) NOT NULL,
+    `transaction_id`            BIGINT,
+    `status`                    TINYINT      NOT NULL,
+    `application_id`            VARCHAR(32),
+    `transaction_service_group` VARCHAR(32),
+    `transaction_name`          VARCHAR(128),
+    `timeout`                   INT,
+    `begin_time`                BIGINT,
+    `application_data`          VARCHAR(2000),
+    `gmt_create`                DATETIME,
+    `gmt_modified`              DATETIME,
+    PRIMARY KEY (`xid`),
+    KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),
+    KEY `idx_transaction_id` (`transaction_id`)
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4;
+
+-- the table to store BranchSession data
+CREATE TABLE IF NOT EXISTS `branch_table`
+(
+    `branch_id`         BIGINT       NOT NULL,
+    `xid`               VARCHAR(128) NOT NULL,
+    `transaction_id`    BIGINT,
+    `resource_group_id` VARCHAR(32),
+    `resource_id`       VARCHAR(256),
+    `branch_type`       VARCHAR(8),
+    `status`            TINYINT,
+    `client_id`         VARCHAR(64),
+    `application_data`  VARCHAR(2000),
+    `gmt_create`        DATETIME(6),
+    `gmt_modified`      DATETIME(6),
+    PRIMARY KEY (`branch_id`),
+    KEY `idx_xid` (`xid`)
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4;
+
+-- the table to store lock data
+CREATE TABLE IF NOT EXISTS `lock_table`
+(
+    `row_key`        VARCHAR(128) NOT NULL,
+    `xid`            VARCHAR(96),
+    `transaction_id` BIGINT,
+    `branch_id`      BIGINT       NOT NULL,
+    `resource_id`    VARCHAR(256),
+    `table_name`     VARCHAR(32),
+    `pk`             VARCHAR(36),
+    `gmt_create`     DATETIME,
+    `gmt_modified`   DATETIME,
+    PRIMARY KEY (`row_key`),
+    KEY `idx_branch_id` (`branch_id`)
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4;
+
+-- for AT mode you must to init this sql for you business database. the seata server not need it.
+CREATE TABLE IF NOT EXISTS `undo_log`
+(
+    `branch_id`     BIGINT(20)   NOT NULL COMMENT 'branch transaction id',
+    `xid`           VARCHAR(100) NOT NULL COMMENT 'global transaction id',
+    `context`       VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization',
+    `rollback_info` LONGBLOB     NOT NULL COMMENT 'rollback info',
+    `log_status`    INT(11)      NOT NULL COMMENT '0:normal status,1:defense status',
+    `log_created`   DATETIME(6)  NOT NULL COMMENT 'create datetime',
+    `log_modified`  DATETIME(6)  NOT NULL COMMENT 'modify datetime',
+    UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
+) ENGINE = InnoDB
+  AUTO_INCREMENT = 1
+  DEFAULT CHARSET = utf8mb4 COMMENT ='AT transaction mode undo table';

+ 23 - 0
warst-api/pom.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>com.warst</groupId>
+        <artifactId>warst</artifactId>
+        <version>3.6.2</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <modules>
+        <module>warst-api-system</module>
+        <module>warst-api-manage</module>
+    </modules>
+
+    <artifactId>warst-api</artifactId>
+    <packaging>pom</packaging>
+
+    <description>
+        warst-api系统接口
+    </description>
+
+</project>

+ 39 - 0
warst-api/warst-api-manage/pom.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>com.warst</groupId>
+        <artifactId>warst-api</artifactId>
+        <version>3.6.2</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>warst-api-manage</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.warst</groupId>
+            <artifactId>warst-common-core</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.4.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>2.2.6</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-annotation</artifactId>
+            <version>4.2.0</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+</project>

+ 129 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckAddr.java

@@ -0,0 +1,129 @@
+package com.warst.manage.domain.check;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 考勤点管理
+ * @TableName check_addr
+ */
+@TableName(value ="WARST.check_addr")
+@Data
+public class CheckAddr implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 考勤点名称
+     */
+    @ApiModelProperty(value = "考勤点名称")
+    private String name;
+
+    /**
+     * 考勤方式 1硬件打卡 2移动端打卡
+     */
+    @ApiModelProperty(value = "考勤方式 1硬件打卡 2移动端打卡")
+    private String type;
+
+    /**
+     * 考勤点签入签出类型
+     */
+    @ApiModelProperty(value = "考勤点签入签出类型")
+    private String checkType;
+
+    /**
+     * 考勤类型(0刷卡考勤 1人像考勤 2指纹考勤)逗号隔开
+     */
+    @ApiModelProperty(value = "考勤类型(0刷卡考勤 1人像考勤 2指纹考勤)逗号隔开")
+    private String attendanceType;
+
+    /**
+     * 考勤点关联设备类型(1编码器 2门禁)
+     */
+    @ApiModelProperty(value = "考勤点关联设备类型(1编码器 2门禁)")
+    private String deviceType;
+
+    /**
+     * 组织编码
+     */
+    @ApiModelProperty(value = "组织编码")
+    private String orgCode;
+
+    /**
+     * 原点位名称
+     */
+    @ApiModelProperty(value = "原点位名称")
+    private String originName;
+
+    /**
+     * 门禁点位
+     */
+    @ApiModelProperty(value = "门禁点位")
+    private Integer banAddr;
+
+    /**
+     * 视频通道编码
+     */
+    @ApiModelProperty(value = "视频通道编码")
+    private String videoCode;
+
+    /**
+     * 相似度(0-100 视频考勤点)
+     */
+    @ApiModelProperty(value = "相似度(0-100 视频考勤点)")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private Integer bySimilarity;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "点位(经度)")
+    private Double pointLong;
+
+    @ApiModelProperty(value = "点位(纬度)")
+    private Double pointLat;
+
+    @ApiModelProperty(value = "点位名")
+    private String pointName;
+
+    @ApiModelProperty(value = "考勤方圆")
+    private Integer checkAbout;
+
+    @ApiModelProperty(value = "考勤类型名集合")
+    @TableField(exist = false)
+    private List<String> attendanceTypeNames;
+
+    private Long companyId;
+
+    @ApiModelProperty(value = "是否删除1删除 0未")
+    private String isDelete;
+
+    @ApiModelProperty(value = "大华id")
+    private String dId;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 90 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckArrange.java

@@ -0,0 +1,90 @@
+package com.warst.manage.domain.check;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 排班设置
+ * @TableName check_arrange
+ */
+@TableName(value ="WARST.check_arrange")
+@Data
+public class CheckArrange implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 排班名称
+     */
+    private String name;
+
+    /**
+     * 排班开始时间
+     */
+    private Date arrangeStartTime;
+
+    /**
+     * 排班结束时间
+     */
+    private Date arrangeEndTime;
+
+    /**
+     * 排班周期
+     */
+    private Integer period;
+
+    /**
+     * 是否法定假期 1法定假期  0否
+     */
+    private Integer isVacation;
+
+    /**
+     * 关联班组
+     */
+    private Long groupId;
+
+    /**
+     * 关联班次
+     */
+    private String numId;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    private Long companyId;
+
+    /**
+     * 关联班次
+     */
+    @TableField(exist = false)
+    private List<Long> numIds;
+
+    @ApiModelProperty(value = "是否删除1删除 0未")
+    private String isDelete;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 58 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckArrangeTime.java

@@ -0,0 +1,58 @@
+package com.warst.manage.domain.check;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 排班班次天数
+ * @TableName CHECK_ARRANGE_TIME
+ */
+@TableName(value ="WARST.CHECK_ARRANGE_TIME")
+@Data
+public class CheckArrangeTime implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 
+     */
+    private Long numId;
+
+    /**
+     * 
+     */
+    private Long groupId;
+
+    /**
+     * 日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date numDate;
+
+    /**
+     * 是否假期0否 1假期
+     */
+    private String isHoliday;
+
+    /**
+     * 创建
+     */
+    private Date createTime;
+
+    private String DId;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 67 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckConfig.java

@@ -0,0 +1,67 @@
+package com.warst.manage.domain.check;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 
+ * @TableName check_config
+ */
+@TableName(value ="WARST.check_config")
+@Data
+public class CheckConfig implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 补卡原因
+     */
+    private String reason;
+
+    /**
+     * 补卡次数
+     */
+    private Integer number;
+
+    /**
+     * 补卡有效期(天)
+     */
+    private Integer valid;
+
+    /**
+     * 考勤记录保存时长
+     */
+    private Integer recordDuration;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 1原因  0其他
+     */
+    private String type;
+    private Long deptId;
+
+    @ApiModelProperty(value = "是否删除1删除 0未")
+    private String isDelete;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 71 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckGroup.java

@@ -0,0 +1,71 @@
+package com.warst.manage.domain.check;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 
+ * @TableName check_group
+ */
+@TableName(value ="WARST.check_group")
+@Data
+public class CheckGroup implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+     * 班组名称
+     */
+    @ApiModelProperty(value = "班组名称")
+    private String name;
+
+    /**
+     * 班组人员id
+     */
+
+    private String personIds;
+
+    @ApiModelProperty(value = "班组人员")
+    private String personNames;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+//    private Long deptId;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    private Long companyId;
+
+    @ApiModelProperty(value = "是否删除1删除 0未")
+    private String isDelete;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 150 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckNum.java

@@ -0,0 +1,150 @@
+package com.warst.manage.domain.check;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 考勤班次
+ * @TableName check_num
+ */
+@TableName(value ="WARST.check_num")
+@Data
+public class CheckNum implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+     * 班次名
+     */
+    @ApiModelProperty(value = "班次名")
+    private String className;
+
+    /**
+     * 班次类型(0-普通班,1-三班倒,2-签到班,3-工时班,4-逆向班)
+     */
+    @ApiModelProperty(value = "班次类型(0-普通班,1-三班倒,2-签到班,3-工时班,4-逆向班)")
+    private String classType;
+
+    /**
+     * 是否跨天  1跨天  0不跨天
+     */
+    @ApiModelProperty(value = "是否跨天  1跨天  0不跨天")
+    private Integer isDay;
+
+    /**
+     * 正常签入时间(开始)
+     */
+    @ApiModelProperty(value = "正常签入时间(开始)")
+    private String inStartTime;
+
+    /**
+     * 正常签入时间(结束)
+     */
+    @ApiModelProperty(value = "正常签入时间(结束)")
+    private String inEndTime;
+
+    /**
+     * 正常签出时间(开始)
+     */
+    @ApiModelProperty(value = "正常签出时间(开始)")
+    private String outStartTime;
+
+    /**
+     * 正常签出时间(结束)
+     */
+    @ApiModelProperty(value = "正常签出时间(结束)")
+    private String outEndTime;
+
+    /**
+     * 签入延迟时间
+     */
+    @ApiModelProperty(value = "签入延迟时间")
+    private Integer delayTime;
+
+    /**
+     * 提前签出时间
+     */
+    @ApiModelProperty(value ="提前签出时间" )
+    private Integer beforeTime;
+
+    /**
+     * 迟到时间
+     */
+    @ApiModelProperty(value = "迟到时间")
+    private Integer lateTime;
+
+    /**
+     * 早退时间
+     */
+    @ApiModelProperty(value = "早退时间")
+    private Integer exitTime;
+
+    /**
+     * 旷工时间(开始)
+     */
+    @ApiModelProperty(value = "旷工时间(开始)")
+    private String awayStartTime;
+
+    /**
+     * 旷工时间(结束)
+     */
+    @ApiModelProperty(value = "旷工时间(结束)")
+    private String awayEndTime;
+
+    /**
+     * 加班时间(开始)
+     */
+    @ApiModelProperty(value = "加班时间(开始)")
+    private String workStartTime;
+
+    /**
+     * 加班时间(结束)
+     */
+    @ApiModelProperty(value = "加班时间(结束)")
+    private String workEndTime;
+
+    /**
+     * 一天之内的加班次数
+     */
+    @ApiModelProperty(value = "一天之内的加班次数")
+    private Integer workNum;
+
+    /**
+     * 加班时长
+     */
+    @ApiModelProperty(value = "加班时长")
+    private Integer workDuration;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    private Long companyId;
+
+    @ApiModelProperty(value = "是否删除1删除 0未")
+    private String isDelete;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 114 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/CheckResult.java

@@ -0,0 +1,114 @@
+package com.warst.manage.domain.check;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 考勤结果
+ * @TableName check_result
+ */
+@TableName(value ="WARST.check_result")
+@Data
+public class CheckResult implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 人员id
+     */
+    @ApiModelProperty(value = "人员id")
+    private Long userId;
+
+    /**
+     * 姓名
+     */
+    @ApiModelProperty(value = "姓名")
+    private String userName;
+
+    @ApiModelProperty(value = "编号")
+    private String number;
+
+    /**
+     * 部门
+     */
+    private Long companyId;
+
+    /**
+     * 考勤时间(签入)
+     */
+    @ApiModelProperty(value = "考勤签入时间")
+    private Date checkInTime;
+
+    /**
+     * 考勤时间(签出)
+     */
+    @ApiModelProperty(value = "考勤时间(签出)")
+    private Date checkOutTime;
+
+    /**
+     * 考勤点id
+     */
+    private Long checkAddr;
+
+    /**
+     * 考勤点名
+     */
+    @ApiModelProperty(value = "考勤点名")
+    private String addrName;
+
+    /**
+     * 签入状态0正常 1迟到 2缺卡 3旷工
+     */
+    @ApiModelProperty(value = "签入状态\"CHECK_IN\":正常签入;\"CHECK_OUT\":正常签出;\"BE_LATE\":迟到;\"LEAVE_EARLY\":早退;\"OVERTIME\":加班;\"ABSENTEEISM\":旷工,缺卡check_no")
+    private String checkInStatus;
+
+    /**
+     * 签出状态0正常 1迟到 2缺卡 3旷工
+     */
+    @ApiModelProperty(value = "签出状态\"CHECK_IN\":正常签入;\"CHECK_OUT\":正常签出;\"BE_LATE\":迟到;\"LEAVE_EARLY\":早退;\"OVERTIME\":加班;\"ABSENTEEISM\":旷工")
+    private String checkOutStatus;
+
+    /**
+     * 0正常 1异常
+     */
+    @ApiModelProperty(value = "(0:异常 1:正常 -1:未知)")
+    private String result;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    @ApiModelProperty(value = "加班次数")
+    private Integer overtimeCount;
+
+    @ApiModelProperty(value = "迟到时间")
+    private Integer lateTime;
+
+
+    @ApiModelProperty(value = "早退时间")
+    private Integer earlyTime;
+
+    @ApiModelProperty(value = "工作时长")
+    private Integer workingTime;
+
+    private Long numId;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 81 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/check/ExamineApplyInfo.java

@@ -0,0 +1,81 @@
+package com.warst.manage.domain.check;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 审批提交信息
+ * @TableName EXAMINE_APPLY_INFO
+ */
+@TableName(value ="WARST.EXAMINE_APPLY_INFO")
+@Data
+public class ExamineApplyInfo implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 
+     */
+    private Long userId;
+
+    /**
+     * 
+     */
+    @ApiModelProperty("提交人员")
+    private String userName;
+
+    /**
+     * 类型
+     */
+    @ApiModelProperty("类型")
+    private String type;
+
+    /**
+     * 
+     */
+    private String companyId;
+
+    /**
+     * 状态
+     */
+    @ApiModelProperty("状态 0待审核 1已归档 2已撤销 3已驳回")
+    private String status;
+
+    /**
+     * 提交时间
+     */
+    @ApiModelProperty("提交时间")
+    private Date createTime;
+
+    @ApiModelProperty("请假时间")
+    private Date leaveStartTime;
+
+    @ApiModelProperty("请假结束时间")
+    private Date leaveEndTime;
+
+    @ApiModelProperty("请假原因时间")
+    private String reason;
+
+    private String file;
+
+    private String orderId;
+
+    private Date updateTime;
+
+    @ApiModelProperty("备注")
+    private String remarks;
+
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 63 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/company/Company.java

@@ -0,0 +1,63 @@
+package com.warst.manage.domain.company;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.warst.manage.vo.company.CompanyVO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 部门
+ * @TableName company
+ */
+@TableName(value ="company")
+@Data
+public class Company implements Serializable {
+    /**
+     * 是否是总队
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 类型(1机关 2 领导)
+     */
+    private Integer type;
+
+    /**
+     * 隶属
+     */
+    private Long mainId;
+
+    /**
+     * 地址
+     */
+    private String addr;
+
+    /**
+     * 是否是总队 1是 0 否
+     */
+    private Integer isCorps;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    @ApiModelProperty(value = "子集")
+    @TableField(exist = false)
+    private List<Company> children=new ArrayList<>();
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 127 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/domain/member/Member.java

@@ -0,0 +1,127 @@
+package com.warst.manage.domain.member;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 
+ * @TableName member
+ */
+@TableName(value ="member")
+@Data
+public class Member implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 用户名
+     */
+    private String name;
+
+    /**
+     * 手机号
+     */
+    private String phone;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 工号
+     */
+    private String number;
+
+    /**
+     * 所属部门
+     */
+    private Long companyId;
+
+    /**
+     * 身份证
+     */
+    private String idCard;
+
+    /**
+     * 职务
+     */
+    private Integer post;
+
+    /**
+     * 微信账号
+     */
+    private String weChat;
+
+    /**
+     * 头像
+     */
+    private String logo;
+
+    /**
+     * 邮件
+     */
+    private String email;
+
+    /**
+     * 生日
+     */
+    private String birthday;
+
+    /**
+     * 0男 1女 null保密
+     */
+    private Integer sex;
+
+    /**
+     * 籍贯
+     */
+    private String birthPlace;
+
+    /**
+     * 学历
+     */
+    private String qualified;
+
+    /**
+     * 专业
+     */
+    private String major;
+
+    /**
+     * 毕业院校
+     */
+    private String graduate;
+
+    /**
+     * 毕业时间
+     */
+    private Date graduateTime;
+
+    /**
+     * 个人简历
+     */
+    private String vita;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 111 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckAddrDTO.java

@@ -0,0 +1,111 @@
+package com.warst.manage.dto.check;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.omg.PortableInterceptor.INACTIVE;
+
+import javax.validation.constraints.*;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 考勤点管理
+ * @TableName check_addr
+ */
+@Data
+public class CheckAddrDTO implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 考勤点名称
+     */
+    @Size(max = 50,message = "考勤点名称不能超过50字符")
+    @Size(min = 2,message = "考勤点名称不能少于2字符")
+    @NotEmpty(message = "考勤点名称不能为空")
+    @ApiModelProperty(value = "考勤点名称")
+    private String name;
+
+    /**
+     * 考勤方式 1硬件打卡 2移动端打卡
+     */
+    @ApiModelProperty(value = "考勤方式 1硬件打卡 2移动端打卡")
+    @NotNull(message = "考勤方法不能为空")
+    private String type;
+
+    /**
+     * 考勤点签入签出类型
+     */
+    @ApiModelProperty(value = "考勤点签入签出类型(1:上下班考勤点;2:上班考勤点;3:下班考勤点)")
+    @NotNull(message = "考勤点签入签出类型不能为空")
+    private String checkType;
+
+    /**
+     * 考勤类型(0刷卡考勤 1人像考勤 2指纹考勤)逗号隔开
+     */
+    @ApiModelProperty(value = "考勤类型(0刷卡考勤 1人像考勤 2指纹考勤)逗号隔开")
+    //@NotEmpty(message = "考勤类型不能为空")
+    private String attendanceType;
+
+    /**
+     * 考勤点关联设备类型(1编码器 2门禁)
+     */
+    @ApiModelProperty(value = "考勤点关联设备类型(1编码器 2门禁)")
+   // @NotNull(message = "考勤点关联设备类型不能为空")
+    private String deviceType;
+
+
+    /**
+     * 组织编码
+     */
+    @ApiModelProperty(value = "组织编码")
+   // @NotEmpty(message = "组织编码不能为空")
+    private String orgCode;
+
+    /**
+     * 原点位名称
+     */
+    @ApiModelProperty(value = "原点位名称")
+   // @NotEmpty(message = "原点位名称不能为空")
+    private String originName;
+
+    /**
+     * 门禁点位
+     */
+    @ApiModelProperty(value = "门禁点位")
+    private Integer banAddr;
+
+    /**
+     * 视频通道编码
+     */
+    @ApiModelProperty(value = "视频通道编码")
+    private String videoCode;
+
+    /**
+     * 相似度(0-100 视频考勤点)
+     */
+    @ApiModelProperty(value = "相似度(0-100 视频考勤点)")
+    @Min(value = 0,message = "相似度不能小于0")
+    @Max(value = 100,message = "相似度不能大于100")
+    private Integer bySimilarity;
+
+    @ApiModelProperty(value = "点位(经度)")
+    private Double pointLong;
+
+    @ApiModelProperty(value = "点位(纬度)")
+    private Double pointLat;
+
+    @ApiModelProperty(value = "点位名")
+    private String pointName;
+
+    @ApiModelProperty(value = "考勤方圆")
+    private Integer checkAbout;
+
+}

+ 102 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckArrangeDTO.java

@@ -0,0 +1,102 @@
+package com.warst.manage.dto.check;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.*;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 排班设置
+ * @TableName check_arrange
+ */
+@Data
+public class CheckArrangeDTO implements Serializable {
+    /**
+     *
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 排班名称
+     */
+    @ApiModelProperty(name = "排班名称")
+//    @NotEmpty(message = "排班名称不能为空")
+//    @Size(max = 50,message = "排班名称不能大于50字符")
+    private String name;
+
+    /**
+     * 排班开始时间
+     */
+    @ApiModelProperty(name = "排班开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    @NotNull(message = "排班时间不能为空")
+    private Date arrangeStartTime;
+
+    /**
+     * 排班结束时间
+     */
+    @ApiModelProperty(name = "排班结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    @NotNull(message = "排班时间不能为空")
+    private Date arrangeEndTime;
+
+    /**
+     * 排班周期
+     */
+    @ApiModelProperty(name = "排班周期")
+//    @Max(value = 14,message = "排班周期最大14")
+//    @Min(value = 1,message = "排班周期最小1")
+    private Integer period;
+
+    /**
+     * 是否法定假期 1法定假期  0否
+     */
+    @ApiModelProperty(name = "是否法定假期 1法定假期  0否")
+    private Integer isVacation;
+
+    /**
+     * 关联班组
+     */
+    @ApiModelProperty(name = "关联班组")
+    @NotNull(message = "关联班组不能为空")
+    private Long groupId;
+
+    private Long numId;
+
+    /**
+     * 关联班次
+     */
+
+    //@NotNull(message = "关联班次不能为空")
+    @ApiModelProperty(name = "关联班次")
+    private List<String> numIds;
+
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 26 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckArrangeEditDTO.java

@@ -0,0 +1,26 @@
+package com.warst.manage.dto.check;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 排班设置
+ * @TableName check_arrange
+ */
+@Data
+public class CheckArrangeEditDTO implements Serializable {
+    /**
+     * 
+     */
+    private Long id;
+
+    @ApiModelProperty(value = "设置新的班次")
+    private Long numId;
+
+    @ApiModelProperty(value = "type:0 设置新的班次 1休息 ")
+    private String type;
+
+}

+ 66 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckConfigDTO.java

@@ -0,0 +1,66 @@
+package com.warst.manage.dto.check;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.warst.manage.vo.check.CheckConfigReasonsVO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 
+ * @TableName check_config
+ */
+@Data
+public class CheckConfigDTO implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 补卡原因
+     */
+    @ApiModelProperty(value = "补卡原因")
+    private List<CheckConfigReasonsVO> reasons;
+
+    /**
+     * 补卡次数
+     */
+    @ApiModelProperty(value = "补卡次数")
+    @Max(value = 99,message ="补卡次数过大" )
+    @Min(value = 0,message ="补卡次数不能小于0" )
+    private Integer number;
+
+    /**
+     * 补卡有效期(天)
+     */
+    @ApiModelProperty(value = "补卡有效期")
+    @Max(value = 99,message ="补卡有效期过大" )
+    @Min(value = 0,message ="补卡有效期不能小于0" )
+    private Integer valid;
+
+    /**
+     * 考勤记录保存时长
+     */
+    @ApiModelProperty(value = "考勤记录保存时长")
+    @Max(value = 999,message ="考勤记录保存时长过大" )
+    @Min(value = 0,message ="考勤记录保存时长不能小于0" )
+    private Integer recordDuration;
+
+
+    /**
+     * 1原因  0其他
+     */
+    private String type;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 16 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckDTO.java

@@ -0,0 +1,16 @@
+package com.warst.manage.dto.check;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+@Data
+public class CheckDTO implements Serializable {
+
+    @ApiModelProperty(value = "签到地id")
+    private Long addrId;
+
+
+}

+ 70 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckGroupDTO.java

@@ -0,0 +1,70 @@
+package com.warst.manage.dto.check;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 
+ * @TableName check_group
+ */
+@Data
+public class CheckGroupDTO implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 班组名称
+     */
+    @ApiModelProperty(value = "班组名称")
+    @NotEmpty(message = "班组名称不能为空")
+    @Size(max = 50,message ="班组名称不能大于50字符" )
+    private String name;
+
+    /**
+     * 班组人员id
+     */
+    @ApiModelProperty(value = "班组人员id ','分割")
+    @NotEmpty(message = "班组人员不能为空")
+    private String personIds;
+
+    private String personNames;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注")
+    @Size(max = 1000,message ="备注不能大于1000字符" )
+    private String remarks;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 160 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/CheckNumDTO.java

@@ -0,0 +1,160 @@
+package com.warst.manage.dto.check;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 考勤班次
+ * @TableName check_num
+ */
+@Data
+public class CheckNumDTO implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 班次名
+     */
+    @ApiModelProperty(value = "班次名")
+    @Size(max = 50,message = "班次名称不得超过50字符")
+    @NotEmpty(message = "班次名称不能为空")
+    private String className;
+
+    /**
+     * 班次类型(0-普通班,1-三班倒,2-签到班,3-工时班,4-逆向班)
+     */
+    @ApiModelProperty(value = "班次类型(0-普通班,1-三班倒,2-签到班,3-工时班,4-逆向班)")
+    @NotEmpty(message = "班次类型不能为空")
+    private String classType;
+
+    /**
+     * 是否跨天  1跨天  0不跨天
+     */
+    @NotNull(message = "请选择是否跨天")
+    @ApiModelProperty(value = "是否跨天  1跨天  0不跨天")
+    private Integer isDay;
+
+    /**
+     * 正常签入时间(开始)
+     */
+    @ApiModelProperty(value = "正常签入时间(开始)")
+    @NotEmpty(message = "正常签入时间不能为空")
+    private String inStartTime;
+
+    /**
+     * 正常签入时间(结束)
+     */
+    @ApiModelProperty(value = "正常签入时间(结束)")
+    private String inEndTime;
+
+    /**
+     * 正常签出时间(开始)
+     */
+    @NotEmpty(message = "正常签出时间不能为空")
+    @ApiModelProperty(value = "正常签出时间(开始)")
+    private String  outStartTime;
+
+    /**
+     * 正常签出时间(结束)
+     */
+    @ApiModelProperty(value = "正常签出时间(结束)")
+    private String outEndTime;
+
+    /**
+     * 签入延迟时间
+     */
+    @NotNull(message = "签入延迟时间不能为空")
+    @ApiModelProperty(value = "签入延迟时间")
+    private Integer delayTime;
+
+    /**
+     * 提前签出时间
+     */
+    @NotNull(message = "提前签出时间不能为空")
+    @ApiModelProperty(value = "提前签出时间")
+    private Integer beforeTime;
+
+    /**
+     * 迟到时间
+     */
+    @ApiModelProperty(value = "迟到时间")
+    @NotNull(message = "迟到时间不能为空")
+    private Integer lateTime;
+
+    /**
+     * 早退时间
+     */
+    @ApiModelProperty(value = "早退时间")
+    @NotNull(message = "早退时间不能为空")
+    private Integer exitTime;
+
+    /**
+     * 旷工时间(开始)
+     */
+    @ApiModelProperty(value = "旷工时间(开始)")
+    @NotEmpty(message = "旷工时间不能为空")
+    private String awayStartTime;
+
+    /**
+     * 旷工时间(结束)
+     */
+    @ApiModelProperty(value = "旷工时间(结束)")
+    private String awayEndTime;
+
+    /**
+     * 加班时间(开始)
+     */
+    @NotEmpty(message = "加班时间不能为空")
+    @ApiModelProperty(value = "加班时间(开始)")
+    private String workStartTime;
+
+    /**
+     * 加班时间(结束)
+     */
+    @ApiModelProperty(value = "加班时间(结束)")
+    private String workEndTime;
+
+    /**
+     * 一天之内的加班次数
+     */
+    @ApiModelProperty(value = "一天之内的加班次数")
+   // @NotNull(message = "一天之内的加班次数不能为空")
+    private Integer workNum;
+
+    /**
+     * 加班时长
+     */
+    @ApiModelProperty(value = " 加班时长")
+   // @NotNull(message = "加班时长不能为空")
+    private Integer workDuration;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 48 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/query/CheckArrangeQueryDTO.java

@@ -0,0 +1,48 @@
+package com.warst.manage.dto.check.query;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.warst.common.core.web.page.PageQuery;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 排班设置
+ * @TableName check_arrange
+ */
+@Data
+public class CheckArrangeQueryDTO  extends PageQuery implements Serializable {
+
+    /**
+     * 排班名称
+     */
+    @ApiModelProperty(value = "排班名称")
+    private String name;
+
+    /**
+     * 是否法定假期 1法定假期  0否
+     */
+    @ApiModelProperty(value = "是否法定假期 1法定假期  0否")
+    private Integer isVacation;
+
+    @ApiModelProperty(value = "排班时间")
+    private String arrangeTime;
+
+    @ApiModelProperty(value = "班组id")
+    private Long groupId;
+
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+
+    private Long deptId;
+
+}

+ 28 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/query/CheckResultMothQueryDTO.java

@@ -0,0 +1,28 @@
+package com.warst.manage.dto.check.query;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 考勤结果
+ *
+ * @TableName check_result
+ */
+@Data
+public class CheckResultMothQueryDTO implements Serializable {
+
+
+    @ApiModelProperty(value = "人员id")
+    private Long userId;
+
+
+    @ApiModelProperty(value = "日期")
+    private String mothTime;
+
+
+
+
+
+}

+ 55 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/query/CheckResultQueryDTO.java

@@ -0,0 +1,55 @@
+package com.warst.manage.dto.check.query;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 考勤结果
+ *
+ * @TableName check_result
+ */
+@Data
+public class CheckResultQueryDTO implements Serializable {
+
+    /**
+     * 姓名
+     */
+    @ApiModelProperty(value = "姓名")
+    private String userName;
+
+    /**
+     * 部门
+     */
+    @ApiModelProperty(value = "部门id")
+    private Long companyId;
+
+
+    /**
+     * 签入状态0正常 1迟到 2缺卡 3旷工
+     */
+    @ApiModelProperty(value = "签入状态\\\"CHECK_IN\\\":正常签入;\\\"CHECK_OUT\\\":正常签出;\\\"BE_LATE\\\":迟到;\\\"LEAVE_EARLY\\\":早退;\\\"OVERTIME\\\":加班;\\\"ABSENTEEISM\\\":旷工,缺卡CHECK_NO\"")
+    private String checkInStatus;
+
+    /**
+     * 签出状态0正常 1迟到 2缺卡 3旷工
+     */
+    @ApiModelProperty(value = "签入状态\\\"CHECK_IN\\\":正常签入;\\\"CHECK_OUT\\\":正常签出;\\\"BE_LATE\\\":迟到;\\\"LEAVE_EARLY\\\":早退;\\\"OVERTIME\\\":加班;\\\"ABSENTEEISM\\\":旷工,缺卡CHECK_NO\"")
+    private String checkOutStatus;
+
+    /**
+     *0:异常 1:正常 -1:未知)
+     */
+    @ApiModelProperty(value = "0:异常 1:正常 -1:未知)")
+    private String result;
+
+
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+
+}

+ 37 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/check/query/CheckStatisticsQueryDTO.java

@@ -0,0 +1,37 @@
+package com.warst.manage.dto.check.query;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 考勤结果统计
+ *
+ * @TableName check_result
+ */
+@Data
+public class CheckStatisticsQueryDTO implements Serializable {
+
+
+    @ApiModelProperty(value = "0 按月  1按年")
+    private String type;
+
+    /**
+     * 部门
+     */
+    @ApiModelProperty(value = "部门id")
+    private Long companyId;
+
+
+    @ApiModelProperty(value = "时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "人员名称")
+    private String name;
+
+    @ApiModelProperty(value = "职位")
+    private String post;
+
+
+}

+ 34 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/dto/examine/ApplyExamineDTO.java

@@ -0,0 +1,34 @@
+package com.warst.manage.dto.examine;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 审批提交信息
+ * @TableName EXAMINE_APPLY_INFO
+ */
+@Data
+public class ApplyExamineDTO implements Serializable {
+
+    private Long id;
+
+
+
+    @ApiModelProperty("状态")
+    private String status;
+
+
+    @ApiModelProperty("备注")
+    @Size(max = 200,message = "备注最大200字符")
+    private String remarks;
+
+
+}

+ 124 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckAddrVO.java

@@ -0,0 +1,124 @@
+package com.warst.manage.vo.check;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.omg.PortableInterceptor.INACTIVE;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 考勤点管理
+ * @TableName check_addr
+ */
+@Data
+@ApiModel(value = "考勤点")
+public class CheckAddrVO implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 考勤点名称
+     */
+    @ApiModelProperty(value = "考勤点名称")
+    private String name;
+
+    /**
+     * 考勤方式 1硬件打卡 2移动端打卡
+     */
+    @ApiModelProperty(value = "考勤方式 1硬件打卡 2移动端打卡")
+    private String type;
+
+    /**
+     * 考勤点签入签出类型
+     */
+    @ApiModelProperty(value = "考勤点签入签出类型(1:上下班考勤点;2:上班考勤点;3:下班考勤点)")
+    private String checkType;
+
+    /**
+     * 考勤类型(0刷卡考勤 1人像考勤 2指纹考勤)逗号隔开
+     */
+    @ApiModelProperty(value = "考勤类型(0刷卡考勤 1人像考勤 2指纹考勤)逗号隔开")
+    private String attendanceType;
+
+    /**
+     * 考勤点关联设备类型(1编码器 2门禁)
+     */
+    @ApiModelProperty(value = "考勤点关联设备类型(1编码器 2门禁)")
+    private String deviceType;
+
+    /**
+     * 组织编码
+     */
+    @ApiModelProperty(value = "组织编码")
+    private String orgCode;
+
+    /**
+     * 原点位名称
+     */
+    @ApiModelProperty(value = "原点位名称")
+    private String originName;
+
+    /**
+     * 门禁点位
+     */
+    @ApiModelProperty(value = "门禁点位")
+    private Integer banAddr;
+
+    /**
+     * 视频通道编码
+     */
+    @ApiModelProperty(value = "视频通道编码")
+    private String videoCode;
+
+    /**
+     * 相似度(0-100 视频考勤点)
+     */
+    @ApiModelProperty(value = "相似度(0-100 视频考勤点)")
+    private Integer bySimilarity;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "考勤类型名集合")
+    private List<String> attendanceTypeNames;
+
+    @ApiModelProperty(value = "点位(经度)")
+    private Double pointLong;
+
+    @ApiModelProperty(value = "点位(纬度)")
+    private Double pointLat;
+
+    @ApiModelProperty(value = "点位名")
+    private String pointName;
+
+    @ApiModelProperty(value = "考勤方圆")
+    private Integer checkAbout;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 68 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckArrangeTimeVO.java

@@ -0,0 +1,68 @@
+package com.warst.manage.vo.check;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 排班班次天数
+ * @TableName CHECK_ARRANGE_TIME
+ */
+@TableName(value ="WARST.CHECK_ARRANGE_TIME")
+@Data
+public class CheckArrangeTimeVO implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 
+     */
+    private Long numId;
+
+    /**
+     * 
+     */
+    private Long groupId;
+
+    /**
+     * 日期
+     */
+    @ApiModelProperty(value = "日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date numDate;
+
+    /**
+     * 是否假期0否 1假期
+     */
+    @ApiModelProperty(value = "工作日(0)、休息日(1)和节假日(2)")
+    private String isHoliday;
+
+    /**
+     * 创建
+     */
+    private Date createTime;
+
+    @ApiModelProperty(value = "工作时段")
+    private String workTime;
+
+    @ApiModelProperty(value = "班次名称")
+    private String numName;
+
+    @ApiModelProperty(value = "大华排班id")
+    private String DId;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 86 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckArrangeVO.java

@@ -0,0 +1,86 @@
+package com.warst.manage.vo.check;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 排班设置
+ * @TableName check_arrange
+ */
+@TableName(value ="check_arrange")
+@Data
+public class CheckArrangeVO implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 排班名称
+     */
+    @ApiModelProperty(value = "排班名称")
+    private String name;
+
+    /**
+     * 排班时间
+     */
+    @ApiModelProperty(value = "排班时间")
+    private String arrangeTime;
+
+    /**
+     * 排班周期
+     */
+    @ApiModelProperty(value = "排班周期")
+    private Integer period;
+
+    /**
+     * 是否法定假期 1法定假期  0否
+     */
+    @ApiModelProperty(value = "是否法定假期 1法定假期  0否")
+    private Integer isVacation;
+
+    /**
+     * 关联班组
+     */
+    @ApiModelProperty(value = "关联班组")
+    private String groupName;
+
+    /**
+     * 关联班次
+     */
+    @ApiModelProperty(value = "关联班次")
+    private String numName;
+
+    /**
+     * 关联班组
+     */
+    @ApiModelProperty(value = "关联班组id")
+    private Long groupId;
+
+    /**
+     * 关联班次
+     */
+    @ApiModelProperty(value = "关联班次id")
+    private String numId;
+
+
+    private Long companyId;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+}

+ 29 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckConfigReasonsVO.java

@@ -0,0 +1,29 @@
+package com.warst.manage.vo.check;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 
+ * @TableName check_config
+ */
+@Data
+public class CheckConfigReasonsVO implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 补卡原因
+     */
+    private String reason;
+
+}

+ 66 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckConfigVO.java

@@ -0,0 +1,66 @@
+package com.warst.manage.vo.check;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 
+ * @TableName check_config
+ */
+@Data
+public class CheckConfigVO implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 补卡原因
+     */
+    @ApiModelProperty(value = "补卡原因")
+    private List<CheckConfigReasonsVO> reasons;
+
+    /**
+     * 补卡次数
+     */
+    @ApiModelProperty(value = "补卡次数")
+    private Integer number=8;
+
+    /**
+     * 补卡有效期(天)
+     */
+    @ApiModelProperty(value = "补卡有效期")
+    private Integer valid=30;
+
+    /**
+     * 考勤记录保存时长
+     */
+    @ApiModelProperty(value = "考勤记录保存时长")
+    private Integer recordDuration=1;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 1原因  0其他
+     */
+    private String type;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 52 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckCountVO.java

@@ -0,0 +1,52 @@
+package com.warst.manage.vo.check;
+
+import com.warst.common.core.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 审批提交信息
+ * @TableName EXAMINE_APPLY_INFO
+ */
+@Data
+@ApiModel(value = "审批统计")
+public class CheckCountVO implements Serializable {
+
+    @ApiModelProperty(value = "考勤人数")
+    private Integer checkCount = 0;
+
+
+    @ApiModelProperty("异常打卡")
+    private Integer unusualClock=0;
+
+    @ApiModelProperty("正常打卡")
+    private Integer normalClock=0;
+
+    @ApiModelProperty(value = "应勤人数")
+    private Integer checkNum = 0;
+
+    @ApiModelProperty(value = "实勤人数")
+    private Integer actualCheckNum = 0;
+
+    @ApiModelProperty(value = "迟到人数")
+    private Integer lateNum = 0;
+
+    @ApiModelProperty(value = "加班人数")
+    private Integer workNum=0;
+
+    @ApiModelProperty(value = "早退人数")
+    private Integer rearNum = 0;
+
+    @ApiModelProperty("旷工人数")
+    private Integer awayNum=0;
+
+    @ApiModelProperty(value = "加班时长(小时)")
+    private Integer workTime=0;
+
+    @ApiModelProperty("天数")
+    private Integer dateTime=0;
+
+}

+ 22 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckGroupAndNumVO.java

@@ -0,0 +1,22 @@
+package com.warst.manage.vo.check;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 排班设置
+ * @TableName check_arrange
+ */
+@Data
+public class CheckGroupAndNumVO implements Serializable {
+
+    @ApiModelProperty(value = "班组")
+    private List<CheckGroupVO> checkGroupVOS;
+
+    @ApiModelProperty(value = "班次")
+    private List<CheckNumVO> checkNumVOS;
+
+}

+ 63 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckGroupVO.java

@@ -0,0 +1,63 @@
+package com.warst.manage.vo.check;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class CheckGroupVO implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 班组名称
+     */
+    @ApiModelProperty(value = "班组名称")
+    private String name;
+
+    /**
+     * 班组人员id
+     */
+
+    private String personIds;
+
+
+    private String personNames;
+
+    @ApiModelProperty(value = "班组人员")
+    private List<String> personNameList;
+
+    @ApiModelProperty(value = "班组人员Id")
+    private List<Long> personIdList;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    @ApiModelProperty(value = "班组人数")
+    private Integer manNum;
+
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 32 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckMonthDetailVO.java

@@ -0,0 +1,32 @@
+package com.warst.manage.vo.check;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 考勤结果月明细
+ */
+@Data
+public class CheckMonthDetailVO implements Serializable {
+
+
+
+    @ApiModelProperty(value = "当前月份的日期")
+    private String checkTime;
+
+    @ApiModelProperty(value = "签入状态")
+    private String checkInStatus;
+
+    @ApiModelProperty(value = "签入时间")
+    private String checkInTime;
+
+    @ApiModelProperty(value = "签出状态")
+    private String checkOutStatus;
+
+    @ApiModelProperty(value = "签出时间")
+    private String checkOutTime;
+
+
+}

+ 74 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckNumVO.java

@@ -0,0 +1,74 @@
+package com.warst.manage.vo.check;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 考勤班次
+ * @TableName check_num
+ */
+@Data
+public class CheckNumVO implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 班次名
+     */
+    @ApiModelProperty(value = "班次名")
+    private String className;
+
+    /**
+     * 班次类型(0-普通班,1-三班倒,2-签到班,3-工时班,4-逆向班)
+     */
+    @ApiModelProperty(value = "班次类型(0-普通班,1-三班倒,2-签到班,3-工时班,4-逆向班)")
+    private String classType;
+
+    /**
+     * 是否跨天  1跨天  0不跨天
+     */
+    @ApiModelProperty(value = "是否跨天  1跨天  0不跨天")
+    private Integer isDay;
+
+    /**
+     * 正常签入时间(开始)
+     */
+    @ApiModelProperty(value = "正常签入时间")
+    private String inStartTime;
+
+//    /**
+//     * 正常签入时间(结束)
+//     */
+//    @ApiModelProperty(value = "正常签入时间(结束)")
+//    private Date inEndTime;
+
+    /**
+     * 正常签出时间(开始)
+     */
+    @ApiModelProperty(value = "正常签出时间")
+    private String outStartTime;
+
+
+    @ApiModelProperty(value = "工作时段")
+    private String workTime;
+
+//    /**
+//     * 正常签出时间(结束)
+//     */
+//    @ApiModelProperty(value = "正常签出时间(结束)")
+//    private Date outEndTime;
+
+
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 33 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckResultMonthVO.java

@@ -0,0 +1,33 @@
+package com.warst.manage.vo.check;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 考勤结果月明细
+ */
+@Data
+public class CheckResultMonthVO implements Serializable {
+
+
+    /**
+     * 人员名
+     */
+    @ApiModelProperty(value = "人员名")
+    private String userName;
+
+
+    @ApiModelProperty(value = "人员id")
+    private Long userId;
+
+    /**
+     * 日明细
+     */
+    @ApiModelProperty(value = "日明细")
+    private List<CheckMonthDetailVO> detailVOList;
+
+
+}

+ 176 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckResultVO.java

@@ -0,0 +1,176 @@
+package com.warst.manage.vo.check;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.warst.common.core.annotation.Excel;
+import com.warst.common.core.utils.DateUtils;
+import com.warst.common.core.utils.StringUtils;
+import com.warst.common.core.utils.TimeUtils;
+import com.warst.common.core.utils.WebsiteUtils;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 考勤结果
+ *
+ * @TableName check_result
+ */
+@Data
+public class CheckResultVO implements Serializable {
+    /**
+     *
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 人员id
+     */
+    @ApiModelProperty(value = "人员id")
+    private Long userId;
+
+    /**
+     * 创建时间
+     */
+    @Excel(name = "考勤日期", sort = 1, dateFormat = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date createTime;
+
+
+    @ApiModelProperty(value = "编号")
+    @Excel(name = "人员编号", sort = 2)
+    private String number;
+
+    /**
+     * 姓名
+     */
+    @ApiModelProperty(value = "姓名")
+    @Excel(name = "人员姓名", sort = 3)
+    private String userName;
+
+    /**
+     * 考勤点名
+     */
+    @ApiModelProperty(value = "考勤点名")
+    @Excel(name = "考勤点名称", sort = 4)
+    private String addrName;
+
+
+    /**
+     * 部门
+     */
+    private Long companyId;
+
+    /**
+     * 考勤时间(签入)
+     */
+    @ApiModelProperty(value = "考勤签入时间")
+    @Excel(name = "签入时间", sort = 5, dateFormat = "HH:mm:ss")
+    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "HH:mm:ss")
+    private Date checkInTime;
+
+//    public String getCheckInTime() {
+//        if(StringUtils.isNotEmpty(this.checkInTime)){
+//           return DateUtils.simpleFormat1(this.checkInTime);
+//        }
+//        return "";
+//    }
+
+
+    /**
+     * 签入状态0正常 1迟到 2缺卡 3旷工
+     */
+    @Excel(name = "签入状态", sort = 6)
+    @ApiModelProperty(value = "签入状态\"CHECK_IN\":正常签入;\"CHECK_OUT\":正常签出;\"BE_LATE\":迟到;\"LEAVE_EARLY\":早退;\"OVERTIME\":加班;\"ABSENTEEISM\":旷工,缺卡CHECK_NO")
+    private String checkInStatus;
+
+    /**
+     * 考勤时间(签出)
+     */
+    @ApiModelProperty(value = "考勤时间(签出)")
+    @Excel(name = "签出时间", sort = 7, dateFormat = "HH:mm:ss")
+    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "HH:mm:ss")
+    private Date checkOutTime;
+
+//    public String getCheckOutTime() {
+//        if(StringUtils.isNotEmpty(this.checkOutTime)){
+//            return DateUtils.simpleFormat1(this.checkOutTime);
+//        }
+//        return "";
+//    }
+
+
+    /**
+     * 签出状态0正常 1迟到 2缺卡 3旷工
+     */
+    @Excel(name = "签出状态", sort = 8)
+    @ApiModelProperty(value = "签出状态\"CHECK_IN\":正常签入;\"CHECK_OUT\":正常签出;\"BE_LATE\":迟到;\"LEAVE_EARLY\":早退;\"OVERTIME\":加班;\"ABSENTEEISM\":旷工,")
+    private String checkOutStatus;
+
+    @ApiModelProperty(value = "早退时间")
+    @Excel(name = "早退时间", sort = 9)
+    private String earlyTime=this.getEarlyTime();
+
+    public String getEarlyTime() {
+        if (StringUtils.isNotNull(this.earlyTimes)) {
+            return TimeUtils.intToMinute(this.earlyTimes);
+        }
+        return "";
+    }
+
+    private Integer earlyTimes;
+
+
+    @ApiModelProperty(value = "迟到时间")
+    @Excel(name = "迟到时间", sort = 10)
+    private String lateTime;
+
+    public String getLateTime() {
+        if (StringUtils.isNotNull(this.lateTimes)) {
+            return TimeUtils.intToMinute(this.lateTimes);
+        }
+        return "";
+    }
+
+
+    private Integer lateTimes;
+
+
+    @ApiModelProperty(value = "加班次数")
+    @Excel(name = "加班次数", sort = 11)
+    private Integer overtimeCount;
+    /**
+     * 考勤点id
+     */
+    private Long checkAddr;
+
+
+    /**
+     * 0:异常 1:正常 -1:未知)
+     */
+    @ApiModelProperty(value = "(0:异常 1:正常 -1:未知)")
+    @Excel(name = "考勤结果", sort = 12)
+    private String result;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+
+    @ApiModelProperty(value = "工作时长")
+    @Excel(name = "工作时长(小时)", sort = 13)
+    private String workingTime;
+
+    private Long numId;
+
+
+}

+ 66 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckStatisticsPageVO.java

@@ -0,0 +1,66 @@
+package com.warst.manage.vo.check;
+
+import com.warst.common.core.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 考勤结果统计
+ *
+ * @TableName check_result
+ */
+@Data
+public class CheckStatisticsPageVO implements Serializable {
+
+    @ApiModelProperty(value = "月份")
+    @Excel(name = "月份")
+    private String createTime;
+
+    @ApiModelProperty(value = "人员姓名")
+    @Excel(name = "人员姓名")
+    private String userName;
+
+    @ApiModelProperty(value = "人员id")
+    private String userId;
+
+    @ApiModelProperty(value = "职位")
+    @Excel(name = "职位")
+    private String post;
+
+    @ApiModelProperty(value = "班组")
+    @Excel(name = "班组")
+    private String groupName;
+
+    @ApiModelProperty(value = "应勤次数")
+    @Excel(name = "应勤次数")
+    private Integer checkNum = 0;
+
+    @ApiModelProperty(value = "实勤次数")
+    @Excel(name = "实勤次数")
+    private Integer actualCheckNum = 0;
+
+    @ApiModelProperty(value = "迟到次数")
+    @Excel(name = "迟到次数")
+    private Integer lateNum = 0;
+
+    @ApiModelProperty(value = "迟到时长分")
+    @Excel(name = "迟到时长(分)")
+    private String lateTime;
+
+    @ApiModelProperty(value = "早退次数")
+    @Excel(name = "早退次数")
+    private Integer rearNum = 0;
+
+    @ApiModelProperty(value = "早退时长(分)")
+    @Excel(name = "早退时长(分)")
+    private String rearTime ;
+
+    @ApiModelProperty(value = "加班时长(小时)")
+    @Excel(name = "加班时长(小时)")
+    private Integer workTime;
+
+
+}

+ 28 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/CheckStatisticsVO.java

@@ -0,0 +1,28 @@
+package com.warst.manage.vo.check;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 考勤结果统计
+ *
+ * @TableName check_result
+ */
+@Data
+public class CheckStatisticsVO implements Serializable {
+
+    @ApiModelProperty(value = "考勤人数")
+    private Integer checkNum=0;
+
+    @ApiModelProperty(value = "迟到人数")
+    private Integer lateNum=0;
+
+    @ApiModelProperty(value = "早退人数")
+    private Integer rearNum=0;
+
+    @ApiModelProperty(value = "加班时长(小时)")
+    private Integer workTime=0;
+
+}

+ 33 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/check/excel/CheckGroupExcelVO.java

@@ -0,0 +1,33 @@
+package com.warst.manage.vo.check.excel;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class CheckGroupExcelVO implements Serializable {
+
+
+    @ApiModelProperty(value = "班组名称")
+    @Excel(name = "班组名称")
+    private String name;
+
+    @ApiModelProperty(value = "人员编号")
+    @Excel(name = "人员编号")
+    private String number;
+
+
+    @ApiModelProperty(value = "人员名称")
+    @Excel(name = "人员名称")
+    private String memberName;
+
+
+    @ApiModelProperty(value = "备注")
+    @Excel(name = "备注")
+    private String remarks;
+
+
+
+}

+ 28 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/common/BranchVO.java

@@ -0,0 +1,28 @@
+package com.warst.manage.vo.common;
+
+import com.warst.manage.vo.member.MemberNameVO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 
+ * @TableName member
+ */
+@Data
+public class BranchVO implements Serializable {
+
+    @ApiModelProperty("科室id")
+    private Long id;
+
+
+    @ApiModelProperty("科室名称")
+    private String branchName;
+
+    @ApiModelProperty(value = "人员")
+    private List<MemberNameVO> memberVOS;
+
+
+}

+ 26 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/common/MemberComVO.java

@@ -0,0 +1,26 @@
+package com.warst.manage.vo.common;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 
+ * @TableName member
+ */
+@Data
+public class MemberComVO implements Serializable {
+
+    private Long id;
+
+
+    @ApiModelProperty("支队名称")
+    private Long name;
+
+    @ApiModelProperty("科室/部门")
+    private List<BranchVO> branchVOS;
+
+
+}

+ 57 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/company/CompanyVO.java

@@ -0,0 +1,57 @@
+package com.warst.manage.vo.company;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 部门
+ * @TableName company
+ */
+@Data
+public class CompanyVO implements Serializable {
+    /**
+     * 是否是总队
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 类型(1机关 2 领导)
+     */
+    private Integer type;
+
+    /**
+     * 隶属
+     */
+    private Long mainId;
+
+    /**
+     * 地址
+     */
+    private String addr;
+
+    /**
+     * 是否是总队 1是 0 否
+     */
+    private Integer isCorps;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    @ApiModelProperty(value = "子集")
+    private List<CompanyVO> children=new ArrayList<>();
+
+}

+ 35 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/examine/ExamineCountVO.java

@@ -0,0 +1,35 @@
+package com.warst.manage.vo.examine;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 审批提交信息
+ * @TableName EXAMINE_APPLY_INFO
+ */
+@Data
+@ApiModel(value = "审批统计")
+public class ExamineCountVO implements Serializable {
+
+    @ApiModelProperty("补卡")
+    private Integer repairCard=0;
+
+
+    @ApiModelProperty("请假")
+    private Integer askLeave=0;
+
+    @ApiModelProperty("加班")
+    private Integer workOvertime=0;
+
+    @ApiModelProperty("出差")
+    private Integer awayWork=0;
+
+}

+ 56 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/examine/TableGroupVO.java

@@ -0,0 +1,56 @@
+package com.warst.manage.vo.examine;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 表单组
+ * @TableName table_group
+ */
+@Data
+public class TableGroupVO implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 表单组名称
+     */
+    @ApiModelProperty(value ="表单组名称" )
+    private String name;
+
+    /**
+     * 0未使用 1已使用
+     */
+    @ApiModelProperty(value = "0未使用 1已使用")
+    private Integer status;
+
+    @ApiModelProperty(value = "表单数量")
+    private Integer formNum;
+
+    /**
+     * 部门id
+     */
+    private Long companyId;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 49 - 0
warst-api/warst-api-manage/src/main/java/com/warst/manage/vo/member/MemberNameVO.java

@@ -0,0 +1,49 @@
+package com.warst.manage.vo.member;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class MemberNameVO implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long userId;
+
+    /**
+     * 用户名
+     */
+    @ApiModelProperty(value = "用户名")
+    private String userName;
+
+    /**
+     * 工号
+     */
+    @ApiModelProperty(value = "人员编号工号")
+    private String number;
+
+//    @ApiModelProperty(value = "1已加入班组  0未加入")
+//    private String status;
+
+//    /**
+//     * 所属部门
+//     */
+//    private Long companyId;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "是否选择  1已选择 0未选择")
+    private String isChoose;
+
+    /**
+     * 职务
+     */
+    @ApiModelProperty(value = "职务")
+    private String post;
+
+}

+ 33 - 0
warst-api/warst-api-system/pom.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>com.warst</groupId>
+        <artifactId>warst-api</artifactId>
+        <version>3.6.2</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    
+    <artifactId>warst-api-system</artifactId>
+
+    <description>
+        warst-api-system系统接口模块
+    </description>
+
+    <dependencies>
+		
+        <!-- RuoYi Common Core-->
+        <dependency>
+            <groupId>com.warst</groupId>
+            <artifactId>warst-common-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.4.2</version>
+        </dependency>
+
+    </dependencies>
+
+</project>

+ 29 - 0
warst-api/warst-api-system/src/main/java/com/warst/system/api/RemoteFileService.java

@@ -0,0 +1,29 @@
+package com.warst.system.api;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestPart;
+import org.springframework.web.multipart.MultipartFile;
+import com.warst.common.core.constant.ServiceNameConstants;
+import com.warst.common.core.domain.R;
+import com.warst.system.api.domain.SysFile;
+import com.warst.system.api.factory.RemoteFileFallbackFactory;
+
+/**
+ * 文件服务
+ * 
+ * @author ruoyi
+ */
+@FeignClient(contextId = "remoteFileService", value = ServiceNameConstants.FILE_SERVICE, fallbackFactory = RemoteFileFallbackFactory.class)
+public interface RemoteFileService
+{
+    /**
+     * 上传文件
+     *
+     * @param file 文件信息
+     * @return 结果
+     */
+    @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    public R<SysFile> upload(@RequestPart(value = "file") MultipartFile file);
+}

+ 41 - 0
warst-api/warst-api-system/src/main/java/com/warst/system/api/RemoteLogService.java

@@ -0,0 +1,41 @@
+package com.warst.system.api;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import com.warst.common.core.constant.SecurityConstants;
+import com.warst.common.core.constant.ServiceNameConstants;
+import com.warst.common.core.domain.R;
+import com.warst.system.api.domain.SysLogininfor;
+import com.warst.system.api.domain.SysOperLog;
+import com.warst.system.api.factory.RemoteLogFallbackFactory;
+
+/**
+ * 日志服务
+ * 
+ * @author ruoyi
+ */
+@FeignClient(contextId = "remoteLogService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteLogFallbackFactory.class)
+public interface RemoteLogService
+{
+    /**
+     * 保存系统日志
+     *
+     * @param sysOperLog 日志实体
+     * @param source 请求来源
+     * @return 结果
+     */
+    @PostMapping("/operlog")
+    public R<Boolean> saveLog(@RequestBody SysOperLog sysOperLog, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+    /**
+     * 保存访问记录
+     *
+     * @param sysLogininfor 访问实体
+     * @param source 请求来源
+     * @return 结果
+     */
+    @PostMapping("/logininfor")
+    public R<Boolean> saveLogininfor(@RequestBody SysLogininfor sysLogininfor, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+}

+ 43 - 0
warst-api/warst-api-system/src/main/java/com/warst/system/api/RemoteUserService.java

@@ -0,0 +1,43 @@
+package com.warst.system.api;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import com.warst.common.core.constant.SecurityConstants;
+import com.warst.common.core.constant.ServiceNameConstants;
+import com.warst.common.core.domain.R;
+import com.warst.system.api.domain.SysUser;
+import com.warst.system.api.factory.RemoteUserFallbackFactory;
+import com.warst.system.api.model.LoginUser;
+
+/**
+ * 用户服务
+ * 
+ * @author ruoyi
+ */
+@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class)
+public interface RemoteUserService
+{
+    /**
+     * 通过用户名查询用户信息
+     *
+     * @param username 用户名
+     * @param source 请求来源
+     * @return 结果
+     */
+    @GetMapping("/user/info/{username}")
+    public R<LoginUser> getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+    /**
+     * 注册用户信息
+     *
+     * @param sysUser 用户信息
+     * @param source 请求来源
+     * @return 结果
+     */
+    @PostMapping("/user/register")
+    public R<Boolean> registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+}

+ 213 - 0
warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysDept.java

@@ -0,0 +1,213 @@
+package com.warst.system.api.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.warst.common.core.web.domain.BaseEntity;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.Email;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 部门表 sys_dept
+ *
+ * @author ruoyi
+ */
+@TableName(value ="WARST.sys_dept")
+@Data
+public class SysDept extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 部门ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Long deptId;
+
+    /**
+     * 父部门ID
+     */
+    private Long parentId;
+
+    /**
+     * 祖级列表
+     */
+    private String ancestors;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 显示顺序
+     */
+    private Integer orderNum;
+
+    /**
+     * 负责人
+     */
+    private String leader;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 邮箱
+     */
+    private String email;
+
+    /**
+     * 部门状态:0正常,1停用
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 父部门名称
+     */
+    @TableField(exist = false)
+    private String parentName;
+
+    /**
+     * 子部门
+     */
+    @TableField(exist = false)
+    private List<SysDept> children = new ArrayList<SysDept>();
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+
+    public String getAncestors() {
+        return ancestors;
+    }
+
+    public void setAncestors(String ancestors) {
+        this.ancestors = ancestors;
+    }
+
+    @NotBlank(message = "部门名称不能为空")
+    @Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    @NotNull(message = "显示顺序不能为空")
+    public Integer getOrderNum() {
+        return orderNum;
+    }
+
+    public void setOrderNum(Integer orderNum) {
+        this.orderNum = orderNum;
+    }
+
+    public String getLeader() {
+        return leader;
+    }
+
+    public void setLeader(String leader) {
+        this.leader = leader;
+    }
+
+    @Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    @Email(message = "邮箱格式不正确")
+    @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public String getParentName() {
+        return parentName;
+    }
+
+    public void setParentName(String parentName) {
+        this.parentName = parentName;
+    }
+
+    public List<SysDept> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<SysDept> children) {
+        this.children = children;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("deptId", getDeptId())
+                .append("parentId", getParentId())
+                .append("ancestors", getAncestors())
+                .append("deptName", getDeptName())
+                .append("orderNum", getOrderNum())
+                .append("leader", getLeader())
+                .append("phone", getPhone())
+                .append("email", getEmail())
+                .append("status", getStatus())
+                .append("delFlag", getDelFlag())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .toString();
+    }
+}

+ 179 - 0
warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysDictData.java

@@ -0,0 +1,179 @@
+package com.warst.system.api.domain;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.warst.common.core.annotation.Excel;
+import com.warst.common.core.annotation.Excel.ColumnType;
+import com.warst.common.core.constant.UserConstants;
+import com.warst.common.core.web.domain.BaseEntity;
+
+/**
+ * 字典数据表 sys_dict_data
+ * 
+ * @author ruoyi
+ */
+@TableName(value ="WARST.sys_dict_data")
+public class SysDictData extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 字典编码 */
+    @Excel(name = "字典编码", cellType = ColumnType.NUMERIC)
+    private Long dictCode;
+
+    /** 字典排序 */
+    @Excel(name = "字典排序", cellType = ColumnType.NUMERIC)
+    private Long dictSort;
+
+    /** 字典标签 */
+    @Excel(name = "字典标签")
+    private String dictLabel;
+
+    /** 字典键值 */
+    @Excel(name = "字典键值")
+    private String dictValue;
+
+    /** 字典类型 */
+    @Excel(name = "字典类型")
+    private String dictType;
+
+    /** 样式属性(其他样式扩展) */
+    private String cssClass;
+
+    /** 表格字典样式 */
+    private String listClass;
+
+    /** 是否默认(Y是 N否) */
+    @Excel(name = "是否默认", readConverterExp = "Y=是,N=否")
+    private String isDefault;
+
+    /** 状态(0正常 1停用) */
+    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    public Long getDictCode()
+    {
+        return dictCode;
+    }
+
+    public void setDictCode(Long dictCode)
+    {
+        this.dictCode = dictCode;
+    }
+
+    public Long getDictSort()
+    {
+        return dictSort;
+    }
+
+    public void setDictSort(Long dictSort)
+    {
+        this.dictSort = dictSort;
+    }
+
+    @NotBlank(message = "字典标签不能为空")
+    @Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
+    public String getDictLabel()
+    {
+        return dictLabel;
+    }
+
+    public void setDictLabel(String dictLabel)
+    {
+        this.dictLabel = dictLabel;
+    }
+
+    @NotBlank(message = "字典键值不能为空")
+    @Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
+    public String getDictValue()
+    {
+        return dictValue;
+    }
+
+    public void setDictValue(String dictValue)
+    {
+        this.dictValue = dictValue;
+    }
+
+    @NotBlank(message = "字典类型不能为空")
+    @Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
+    public String getDictType()
+    {
+        return dictType;
+    }
+
+    public void setDictType(String dictType)
+    {
+        this.dictType = dictType;
+    }
+
+    @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
+    public String getCssClass()
+    {
+        return cssClass;
+    }
+
+    public void setCssClass(String cssClass)
+    {
+        this.cssClass = cssClass;
+    }
+
+    public String getListClass()
+    {
+        return listClass;
+    }
+
+    public void setListClass(String listClass)
+    {
+        this.listClass = listClass;
+    }
+
+    public boolean getDefault()
+    {
+        return UserConstants.YES.equals(this.isDefault);
+    }
+
+    public String getIsDefault()
+    {
+        return isDefault;
+    }
+
+    public void setIsDefault(String isDefault)
+    {
+        this.isDefault = isDefault;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+    
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("dictCode", getDictCode())
+            .append("dictSort", getDictSort())
+            .append("dictLabel", getDictLabel())
+            .append("dictValue", getDictValue())
+            .append("dictType", getDictType())
+            .append("cssClass", getCssClass())
+            .append("listClass", getListClass())
+            .append("isDefault", getIsDefault())
+            .append("status", getStatus())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 96 - 0
warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysDictType.java

@@ -0,0 +1,96 @@
+package com.warst.system.api.domain;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.warst.common.core.annotation.Excel;
+import com.warst.common.core.annotation.Excel.ColumnType;
+import com.warst.common.core.web.domain.BaseEntity;
+
+/**
+ * 字典类型表 sys_dict_type
+ * 
+ * @author ruoyi
+ */
+public class SysDictType extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 字典主键 */
+    @Excel(name = "字典主键", cellType = ColumnType.NUMERIC)
+    private Long dictId;
+
+    /** 字典名称 */
+    @Excel(name = "字典名称")
+    private String dictName;
+
+    /** 字典类型 */
+    @Excel(name = "字典类型")
+    private String dictType;
+
+    /** 状态(0正常 1停用) */
+    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    public Long getDictId()
+    {
+        return dictId;
+    }
+
+    public void setDictId(Long dictId)
+    {
+        this.dictId = dictId;
+    }
+
+    @NotBlank(message = "字典名称不能为空")
+    @Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
+    public String getDictName()
+    {
+        return dictName;
+    }
+
+    public void setDictName(String dictName)
+    {
+        this.dictName = dictName;
+    }
+
+    @NotBlank(message = "字典类型不能为空")
+    @Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
+    @Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)")
+    public String getDictType()
+    {
+        return dictType;
+    }
+
+    public void setDictType(String dictType)
+    {
+        this.dictType = dictType;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+    
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("dictId", getDictId())
+            .append("dictName", getDictName())
+            .append("dictType", getDictType())
+            .append("status", getStatus())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 50 - 0
warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysFile.java

@@ -0,0 +1,50 @@
+package com.warst.system.api.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 文件信息
+ * 
+ * @author ruoyi
+ */
+public class SysFile
+{
+    /**
+     * 文件名称
+     */
+    private String name;
+
+    /**
+     * 文件地址
+     */
+    private String url;
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public String getUrl()
+    {
+        return url;
+    }
+
+    public void setUrl(String url)
+    {
+        this.url = url;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("name", getName())
+            .append("url", getUrl())
+            .toString();
+    }
+}

+ 102 - 0
warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysLogininfor.java

@@ -0,0 +1,102 @@
+package com.warst.system.api.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.warst.common.core.annotation.Excel;
+import com.warst.common.core.annotation.Excel.ColumnType;
+import com.warst.common.core.web.domain.BaseEntity;
+
+/**
+ * 系统访问记录表 sys_logininfor
+ * 
+ * @author ruoyi
+ */
+public class SysLogininfor extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    @Excel(name = "序号", cellType = ColumnType.NUMERIC)
+    private Long infoId;
+
+    /** 用户账号 */
+    @Excel(name = "用户账号")
+    private String userName;
+
+    /** 状态 0成功 1失败 */
+    @Excel(name = "状态", readConverterExp = "0=成功,1=失败")
+    private String status;
+
+    /** 地址 */
+    @Excel(name = "地址")
+    private String ipaddr;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    private String msg;
+
+    /** 访问时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "访问时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date accessTime;
+
+    public Long getInfoId()
+    {
+        return infoId;
+    }
+
+    public void setInfoId(Long infoId)
+    {
+        this.infoId = infoId;
+    }
+
+    public String getUserName()
+    {
+        return userName;
+    }
+
+    public void setUserName(String userName)
+    {
+        this.userName = userName;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getIpaddr()
+    {
+        return ipaddr;
+    }
+
+    public void setIpaddr(String ipaddr)
+    {
+        this.ipaddr = ipaddr;
+    }
+
+    public String getMsg()
+    {
+        return msg;
+    }
+
+    public void setMsg(String msg)
+    {
+        this.msg = msg;
+    }
+
+    public Date getAccessTime()
+    {
+        return accessTime;
+    }
+
+    public void setAccessTime(Date accessTime)
+    {
+        this.accessTime = accessTime;
+    }
+}

+ 255 - 0
warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysOperLog.java

@@ -0,0 +1,255 @@
+package com.warst.system.api.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.warst.common.core.annotation.Excel;
+import com.warst.common.core.annotation.Excel.ColumnType;
+import com.warst.common.core.web.domain.BaseEntity;
+
+/**
+ * 操作日志记录表 oper_log
+ * 
+ * @author ruoyi
+ */
+public class SysOperLog extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 日志主键 */
+    @Excel(name = "操作序号", cellType = ColumnType.NUMERIC)
+    private Long operId;
+
+    /** 操作模块 */
+    @Excel(name = "操作模块")
+    private String title;
+
+    /** 业务类型(0其它 1新增 2修改 3删除) */
+    @Excel(name = "业务类型", readConverterExp = "0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据")
+    private Integer businessType;
+
+    /** 业务类型数组 */
+    private Integer[] businessTypes;
+
+    /** 请求方法 */
+    @Excel(name = "请求方法")
+    private String method;
+
+    /** 请求方式 */
+    @Excel(name = "请求方式")
+    private String requestMethod;
+
+    /** 操作类别(0其它 1后台用户 2手机端用户) */
+    @Excel(name = "操作类别", readConverterExp = "0=其它,1=后台用户,2=手机端用户")
+    private Integer operatorType;
+
+    /** 操作人员 */
+    @Excel(name = "操作人员")
+    private String operName;
+
+    /** 部门名称 */
+    @Excel(name = "部门名称")
+    private String deptName;
+
+    /** 请求url */
+    @Excel(name = "请求地址")
+    private String operUrl;
+
+    /** 操作地址 */
+    @Excel(name = "操作地址")
+    private String operIp;
+
+    /** 请求参数 */
+    @Excel(name = "请求参数")
+    private String operParam;
+
+    /** 返回参数 */
+    @Excel(name = "返回参数")
+    private String jsonResult;
+
+    /** 操作状态(0正常 1异常) */
+    @Excel(name = "状态", readConverterExp = "0=正常,1=异常")
+    private Integer status;
+
+    /** 错误消息 */
+    @Excel(name = "错误消息")
+    private String errorMsg;
+
+    /** 操作时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date operTime;
+
+    /** 消耗时间 */
+    @Excel(name = "消耗时间", suffix = "毫秒")
+    private Long costTime;
+
+    public Long getOperId()
+    {
+        return operId;
+    }
+
+    public void setOperId(Long operId)
+    {
+        this.operId = operId;
+    }
+
+    public String getTitle()
+    {
+        return title;
+    }
+
+    public void setTitle(String title)
+    {
+        this.title = title;
+    }
+
+    public Integer getBusinessType()
+    {
+        return businessType;
+    }
+
+    public void setBusinessType(Integer businessType)
+    {
+        this.businessType = businessType;
+    }
+
+    public Integer[] getBusinessTypes()
+    {
+        return businessTypes;
+    }
+
+    public void setBusinessTypes(Integer[] businessTypes)
+    {
+        this.businessTypes = businessTypes;
+    }
+
+    public String getMethod()
+    {
+        return method;
+    }
+
+    public void setMethod(String method)
+    {
+        this.method = method;
+    }
+
+    public String getRequestMethod()
+    {
+        return requestMethod;
+    }
+
+    public void setRequestMethod(String requestMethod)
+    {
+        this.requestMethod = requestMethod;
+    }
+
+    public Integer getOperatorType()
+    {
+        return operatorType;
+    }
+
+    public void setOperatorType(Integer operatorType)
+    {
+        this.operatorType = operatorType;
+    }
+
+    public String getOperName()
+    {
+        return operName;
+    }
+
+    public void setOperName(String operName)
+    {
+        this.operName = operName;
+    }
+
+    public String getDeptName()
+    {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName)
+    {
+        this.deptName = deptName;
+    }
+
+    public String getOperUrl()
+    {
+        return operUrl;
+    }
+
+    public void setOperUrl(String operUrl)
+    {
+        this.operUrl = operUrl;
+    }
+
+    public String getOperIp()
+    {
+        return operIp;
+    }
+
+    public void setOperIp(String operIp)
+    {
+        this.operIp = operIp;
+    }
+
+    public String getOperParam()
+    {
+        return operParam;
+    }
+
+    public void setOperParam(String operParam)
+    {
+        this.operParam = operParam;
+    }
+
+    public String getJsonResult()
+    {
+        return jsonResult;
+    }
+
+    public void setJsonResult(String jsonResult)
+    {
+        this.jsonResult = jsonResult;
+    }
+
+    public Integer getStatus()
+    {
+        return status;
+    }
+
+    public void setStatus(Integer status)
+    {
+        this.status = status;
+    }
+
+    public String getErrorMsg()
+    {
+        return errorMsg;
+    }
+
+    public void setErrorMsg(String errorMsg)
+    {
+        this.errorMsg = errorMsg;
+    }
+
+    public Date getOperTime()
+    {
+        return operTime;
+    }
+
+    public void setOperTime(Date operTime)
+    {
+        this.operTime = operTime;
+    }
+
+    public Long getCostTime()
+    {
+        return costTime;
+    }
+
+    public void setCostTime(Long costTime)
+    {
+        this.costTime = costTime;
+    }
+}

+ 241 - 0
warst-api/warst-api-system/src/main/java/com/warst/system/api/domain/SysRole.java

@@ -0,0 +1,241 @@
+package com.warst.system.api.domain;
+
+import java.util.Set;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.warst.common.core.annotation.Excel;
+import com.warst.common.core.annotation.Excel.ColumnType;
+import com.warst.common.core.web.domain.BaseEntity;
+
+/**
+ * 角色表 sys_role
+ * 
+ * @author ruoyi
+ */
+public class SysRole extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 角色ID */
+    @Excel(name = "角色序号", cellType = ColumnType.NUMERIC)
+    private Long roleId;
+
+    /** 角色名称 */
+    @Excel(name = "角色名称")
+    private String roleName;
+
+    /** 角色权限 */
+    @Excel(name = "角色权限")
+    private String roleKey;
+
+    /** 角色排序 */
+    @Excel(name = "角色排序")
+    private Integer roleSort;
+
+    /** 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限) */
+    @Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限")
+    private String dataScope;
+
+    /** 菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示) */
+    private boolean menuCheckStrictly;
+
+    /** 部门树选择项是否关联显示(0:父子不互相关联显示 1:父子互相关联显示 ) */
+    private boolean deptCheckStrictly;
+
+    /** 角色状态(0正常 1停用) */
+    @Excel(name = "角色状态", readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 用户是否存在此角色标识 默认不存在 */
+    private boolean flag = false;
+
+    /** 菜单组 */
+    private Long[] menuIds;
+
+    /** 部门组(数据权限) */
+    private Long[] deptIds;
+
+    /** 角色菜单权限 */
+    private Set<String> permissions;
+
+    public SysRole()
+    {
+
+    }
+
+    public SysRole(Long roleId)
+    {
+        this.roleId = roleId;
+    }
+
+    public Long getRoleId()
+    {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId)
+    {
+        this.roleId = roleId;
+    }
+
+    public boolean isAdmin()
+    {
+        return isAdmin(this.roleId);
+    }
+
+    public static boolean isAdmin(Long roleId)
+    {
+        return roleId != null && 1L == roleId;
+    }
+
+    @NotBlank(message = "角色名称不能为空")
+    @Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符")
+    public String getRoleName()
+    {
+        return roleName;
+    }
+
+    public void setRoleName(String roleName)
+    {
+        this.roleName = roleName;
+    }
+
+    @NotBlank(message = "权限字符不能为空")
+    @Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符")
+    public String getRoleKey()
+    {
+        return roleKey;
+    }
+
+    public void setRoleKey(String roleKey)
+    {
+        this.roleKey = roleKey;
+    }
+
+    @NotNull(message = "显示顺序不能为空")
+    public Integer getRoleSort()
+    {
+        return roleSort;
+    }
+
+    public void setRoleSort(Integer roleSort)
+    {
+        this.roleSort = roleSort;
+    }
+
+    public String getDataScope()
+    {
+        return dataScope;
+    }
+
+    public void setDataScope(String dataScope)
+    {
+        this.dataScope = dataScope;
+    }
+
+    public boolean isMenuCheckStrictly()
+    {
+        return menuCheckStrictly;
+    }
+
+    public void setMenuCheckStrictly(boolean menuCheckStrictly)
+    {
+        this.menuCheckStrictly = menuCheckStrictly;
+    }
+
+    public boolean isDeptCheckStrictly()
+    {
+        return deptCheckStrictly;
+    }
+
+    public void setDeptCheckStrictly(boolean deptCheckStrictly)
+    {
+        this.deptCheckStrictly = deptCheckStrictly;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getDelFlag()
+    {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public boolean isFlag()
+    {
+        return flag;
+    }
+
+    public void setFlag(boolean flag)
+    {
+        this.flag = flag;
+    }
+
+    public Long[] getMenuIds()
+    {
+        return menuIds;
+    }
+
+    public void setMenuIds(Long[] menuIds)
+    {
+        this.menuIds = menuIds;
+    }
+
+    public Long[] getDeptIds()
+    {
+        return deptIds;
+    }
+
+    public void setDeptIds(Long[] deptIds)
+    {
+        this.deptIds = deptIds;
+    }
+
+    public Set<String> getPermissions()
+    {
+        return permissions;
+    }
+
+    public void setPermissions(Set<String> permissions)
+    {
+        this.permissions = permissions;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("roleId", getRoleId())
+            .append("roleName", getRoleName())
+            .append("roleKey", getRoleKey())
+            .append("roleSort", getRoleSort())
+            .append("dataScope", getDataScope())
+            .append("menuCheckStrictly", isMenuCheckStrictly())
+            .append("deptCheckStrictly", isDeptCheckStrictly())
+            .append("status", getStatus())
+            .append("delFlag", getDelFlag())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است