From 48c974ee8c4ac1b1a74158eb2e350cbb21f9a0e7 Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期六, 24 五月 2025 14:48:14 +0800
Subject: [PATCH] 配置文件样式化
---
.gitignore | 3
ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml | 124 ++
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml | 220 ++++
pom.xml | 253 ++++
ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml | 127 ++
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml | 159 +++
ruoyi-quartz/pom.xml | 40
ruoyi-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml | 111 ++
ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml | 34
ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml | 152 ++
ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml | 89 +
ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml | 105 ++
ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml | 20
ruoyi-framework/pom.xml | 64 +
ruoyi-admin/pom.xml | 89 +
ruoyi-system/pom.xml | 28
.github/FUNDING.yml | 1
ruoyi-generator/pom.xml | 40
ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml | 57 +
ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml | 34
ruoyi-admin/src/main/resources/application.yml | 143 ++
ruoyi-generator/src/main/resources/generator.yml | 12
ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml | 44
ruoyi-common/pom.xml | 142 ++
ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml | 34
ruoyi-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml | 94 +
ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml | 122 ++
ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml | 87 +
ruoyi-admin/src/main/resources/application-druid.yml | 61 +
ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml | 210 ++++
ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml | 117 ++
ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml | 206 ++++
32 files changed, 3,020 insertions(+), 2 deletions(-)
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..fbcab77
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1 @@
+custom: http://doc.ruoyi.vip/ruoyi-vue/other/donate.html
diff --git a/.gitignore b/.gitignore
index 9788e55..4ce7895 100644
--- a/.gitignore
+++ b/.gitignore
@@ -46,5 +46,4 @@
!*/build/*.html
!*/build/*.xml
-*.yml
-*.xml
+ruoyi-admin/src/main/resources/*.xml
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..857f440
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,253 @@
+<?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.ruoyi</groupId>
+ <artifactId>ruoyi</artifactId>
+ <version>3.8.9</version>
+
+ <name>ruoyi</name>
+ <url>http://www.ruoyi.vip</url>
+ <description>鑻ヤ緷绠$悊绯荤粺</description>
+
+ <properties>
+ <ruoyi.version>3.8.9</ruoyi.version>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <java.version>17</java.version>
+ <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
+ <mybatis-spring-boot.version>3.0.3</mybatis-spring-boot.version>
+ <druid.version>1.2.23</druid.version>
+ <bitwalker.version>1.21</bitwalker.version>
+ <swagger.version>3.0.0</swagger.version>
+ <kaptcha.version>2.3.3</kaptcha.version>
+ <pagehelper.boot.version>2.1.0</pagehelper.boot.version>
+ <fastjson.version>2.0.53</fastjson.version>
+ <oshi.version>6.8.1</oshi.version>
+ <commons.io.version>2.19.0</commons.io.version>
+ <poi.version>4.1.2</poi.version>
+ <velocity.version>2.3</velocity.version>
+ <jwt.version>0.9.1</jwt.version>
+ <mysql.version>8.2.0</mysql.version>
+ <jaxb-api.version>2.3.1</jaxb-api.version>
+ <jakarta.version>6.0.0</jakarta.version>
+ <springdoc.version>2.6.0</springdoc.version>
+ </properties>
+
+ <!-- 渚濊禆澹版槑 -->
+ <dependencyManagement>
+ <dependencies>
+
+ <!-- SpringBoot鐨勪緷璧栭厤缃�-->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <version>3.3.5</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+
+ <!-- 闃块噷鏁版嵁搴撹繛鎺ユ睜 -->
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>druid-spring-boot-3-starter</artifactId>
+ <version>${druid.version}</version>
+ </dependency>
+
+ <!-- 瑙f瀽瀹㈡埛绔搷浣滅郴缁熴�佹祻瑙堝櫒绛� -->
+ <dependency>
+ <groupId>eu.bitwalker</groupId>
+ <artifactId>UserAgentUtils</artifactId>
+ <version>${bitwalker.version}</version>
+ </dependency>
+
+ <!-- pagehelper 鍒嗛〉鎻掍欢 -->
+ <dependency>
+ <groupId>com.github.pagehelper</groupId>
+ <artifactId>pagehelper-spring-boot-starter</artifactId>
+ <version>${pagehelper.boot.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mybatis.spring.boot</groupId>
+ <artifactId>mybatis-spring-boot-starter</artifactId>
+ <version>${mybatis-spring-boot.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.mysql</groupId>
+ <artifactId>mysql-connector-j</artifactId>
+ <version>${mysql.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ <version>${jaxb-api.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>jakarta.servlet</groupId>
+ <artifactId>jakarta.servlet-api</artifactId>
+ <version>${jakarta.version}</version>
+ </dependency>
+
+ <!-- 鑾峰彇绯荤粺淇℃伅 -->
+ <dependency>
+ <groupId>com.github.oshi</groupId>
+ <artifactId>oshi-core</artifactId>
+ <version>${oshi.version}</version>
+ </dependency>
+
+ <!-- spring-doc -->
+ <dependency>
+ <groupId>org.springdoc</groupId>
+ <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
+ <version>${springdoc.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>
+
+ <!-- velocity浠g爜鐢熸垚浣跨敤妯℃澘 -->
+ <dependency>
+ <groupId>org.apache.velocity</groupId>
+ <artifactId>velocity-engine-core</artifactId>
+ <version>${velocity.version}</version>
+ </dependency>
+
+ <!-- 闃块噷JSON瑙f瀽鍣� -->
+ <dependency>
+ <groupId>com.alibaba.fastjson2</groupId>
+ <artifactId>fastjson2</artifactId>
+ <version>${fastjson.version}</version>
+ </dependency>
+
+ <!-- Token鐢熸垚涓庤В鏋�-->
+ <dependency>
+ <groupId>io.jsonwebtoken</groupId>
+ <artifactId>jjwt</artifactId>
+ <version>${jwt.version}</version>
+ </dependency>
+
+ <!-- 楠岃瘉鐮� -->
+ <dependency>
+ <groupId>pro.fessional</groupId>
+ <artifactId>kaptcha</artifactId>
+ <version>${kaptcha.version}</version>
+ </dependency>
+
+ <!-- 瀹氭椂浠诲姟-->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-quartz</artifactId>
+ <version>${ruoyi.version}</version>
+ </dependency>
+
+ <!-- 浠g爜鐢熸垚-->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-generator</artifactId>
+ <version>${ruoyi.version}</version>
+ </dependency>
+
+ <!-- 鏍稿績妯″潡-->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-framework</artifactId>
+ <version>${ruoyi.version}</version>
+ </dependency>
+
+ <!-- 绯荤粺妯″潡-->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-system</artifactId>
+ <version>${ruoyi.version}</version>
+ </dependency>
+
+ <!-- 閫氱敤宸ュ叿-->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-common</artifactId>
+ <version>${ruoyi.version}</version>
+ </dependency>
+
+ <!-- flyway 鏁版嵁搴撹縼绉诲伐鍏� -->
+ <dependency>
+ <groupId>org.flywaydb</groupId>
+ <artifactId>flyway-core</artifactId>
+ </dependency>
+
+ </dependencies>
+ </dependencyManagement>
+
+ <modules>
+ <module>ruoyi-admin</module>
+ <module>ruoyi-framework</module>
+ <module>ruoyi-system</module>
+ <module>ruoyi-quartz</module>
+ <module>ruoyi-generator</module>
+ <module>ruoyi-common</module>
+ </modules>
+ <packaging>pom</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.13.0</version>
+ <configuration>
+ <parameters>true</parameters>
+ <source>${java.version}</source>
+ <target>${java.version}</target>
+ <encoding>${project.build.sourceEncoding}</encoding>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <version>3.3.0</version>
+ </plugin>
+ </plugins>
+ </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>
\ No newline at end of file
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
new file mode 100644
index 0000000..5a17b7e
--- /dev/null
+++ b/ruoyi-admin/pom.xml
@@ -0,0 +1,89 @@
+<?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>
+ <artifactId>ruoyi</artifactId>
+ <groupId>com.ruoyi</groupId>
+ <version>3.8.9</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>jar</packaging>
+ <artifactId>ruoyi-admin</artifactId>
+
+ <description>
+ web鏈嶅姟鍏ュ彛
+ </description>
+
+ <dependencies>
+
+ <!-- spring-boot-devtools -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-devtools</artifactId>
+ <optional>true</optional> <!-- 琛ㄧず渚濊禆涓嶄細浼犻�� -->
+ </dependency>
+
+ <!-- spring-doc -->
+ <dependency>
+ <groupId>org.springdoc</groupId>
+ <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
+ </dependency>
+
+ <!-- Mysql椹卞姩鍖� -->
+ <dependency>
+ <groupId>com.mysql</groupId>
+ <artifactId>mysql-connector-j</artifactId>
+ </dependency>
+
+ <!-- 鏍稿績妯″潡-->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-framework</artifactId>
+ </dependency>
+
+ <!-- 瀹氭椂浠诲姟-->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-quartz</artifactId>
+ </dependency>
+
+ <!-- 浠g爜鐢熸垚-->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-generator</artifactId>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <version>2.5.15</version>
+ <configuration>
+ <fork>true</fork> <!-- 濡傛灉娌℃湁璇ラ厤缃紝devtools涓嶄細鐢熸晥 -->
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>3.1.0</version>
+ <configuration>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ <warName>${project.artifactId}</warName>
+ </configuration>
+ </plugin>
+ </plugins>
+ <finalName>${project.artifactId}</finalName>
+ </build>
+
+</project>
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
new file mode 100644
index 0000000..05cd381
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -0,0 +1,61 @@
+# 鏁版嵁婧愰厤缃�
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: org.postgresql.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:postgresql://lunor.cn:5431/ruoyi-java
+ username: test
+ password: chj123456
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
new file mode 100644
index 0000000..3fbbed4
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -0,0 +1,143 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: D:/ruoyi/uploadPath
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 8081
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: debug
+ org.springframework: warn
+
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 10
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 1
+
+# Spring閰嶇疆
+spring:
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ profiles:
+ active: druid
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 10MB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 20MB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ data:
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+ host: localhost
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 0
+ # 瀵嗙爜
+ password:
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+ flyway:
+ enabled: true # 鍚姩杩佺Щ
+ baseline-on-migrate: true # 濡傛灉鏁版嵁搴撲腑娌℃湁杩佺Щ鑴氭湰锛屽垯杩涜鍒濆鍖�
+ baseline-version: 20230720000000
+ out-of-order: true
+ clean-disabled: true
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚�
+ typeAliasesPackage: com.ruoyi.**.domain
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Springdoc閰嶇疆
+springdoc:
+ api-docs:
+ path: /v3/api-docs
+ swagger-ui:
+ enabled: true
+ path: /swagger-ui.html
+ tags-sorter: alpha
+ group-configs:
+ - group: 'default'
+ display-name: '娴嬭瘯妯″潡'
+ paths-to-match: '/**'
+ packages-to-scan: com.ruoyi.web.controller.tool
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
diff --git a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml
new file mode 100644
index 0000000..ac47c03
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration
+PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-config.dtd">
+<configuration>
+ <!-- 鍏ㄥ眬鍙傛暟 -->
+ <settings>
+ <!-- 浣垮叏灞�鐨勬槧灏勫櫒鍚敤鎴栫鐢ㄧ紦瀛� -->
+ <setting name="cacheEnabled" value="true" />
+ <!-- 鍏佽JDBC 鏀寔鑷姩鐢熸垚涓婚敭 -->
+ <setting name="useGeneratedKeys" value="true" />
+ <!-- 閰嶇疆榛樿鐨勬墽琛屽櫒.SIMPLE灏辨槸鏅�氭墽琛屽櫒;REUSE鎵ц鍣ㄤ細閲嶇敤棰勫鐞嗚鍙�(prepared statements);BATCH鎵ц鍣ㄥ皢閲嶇敤璇彞骞舵墽琛屾壒閲忔洿鏂� -->
+ <setting name="defaultExecutorType" value="SIMPLE" />
+ <!-- 鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇 -->
+ <setting name="logImpl" value="SLF4J" />
+ <!-- 浣跨敤椹煎嘲鍛藉悕娉曡浆鎹㈠瓧娈� -->
+ <!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
+ </settings>
+
+</configuration>
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
new file mode 100644
index 0000000..9b8e599
--- /dev/null
+++ b/ruoyi-common/pom.xml
@@ -0,0 +1,142 @@
+<?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>
+ <artifactId>ruoyi</artifactId>
+ <groupId>com.ruoyi</groupId>
+ <version>3.8.9</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ruoyi-common</artifactId>
+
+ <description>
+ common閫氱敤宸ュ叿
+ </description>
+
+ <dependencies>
+
+ <!-- Spring妗嗘灦鍩烘湰鐨勬牳蹇冨伐鍏� -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context-support</artifactId>
+ </dependency>
+
+ <!-- SpringWeb妯″潡 -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ </dependency>
+
+ <!-- spring security 瀹夊叏璁よ瘉 -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-security</artifactId>
+ </dependency>
+
+ <!-- pagehelper 鍒嗛〉鎻掍欢 -->
+ <dependency>
+ <groupId>com.github.pagehelper</groupId>
+ <artifactId>pagehelper-spring-boot-starter</artifactId>
+ </dependency>
+
+ <!-- 鑷畾涔夐獙璇佹敞瑙� -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-validation</artifactId>
+ </dependency>
+
+ <!--甯哥敤宸ュ叿绫� -->
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ </dependency>
+
+ <!-- JSON宸ュ叿绫� -->
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ </dependency>
+
+ <!-- 闃块噷JSON瑙f瀽鍣� -->
+ <dependency>
+ <groupId>com.alibaba.fastjson2</groupId>
+ <artifactId>fastjson2</artifactId>
+ </dependency>
+
+ <!-- io甯哥敤宸ュ叿绫� -->
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </dependency>
+
+ <!-- excel宸ュ叿 -->
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-ooxml</artifactId>
+ </dependency>
+
+ <!-- yml瑙f瀽鍣� -->
+ <dependency>
+ <groupId>org.yaml</groupId>
+ <artifactId>snakeyaml</artifactId>
+ </dependency>
+
+ <!-- Token鐢熸垚涓庤В鏋�-->
+ <dependency>
+ <groupId>io.jsonwebtoken</groupId>
+ <artifactId>jjwt</artifactId>
+ </dependency>
+
+ <!-- Jaxb -->
+ <dependency>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ </dependency>
+
+ <!-- redis 缂撳瓨鎿嶄綔 -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-data-redis</artifactId>
+ </dependency>
+
+ <!-- pool 瀵硅薄姹� -->
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
+ </dependency>
+
+ <!-- 瑙f瀽瀹㈡埛绔搷浣滅郴缁熴�佹祻瑙堝櫒绛� -->
+ <dependency>
+ <groupId>eu.bitwalker</groupId>
+ <artifactId>UserAgentUtils</artifactId>
+ </dependency>
+
+ <!-- servlet鍖� -->
+ <dependency>
+ <groupId>jakarta.servlet</groupId>
+ <artifactId>jakarta.servlet-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mybatis</groupId>
+ <artifactId>mybatis</artifactId>
+ <version>3.5.16</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
+ <version>3.5.10</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-jsqlparser</artifactId>
+ <version>3.5.10</version>
+ </dependency>
+
+ </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/ruoyi-framework/pom.xml b/ruoyi-framework/pom.xml
new file mode 100644
index 0000000..5456102
--- /dev/null
+++ b/ruoyi-framework/pom.xml
@@ -0,0 +1,64 @@
+<?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>
+ <artifactId>ruoyi</artifactId>
+ <groupId>com.ruoyi</groupId>
+ <version>3.8.9</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ruoyi-framework</artifactId>
+
+ <description>
+ framework妗嗘灦鏍稿績
+ </description>
+
+ <dependencies>
+
+ <!-- SpringBoot Web瀹瑰櫒 -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ </dependency>
+
+ <!-- SpringBoot 鎷︽埅鍣� -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-aop</artifactId>
+ </dependency>
+
+ <!-- 闃块噷鏁版嵁搴撹繛鎺ユ睜 -->
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>druid-spring-boot-3-starter</artifactId>
+ </dependency>
+
+ <!-- 楠岃瘉鐮� -->
+ <dependency>
+ <groupId>pro.fessional</groupId>
+ <artifactId>kaptcha</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>servlet-api</artifactId>
+ <groupId>javax.servlet</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <!-- 鑾峰彇绯荤粺淇℃伅 -->
+ <dependency>
+ <groupId>com.github.oshi</groupId>
+ <artifactId>oshi-core</artifactId>
+ </dependency>
+
+ <!-- 绯荤粺妯″潡-->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-system</artifactId>
+ </dependency>
+
+ </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/ruoyi-generator/pom.xml b/ruoyi-generator/pom.xml
new file mode 100644
index 0000000..5638eb5
--- /dev/null
+++ b/ruoyi-generator/pom.xml
@@ -0,0 +1,40 @@
+<?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>
+ <artifactId>ruoyi</artifactId>
+ <groupId>com.ruoyi</groupId>
+ <version>3.8.9</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ruoyi-generator</artifactId>
+
+ <description>
+ generator浠g爜鐢熸垚
+ </description>
+
+ <dependencies>
+
+ <!-- velocity浠g爜鐢熸垚浣跨敤妯℃澘 -->
+ <dependency>
+ <groupId>org.apache.velocity</groupId>
+ <artifactId>velocity-engine-core</artifactId>
+ </dependency>
+
+ <!-- 閫氱敤宸ュ叿-->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-common</artifactId>
+ </dependency>
+
+ <!-- 闃块噷鏁版嵁搴撹繛鎺ユ睜 -->
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>druid-spring-boot-3-starter</artifactId>
+ </dependency>
+
+ </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/ruoyi-generator/src/main/resources/generator.yml b/ruoyi-generator/src/main/resources/generator.yml
new file mode 100644
index 0000000..0a3b433
--- /dev/null
+++ b/ruoyi-generator/src/main/resources/generator.yml
@@ -0,0 +1,12 @@
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: chenhj
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸false
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
\ No newline at end of file
diff --git a/ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml b/ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml
new file mode 100644
index 0000000..52857e8
--- /dev/null
+++ b/ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.generator.mapper.GenTableColumnMapper">
+
+ <resultMap type="GenTableColumn" id="GenTableColumnResult">
+ <id property="columnId" column="column_id" />
+ <result property="tableId" column="table_id" />
+ <result property="columnName" column="column_name" />
+ <result property="columnComment" column="column_comment" />
+ <result property="columnType" column="column_type" />
+ <result property="javaType" column="java_type" />
+ <result property="javaField" column="java_field" />
+ <result property="isPk" column="is_pk" />
+ <result property="isIncrement" column="is_increment" />
+ <result property="isRequired" column="is_required" />
+ <result property="isInsert" column="is_insert" />
+ <result property="isEdit" column="is_edit" />
+ <result property="isList" column="is_list" />
+ <result property="isQuery" column="is_query" />
+ <result property="queryType" column="query_type" />
+ <result property="htmlType" column="html_type" />
+ <result property="dictType" column="dict_type" />
+ <result property="sort" column="sort" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectGenTableColumnVo">
+ select column_id, table_id, column_name, column_comment, column_type, java_type, java_field, is_pk, is_increment, is_required, is_insert, is_edit, is_list, is_query, query_type, html_type, dict_type, sort, create_by, create_time, update_by, update_time from gen_table_column
+ </sql>
+
+ <select id="selectGenTableColumnListByTableId" parameterType="Long" resultMap="GenTableColumnResult">
+ <include refid="selectGenTableColumnVo"/>
+ where table_id = #{tableId}
+ order by sort
+ </select>
+
+ <select id="selectDbTableColumnsByName" parameterType="String" resultMap="GenTableColumnResult">
+ select column_name, (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else '0' end) as is_required, (case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type
+ from information_schema.columns where table_schema = (select database()) and table_name = (#{tableName})
+ order by ordinal_position
+ </select>
+
+ <insert id="insertGenTableColumn" parameterType="GenTableColumn" useGeneratedKeys="true" keyProperty="columnId">
+ insert into gen_table_column (
+ <if test="tableId != null and tableId != ''">table_id,</if>
+ <if test="columnName != null and columnName != ''">column_name,</if>
+ <if test="columnComment != null and columnComment != ''">column_comment,</if>
+ <if test="columnType != null and columnType != ''">column_type,</if>
+ <if test="javaType != null and javaType != ''">java_type,</if>
+ <if test="javaField != null and javaField != ''">java_field,</if>
+ <if test="isPk != null and isPk != ''">is_pk,</if>
+ <if test="isIncrement != null and isIncrement != ''">is_increment,</if>
+ <if test="isRequired != null and isRequired != ''">is_required,</if>
+ <if test="isInsert != null and isInsert != ''">is_insert,</if>
+ <if test="isEdit != null and isEdit != ''">is_edit,</if>
+ <if test="isList != null and isList != ''">is_list,</if>
+ <if test="isQuery != null and isQuery != ''">is_query,</if>
+ <if test="queryType != null and queryType != ''">query_type,</if>
+ <if test="htmlType != null and htmlType != ''">html_type,</if>
+ <if test="dictType != null and dictType != ''">dict_type,</if>
+ <if test="sort != null">sort,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="tableId != null and tableId != ''">#{tableId},</if>
+ <if test="columnName != null and columnName != ''">#{columnName},</if>
+ <if test="columnComment != null and columnComment != ''">#{columnComment},</if>
+ <if test="columnType != null and columnType != ''">#{columnType},</if>
+ <if test="javaType != null and javaType != ''">#{javaType},</if>
+ <if test="javaField != null and javaField != ''">#{javaField},</if>
+ <if test="isPk != null and isPk != ''">#{isPk},</if>
+ <if test="isIncrement != null and isIncrement != ''">#{isIncrement},</if>
+ <if test="isRequired != null and isRequired != ''">#{isRequired},</if>
+ <if test="isInsert != null and isInsert != ''">#{isInsert},</if>
+ <if test="isEdit != null and isEdit != ''">#{isEdit},</if>
+ <if test="isList != null and isList != ''">#{isList},</if>
+ <if test="isQuery != null and isQuery != ''">#{isQuery},</if>
+ <if test="queryType != null and queryType != ''">#{queryType},</if>
+ <if test="htmlType != null and htmlType != ''">#{htmlType},</if>
+ <if test="dictType != null and dictType != ''">#{dictType},</if>
+ <if test="sort != null">#{sort},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="updateGenTableColumn" parameterType="GenTableColumn">
+ update gen_table_column
+ <set>
+ <if test="columnComment != null">column_comment = #{columnComment},</if>
+ <if test="javaType != null">java_type = #{javaType},</if>
+ <if test="javaField != null">java_field = #{javaField},</if>
+ <if test="isInsert != null">is_insert = #{isInsert},</if>
+ <if test="isEdit != null">is_edit = #{isEdit},</if>
+ <if test="isList != null">is_list = #{isList},</if>
+ <if test="isQuery != null">is_query = #{isQuery},</if>
+ <if test="isRequired != null">is_required = #{isRequired},</if>
+ <if test="queryType != null">query_type = #{queryType},</if>
+ <if test="htmlType != null">html_type = #{htmlType},</if>
+ <if test="dictType != null">dict_type = #{dictType},</if>
+ <if test="sort != null">sort = #{sort},</if>
+ <if test="updateBy != null">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where column_id = #{columnId}
+ </update>
+
+ <delete id="deleteGenTableColumnByIds" parameterType="Long">
+ delete from gen_table_column where table_id in
+ <foreach collection="array" item="tableId" open="(" separator="," close=")">
+ #{tableId}
+ </foreach>
+ </delete>
+
+ <delete id="deleteGenTableColumns">
+ delete from gen_table_column where column_id in
+ <foreach collection="list" item="item" open="(" separator="," close=")">
+ #{item.columnId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml b/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
new file mode 100644
index 0000000..d1110f7
--- /dev/null
+++ b/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.generator.mapper.GenTableMapper">
+
+ <resultMap type="GenTable" id="GenTableResult">
+ <id property="tableId" column="table_id" />
+ <result property="tableName" column="table_name" />
+ <result property="tableComment" column="table_comment" />
+ <result property="subTableName" column="sub_table_name" />
+ <result property="subTableFkName" column="sub_table_fk_name" />
+ <result property="className" column="class_name" />
+ <result property="tplCategory" column="tpl_category" />
+ <result property="tplWebType" column="tpl_web_type" />
+ <result property="packageName" column="package_name" />
+ <result property="moduleName" column="module_name" />
+ <result property="businessName" column="business_name" />
+ <result property="functionName" column="function_name" />
+ <result property="functionAuthor" column="function_author" />
+ <result property="genType" column="gen_type" />
+ <result property="genPath" column="gen_path" />
+ <result property="options" column="options" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
+ <collection property="columns" javaType="java.util.List" resultMap="GenTableColumnResult" />
+ </resultMap>
+
+ <resultMap type="GenTableColumn" id="GenTableColumnResult">
+ <id property="columnId" column="column_id" />
+ <result property="tableId" column="table_id" />
+ <result property="columnName" column="column_name" />
+ <result property="columnComment" column="column_comment" />
+ <result property="columnType" column="column_type" />
+ <result property="javaType" column="java_type" />
+ <result property="javaField" column="java_field" />
+ <result property="isPk" column="is_pk" />
+ <result property="isIncrement" column="is_increment" />
+ <result property="isRequired" column="is_required" />
+ <result property="isInsert" column="is_insert" />
+ <result property="isEdit" column="is_edit" />
+ <result property="isList" column="is_list" />
+ <result property="isQuery" column="is_query" />
+ <result property="queryType" column="query_type" />
+ <result property="htmlType" column="html_type" />
+ <result property="dictType" column="dict_type" />
+ <result property="sort" column="sort" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectGenTableVo">
+ select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, tpl_web_type, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table
+ </sql>
+
+ <select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult">
+ <include refid="selectGenTableVo"/>
+ <where>
+ <if test="tableName != null and tableName != ''">
+ AND lower(table_name) like lower(concat('%', #{tableName}, '%'))
+ </if>
+ <if test="tableComment != null and tableComment != ''">
+ AND lower(table_comment) like lower(concat('%', #{tableComment}, '%'))
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+ AND date_format(create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+ AND date_format(create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d')
+ </if>
+ </where>
+ </select>
+
+ <select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult">
+ select table_name, table_comment, create_time, update_time from information_schema.tables
+ where table_schema = (select database())
+ AND table_name NOT LIKE 'qrtz\_%' AND table_name NOT LIKE 'gen\_%'
+ AND table_name NOT IN (select table_name from gen_table)
+ <if test="tableName != null and tableName != ''">
+ AND lower(table_name) like lower(concat('%', #{tableName}, '%'))
+ </if>
+ <if test="tableComment != null and tableComment != ''">
+ AND lower(table_comment) like lower(concat('%', #{tableComment}, '%'))
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+ AND date_format(create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+ AND date_format(create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d')
+ </if>
+ order by create_time desc
+ </select>
+
+ <select id="selectDbTableListByNames" resultMap="GenTableResult">
+ select table_name, table_comment, create_time, update_time from information_schema.tables
+ where table_name NOT LIKE 'qrtz\_%' and table_name NOT LIKE 'gen\_%' and table_schema = (select database())
+ and table_name in
+ <foreach collection="array" item="name" open="(" separator="," close=")">
+ #{name}
+ </foreach>
+ </select>
+
+ <select id="selectTableByName" parameterType="String" resultMap="GenTableResult">
+ select table_name, table_comment, create_time, update_time from information_schema.tables
+ where table_comment <![CDATA[ <> ]]> '' and table_schema = (select database())
+ and table_name = #{tableName}
+ </select>
+
+ <select id="selectGenTableById" parameterType="Long" resultMap="GenTableResult">
+ SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark,
+ c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
+ FROM gen_table t
+ LEFT JOIN gen_table_column c ON t.table_id = c.table_id
+ where t.table_id = #{tableId} order by c.sort
+ </select>
+
+ <select id="selectGenTableByName" parameterType="String" resultMap="GenTableResult">
+ SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark,
+ c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
+ FROM gen_table t
+ LEFT JOIN gen_table_column c ON t.table_id = c.table_id
+ where t.table_name = #{tableName} order by c.sort
+ </select>
+
+ <select id="selectGenTableAll" parameterType="String" resultMap="GenTableResult">
+ SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.options, t.remark,
+ c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
+ FROM gen_table t
+ LEFT JOIN gen_table_column c ON t.table_id = c.table_id
+ order by c.sort
+ </select>
+
+ <insert id="insertGenTable" parameterType="GenTable" useGeneratedKeys="true" keyProperty="tableId">
+ insert into gen_table (
+ <if test="tableName != null">table_name,</if>
+ <if test="tableComment != null and tableComment != ''">table_comment,</if>
+ <if test="className != null and className != ''">class_name,</if>
+ <if test="tplCategory != null and tplCategory != ''">tpl_category,</if>
+ <if test="tplWebType != null and tplWebType != ''">tpl_web_type,</if>
+ <if test="packageName != null and packageName != ''">package_name,</if>
+ <if test="moduleName != null and moduleName != ''">module_name,</if>
+ <if test="businessName != null and businessName != ''">business_name,</if>
+ <if test="functionName != null and functionName != ''">function_name,</if>
+ <if test="functionAuthor != null and functionAuthor != ''">function_author,</if>
+ <if test="genType != null and genType != ''">gen_type,</if>
+ <if test="genPath != null and genPath != ''">gen_path,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="tableName != null">#{tableName},</if>
+ <if test="tableComment != null and tableComment != ''">#{tableComment},</if>
+ <if test="className != null and className != ''">#{className},</if>
+ <if test="tplCategory != null and tplCategory != ''">#{tplCategory},</if>
+ <if test="tplWebType != null and tplWebType != ''">#{tplWebType},</if>
+ <if test="packageName != null and packageName != ''">#{packageName},</if>
+ <if test="moduleName != null and moduleName != ''">#{moduleName},</if>
+ <if test="businessName != null and businessName != ''">#{businessName},</if>
+ <if test="functionName != null and functionName != ''">#{functionName},</if>
+ <if test="functionAuthor != null and functionAuthor != ''">#{functionAuthor},</if>
+ <if test="genType != null and genType != ''">#{genType},</if>
+ <if test="genPath != null and genPath != ''">#{genPath},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="createTable">
+ ${sql}
+ </update>
+
+ <update id="updateGenTable" parameterType="GenTable">
+ update gen_table
+ <set>
+ <if test="tableName != null">table_name = #{tableName},</if>
+ <if test="tableComment != null and tableComment != ''">table_comment = #{tableComment},</if>
+ <if test="subTableName != null">sub_table_name = #{subTableName},</if>
+ <if test="subTableFkName != null">sub_table_fk_name = #{subTableFkName},</if>
+ <if test="className != null and className != ''">class_name = #{className},</if>
+ <if test="functionAuthor != null and functionAuthor != ''">function_author = #{functionAuthor},</if>
+ <if test="genType != null and genType != ''">gen_type = #{genType},</if>
+ <if test="genPath != null and genPath != ''">gen_path = #{genPath},</if>
+ <if test="tplCategory != null and tplCategory != ''">tpl_category = #{tplCategory},</if>
+ <if test="tplWebType != null and tplWebType != ''">tpl_web_type = #{tplWebType},</if>
+ <if test="packageName != null and packageName != ''">package_name = #{packageName},</if>
+ <if test="moduleName != null and moduleName != ''">module_name = #{moduleName},</if>
+ <if test="businessName != null and businessName != ''">business_name = #{businessName},</if>
+ <if test="functionName != null and functionName != ''">function_name = #{functionName},</if>
+ <if test="options != null and options != ''">options = #{options},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ update_time = sysdate()
+ </set>
+ where table_id = #{tableId}
+ </update>
+
+ <delete id="deleteGenTableByIds" parameterType="Long">
+ delete from gen_table where table_id in
+ <foreach collection="array" item="tableId" open="(" separator="," close=")">
+ #{tableId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-quartz/pom.xml b/ruoyi-quartz/pom.xml
new file mode 100644
index 0000000..0421087
--- /dev/null
+++ b/ruoyi-quartz/pom.xml
@@ -0,0 +1,40 @@
+<?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>
+ <artifactId>ruoyi</artifactId>
+ <groupId>com.ruoyi</groupId>
+ <version>3.8.9</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ruoyi-quartz</artifactId>
+
+ <description>
+ quartz瀹氭椂浠诲姟
+ </description>
+
+ <dependencies>
+
+ <!-- 瀹氭椂浠诲姟 -->
+ <dependency>
+ <groupId>org.quartz-scheduler</groupId>
+ <artifactId>quartz</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>com.mchange</groupId>
+ <artifactId>c3p0</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <!-- 閫氱敤宸ュ叿-->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-common</artifactId>
+ </dependency>
+
+ </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/ruoyi-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml b/ruoyi-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml
new file mode 100644
index 0000000..ba1b683
--- /dev/null
+++ b/ruoyi-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.quartz.mapper.SysJobLogMapper">
+
+ <resultMap type="SysJobLog" id="SysJobLogResult">
+ <id property="jobLogId" column="job_log_id" />
+ <result property="jobName" column="job_name" />
+ <result property="jobGroup" column="job_group" />
+ <result property="invokeTarget" column="invoke_target" />
+ <result property="jobMessage" column="job_message" />
+ <result property="status" column="status" />
+ <result property="exceptionInfo" column="exception_info" />
+ <result property="createTime" column="create_time" />
+ </resultMap>
+
+ <sql id="selectJobLogVo">
+ select job_log_id, job_name, job_group, invoke_target, job_message, status, exception_info, create_time
+ from sys_job_log
+ </sql>
+
+ <select id="selectJobLogList" parameterType="SysJobLog" resultMap="SysJobLogResult">
+ <include refid="selectJobLogVo"/>
+ <where>
+ <if test="jobName != null and jobName != ''">
+ AND job_name like concat('%', #{jobName}, '%')
+ </if>
+ <if test="jobGroup != null and jobGroup != ''">
+ AND job_group = #{jobGroup}
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ <if test="invokeTarget != null and invokeTarget != ''">
+ AND invoke_target like concat('%', #{invokeTarget}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+ and date_format(create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+ and date_format(create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d')
+ </if>
+ </where>
+ order by create_time desc
+ </select>
+
+ <select id="selectJobLogAll" resultMap="SysJobLogResult">
+ <include refid="selectJobLogVo"/>
+ </select>
+
+ <select id="selectJobLogById" parameterType="Long" resultMap="SysJobLogResult">
+ <include refid="selectJobLogVo"/>
+ where job_log_id = #{jobLogId}
+ </select>
+
+ <delete id="deleteJobLogById" parameterType="Long">
+ delete from sys_job_log where job_log_id = #{jobLogId}
+ </delete>
+
+ <delete id="deleteJobLogByIds" parameterType="Long">
+ delete from sys_job_log where job_log_id in
+ <foreach collection="array" item="jobLogId" open="(" separator="," close=")">
+ #{jobLogId}
+ </foreach>
+ </delete>
+
+ <update id="cleanJobLog">
+ truncate table sys_job_log
+ </update>
+
+ <insert id="insertJobLog" parameterType="SysJobLog">
+ insert into sys_job_log(
+ <if test="jobLogId != null and jobLogId != 0">job_log_id,</if>
+ <if test="jobName != null and jobName != ''">job_name,</if>
+ <if test="jobGroup != null and jobGroup != ''">job_group,</if>
+ <if test="invokeTarget != null and invokeTarget != ''">invoke_target,</if>
+ <if test="jobMessage != null and jobMessage != ''">job_message,</if>
+ <if test="status != null and status != ''">status,</if>
+ <if test="exceptionInfo != null and exceptionInfo != ''">exception_info,</if>
+ create_time
+ )values(
+ <if test="jobLogId != null and jobLogId != 0">#{jobLogId},</if>
+ <if test="jobName != null and jobName != ''">#{jobName},</if>
+ <if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if>
+ <if test="invokeTarget != null and invokeTarget != ''">#{invokeTarget},</if>
+ <if test="jobMessage != null and jobMessage != ''">#{jobMessage},</if>
+ <if test="status != null and status != ''">#{status},</if>
+ <if test="exceptionInfo != null and exceptionInfo != ''">#{exceptionInfo},</if>
+ sysdate()
+ )
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml b/ruoyi-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml
new file mode 100644
index 0000000..5605c44
--- /dev/null
+++ b/ruoyi-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.quartz.mapper.SysJobMapper">
+
+ <resultMap type="SysJob" id="SysJobResult">
+ <id property="jobId" column="job_id" />
+ <result property="jobName" column="job_name" />
+ <result property="jobGroup" column="job_group" />
+ <result property="invokeTarget" column="invoke_target" />
+ <result property="cronExpression" column="cron_expression" />
+ <result property="misfirePolicy" column="misfire_policy" />
+ <result property="concurrent" column="concurrent" />
+ <result property="status" column="status" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
+ </resultMap>
+
+ <sql id="selectJobVo">
+ select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark
+ from sys_job
+ </sql>
+
+ <select id="selectJobList" parameterType="SysJob" resultMap="SysJobResult">
+ <include refid="selectJobVo"/>
+ <where>
+ <if test="jobName != null and jobName != ''">
+ AND job_name like concat('%', #{jobName}, '%')
+ </if>
+ <if test="jobGroup != null and jobGroup != ''">
+ AND job_group = #{jobGroup}
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ <if test="invokeTarget != null and invokeTarget != ''">
+ AND invoke_target like concat('%', #{invokeTarget}, '%')
+ </if>
+ </where>
+ </select>
+
+ <select id="selectJobAll" resultMap="SysJobResult">
+ <include refid="selectJobVo"/>
+ </select>
+
+ <select id="selectJobById" parameterType="Long" resultMap="SysJobResult">
+ <include refid="selectJobVo"/>
+ where job_id = #{jobId}
+ </select>
+
+ <delete id="deleteJobById" parameterType="Long">
+ delete from sys_job where job_id = #{jobId}
+ </delete>
+
+ <delete id="deleteJobByIds" parameterType="Long">
+ delete from sys_job where job_id in
+ <foreach collection="array" item="jobId" open="(" separator="," close=")">
+ #{jobId}
+ </foreach>
+ </delete>
+
+ <update id="updateJob" parameterType="SysJob">
+ update sys_job
+ <set>
+ <if test="jobName != null and jobName != ''">job_name = #{jobName},</if>
+ <if test="jobGroup != null and jobGroup != ''">job_group = #{jobGroup},</if>
+ <if test="invokeTarget != null and invokeTarget != ''">invoke_target = #{invokeTarget},</if>
+ <if test="cronExpression != null and cronExpression != ''">cron_expression = #{cronExpression},</if>
+ <if test="misfirePolicy != null and misfirePolicy != ''">misfire_policy = #{misfirePolicy},</if>
+ <if test="concurrent != null and concurrent != ''">concurrent = #{concurrent},</if>
+ <if test="status !=null">status = #{status},</if>
+ <if test="remark != null and remark != ''">remark = #{remark},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where job_id = #{jobId}
+ </update>
+
+ <insert id="insertJob" parameterType="SysJob" useGeneratedKeys="true" keyProperty="jobId">
+ insert into sys_job(
+ <if test="jobId != null and jobId != 0">job_id,</if>
+ <if test="jobName != null and jobName != ''">job_name,</if>
+ <if test="jobGroup != null and jobGroup != ''">job_group,</if>
+ <if test="invokeTarget != null and invokeTarget != ''">invoke_target,</if>
+ <if test="cronExpression != null and cronExpression != ''">cron_expression,</if>
+ <if test="misfirePolicy != null and misfirePolicy != ''">misfire_policy,</if>
+ <if test="concurrent != null and concurrent != ''">concurrent,</if>
+ <if test="status != null and status != ''">status,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="jobId != null and jobId != 0">#{jobId},</if>
+ <if test="jobName != null and jobName != ''">#{jobName},</if>
+ <if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if>
+ <if test="invokeTarget != null and invokeTarget != ''">#{invokeTarget},</if>
+ <if test="cronExpression != null and cronExpression != ''">#{cronExpression},</if>
+ <if test="misfirePolicy != null and misfirePolicy != ''">#{misfirePolicy},</if>
+ <if test="concurrent != null and concurrent != ''">#{concurrent},</if>
+ <if test="status != null and status != ''">#{status},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml
new file mode 100644
index 0000000..6248a2c
--- /dev/null
+++ b/ruoyi-system/pom.xml
@@ -0,0 +1,28 @@
+<?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>
+ <artifactId>ruoyi</artifactId>
+ <groupId>com.ruoyi</groupId>
+ <version>3.8.9</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ruoyi-system</artifactId>
+
+ <description>
+ system绯荤粺妯″潡
+ </description>
+
+ <dependencies>
+
+ <!-- 閫氱敤宸ュ叿-->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-common</artifactId>
+ </dependency>
+
+ </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml
new file mode 100644
index 0000000..a5ff114
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysConfigMapper">
+
+ <resultMap type="SysConfig" id="SysConfigResult">
+ <id property="configId" column="config_id" />
+ <result property="configName" column="config_name" />
+ <result property="configKey" column="config_key" />
+ <result property="configValue" column="config_value" />
+ <result property="configType" column="config_type" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectConfigVo">
+ select config_id, config_name, config_key, config_value, config_type, create_by, create_time, update_by, update_time, remark
+ from sys_config
+ </sql>
+
+ <!-- 鏌ヨ鏉′欢 -->
+ <sql id="sqlwhereSearch">
+ <where>
+ <if test="configId !=null">
+ and config_id = #{configId}
+ </if>
+ <if test="configKey !=null and configKey != ''">
+ and config_key = #{configKey}
+ </if>
+ </where>
+ </sql>
+
+ <select id="selectConfig" parameterType="SysConfig" resultMap="SysConfigResult">
+ <include refid="selectConfigVo"/>
+ <include refid="sqlwhereSearch"/>
+ </select>
+
+ <select id="selectConfigList" parameterType="SysConfig" resultMap="SysConfigResult">
+ <include refid="selectConfigVo"/>
+ <where>
+ <if test="configName != null and configName != ''">
+ AND config_name like concat('%', #{configName}, '%')
+ </if>
+ <if test="configType != null and configType != ''">
+ AND config_type = #{configType}
+ </if>
+ <if test="configKey != null and configKey != ''">
+ AND config_key like concat('%', #{configKey}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+ and date_format(create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+ and date_format(create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d')
+ </if>
+ </where>
+ </select>
+
+ <select id="selectConfigById" parameterType="Long" resultMap="SysConfigResult">
+ <include refid="selectConfigVo"/>
+ where config_id = #{configId}
+ </select>
+
+ <select id="checkConfigKeyUnique" parameterType="String" resultMap="SysConfigResult">
+ <include refid="selectConfigVo"/>
+ where config_key = #{configKey} limit 1
+ </select>
+
+ <insert id="insertConfig" parameterType="SysConfig">
+ insert into sys_config (
+ <if test="configName != null and configName != '' ">config_name,</if>
+ <if test="configKey != null and configKey != '' ">config_key,</if>
+ <if test="configValue != null and configValue != '' ">config_value,</if>
+ <if test="configType != null and configType != '' ">config_type,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ create_time
+ )values(
+ <if test="configName != null and configName != ''">#{configName},</if>
+ <if test="configKey != null and configKey != ''">#{configKey},</if>
+ <if test="configValue != null and configValue != ''">#{configValue},</if>
+ <if test="configType != null and configType != ''">#{configType},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="updateConfig" parameterType="SysConfig">
+ update sys_config
+ <set>
+ <if test="configName != null and configName != ''">config_name = #{configName},</if>
+ <if test="configKey != null and configKey != ''">config_key = #{configKey},</if>
+ <if test="configValue != null and configValue != ''">config_value = #{configValue},</if>
+ <if test="configType != null and configType != ''">config_type = #{configType},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ update_time = sysdate()
+ </set>
+ where config_id = #{configId}
+ </update>
+
+ <delete id="deleteConfigById" parameterType="Long">
+ delete from sys_config where config_id = #{configId}
+ </delete>
+
+ <delete id="deleteConfigByIds" parameterType="Long">
+ delete from sys_config where config_id in
+ <foreach item="configId" collection="array" open="(" separator="," close=")">
+ #{configId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
new file mode 100644
index 0000000..cf439f6
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysDeptMapper">
+
+ <resultMap type="SysDept" id="SysDeptResult">
+ <id property="deptId" column="dept_id" />
+ <result property="parentId" column="parent_id" />
+ <result property="ancestors" column="ancestors" />
+ <result property="deptName" column="dept_name" />
+ <result property="orderNum" column="order_num" />
+ <result property="leader" column="leader" />
+ <result property="phone" column="phone" />
+ <result property="email" column="email" />
+ <result property="status" column="status" />
+ <result property="delFlag" column="del_flag" />
+ <result property="parentName" column="parent_name" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectDeptVo">
+ select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time
+ from sys_dept d
+ </sql>
+
+ <select id="selectDeptList" parameterType="SysDept" resultMap="SysDeptResult">
+ <include refid="selectDeptVo"/>
+ where d.del_flag = '0'
+ <if test="deptId != null and deptId != 0">
+ AND dept_id = #{deptId}
+ </if>
+ <if test="parentId != null and parentId != 0">
+ AND parent_id = #{parentId}
+ </if>
+ <if test="deptName != null and deptName != ''">
+ AND dept_name like concat('%', #{deptName}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ <!-- 鏁版嵁鑼冨洿杩囨护 -->
+ ${params.dataScope}
+ order by d.parent_id, d.order_num
+ </select>
+
+ <select id="selectDeptListByRoleId" resultType="Long">
+ select d.dept_id
+ from sys_dept d
+ left join sys_role_dept rd on d.dept_id = rd.dept_id
+ where rd.role_id = #{roleId}
+ <if test="deptCheckStrictly">
+ and d.dept_id not in (select d.parent_id from sys_dept d inner join sys_role_dept rd on d.dept_id = rd.dept_id and rd.role_id = #{roleId})
+ </if>
+ order by d.parent_id, d.order_num
+ </select>
+
+ <select id="selectDeptById" parameterType="Long" resultMap="SysDeptResult">
+ select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status,
+ (select dept_name from sys_dept where dept_id = d.parent_id) parent_name
+ from sys_dept d
+ where d.dept_id = #{deptId}
+ </select>
+
+ <select id="checkDeptExistUser" parameterType="Long" resultType="int">
+ select count(1) from sys_user where dept_id = #{deptId} and del_flag = '0'
+ </select>
+
+ <select id="hasChildByDeptId" parameterType="Long" resultType="int">
+ select count(1) from sys_dept
+ where del_flag = '0' and parent_id = #{deptId} limit 1
+ </select>
+
+ <select id="selectChildrenDeptById" parameterType="Long" resultMap="SysDeptResult">
+ select * from sys_dept where find_in_set(#{deptId}, ancestors)
+ </select>
+
+ <select id="selectNormalChildrenDeptById" parameterType="Long" resultType="int">
+ select count(*) from sys_dept where status = 0 and del_flag = '0' and find_in_set(#{deptId}, ancestors)
+ </select>
+
+ <select id="checkDeptNameUnique" resultMap="SysDeptResult">
+ <include refid="selectDeptVo"/>
+ where dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1
+ </select>
+
+ <insert id="insertDept" parameterType="SysDept">
+ insert into sys_dept(
+ <if test="deptId != null and deptId != 0">dept_id,</if>
+ <if test="parentId != null and parentId != 0">parent_id,</if>
+ <if test="deptName != null and deptName != ''">dept_name,</if>
+ <if test="ancestors != null and ancestors != ''">ancestors,</if>
+ <if test="orderNum != null">order_num,</if>
+ <if test="leader != null and leader != ''">leader,</if>
+ <if test="phone != null and phone != ''">phone,</if>
+ <if test="email != null and email != ''">email,</if>
+ <if test="status != null">status,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="deptId != null and deptId != 0">#{deptId},</if>
+ <if test="parentId != null and parentId != 0">#{parentId},</if>
+ <if test="deptName != null and deptName != ''">#{deptName},</if>
+ <if test="ancestors != null and ancestors != ''">#{ancestors},</if>
+ <if test="orderNum != null">#{orderNum},</if>
+ <if test="leader != null and leader != ''">#{leader},</if>
+ <if test="phone != null and phone != ''">#{phone},</if>
+ <if test="email != null and email != ''">#{email},</if>
+ <if test="status != null">#{status},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="updateDept" parameterType="SysDept">
+ update sys_dept
+ <set>
+ <if test="parentId != null and parentId != 0">parent_id = #{parentId},</if>
+ <if test="deptName != null and deptName != ''">dept_name = #{deptName},</if>
+ <if test="ancestors != null and ancestors != ''">ancestors = #{ancestors},</if>
+ <if test="orderNum != null">order_num = #{orderNum},</if>
+ <if test="leader != null">leader = #{leader},</if>
+ <if test="phone != null">phone = #{phone},</if>
+ <if test="email != null">email = #{email},</if>
+ <if test="status != null and status != ''">status = #{status},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where dept_id = #{deptId}
+ </update>
+
+ <update id="updateDeptChildren" parameterType="java.util.List">
+ update sys_dept set ancestors =
+ <foreach collection="depts" item="item" index="index"
+ separator=" " open="case dept_id" close="end">
+ when #{item.deptId} then #{item.ancestors}
+ </foreach>
+ where dept_id in
+ <foreach collection="depts" item="item" index="index"
+ separator="," open="(" close=")">
+ #{item.deptId}
+ </foreach>
+ </update>
+
+ <update id="updateDeptStatusNormal" parameterType="Long">
+ update sys_dept set status = '0' where dept_id in
+ <foreach collection="array" item="deptId" open="(" separator="," close=")">
+ #{deptId}
+ </foreach>
+ </update>
+
+ <delete id="deleteDeptById" parameterType="Long">
+ update sys_dept set del_flag = '2' where dept_id = #{deptId}
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
new file mode 100644
index 0000000..3b94b7f
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysDictDataMapper">
+
+ <resultMap type="SysDictData" id="SysDictDataResult">
+ <id property="dictCode" column="dict_code" />
+ <result property="dictSort" column="dict_sort" />
+ <result property="dictLabel" column="dict_label" />
+ <result property="dictValue" column="dict_value" />
+ <result property="dictType" column="dict_type" />
+ <result property="cssClass" column="css_class" />
+ <result property="listClass" column="list_class" />
+ <result property="isDefault" column="is_default" />
+ <result property="status" column="status" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectDictDataVo">
+ select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark
+ from sys_dict_data
+ </sql>
+
+ <select id="selectDictDataList" parameterType="SysDictData" resultMap="SysDictDataResult">
+ <include refid="selectDictDataVo"/>
+ <where>
+ <if test="dictType != null and dictType != ''">
+ AND dict_type = #{dictType}
+ </if>
+ <if test="dictLabel != null and dictLabel != ''">
+ AND dict_label like concat('%', #{dictLabel}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ </where>
+ order by dict_sort asc
+ </select>
+
+ <select id="selectDictDataByType" parameterType="String" resultMap="SysDictDataResult">
+ <include refid="selectDictDataVo"/>
+ where status = '0' and dict_type = #{dictType} order by dict_sort asc
+ </select>
+
+ <select id="selectDictLabel" resultType="String">
+ select dict_label from sys_dict_data
+ where dict_type = #{dictType} and dict_value = #{dictValue}
+ </select>
+
+ <select id="selectDictDataById" parameterType="Long" resultMap="SysDictDataResult">
+ <include refid="selectDictDataVo"/>
+ where dict_code = #{dictCode}
+ </select>
+
+ <select id="countDictDataByType" resultType="Integer">
+ select count(1) from sys_dict_data where dict_type=#{dictType}
+ </select>
+
+ <delete id="deleteDictDataById" parameterType="Long">
+ delete from sys_dict_data where dict_code = #{dictCode}
+ </delete>
+
+ <delete id="deleteDictDataByIds" parameterType="Long">
+ delete from sys_dict_data where dict_code in
+ <foreach collection="array" item="dictCode" open="(" separator="," close=")">
+ #{dictCode}
+ </foreach>
+ </delete>
+
+ <update id="updateDictData" parameterType="SysDictData">
+ update sys_dict_data
+ <set>
+ <if test="dictSort != null">dict_sort = #{dictSort},</if>
+ <if test="dictLabel != null and dictLabel != ''">dict_label = #{dictLabel},</if>
+ <if test="dictValue != null and dictValue != ''">dict_value = #{dictValue},</if>
+ <if test="dictType != null and dictType != ''">dict_type = #{dictType},</if>
+ <if test="cssClass != null">css_class = #{cssClass},</if>
+ <if test="listClass != null">list_class = #{listClass},</if>
+ <if test="isDefault != null and isDefault != ''">is_default = #{isDefault},</if>
+ <if test="status != null">status = #{status},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where dict_code = #{dictCode}
+ </update>
+
+ <update id="updateDictDataType" parameterType="String">
+ update sys_dict_data set dict_type = #{newDictType} where dict_type = #{oldDictType}
+ </update>
+
+ <insert id="insertDictData" parameterType="SysDictData">
+ insert into sys_dict_data(
+ <if test="dictSort != null">dict_sort,</if>
+ <if test="dictLabel != null and dictLabel != ''">dict_label,</if>
+ <if test="dictValue != null and dictValue != ''">dict_value,</if>
+ <if test="dictType != null and dictType != ''">dict_type,</if>
+ <if test="cssClass != null and cssClass != ''">css_class,</if>
+ <if test="listClass != null and listClass != ''">list_class,</if>
+ <if test="isDefault != null and isDefault != ''">is_default,</if>
+ <if test="status != null">status,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="dictSort != null">#{dictSort},</if>
+ <if test="dictLabel != null and dictLabel != ''">#{dictLabel},</if>
+ <if test="dictValue != null and dictValue != ''">#{dictValue},</if>
+ <if test="dictType != null and dictType != ''">#{dictType},</if>
+ <if test="cssClass != null and cssClass != ''">#{cssClass},</if>
+ <if test="listClass != null and listClass != ''">#{listClass},</if>
+ <if test="isDefault != null and isDefault != ''">#{isDefault},</if>
+ <if test="status != null">#{status},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml
new file mode 100644
index 0000000..438d484
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysDictTypeMapper">
+
+ <resultMap type="SysDictType" id="SysDictTypeResult">
+ <id property="dictId" column="dict_id" />
+ <result property="dictName" column="dict_name" />
+ <result property="dictType" column="dict_type" />
+ <result property="status" column="status" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectDictTypeVo">
+ select dict_id, dict_name, dict_type, status, create_by, create_time, remark
+ from sys_dict_type
+ </sql>
+
+ <select id="selectDictTypeList" parameterType="SysDictType" resultMap="SysDictTypeResult">
+ <include refid="selectDictTypeVo"/>
+ <where>
+ <if test="dictName != null and dictName != ''">
+ AND dict_name like concat('%', #{dictName}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ <if test="dictType != null and dictType != ''">
+ AND dict_type like concat('%', #{dictType}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+ and date_format(create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+ and date_format(create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d')
+ </if>
+ </where>
+ </select>
+
+ <select id="selectDictTypeAll" resultMap="SysDictTypeResult">
+ <include refid="selectDictTypeVo"/>
+ </select>
+
+ <select id="selectDictTypeById" parameterType="Long" resultMap="SysDictTypeResult">
+ <include refid="selectDictTypeVo"/>
+ where dict_id = #{dictId}
+ </select>
+
+ <select id="selectDictTypeByType" parameterType="String" resultMap="SysDictTypeResult">
+ <include refid="selectDictTypeVo"/>
+ where dict_type = #{dictType}
+ </select>
+
+ <select id="checkDictTypeUnique" parameterType="String" resultMap="SysDictTypeResult">
+ <include refid="selectDictTypeVo"/>
+ where dict_type = #{dictType} limit 1
+ </select>
+
+ <delete id="deleteDictTypeById" parameterType="Long">
+ delete from sys_dict_type where dict_id = #{dictId}
+ </delete>
+
+ <delete id="deleteDictTypeByIds" parameterType="Long">
+ delete from sys_dict_type where dict_id in
+ <foreach collection="array" item="dictId" open="(" separator="," close=")">
+ #{dictId}
+ </foreach>
+ </delete>
+
+ <update id="updateDictType" parameterType="SysDictType">
+ update sys_dict_type
+ <set>
+ <if test="dictName != null and dictName != ''">dict_name = #{dictName},</if>
+ <if test="dictType != null and dictType != ''">dict_type = #{dictType},</if>
+ <if test="status != null">status = #{status},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where dict_id = #{dictId}
+ </update>
+
+ <insert id="insertDictType" parameterType="SysDictType">
+ insert into sys_dict_type(
+ <if test="dictName != null and dictName != ''">dict_name,</if>
+ <if test="dictType != null and dictType != ''">dict_type,</if>
+ <if test="status != null">status,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="dictName != null and dictName != ''">#{dictName},</if>
+ <if test="dictType != null and dictType != ''">#{dictType},</if>
+ <if test="status != null">#{status},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml
new file mode 100644
index 0000000..822d665
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysLogininforMapper">
+
+ <resultMap type="SysLogininfor" id="SysLogininforResult">
+ <id property="infoId" column="info_id" />
+ <result property="userName" column="user_name" />
+ <result property="status" column="status" />
+ <result property="ipaddr" column="ipaddr" />
+ <result property="loginLocation" column="login_location" />
+ <result property="browser" column="browser" />
+ <result property="os" column="os" />
+ <result property="msg" column="msg" />
+ <result property="loginTime" column="login_time" />
+ </resultMap>
+
+ <insert id="insertLogininfor" parameterType="SysLogininfor">
+ insert into sys_logininfor (user_name, status, ipaddr, login_location, browser, os, msg, login_time)
+ values (#{userName}, #{status}, #{ipaddr}, #{loginLocation}, #{browser}, #{os}, #{msg}, sysdate())
+ </insert>
+
+ <select id="selectLogininforList" parameterType="SysLogininfor" resultMap="SysLogininforResult">
+ select info_id, user_name, ipaddr, login_location, browser, os, status, msg, login_time from sys_logininfor
+ <where>
+ <if test="ipaddr != null and ipaddr != ''">
+ AND ipaddr like concat('%', #{ipaddr}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ <if test="userName != null and userName != ''">
+ AND user_name like concat('%', #{userName}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+ AND login_time >= #{params.beginTime}
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+ AND login_time <= #{params.endTime}
+ </if>
+ </where>
+ order by info_id desc
+ </select>
+
+ <delete id="deleteLogininforByIds" parameterType="Long">
+ delete from sys_logininfor where info_id in
+ <foreach collection="array" item="infoId" open="(" separator="," close=")">
+ #{infoId}
+ </foreach>
+ </delete>
+
+ <update id="cleanLogininfor">
+ truncate table sys_logininfor
+ </update>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
new file mode 100644
index 0000000..84e87c9
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysMenuMapper">
+
+ <resultMap type="SysMenu" id="SysMenuResult">
+ <id property="menuId" column="menu_id" />
+ <result property="menuName" column="menu_name" />
+ <result property="parentName" column="parent_name" />
+ <result property="parentId" column="parent_id" />
+ <result property="orderNum" column="order_num" />
+ <result property="path" column="path" />
+ <result property="component" column="component" />
+ <result property="query" column="query" />
+ <result property="routeName" column="route_name" />
+ <result property="isFrame" column="is_frame" />
+ <result property="isCache" column="is_cache" />
+ <result property="menuType" column="menu_type" />
+ <result property="visible" column="visible" />
+ <result property="status" column="status" />
+ <result property="perms" column="perms" />
+ <result property="icon" column="icon" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateTime" column="update_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="remark" column="remark" />
+ </resultMap>
+
+ <sql id="selectMenuVo">
+ select menu_id, menu_name, parent_id, order_num, path, component, `query`, route_name, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time
+ from sys_menu
+ </sql>
+
+ <select id="selectMenuList" parameterType="SysMenu" resultMap="SysMenuResult">
+ <include refid="selectMenuVo"/>
+ <where>
+ <if test="menuName != null and menuName != ''">
+ AND menu_name like concat('%', #{menuName}, '%')
+ </if>
+ <if test="visible != null and visible != ''">
+ AND visible = #{visible}
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ </where>
+ order by parent_id, order_num
+ </select>
+
+ <select id="selectMenuTreeAll" resultMap="SysMenuResult">
+ select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
+ from sys_menu m where m.menu_type in ('M', 'C') and m.status = 0
+ order by m.parent_id, m.order_num
+ </select>
+
+ <select id="selectMenuListByUserId" parameterType="SysMenu" resultMap="SysMenuResult">
+ select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
+ from sys_menu m
+ left join sys_role_menu rm on m.menu_id = rm.menu_id
+ left join sys_user_role ur on rm.role_id = ur.role_id
+ left join sys_role ro on ur.role_id = ro.role_id
+ where ur.user_id = #{params.userId}
+ <if test="menuName != null and menuName != ''">
+ AND m.menu_name like concat('%', #{menuName}, '%')
+ </if>
+ <if test="visible != null and visible != ''">
+ AND m.visible = #{visible}
+ </if>
+ <if test="status != null and status != ''">
+ AND m.status = #{status}
+ </if>
+ order by m.parent_id, m.order_num
+ </select>
+
+ <select id="selectMenuTreeByUserId" parameterType="Long" resultMap="SysMenuResult">
+ select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
+ from sys_menu m
+ left join sys_role_menu rm on m.menu_id = rm.menu_id
+ left join sys_user_role ur on rm.role_id = ur.role_id
+ left join sys_role ro on ur.role_id = ro.role_id
+ left join sys_user u on ur.user_id = u.user_id
+ where u.user_id = #{userId} and m.menu_type in ('M', 'C') and m.status = 0 AND ro.status = 0
+ order by m.parent_id, m.order_num
+ </select>
+
+ <select id="selectMenuListByRoleId" resultType="Long">
+ select m.menu_id
+ from sys_menu m
+ left join sys_role_menu rm on m.menu_id = rm.menu_id
+ where rm.role_id = #{roleId}
+ <if test="menuCheckStrictly">
+ and m.menu_id not in (select m.parent_id from sys_menu m inner join sys_role_menu rm on m.menu_id = rm.menu_id and rm.role_id = #{roleId})
+ </if>
+ order by m.parent_id, m.order_num
+ </select>
+
+ <select id="selectMenuPerms" resultType="String">
+ select distinct m.perms
+ from sys_menu m
+ left join sys_role_menu rm on m.menu_id = rm.menu_id
+ left join sys_user_role ur on rm.role_id = ur.role_id
+ </select>
+
+ <select id="selectMenuPermsByUserId" parameterType="Long" resultType="String">
+ select distinct m.perms
+ from sys_menu m
+ left join sys_role_menu rm on m.menu_id = rm.menu_id
+ left join sys_user_role ur on rm.role_id = ur.role_id
+ left join sys_role r on r.role_id = ur.role_id
+ where m.status = '0' and r.status = '0' and ur.user_id = #{userId}
+ </select>
+
+ <select id="selectMenuPermsByRoleId" parameterType="Long" resultType="String">
+ select distinct m.perms
+ from sys_menu m
+ left join sys_role_menu rm on m.menu_id = rm.menu_id
+ where m.status = '0' and rm.role_id = #{roleId}
+ </select>
+
+ <select id="selectMenuById" parameterType="Long" resultMap="SysMenuResult">
+ <include refid="selectMenuVo"/>
+ where menu_id = #{menuId}
+ </select>
+
+ <select id="hasChildByMenuId" resultType="Integer">
+ select count(1) from sys_menu where parent_id = #{menuId}
+ </select>
+
+ <select id="checkMenuNameUnique" parameterType="SysMenu" resultMap="SysMenuResult">
+ <include refid="selectMenuVo"/>
+ where menu_name=#{menuName} and parent_id = #{parentId} limit 1
+ </select>
+
+ <update id="updateMenu" parameterType="SysMenu">
+ update sys_menu
+ <set>
+ <if test="menuName != null and menuName != ''">menu_name = #{menuName},</if>
+ <if test="parentId != null">parent_id = #{parentId},</if>
+ <if test="orderNum != null">order_num = #{orderNum},</if>
+ <if test="path != null and path != ''">path = #{path},</if>
+ <if test="component != null">component = #{component},</if>
+ <if test="query != null">`query` = #{query},</if>
+ <if test="routeName != null">route_name = #{routeName},</if>
+ <if test="isFrame != null and isFrame != ''">is_frame = #{isFrame},</if>
+ <if test="isCache != null and isCache != ''">is_cache = #{isCache},</if>
+ <if test="menuType != null and menuType != ''">menu_type = #{menuType},</if>
+ <if test="visible != null">visible = #{visible},</if>
+ <if test="status != null">status = #{status},</if>
+ <if test="perms !=null">perms = #{perms},</if>
+ <if test="icon !=null and icon != ''">icon = #{icon},</if>
+ <if test="remark != null and remark != ''">remark = #{remark},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where menu_id = #{menuId}
+ </update>
+
+ <insert id="insertMenu" parameterType="SysMenu">
+ insert into sys_menu(
+ <if test="menuId != null and menuId != 0">menu_id,</if>
+ <if test="parentId != null and parentId != 0">parent_id,</if>
+ <if test="menuName != null and menuName != ''">menu_name,</if>
+ <if test="orderNum != null">order_num,</if>
+ <if test="path != null and path != ''">path,</if>
+ <if test="component != null and component != ''">component,</if>
+ <if test="query != null and query != ''">`query`,</if>
+ <if test="routeName != null">route_name,</if>
+ <if test="isFrame != null and isFrame != ''">is_frame,</if>
+ <if test="isCache != null and isCache != ''">is_cache,</if>
+ <if test="menuType != null and menuType != ''">menu_type,</if>
+ <if test="visible != null">visible,</if>
+ <if test="status != null">status,</if>
+ <if test="perms !=null and perms != ''">perms,</if>
+ <if test="icon != null and icon != ''">icon,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="menuId != null and menuId != 0">#{menuId},</if>
+ <if test="parentId != null and parentId != 0">#{parentId},</if>
+ <if test="menuName != null and menuName != ''">#{menuName},</if>
+ <if test="orderNum != null">#{orderNum},</if>
+ <if test="path != null and path != ''">#{path},</if>
+ <if test="component != null and component != ''">#{component},</if>
+ <if test="query != null and query != ''">#{query},</if>
+ <if test="routeName != null">#{routeName},</if>
+ <if test="isFrame != null and isFrame != ''">#{isFrame},</if>
+ <if test="isCache != null and isCache != ''">#{isCache},</if>
+ <if test="menuType != null and menuType != ''">#{menuType},</if>
+ <if test="visible != null">#{visible},</if>
+ <if test="status != null">#{status},</if>
+ <if test="perms !=null and perms != ''">#{perms},</if>
+ <if test="icon != null and icon != ''">#{icon},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <delete id="deleteMenuById" parameterType="Long">
+ delete from sys_menu where menu_id = #{menuId}
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml
new file mode 100644
index 0000000..65d3079
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysNoticeMapper">
+
+ <resultMap type="SysNotice" id="SysNoticeResult">
+ <result property="noticeId" column="notice_id" />
+ <result property="noticeTitle" column="notice_title" />
+ <result property="noticeType" column="notice_type" />
+ <result property="noticeContent" column="notice_content" />
+ <result property="status" column="status" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
+ </resultMap>
+
+ <sql id="selectNoticeVo">
+ select notice_id, notice_title, notice_type, cast(notice_content as char) as notice_content, status, create_by, create_time, update_by, update_time, remark
+ from sys_notice
+ </sql>
+
+ <select id="selectNoticeById" parameterType="Long" resultMap="SysNoticeResult">
+ <include refid="selectNoticeVo"/>
+ where notice_id = #{noticeId}
+ </select>
+
+ <select id="selectNoticeList" parameterType="SysNotice" resultMap="SysNoticeResult">
+ <include refid="selectNoticeVo"/>
+ <where>
+ <if test="noticeTitle != null and noticeTitle != ''">
+ AND notice_title like concat('%', #{noticeTitle}, '%')
+ </if>
+ <if test="noticeType != null and noticeType != ''">
+ AND notice_type = #{noticeType}
+ </if>
+ <if test="createBy != null and createBy != ''">
+ AND create_by like concat('%', #{createBy}, '%')
+ </if>
+ </where>
+ </select>
+
+ <insert id="insertNotice" parameterType="SysNotice">
+ insert into sys_notice (
+ <if test="noticeTitle != null and noticeTitle != '' ">notice_title, </if>
+ <if test="noticeType != null and noticeType != '' ">notice_type, </if>
+ <if test="noticeContent != null and noticeContent != '' ">notice_content, </if>
+ <if test="status != null and status != '' ">status, </if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="noticeTitle != null and noticeTitle != ''">#{noticeTitle}, </if>
+ <if test="noticeType != null and noticeType != ''">#{noticeType}, </if>
+ <if test="noticeContent != null and noticeContent != ''">#{noticeContent}, </if>
+ <if test="status != null and status != ''">#{status}, </if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="updateNotice" parameterType="SysNotice">
+ update sys_notice
+ <set>
+ <if test="noticeTitle != null and noticeTitle != ''">notice_title = #{noticeTitle}, </if>
+ <if test="noticeType != null and noticeType != ''">notice_type = #{noticeType}, </if>
+ <if test="noticeContent != null">notice_content = #{noticeContent}, </if>
+ <if test="status != null and status != ''">status = #{status}, </if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where notice_id = #{noticeId}
+ </update>
+
+ <delete id="deleteNoticeById" parameterType="Long">
+ delete from sys_notice where notice_id = #{noticeId}
+ </delete>
+
+ <delete id="deleteNoticeByIds" parameterType="Long">
+ delete from sys_notice where notice_id in
+ <foreach item="noticeId" collection="array" open="(" separator="," close=")">
+ #{noticeId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml
new file mode 100644
index 0000000..201db07
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysOperLogMapper">
+
+ <resultMap type="SysOperLog" id="SysOperLogResult">
+ <id property="operId" column="oper_id" />
+ <result property="title" column="title" />
+ <result property="businessType" column="business_type" />
+ <result property="method" column="method" />
+ <result property="requestMethod" column="request_method" />
+ <result property="operatorType" column="operator_type" />
+ <result property="operName" column="oper_name" />
+ <result property="deptName" column="dept_name" />
+ <result property="operUrl" column="oper_url" />
+ <result property="operIp" column="oper_ip" />
+ <result property="operLocation" column="oper_location" />
+ <result property="operParam" column="oper_param" />
+ <result property="jsonResult" column="json_result" />
+ <result property="status" column="status" />
+ <result property="errorMsg" column="error_msg" />
+ <result property="operTime" column="oper_time" />
+ <result property="costTime" column="cost_time" />
+ </resultMap>
+
+ <sql id="selectOperLogVo">
+ select oper_id, title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, oper_time, cost_time
+ from sys_oper_log
+ </sql>
+
+ <insert id="insertOperlog" parameterType="SysOperLog">
+ insert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, cost_time, oper_time)
+ values (#{title}, #{businessType}, #{method}, #{requestMethod}, #{operatorType}, #{operName}, #{deptName}, #{operUrl}, #{operIp}, #{operLocation}, #{operParam}, #{jsonResult}, #{status}, #{errorMsg}, #{costTime}, sysdate())
+ </insert>
+
+ <select id="selectOperLogList" parameterType="SysOperLog" resultMap="SysOperLogResult">
+ <include refid="selectOperLogVo"/>
+ <where>
+ <if test="operIp != null and operIp != ''">
+ AND oper_ip like concat('%', #{operIp}, '%')
+ </if>
+ <if test="title != null and title != ''">
+ AND title like concat('%', #{title}, '%')
+ </if>
+ <if test="businessType != null">
+ AND business_type = #{businessType}
+ </if>
+ <if test="businessTypes != null and businessTypes.length > 0">
+ AND business_type in
+ <foreach collection="businessTypes" item="businessType" open="(" separator="," close=")">
+ #{businessType}
+ </foreach>
+ </if>
+ <if test="status != null">
+ AND status = #{status}
+ </if>
+ <if test="operName != null and operName != ''">
+ AND oper_name like concat('%', #{operName}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+ AND oper_time >= #{params.beginTime}
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+ AND oper_time <= #{params.endTime}
+ </if>
+ </where>
+ order by oper_id desc
+ </select>
+
+ <delete id="deleteOperLogByIds" parameterType="Long">
+ delete from sys_oper_log where oper_id in
+ <foreach collection="array" item="operId" open="(" separator="," close=")">
+ #{operId}
+ </foreach>
+ </delete>
+
+ <select id="selectOperLogById" parameterType="Long" resultMap="SysOperLogResult">
+ <include refid="selectOperLogVo"/>
+ where oper_id = #{operId}
+ </select>
+
+ <update id="cleanOperLog">
+ truncate table sys_oper_log
+ </update>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml
new file mode 100644
index 0000000..227c459
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysPostMapper">
+
+ <resultMap type="SysPost" id="SysPostResult">
+ <id property="postId" column="post_id" />
+ <result property="postCode" column="post_code" />
+ <result property="postName" column="post_name" />
+ <result property="postSort" column="post_sort" />
+ <result property="status" column="status" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
+ </resultMap>
+
+ <sql id="selectPostVo">
+ select post_id, post_code, post_name, post_sort, status, create_by, create_time, remark
+ from sys_post
+ </sql>
+
+ <select id="selectPostList" parameterType="SysPost" resultMap="SysPostResult">
+ <include refid="selectPostVo"/>
+ <where>
+ <if test="postCode != null and postCode != ''">
+ AND post_code like concat('%', #{postCode}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ <if test="postName != null and postName != ''">
+ AND post_name like concat('%', #{postName}, '%')
+ </if>
+ </where>
+ </select>
+
+ <select id="selectPostAll" resultMap="SysPostResult">
+ <include refid="selectPostVo"/>
+ </select>
+
+ <select id="selectPostById" parameterType="Long" resultMap="SysPostResult">
+ <include refid="selectPostVo"/>
+ where post_id = #{postId}
+ </select>
+
+ <select id="selectPostListByUserId" parameterType="Long" resultType="Long">
+ select p.post_id
+ from sys_post p
+ left join sys_user_post up on up.post_id = p.post_id
+ left join sys_user u on u.user_id = up.user_id
+ where u.user_id = #{userId}
+ </select>
+
+ <select id="selectPostsByUserName" parameterType="String" resultMap="SysPostResult">
+ select p.post_id, p.post_name, p.post_code
+ from sys_post p
+ left join sys_user_post up on up.post_id = p.post_id
+ left join sys_user u on u.user_id = up.user_id
+ where u.user_name = #{userName}
+ </select>
+
+ <select id="checkPostNameUnique" parameterType="String" resultMap="SysPostResult">
+ <include refid="selectPostVo"/>
+ where post_name=#{postName} limit 1
+ </select>
+
+ <select id="checkPostCodeUnique" parameterType="String" resultMap="SysPostResult">
+ <include refid="selectPostVo"/>
+ where post_code=#{postCode} limit 1
+ </select>
+
+ <update id="updatePost" parameterType="SysPost">
+ update sys_post
+ <set>
+ <if test="postCode != null and postCode != ''">post_code = #{postCode},</if>
+ <if test="postName != null and postName != ''">post_name = #{postName},</if>
+ <if test="postSort != null">post_sort = #{postSort},</if>
+ <if test="status != null and status != ''">status = #{status},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where post_id = #{postId}
+ </update>
+
+ <insert id="insertPost" parameterType="SysPost" useGeneratedKeys="true" keyProperty="postId">
+ insert into sys_post(
+ <if test="postId != null and postId != 0">post_id,</if>
+ <if test="postCode != null and postCode != ''">post_code,</if>
+ <if test="postName != null and postName != ''">post_name,</if>
+ <if test="postSort != null">post_sort,</if>
+ <if test="status != null and status != ''">status,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="postId != null and postId != 0">#{postId},</if>
+ <if test="postCode != null and postCode != ''">#{postCode},</if>
+ <if test="postName != null and postName != ''">#{postName},</if>
+ <if test="postSort != null">#{postSort},</if>
+ <if test="status != null and status != ''">#{status},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <delete id="deletePostById" parameterType="Long">
+ delete from sys_post where post_id = #{postId}
+ </delete>
+
+ <delete id="deletePostByIds" parameterType="Long">
+ delete from sys_post where post_id in
+ <foreach collection="array" item="postId" open="(" separator="," close=")">
+ #{postId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml
new file mode 100644
index 0000000..7c4139b
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysRoleDeptMapper">
+
+ <resultMap type="SysRoleDept" id="SysRoleDeptResult">
+ <result property="roleId" column="role_id" />
+ <result property="deptId" column="dept_id" />
+ </resultMap>
+
+ <delete id="deleteRoleDeptByRoleId" parameterType="Long">
+ delete from sys_role_dept where role_id=#{roleId}
+ </delete>
+
+ <select id="selectCountRoleDeptByDeptId" resultType="Integer">
+ select count(1) from sys_role_dept where dept_id=#{deptId}
+ </select>
+
+ <delete id="deleteRoleDept" parameterType="Long">
+ delete from sys_role_dept where role_id in
+ <foreach collection="array" item="roleId" open="(" separator="," close=")">
+ #{roleId}
+ </foreach>
+ </delete>
+
+ <insert id="batchRoleDept">
+ insert into sys_role_dept(role_id, dept_id) values
+ <foreach item="item" index="index" collection="list" separator=",">
+ (#{item.roleId},#{item.deptId})
+ </foreach>
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
new file mode 100644
index 0000000..955d4ee
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysRoleMapper">
+
+ <resultMap type="SysRole" id="SysRoleResult">
+ <id property="roleId" column="role_id" />
+ <result property="roleName" column="role_name" />
+ <result property="roleKey" column="role_key" />
+ <result property="roleSort" column="role_sort" />
+ <result property="dataScope" column="data_scope" />
+ <result property="menuCheckStrictly" column="menu_check_strictly" />
+ <result property="deptCheckStrictly" column="dept_check_strictly" />
+ <result property="status" column="status" />
+ <result property="delFlag" column="del_flag" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
+ </resultMap>
+
+ <sql id="selectRoleVo">
+ select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly,
+ r.status, r.del_flag, r.create_time, r.remark
+ from sys_role r
+ left join sys_user_role ur on ur.role_id = r.role_id
+ left join sys_user u on u.user_id = ur.user_id
+ left join sys_dept d on u.dept_id = d.dept_id
+ </sql>
+
+ <select id="selectRoleList" parameterType="SysRole" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ where r.del_flag = '0'
+ <if test="roleId != null and roleId != 0">
+ AND r.role_id = #{roleId}
+ </if>
+ <if test="roleName != null and roleName != ''">
+ AND r.role_name like concat('%', #{roleName}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND r.status = #{status}
+ </if>
+ <if test="roleKey != null and roleKey != ''">
+ AND r.role_key like concat('%', #{roleKey}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+ and date_format(r.create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+ and date_format(r.create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d')
+ </if>
+ <!-- 鏁版嵁鑼冨洿杩囨护 -->
+ ${params.dataScope}
+ order by r.role_sort
+ </select>
+
+ <select id="selectRolePermissionByUserId" parameterType="Long" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ WHERE r.del_flag = '0' and ur.user_id = #{userId}
+ </select>
+
+ <select id="selectRoleAll" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ </select>
+
+ <select id="selectRoleListByUserId" parameterType="Long" resultType="Long">
+ select r.role_id
+ from sys_role r
+ left join sys_user_role ur on ur.role_id = r.role_id
+ left join sys_user u on u.user_id = ur.user_id
+ where u.user_id = #{userId}
+ </select>
+
+ <select id="selectRoleById" parameterType="Long" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ where r.role_id = #{roleId}
+ </select>
+
+ <select id="selectRolesByUserName" parameterType="String" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ WHERE r.del_flag = '0' and u.user_name = #{userName}
+ </select>
+
+ <select id="checkRoleNameUnique" parameterType="String" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ where r.role_name=#{roleName} and r.del_flag = '0' limit 1
+ </select>
+
+ <select id="checkRoleKeyUnique" parameterType="String" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ where r.role_key=#{roleKey} and r.del_flag = '0' limit 1
+ </select>
+
+ <insert id="insertRole" parameterType="SysRole" useGeneratedKeys="true" keyProperty="roleId">
+ insert into sys_role(
+ <if test="roleId != null and roleId != 0">role_id,</if>
+ <if test="roleName != null and roleName != ''">role_name,</if>
+ <if test="roleKey != null and roleKey != ''">role_key,</if>
+ <if test="roleSort != null">role_sort,</if>
+ <if test="dataScope != null and dataScope != ''">data_scope,</if>
+ <if test="menuCheckStrictly != null">menu_check_strictly,</if>
+ <if test="deptCheckStrictly != null">dept_check_strictly,</if>
+ <if test="status != null and status != ''">status,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="roleId != null and roleId != 0">#{roleId},</if>
+ <if test="roleName != null and roleName != ''">#{roleName},</if>
+ <if test="roleKey != null and roleKey != ''">#{roleKey},</if>
+ <if test="roleSort != null">#{roleSort},</if>
+ <if test="dataScope != null and dataScope != ''">#{dataScope},</if>
+ <if test="menuCheckStrictly != null">#{menuCheckStrictly},</if>
+ <if test="deptCheckStrictly != null">#{deptCheckStrictly},</if>
+ <if test="status != null and status != ''">#{status},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="updateRole" parameterType="SysRole">
+ update sys_role
+ <set>
+ <if test="roleName != null and roleName != ''">role_name = #{roleName},</if>
+ <if test="roleKey != null and roleKey != ''">role_key = #{roleKey},</if>
+ <if test="roleSort != null">role_sort = #{roleSort},</if>
+ <if test="dataScope != null and dataScope != ''">data_scope = #{dataScope},</if>
+ <if test="menuCheckStrictly != null">menu_check_strictly = #{menuCheckStrictly},</if>
+ <if test="deptCheckStrictly != null">dept_check_strictly = #{deptCheckStrictly},</if>
+ <if test="status != null and status != ''">status = #{status},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where role_id = #{roleId}
+ </update>
+
+ <delete id="deleteRoleById" parameterType="Long">
+ update sys_role set del_flag = '2' where role_id = #{roleId}
+ </delete>
+
+ <delete id="deleteRoleByIds" parameterType="Long">
+ update sys_role set del_flag = '2' where role_id in
+ <foreach collection="array" item="roleId" open="(" separator="," close=")">
+ #{roleId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
new file mode 100644
index 0000000..cb60a85
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysRoleMenuMapper">
+
+ <resultMap type="SysRoleMenu" id="SysRoleMenuResult">
+ <result property="roleId" column="role_id" />
+ <result property="menuId" column="menu_id" />
+ </resultMap>
+
+ <select id="checkMenuExistRole" resultType="Integer">
+ select count(1) from sys_role_menu where menu_id = #{menuId}
+ </select>
+
+ <delete id="deleteRoleMenuByRoleId" parameterType="Long">
+ delete from sys_role_menu where role_id=#{roleId}
+ </delete>
+
+ <delete id="deleteRoleMenu" parameterType="Long">
+ delete from sys_role_menu where role_id in
+ <foreach collection="array" item="roleId" open="(" separator="," close=")">
+ #{roleId}
+ </foreach>
+ </delete>
+
+ <insert id="batchRoleMenu">
+ insert into sys_role_menu(role_id, menu_id) values
+ <foreach item="item" index="index" collection="list" separator=",">
+ (#{item.roleId},#{item.menuId})
+ </foreach>
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
new file mode 100644
index 0000000..5b2a7f2
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysUserMapper">
+
+ <resultMap type="SysUser" id="SysUserResult">
+ <id property="userId" column="user_id" />
+ <result property="deptId" column="dept_id" />
+ <result property="userName" column="user_name" />
+ <result property="nickName" column="nick_name" />
+ <result property="email" column="email" />
+ <result property="phonenumber" column="phonenumber" />
+ <result property="sex" column="sex" />
+ <result property="avatar" column="avatar" />
+ <result property="password" column="password" />
+ <result property="status" column="status" />
+ <result property="delFlag" column="del_flag" />
+ <result property="loginIp" column="login_ip" />
+ <result property="loginDate" column="login_date" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
+ <association property="dept" javaType="SysDept" resultMap="deptResult" />
+ <collection property="roles" javaType="java.util.List" resultMap="RoleResult" />
+ </resultMap>
+
+ <resultMap id="deptResult" type="SysDept">
+ <id property="deptId" column="dept_id" />
+ <result property="parentId" column="parent_id" />
+ <result property="deptName" column="dept_name" />
+ <result property="ancestors" column="ancestors" />
+ <result property="orderNum" column="order_num" />
+ <result property="leader" column="leader" />
+ <result property="status" column="dept_status" />
+ </resultMap>
+
+ <resultMap id="RoleResult" type="SysRole">
+ <id property="roleId" column="role_id" />
+ <result property="roleName" column="role_name" />
+ <result property="roleKey" column="role_key" />
+ <result property="roleSort" column="role_sort" />
+ <result property="dataScope" column="data_scope" />
+ <result property="status" column="role_status" />
+ </resultMap>
+
+ <sql id="selectUserVo">
+ select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
+ d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
+ r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
+ from sys_user u
+ left join sys_dept d on u.dept_id = d.dept_id
+ left join sys_user_role ur on u.user_id = ur.user_id
+ left join sys_role r on r.role_id = ur.role_id
+ </sql>
+
+ <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
+ select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
+ left join sys_dept d on u.dept_id = d.dept_id
+ where u.del_flag = '0'
+ <if test="userId != null and userId != 0">
+ AND u.user_id = #{userId}
+ </if>
+ <if test="userName != null and userName != ''">
+ AND u.user_name like concat('%', #{userName}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND u.status = #{status}
+ </if>
+ <if test="phonenumber != null and phonenumber != ''">
+ AND u.phonenumber like concat('%', #{phonenumber}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+ AND date_format(u.create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+ AND date_format(u.create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d')
+ </if>
+ <if test="deptId != null and deptId != 0">
+ AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))
+ </if>
+ <!-- 鏁版嵁鑼冨洿杩囨护 -->
+ ${params.dataScope}
+ </select>
+
+ <select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
+ select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
+ from sys_user u
+ left join sys_dept d on u.dept_id = d.dept_id
+ left join sys_user_role ur on u.user_id = ur.user_id
+ left join sys_role r on r.role_id = ur.role_id
+ where u.del_flag = '0' and r.role_id = #{roleId}
+ <if test="userName != null and userName != ''">
+ AND u.user_name like concat('%', #{userName}, '%')
+ </if>
+ <if test="phonenumber != null and phonenumber != ''">
+ AND u.phonenumber like concat('%', #{phonenumber}, '%')
+ </if>
+ <!-- 鏁版嵁鑼冨洿杩囨护 -->
+ ${params.dataScope}
+ </select>
+
+ <select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
+ select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
+ from sys_user u
+ left join sys_dept d on u.dept_id = d.dept_id
+ left join sys_user_role ur on u.user_id = ur.user_id
+ left join sys_role r on r.role_id = ur.role_id
+ where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)
+ and u.user_id not in (select u.user_id from sys_user u inner join sys_user_role ur on u.user_id = ur.user_id and ur.role_id = #{roleId})
+ <if test="userName != null and userName != ''">
+ AND u.user_name like concat('%', #{userName}, '%')
+ </if>
+ <if test="phonenumber != null and phonenumber != ''">
+ AND u.phonenumber like concat('%', #{phonenumber}, '%')
+ </if>
+ <!-- 鏁版嵁鑼冨洿杩囨护 -->
+ ${params.dataScope}
+ </select>
+
+ <select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
+ <include refid="selectUserVo"/>
+ where u.user_name = #{userName} and u.del_flag = '0'
+ </select>
+
+ <select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
+ <include refid="selectUserVo"/>
+ where u.user_id = #{userId}
+ </select>
+
+ <select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
+ select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1
+ </select>
+
+ <select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">
+ select user_id, phonenumber from sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1
+ </select>
+
+ <select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
+ select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
+ </select>
+
+ <insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
+ insert into sys_user(
+ <if test="userId != null and userId != 0">user_id,</if>
+ <if test="deptId != null and deptId != 0">dept_id,</if>
+ <if test="userName != null and userName != ''">user_name,</if>
+ <if test="nickName != null and nickName != ''">nick_name,</if>
+ <if test="email != null and email != ''">email,</if>
+ <if test="avatar != null and avatar != ''">avatar,</if>
+ <if test="phonenumber != null and phonenumber != ''">phonenumber,</if>
+ <if test="sex != null and sex != ''">sex,</if>
+ <if test="password != null and password != ''">password,</if>
+ <if test="status != null and status != ''">status,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ create_time
+ )values(
+ <if test="userId != null and userId != ''">#{userId},</if>
+ <if test="deptId != null and deptId != ''">#{deptId},</if>
+ <if test="userName != null and userName != ''">#{userName},</if>
+ <if test="nickName != null and nickName != ''">#{nickName},</if>
+ <if test="email != null and email != ''">#{email},</if>
+ <if test="avatar != null and avatar != ''">#{avatar},</if>
+ <if test="phonenumber != null and phonenumber != ''">#{phonenumber},</if>
+ <if test="sex != null and sex != ''">#{sex},</if>
+ <if test="password != null and password != ''">#{password},</if>
+ <if test="status != null and status != ''">#{status},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="updateUser" parameterType="SysUser">
+ update sys_user
+ <set>
+ <if test="deptId != null and deptId != 0">dept_id = #{deptId},</if>
+ <if test="nickName != null and nickName != ''">nick_name = #{nickName},</if>
+ <if test="email != null ">email = #{email},</if>
+ <if test="phonenumber != null ">phonenumber = #{phonenumber},</if>
+ <if test="sex != null and sex != ''">sex = #{sex},</if>
+ <if test="avatar != null and avatar != ''">avatar = #{avatar},</if>
+ <if test="password != null and password != ''">password = #{password},</if>
+ <if test="status != null and status != ''">status = #{status},</if>
+ <if test="loginIp != null and loginIp != ''">login_ip = #{loginIp},</if>
+ <if test="loginDate != null">login_date = #{loginDate},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ update_time = sysdate()
+ </set>
+ where user_id = #{userId}
+ </update>
+
+ <update id="updateUserStatus" parameterType="SysUser">
+ update sys_user set status = #{status} where user_id = #{userId}
+ </update>
+
+ <update id="updateUserAvatar" parameterType="SysUser">
+ update sys_user set avatar = #{avatar} where user_name = #{userName}
+ </update>
+
+ <update id="resetUserPwd" parameterType="SysUser">
+ update sys_user set password = #{password} where user_name = #{userName}
+ </update>
+
+ <delete id="deleteUserById" parameterType="Long">
+ update sys_user set del_flag = '2' where user_id = #{userId}
+ </delete>
+
+ <delete id="deleteUserByIds" parameterType="Long">
+ update sys_user set del_flag = '2' where user_id in
+ <foreach collection="array" item="userId" open="(" separator="," close=")">
+ #{userId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml
new file mode 100644
index 0000000..2b90bc4
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysUserPostMapper">
+
+ <resultMap type="SysUserPost" id="SysUserPostResult">
+ <result property="userId" column="user_id" />
+ <result property="postId" column="post_id" />
+ </resultMap>
+
+ <delete id="deleteUserPostByUserId" parameterType="Long">
+ delete from sys_user_post where user_id=#{userId}
+ </delete>
+
+ <select id="countUserPostById" resultType="Integer">
+ select count(1) from sys_user_post where post_id=#{postId}
+ </select>
+
+ <delete id="deleteUserPost" parameterType="Long">
+ delete from sys_user_post where user_id in
+ <foreach collection="array" item="userId" open="(" separator="," close=")">
+ #{userId}
+ </foreach>
+ </delete>
+
+ <insert id="batchUserPost">
+ insert into sys_user_post(user_id, post_id) values
+ <foreach item="item" index="index" collection="list" separator=",">
+ (#{item.userId},#{item.postId})
+ </foreach>
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
new file mode 100644
index 0000000..dd72689
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysUserRoleMapper">
+
+ <resultMap type="SysUserRole" id="SysUserRoleResult">
+ <result property="userId" column="user_id" />
+ <result property="roleId" column="role_id" />
+ </resultMap>
+
+ <delete id="deleteUserRoleByUserId" parameterType="Long">
+ delete from sys_user_role where user_id=#{userId}
+ </delete>
+
+ <select id="countUserRoleByRoleId" resultType="Integer">
+ select count(1) from sys_user_role where role_id=#{roleId}
+ </select>
+
+ <delete id="deleteUserRole" parameterType="Long">
+ delete from sys_user_role where user_id in
+ <foreach collection="array" item="userId" open="(" separator="," close=")">
+ #{userId}
+ </foreach>
+ </delete>
+
+ <insert id="batchUserRole">
+ insert into sys_user_role(user_id, role_id) values
+ <foreach item="item" index="index" collection="list" separator=",">
+ (#{item.userId},#{item.roleId})
+ </foreach>
+ </insert>
+
+ <delete id="deleteUserRoleInfo" parameterType="SysUserRole">
+ delete from sys_user_role where user_id=#{userId} and role_id=#{roleId}
+ </delete>
+
+ <delete id="deleteUserRoleInfos">
+ delete from sys_user_role where role_id=#{roleId} and user_id in
+ <foreach collection="userIds" item="userId" open="(" separator="," close=")">
+ #{userId}
+ </foreach>
+ </delete>
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.3